LeverReversals - version_tracker.txt ---------------------------- Version numbers are stored in: (1) .iss file (influences setup display, Control Panel) (2) .rc file (About box) (3) g_strVersion (4) strXMLConfigVersion (CONFIG VERSION ONLY) (5) help (.hm3) (6) web site whatsnew.shtml Version history: =============================================== v0.1 (10-13 Feb 2005) =============================================== - Started (10 Feb 2005) for Wendy Chang. - Project copied from LeverAutoshaping (so the first repository version is merely that with names changed). - PROJECT Intention: caudate/Acb 6-OHA +/- intracranial drugs. Eventually, marm paradigm (with is-it-learned-irrelevance-or-what tests after initial reversal learning, i.e. introduce a third stimulus... but we'll worry about that later.) For now, simple operant chamber reversal task. Outcome of discussion with WC/TWR 4 Feb 2005: - trial-based (as RNC's suggestion, which will aid SDT calculation as well as the obvious advantages), but not necessarily just FR1 for a response, but fixed consecutive number (FCN) style (as TWR's suggestion). For example, require FR10 (FCN10) on one of the two levers to score a "correct" response. - response discrimination: L or R lever. - either simple "choose L or R", or "same or opposite side as the light" tasks. - May work up to e.g. space relevant/light irrelevant <--> space irrelevant/light relevant. - Pretraining (use, for example, the SimpleSchedules program): FR1 for 50 reinfs left, then FR1 for 50 reinfs right. - Main task: ITI (houselight off) TRIAL: houselight on two levers out; light on over a lever require FR1... or FR10... or FR10 all consecutive... on the correct lever [i.e. option: if any responses on incorrect lever, terminate trial as incorrect.] WHEN REWARDED: houselight stays on for a while; food arrives. - Option for within-session reversal at a criterion (or simply between-session reversal). - Option for probabilistic reinforcement, as for RatBat. ... Therefore, config would look like this: ---------------------- Task * spatial ("L [or R] is correct") start with * left * right correct X lights are on anyway, on random sides, as a distractor * light-tracking ("Same side as light [or opposite] is correct") start with * same * opposite correct X Flash lights, when they're being used? On time (s): ___ Off time (s): ___ X Choose correct condition (L/R) pseudorandomly, rather than randomly, by drawing without replacement from a list of length 2 x ___ = [...]. Require ___ responses on the correct lever before the trial is scored as correct. X Require that all responses are consecutive (i.e. no responding is allowed on the incorrect lever at all). X p(reward | correct) = 1; p(reward | incorrect) = 0 p(reward | correct) = ___; p(reward | incorrect) = ___ X Use traylight when reward delivered (probably only sensible for pellet/dipper reinforcement!). When reward delivered, houselight (+/- traylight) stays on for ___ seconds or until food is collected (nosepoke in alcove). If a trial has not been completed within ___ seconds, terminate it as an omission (enter 0 for no time limit). Time between trials (s): from ___ to ___ X Reverse within a session when ___ of the last ___ trials has been performed correctly. Number of trials to give: ___ (0 for no limit) Session time limit (min): ___ (0 for no limit) Lever debounce time (ms): ___ ----------------------- ... giving this lot: m_strRat; m_iSession; m_strComment; m_strSummaryFile; m_strDatabase; m_iReinforcer; m_fInfusionDuration; m_iNumDips; m_fDipTime; m_fInterDipTime; m_bDipperNormallyDown; m_iNumPellets; m_iPelletPulseLength; m_fInterPelletTime; m_iTaskType; m_bStartWithLeftCorrect; m_bLightsUsedInSpatialTask; m_bStartWithSameCorrect; m_bFlashLights; m_fFlashOnTime_s; m_fFlashOffTime_s; m_bPseudorandom; m_iDWORMultiplier; m_iNumResponsesRequired; m_bResponsesMustBeConsecutive; m_bRewardCertainty; m_fPRewardIfCorrect; m_fPRewardIfIncorrect; m_bUseTraylight; m_fFoodCollectionTime_s; m_fTrialTimeLimit_s; m_fITIMinimum_s; m_fITIMaximum_s; m_bReverseWithinSession; m_iReverseCriterionX; m_iReverseCriterionY; m_iMaxTrials; m_fSessionTimeLimit_min; m_iDebounceTime_ms; ------------- possible values of m_iTaskType: TASKTYPE_SPATIAL, TASKTYPE_LIGHTTRACKING Done: - main window status variables/update calls - config dialogue (with variables, events, EnsureAppropriateThings...) - config vars in DB - recordset for config - config class, with summary file, writing to DB, validation - XML for config - CopyConfigToDialog, CopyDialogToConfig - work out results format - DB fields for results - recordset for results in DB - individual event recording (classes, DB, etc.) - task implementation - help - test =============================================== v0.2 (21 Feb 2005) =============================================== - Pretraining will, incidentally, be FR50 left -> FR50 right (using SimpleSchedules). - rearrange dialogue box: can't see below "If a trial has not been completed in..." on an 800x600 monitor. - facility to begin trials upon centralizing nosepoke (with traylight if selected) m_bNosepokeToStartTrial - option so that FRx->reward on correct lever; FRx->punishment on incorrect lever. (so it's symmetric) - summary measure: running rate (avg rate of lever pressing from first to last response on correct lever) One method is as a query: use SELECT ONLY NON-OMISSION TRIALS WHERE >1 correct/incorrect responses made NUMBER OF RESPONSES = CorrectResponses or IncorrectResponses, minus 1 TIME = TrialEndTime_ms - (TrialStartTime_ms + LeverReversals_Results.LatencyFirstCorrectResponse_ms) RATE = number/time But I'll also add a LatencyToLastCorrectResponse_ms and LatencyToLastIncorrectResponses_ms. Then can use e.g. (LatencyToLastCorrectResponse_ms - LatencyFirstCorrectResponse_ms) as the timebase. - ensure multiple reversal technique counts properly (e.g. if "27/30" criterion, and all trials performed correctly, second reversal should occur on trial 60, not trial 31). Wasn't correct, now is. =============================================== v1.0 (8 March 2007) =============================================== - easier compilation for users =============================================== v2.0 (12 Jan 2009) =============================================== - Server default changed from "loopback" to "localhost" (Windows Vista compatibility and more general standardization). =============================================== THINGS TO DO ===============================================