Revision bc6bc5271ca8c2cbf8107bdf243352e543f64b8e authored by Brian Angeles (Desktop) on 20 March 2023, 22:34:45 UTC, committed by Brian Angeles (Desktop) on 20 March 2023, 22:34:45 UTC
As a first step to generalizing the code, we removed the need to comment/uncomment the appropriate rig-specific parameters file and replace it with a local rig_config.s2s file that is ignored by Git. This way, changes can be made to this simple file without affecting the Github repository at all.
1 parent 3d78fa7
Experiment_Alex_Nov2019_GagnonPredictor.s2s
'--------------------------------------------------------------------------------
' IMPORT RIG-SPECIFIC PARAMETERS AND UNIVERSAL PARAMETERS
'--------------------------------------------------------------------------------
#include "C:\\Users\\Public\\RaymondLabCode\\Experiment Protocols\\RigChoice.s2s"
#include "C:\\Users\\Public\\RaymondLabCode\\Experiment Protocols\\Parameters_Universal.s2s"
'--------------------------------------------------------------------------------
' MAIN PROGRAM
'--------------------------------------------------------------------------------
' 0 = GAP A
' 1 = Gap B
' 2 = test
' 3 = train
' 9 = quit experiment
const Order%[] := {0, 1, 2,
0, 1, 2,
0, 1, 2,
0, 1, 3,
0, 1, 2,
0, 1, 2,
0, 1, 2,
0, 9};
var expmtIndx := 0;
runLength := 3600; '1 Hour (60 minutes x 60 seconds)
testLength := 45;
ToolbarConfig();
'--------------------------------------------------------------------------------
' Toolbar Callbacks
'--------------------------------------------------------------------------------
Func ToolbarIdle%()
'This function calls repeatedly whenever nothing else is happening
'if runexpmt=1, it is used to run a full expmt automatically. -HP
'expmtMode: 0=habit, 1=0x, 2=2x, 3=ipsi stim, 4=contra stim
'test: 0=wait, 1=test, 2=train
' Check a valid sampling view is running
var currView := ViewKind();
if currView <> 0 then
return 1;
endif;
' Keep sine wave from drifting
if MaxTime() > (prevTime + 1/((stepPeriod+245)/1000)) then
if driftFix = 1 then
driftFix%();
endif;
endif;
'If an experiment is running:
if runExpmt% = 1 then
'Check the time. Seconds is the current time - compare it to the goal time of each segment
if MaxTime() > goalTime then
SampleKey(str$(Order%[expmtIndx]));
docase
' GAP A
case Order%[expmtIndx] = 0 then
SampleKey("x");
goalTime := MaxTime() + 5;
ToolbarInit%(); Yield();
' GAP B
case Order%[expmtIndx] = 1 then
goalTime := MaxTime() + 5;
ToolbarInit%(); Yield();
runFlash(); Yield();
ToolbarInit%(); Yield();
' TEST
case Order%[expmtIndx] = 2 then
SampleKey("X");
goalTime := MaxTime() + testLength;
stepPeriod := 1000;
stepLength := 250;
stepAmpChair := 10;
stepAmpDrum := 0;
ToolbarStepConfig%();
toolbarStepOn%();
' TRAIN
case Order%[expmtIndx] = 3 then
SampleKey("X");
goalTime := MaxTime() + runLength;
stepPeriod := 10000;
stepLength := 5000;
stepAmpChair := 0;
stepAmpDrum := -10;
QueTime := 495;
ToolbarStepConfig%();
toolbarStepOn%();
' QUIT EXPMT
case Order%[expmtIndx] = 9 then
ToolbarQuitExpmt%();
Return(1);
endcase;
expmtIndx := expmtIndx + 1;
endif;
endif;
Return(1);
End
'--------------------------------------------------------------------------------
'Configure expmt settings window
'--------------------------------------------------------------------------------
Func ToolbarConfigExpmt%()
DlgCreate("Experiment settings"); 'Start new dialog
DlgReal(1,"Run length (s)",0,5000);
DlgReal(2,"Test length (s)",0,5000);
DlgInteger(3,"Light flash on?)",0,1,0,0,"0|1");
DlgShow(runLength, testLength, flashon%,testStim);
SetSequencerValues();
Return(1);
End

Computing file changes ...