Repeated acquisition species: pigeon
Maintainer Matt Porritt Current version 0.1 View the changelog
Original Author Matt Porritt Date last modified May-19-2005
License BSD MED-PC version 4
Repeated acqusition of response sequences for pigeons. Program is designed for three-key three-color boxes.
Poling, A., Cleary, J., Berens, K., & Thompson, T. (1990). Neuroleptics and learning: Effects of Haloperidol, Molindone, Mesoridazine and Thioridazine on the behavior of pigeons under a repeated acqusition procedure. The Journal of Pharmacology and Experimental Theapeutics. Vol 255. 1240 - 1245.

Thompson, D. M. (1978). Repeated acqusition of response sequences: Effects of d-amphetamine and chlorpromazine. Pharmacology, Biochemistry, and Behavior. Vol. 2 741 - 746.
Code
How to use this code Download the code Download an example macro Download the profile
 
\Code for a repeated acquisition procedure
\Written for a three-key three-key-color operant chamber
\(like we have at WMU)
\I'll work on cleaning this up and commenting....
\Matt Porritt 5/19/05



\REPEATED ACQUISITION PG 96 POLING BYRNE

\THIS SECTION IS FOR OUTPUTS
^HL = 8 \HOUSE LIGHT
^FAN = 12 \HOUSE FAN
^FOOD = 7 \DA HOPPA
^CENTERR = 4 \CENTER RED LIGHT
^CENTERG = 5
^CENTERW = 6 \CENTER WHITE LIGHT
^LEFTR = 1 \LEFT RED LIGHT
^LEFTW = 2 \LEFT WHITE LIGHT
^LEFTG = 3
^RIGHTR = 9 \RIGHT RED LIGHT
^RIGHTW = 10 \RIGHT WHITE LIGHT
^RIGHTG = 11

\Z1 = LISTEN FOR RESPONSE
\Z2 = CORRECT RESPONSE
\Z3 = SEND PROGRAM BACK TO START TIME OUT
\Z4 = END PROGRAM
\Z5 = COMPLETE CHAIN
\Z6 = BOX CHECK
\A = FIRST RESPONSE
\B = SECOND RESPONSE
\C = THIRD RESPONSE
\D = RECORD ARRAY
\ D(0) = RESPONSES
\ D(1) = REWARDS
\ D(2) = ENDING TIME
\ D(3) = PERCENTAGE CORRECT
\ D(5) = RESPONSES PER MINUTE
\ D(6) = CORRECT RESPONSES
\E = TRIALS
\F = KEEP TRACK ARRAY
\G = CURRENT CORRECT RESPONSE
\H = RESPONSE ARRAY
\J = NUMBER USED TO INCREMENT F
\K = PERCENT IN TRIAL OF WHICH KEY (NOT YET FUNCTIONAL)
\L = PERCENT OF TRIAL ARRAY
\M = SESSION MINUTES
\N = SESSION SECONDS
\S = ACTUAL SECONDS

DIM D = 10

DIM H = 9999

DISKVARS = D, F, H, A, B, C, R

DIM K = 3

LIST F = 10000, 0, 1, 0, 0, 0

DIM R = 75

S.S.1,

S1,
	#K1: SET A = 1; SET B = 1; SET C = 1 --->S2
	#K2: SET A = 1; SET B = 1; SET C = 2 --->S2
	#K3: SET A = 1; SET B = 1; SET C = 3 --->S2
	#K4: SET A = 1; SET B = 2; SET C = 1 --->S2
	#K5: SET A = 1; SET B = 2; SET C = 2 --->S2
	#K6: SET A = 1; SET B = 2; SET C = 3 --->S2
	#K7: SET A = 1; SET B = 3; SET C = 1 --->S2
	#K8: SET A = 1; SET B = 3; SET C = 2 --->S2
	#K9: SET A = 1; SET B = 3; SET C = 3 --->S2
	#K10: SET A = 2; SET B = 1; SET C = 1 --->S2
	#K11: SET A = 2; SET B = 1; SET C = 2 --->S2
	#K12: SET A = 2; SET B = 1; SET C = 3 --->S2
	#K13: SET A = 2; SET B = 2; SET C = 1 --->S2
	#K14: SET A = 2; SET B = 2; SET C = 2 --->S2
	#K15: SET A = 2; SET B = 2; SET C = 3 --->S2
	#K16: SET A = 2; SET B = 3; SET C = 1 --->S2
	#K17: SET A = 2; SET B = 3; SET C = 2 --->S2
	#K18: SET A = 2; SET B = 3; SET C = 3 --->S2
	#K19: SET A = 3; SET B = 1; SET C = 1 --->S2
	#K20: SET A = 3; SET B = 1; SET C = 2 --->S2
	#K21: SET A = 3; SET B = 1; SET C = 3 --->S2
	#K22: SET A = 3; SET B = 2; SET C = 1 --->S2
	#K23: SET A = 3; SET B = 2; SET C = 2 --->S2
	#K24: SET A = 3; SET B = 2; SET C = 3 --->S2
	#K25: SET A = 3; SET B = 3; SET C = 1 --->S2
	#K26: SET A = 3; SET B = 3; SET C = 2 --->S2
	#K27: SET A = 3; SET B = 3; SET C = 3 --->S2

