Simple conditional discrimination species: pigeons Maintainer Michael Davison Current version 0.1 View the changelog Original Author Michael Davison Date last modified Apr-24-2005 License BSD MED-PC version 4 Simple condition task in which animals (pigeons, originally) learn the difference between 4 stimuli. The code tracks every event using the code listed here. No references given. Click to e-mail a reference to the maintainer.
 Code How to use this code Download the code Download an example macro Download the profile ``` \Experiment 4 simple SDT with flashing stimuli \keeps the time of every event \Michael Davison \Outputs ^LeftWhite=1 \1 = Left (WHITE) ^LeftCenterS1=2 \2 = Left Centre S1 (RED) ^LeftCenterS2=3 \3 = Left Centre S2 (GREEN) ^RightWhite=4 \4 = Right Centre (WHITE) ^Magazine=5 \5 = mag ^MagazineLight=6 \6 = mag light \Inputs ^LeftKeyPeck=1 \1 = Left key peck ^LeftCentreKeyPeck=2 \2 = Left Centre key peck ^RightCentreKeyPeck=3 \3 = Right Centre key peck \4 = Right key, unused \z pulses ^ReinforcerStart=1 ^StartFlasher=2 ^StopFlasher=3 \q array is the settings for conditions \q(0),q(1) not used in this experiment \q(2) = probability of reinforcement for left correct responses (complememt is p. for right correct) \q(3) = Reinforcers per session \q(4) = Magazine duration in seconds \q(5) = blackout time in seconds \q(6) = Inter-trial interval time in seconds \q(7) & q(8) = durations of Red and Green flash times on left-centre key \Condition 1 \list q = 0,10000/30,5000,60,3,10,5,1.2,0.44\ Condition 1 1:1 reinforcer ratio on 08/02/01 \100 sessions per condition, please keep all data on directory in d:\expt4\condx dim c = 5 \overall counts: \c(0) = LeftCorrect|S1 W \c(1) = RightError|S1 X \c(2) = LeftError|S2 Y \c(3) = RightCorrect|S2 Z \c(4) = Left Rfts \c(5) = Right Rfts \detailed data collection into the x array with index t: dim x=5000 \Codes for detailed data collection: ^SessStart=10000 ^Stim1on=20000 ^Stim2on=30000 ^Bw=40000 ^Bx=50000 ^By=60000 ^Bz=70000 ^Rw=80000 ^Rz=90000 ^NRW=100000 ^NRZ=110000 ^ITIStart=120000 ^CKPeck=130000 diskvars = c,q,x s.s.1, s1, #start:set q(4)=q(4)*1",q(5)=q(5)*1",q(6)=q(6)*1",q(7)=q(7)*1",q(8)=q(8)*1"; \ set times to ticks set t=0; \ in itialize index set x(t)=btime/1"+^sessstart;--->s8 s2,\ Set up stimulus 1 #T:withpi=5000[@S1,@s2] @s1:set s=2; \ set trial type s set f=q(7); \ set durations of Red and Green set g=q(8); z^StartFlasher; \ start flasher add t; set x(t)=btime/1"+^Stim1on;--->s3 @s2:set s=3; set f=q(8); set g=q(7); z^StartFlasher; \ start flasher add t; set x(t)=btime/1"+^Stim2on;--->s3 s3,\ Stimulus presentation #R^LeftCentreKeyPeck:z^StopFlasher; \ stop flasher add t; set x(t)=btime/1"+^CKPeck; \ store time of peck off ^LeftCenterS1,^LeftCenterS2; \ turn off flasher lights -- overkill! on ^LeftWhite,^RightWhite;--->s4 \ turn on choice keys s4, \ main routine #R^LeftKeyPeck:off ^LeftWhite,^RightWhite;if s=2[@CorrectLeft,@ErrorLeft] @correctLeft:add c(0); add t; set x(t)=btime/1"+^Bw; \ store time of choice if s.s.2=3[@ReinforcerSetup,@Rnotsetup] @ReinforcerSetup:z^ReinforcerStart; add c(4); on ^Magazine,^MagazineLight; add t; set x(t)=btime/1"+^Rw;--->s5 @RNotSetup:add t; set x(t)=btime/1"+^NRW;--->s5 @errorLeft:add c(2); add t; set x(t)=btime/1"+^By;--->s6 #R^RightCentreKeyPeck:off ^LeftWhite,^RightWhite;if s=3[@CorrectRight,@ErrorRight] @CorrectRight:add c(3); add t; set x(t)=btime/1"+^Bz; if s.s.2=4[@ReinforcerSetup,@RNotSetup] @ReinforcerSetup:z^ReinforcerStart; add c(5); on ^Magazine,^MagazineLight; add t; set x(t)=btime/1"+^Rz;--->s5 @RNotSetup:add t; set x(t)=btime/1"+^NRZ;--->s5 @ErrorRight:add c(1); add t; set x(t)=btime/1"+^Bx;--->s6 s5,\ Reinforcer time q(4) #T:off ^Magazine,^MagazineLight; show 1,W,c(0),2,X,C(1),3,Y,C(2),4,Z,C(3); add t; set x(t)=btime/1"+^ITIStart;--->s7 s6,\ BO Time q(5) #T:show 1,W,c(0),2,X,C(1),3,Y,C(2),4,Z,C(3); add t; set x(t)=btime/1"+^ITIStart;--->s7 s7,\ Inter-trial interval q(6) #T:--->s2 s8,\ Waiting to be sure box has woken up - doug added this 1":--->s2 s.s.2, \scheduling dependent, overall (runs always) s1, #start:--->s2 s2, 1":withpi=q(2)[@SetupLeftReinforcer,@SetupRightReinforcer] @SetupLeftReinforcer:--->s3 @SetupRightReinforcer:--->s4 s3,\ Left rft set up #z^ReinforcerStart:--->s2 s4,\ Right rft set up #z^ReinforcerStart:--->s2 s.s.3, \data collection s1, #start:--->s2 s2, q(3)#z^ReinforcerStart!2500":--->s3 \stop session after q(3) reinforcers or after 2500 seconds s3, q(4) #T:off 1,2,3,4,5;--->stopabortflush s.s.4,\ Flasher s1, #start:--->s2 s2, #z^StartFlasher:on ^LeftCenterS1;--->s3 s3, f#T:off ^LeftCenterS1;on ^LeftCenterS2;--->s4 #z^StopFlasher:off ^LeftCenterS2;--->s2 s4, g#T:off ^LeftCenterS2;on^LeftCenterS1;--->s3 #z^StopFlasher:off ^LeftCenterS1;--->s2 ```
 Related programs Other versions No training programs submitted/required No older versions available No experimental versions available