https://github.com/RaymondLab/Code
Tip revision: f562b26a59ee1fe18ddbdd35eb072e822e4e0f63 authored by Katie Li on 14 November 2022, 22:02:35 UTC
Matlab files on D241B setup
Matlab files on D241B setup
Tip revision: f562b26
Experiment_Sriram_Oct2019_Alzheimers.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
'--------------------------------------------------------------------------------
ToolbarConfig();
' 0 = GAP A
' 1 = Gap B
' 2 = test
' 3 = train Short
' 4 = Train Long
' 5 = Dark Resting
' 9 = quit experiment
const Order%[] := {0, 1, 2,
0, 1, 2,
0, 1, 2,
0, 1, 3, 2,
0, 1, 3, 2,
0, 1, 4, 2,
0, 1, 4, 2,
0, 1, 2,
0, 1, 2,
0, 1, 5,
0, 1, 2,
0, 9};
var expmtIndx := 0;
'--------------------------------------------------------------------------------
' 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/sinHzChair) 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");
SampleKey("X");
goalTime := MaxTime() + testLength;
ToolbarStimOff%();
ToolbarLightOff%();
if expmtMode = 5 then
ToolbarStepOn%();
else
ToolbarSineStart%();
endif;
' TRAIN SHORT
case Order%[expmtIndx] = 3 then
SampleKey("X");
goalTime := MaxTime() + runLength;
docase
'3 = ipsi, 4 = contra
case expmtMode = 3 or expmtMode = 4 then
ToolbarSineStart%();
ToolbarStimOn%();
'1 = x0, 2 = x2
case expmtMode = 1 or expmtMode = 2 then
ToolbarSineStart%();
ToolbarLightOn%();
'5 = step
case expmtMode = 5 then
ToolbarStepOff%(); Yield();
ToolbarLightOn%(); Yield();
ToolbarStepOn%();
endcase;
' TEST
' TRAIN LONG
case Order%[expmtIndx] = 4 then
SampleKey("X");
goalTime := MaxTime() + runLength*2;
docase
'3 = ipsi, 4 = contra
case expmtMode = 3 or expmtMode = 4 then
ToolbarSineStart%();
ToolbarStimOn%();
'1 = x0, 2 = x2
case expmtMode = 1 or expmtMode = 2 then
ToolbarSineStart%();
ToolbarLightOn%();
'5 = step
case expmtMode = 5 then
ToolbarStepOff%(); Yield();
ToolbarLightOn%(); Yield();
ToolbarStepOn%();
endcase;
' DARK RESTING
case Order%[expmtIndx] = 5 then
SampleKey("X");
goalTime := MaxTime() + runLength
' 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
DlgInteger(1,"Number of run-test blocks",0,100,0,0,1);
DlgInteger(2,"Number of tests per block",1,100,0,0,1); 'set to 0 if not using Chair
DlgReal(3,"Run length (s)",0,5000);
DlgReal(4,"Test length (s)",0,5000);
DlgList(5,"Expmt mode", "habit|x0|x2|ipsi|contra|steps");
DlgInteger(6,"Light flash on?)",0,1,0,0,"0|1");
DlgReal(7,"Test stim and bilat (0 or 1)",0,1);
DlgShow(nBlocks%, nTestreps%, runLength, testLength, expmtMode, flashon%,testStim);
docase
case expmtMode = 0 then 'habit
sinPhDrum := 90;
sinPhChair := 90;
sinAmpChair := 10;
sinAmpDrum := 0;
case expmtMode = 1 then 'x0
sinPhDrum := 90;
sinPhChair := 90;
sinAmpChair := 10;
sinAmpDrum := 10;
case expmtMode = 2 then 'x2
sinPhDrum := -90;
sinPhChair := 90;
sinAmpChair := 10;
sinAmpDrum := 10;
case expmtMode = 3 then 'ipsi
sinPhChair := 90;
sinAmpDrum := 0;
case expmtMode = 4 then 'contra
sinPhChair := -90;
sinAmpDrum := 0;
case expmtMode = 5 then 'steps
StepConfigWindow%();
endcase;
if testStim > 0 then
ToolbarPulseConfig%()
endif;
SetSequencerValues();
Return(1);
End