S2,
	.1":Z6--->SX


\BOX CHECK
S.S.2,
	S1, \TURN ON WHITE, TURN ON HOUSE
	#Z6: ON 1, 5, 11, ^HL --->S2
S2, \ON THREE PECKS POKES GOTO GREEN HOPPER UP
	3#R1: OFF 1, 5, 11; ON 3, 4, 10, ^FOOD --->S3
S3, \ON THREE CENTER POKES GOTO LAST HOPPER DOWN
	3#R2: OFF 3, 4, 10, ^FOOD; ON 2, 6, 9 --->S4
S4, \ON THREE RIGHT POKES OFF ALL LIGHTS FAN ON
	3#R3: OFF 2, 6, 9, ^HL; ON ^FAN --->S5
S5,
	0.1": --->SX

S.S.3,
S1,
	#START: --->S2
S2,
	3": ON^HL, ^LEFTW, ^CENTERW, ^RIGHTW; SET G = A; ADD E; Z1 --->S3
S3,
	#Z2: ADD D(0); SHOW 1, RESP, D(0); ADD D(6); SHOW 2, CORR, D(6) --->S5
	#Z3: ADD D(0); SHOW 1, RESP, D(0) --->S4
S4,
	3": --->S2

S5,
	.01": OFF^LEFTW, ^CENTERW, ^RIGHTW --->S6
S6,
	.01": ON^LEFTG, ^CENTERG, ^RIGHTG, ^HL; SET G = B; Z1 --->S7
S7,
	#Z2: ADD D(0); SHOW 1, RESP, D(0); ADD D(6); SHOW 2, CORR, D(6) --->S9
	#Z3: ADD D(0); SHOW 1, RESP, D(0) --->S8
S8,
	3": --->S6
S9,
	.01": OFF^LEFTG, ^CENTERG, ^RIGHTG --->S10
S10,
	.01": ON^LEFTR, ^CENTERR, ^RIGHTR, ^HL; SET G = C; Z1 --->S11
S11,
	#Z2: ADD D(0); SHOW 1, RESP, D(0); ADD D(6); SHOW 2, CORR, D(6) --->S13
	#Z3: ADD D(0); SHOW 1, RESP, D(0) --->S12
S12,
	3": --->S10
S13,
	.01": OFF^LEFTR, ^CENTERR, ^RIGHTR; ON^FOOD; ADD D(1); SHOW 3, FOOD, D(1); Z5 --->S14

S14,
	3": OFF^FOOD --->S2


S.S.4,
S1,
	#Z1: --->S2

S2,
	#R1: IF G = 1 [@ONETRUE, @ONEFALSE]
		@ONETRUE: Z2 --->S1
		@ONEFLASE: --->S3
	#R2: IF G = 2 [@TWOTRUE, @TWOFALSE]
		@TWOTRUE: Z2 --->S1
		@TWOFALSE: --->S3
	#R3: IF G = 3 [@THREETRUE, @THREEFALSE]
		@THREETRUE: Z2 --->S1
		@THREEFALSE: --->S3
S3,
	.01": OFF^HL, ^LEFTW, ^CENTERW, ^RIGHTW, ^LEFTR, ^CENTERR, ^RIGHTR, ^LEFTG, ^CENTERG, ^RIGHTG; Z3 --->S2

S.S.5, \CLOCK
S1, \ON START DISPLAY CLOCK
	#START: SHOW 5, MIN, M; SHOW 6, SEC, N ---> S2
