private void RunTransitionOverTimeTest(mbsMATRIX M) { C3mbsWrapperSpeciesModel wrapper = new C3mbsWrapperSpeciesModel(); // Generate and display data. if(m_displayType == MBSDEFAULTS.BITMAPDISPLAYTYPE.BEHAVIOR_TRANSITION) m_displayData = wrapper.RunBehaviorTransitionControlTest(M, m_behaviorIndex, m_numTrials); else m_displayData = wrapper.InitialBehaviorControlTest(M, m_numTrials); m_bitmapMgr.SetDisplayData(m_numBehaviors, m_displayData); }
//------------------------------------------------------------------------------// // Behavior Transition Over Time Bitmap UpdateDataDisplay() //------------------------------------------------------------------------------// public void SetDisplayData(int NumBehaviors, mbsSNGLBEHTRANSTRUCT Data) { int i; m_data = Data; m_numBehaviors = NumBehaviors; // Run debug assertions on the data passed in Debug.Assert(m_data.timePeriodArray.Length > 0); for(i=0; i<m_data.timePeriodArray.Length; i++) Debug.Assert(m_data.timePeriodArray[i].trialArray.Length > 0); RedrawBitmap(); }
private SINGLEBEHTRANSSTATS GetSingleBehaviorTransitionStats(mbsSNGLBEHTRANSTRUCT Data) { int i, j, beh; // indexing vars. SINGLEBEHTRANSSTATS stats = new SINGLEBEHTRANSSTATS(); stats.periodArray = new TRANSPERIOD[Data.timePeriodArray.Length]; // The number of translational periods defined in the behavior transition // model. Equivelent to the number of rows in the behavior transition matrix. stats.periodCnt = m_data.timePeriodArray.Length; // The number of trials conducted per translational period. This value is // defined by the application calling the behavior translation test. stats.trialsPerPeriodCnt = m_data.timePeriodArray[0].trialArray.Length; if(stats.trialsPerPeriodCnt == 0) return stats; // handle this better!!!! stats.maxPeriodDuration = 0; stats.maxBehaviorCount = 0; // Allocate memory for stats for each transitional period in the model and // memory for recording the total counts of behavior transitions achieved // during those trials. stats.periodArray = new TRANSPERIOD[stats.periodCnt]; for(i=0; i<stats.periodCnt; i++) stats.periodArray[i].toBehaviorCount = new int[m_numBehaviors]; //--------------------------------------------------------------------------// // Generate the stats //-------------------// // i is the transitional period // j is the j number for that transitional period // beh is the behavior index stats.maxPeriodDuration = m_data.timePeriodArray[0].trialArray[0].sec; stats.minPeriodDuration = m_data.timePeriodArray[0].trialArray[0].sec; stats.maxBehaviorCount = 0; for(i=0; i<stats.periodCnt; i++) { stats.periodArray[i].aveDuration = 0; stats.periodArray[i].minDuration = m_data.timePeriodArray[i].trialArray[0].sec; stats.periodArray[i].maxDuration = m_data.timePeriodArray[i].trialArray[0].sec; // set max duraiton to initial value // set min duration to initial value // initial ave duration for(j=0; j<stats.trialsPerPeriodCnt; j++) { // m_data.timePeriodArray[i].trialArray[j].sec holds time the behavior persisted until // it transitioned into a new behavior. stats.periodArray[i].aveDuration += m_data.timePeriodArray[i].trialArray[j].sec; // Update the minimum for this transition period if(stats.periodArray[i].minDuration > m_data.timePeriodArray[i].trialArray[j].sec) stats.periodArray[i].minDuration = m_data.timePeriodArray[i].trialArray[j].sec; // Update the maximum for this transition period. if(stats.periodArray[i].maxDuration < m_data.timePeriodArray[i].trialArray[j].sec) stats.periodArray[i].maxDuration = m_data.timePeriodArray[i].trialArray[j].sec; // m_data.timePeriodArray[i].trialArray[j].trans holds the behavior transitioned into // when the behavior transition being tested transitioned into // a new behavior. beh = m_data.timePeriodArray[i].trialArray[j].trans; stats.periodArray[i].toBehaviorCount[beh]++; } // Average time before transitioning to a new behavior from being being // tested. stats.periodArray[i].aveDuration /= (double)stats.trialsPerPeriodCnt; // Update the maximum count of all behavior transitions for all time periods and all trials conducted for(beh=0; beh<m_numBehaviors; beh++) { // Maximum of all transitional periods if(stats.maxBehaviorCount < stats.periodArray[i].toBehaviorCount[beh]) stats.maxBehaviorCount = stats.periodArray[i].toBehaviorCount[beh]; } // Update the maximum of all period durations for all transiton periods and trials if(stats.maxPeriodDuration < stats.periodArray[i].maxDuration) stats.maxPeriodDuration = stats.periodArray[i].maxDuration; // Update the minimum of all period durations for all transiton periods and trials if(stats.minPeriodDuration > stats.periodArray[i].minDuration) stats.minPeriodDuration = stats.periodArray[i].minDuration; } return stats; }
//------------------------------------------------------------------------------// // Behavior Transition Over Time Manager UpdateDataDisplay() //------------------------------------------------------------------------------// // Called by the parent form when data has changed or a characteristic about how // the data is to be displayed has been modified. public void SetDisplayData(int NumBehaviors, mbsSNGLBEHTRANSTRUCT Data) { m_numBehaviors = NumBehaviors; // Have the bitmap class update its data display. m_transBitMap.SetDisplayData(NumBehaviors, Data); // Invalidate the rect of the parent form that the data is displayed in so // that the OS displays the updated display. m_parentForm.Invalidate(); }