S2, \INCREMENT N BY SECONDS, M BY MINUTES
	1": ADD N; IF N=60 [@CLOCKTRUE, @CLOCKFALSE]
		@CLOCKTRUE: ADD M; SET N=0; SHOW 5, MIN, M; SHOW 6, SEC, N --->SX
		@CLOCKFALSE: SHOW 5, MIN, M; SHOW 6, SEC, N --->SX

S.S.6, \LISTEN FOR 70 REWARDS
S1,
	#START: --->S2
S2,
	.01": IF D(1) = 70 [@TRIALSTRUE, @TRIALSFALSE]
		@TRIALSTRUE: Z4 --->S3
		@TRIALSFALSE: --->SX
S3,
	.01": --->SX

S.S.7, \LISTEN FOR 60 MINUTES
S1,
	#START: --->S2
S2,
	.01": IF M = 240 [@TIMETRUE, @TIMEFALSE]
		@TIMETRUE: Z4 --->S3
		@TIMEFALSE: --->SX
S3,
	.01": --->SX

S.S.8 \ACTUAL SECONDS
S1,
	#START: --->S2
S2,
	1": ADD D(2) --->SX


S.S.9, \CALCULATE AND SHUT DOWN
S1,
	#Z4: OFF^HL, ^LEFTW, ^CENTERW, ^RIGHTW, ^LEFTR, ^CENTERR, ^RIGHTR, ^LEFTG, ^CENTERG, ^RIGHTG --->S2
S2,
	.01": IF D(0) = 0 [@MATHTRUE, @MATHFALSE]
		@MATHTRUE: SET D(3) = 0 --->S3
		@MATHFALSE: SET D(3) = (D(6)/D(0)) * 100 --->S3
S3,
	.01": IF D(0) = 0 [@MATHTRUE, @MATHFALSE]
		@MATHTRUE: SET D(5) = 0 --->S3
		@MATHFALSE: SET D(5) = (D(0)/(D(2)/60)) * 100 --->S4

S4,
.1": --->STOPABORTFLUSH


S.S.10, \KEEP TRACK ARRAY
\ F(0) = TRIES TO REINFORCEMENT
\ F(1) = TRIES AT COLOR
\ F(2) = COLOR OF TRIAL
\ F(3) = TRIES AT ONE
\ F(4) = TRIES AT TWO
\ F(5) = TRIES AT THREE

\Z1 = LISTEN FOR RESPONSE
\Z2 = CORRECT RESPONSE
\Z3 = SEND PROGRAM BACK TO START TIME OUT
\Z4 = END PROGRAM
\Z5 = COMPLETE CHAIN
\Z6 = BOX CHECK
S1,
	#Z5: SET F(0) = F(0)+10000; SET F(2) = 1; SET F(1) = 0; SET F(3) = 0; SET F(4) = 0; SET F(5) = 0; SET P = 2 --->SX \RESET ARRAY, ADD TO TRIALS
	#Z2: SET F(2) = F(2)+1; SET F(1) = 0 --->SX \COLOR OF TRIAL
	#Z3: ADD F(P); SET P = 2; --->SX
	#Z1: SET F(1) = F(1)+1; ADD P --->SX \TIMES TRIED THIS COLOR

S.S.11, \RESPONSES ARRAY
S1,
	#START: --->S2
S2,
	#R1: SET H(J) = F(0)+(F(P)*100)+(F(2)*10)+1; ADD J; SET H(J) = -987.987; ADD K(0) --->SX
	#R2: SET H(J) = F(0)+(F(P)*100)+(F(2)*10)+2; ADD J; SET H(J) = -987.987; ADD K(1) --->SX
	#R3: SET H(J) = F(0)+(F(P)*100)+(F(2)*10)+3; ADD J; SET H(J) = -987.987; ADD K(2) --->SX

\S.S.12, \PERCENT OF WHICH KEY IN TRIAL
\S1,
\ #Z2: SET L(O) = (K(0)/(K(0)+K(1)+K(2))); ADD O --->S2
\S2,
\ .01":SET L(O) = (K(1)/(K(0)+K(1)+K(2))); ADD O --->S3
\S3,
\ .01":SET L(O) = (K(2)/(K(0)+K(1)+K(2))); SET O = O+3 --->S1

S.S.13, \COUNT ERRORS PER BIN
S1,
	#START: SET Q = 0 --->S2
S2,
	#Z1: --->S3
S3,
	#Z3: ADD R(Q) --->SX
	#Z5: ADD Q --->S2
              
Related programs Other versions
No training programs submitted/required

No older versions available
No experimental versions available