Repository navigation
Expand file tree
/
Copy pathtraining.py
More file actions
2345 lines (2187 loc) · 143 KB
/
Copy pathtraining.py
File metadata and controls
2345 lines (2187 loc) · 143 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# -*- coding: utf-8 -*-
######################################################
# Training:
"""
This training system creates two tones of different frequency.
Each tone has one second of duration (adjustable). After the tone ends, there is a two second
interval (also adjustable) where the subject must either move (first tone) or stand still (second
tone).
If the subject succeds in the task, gets a reward (drop of water).
There is a certain probabilty of ocurrence for each tone. If one tone appears three
time in a row, the other tone is fixed in the next trial.
The inter trial delay is random between 3 to 6 seconds (can be modified.) ><
"""
######################################################><
import os
import sys
import modulespath
import time
import timeit
import logging
import threading
import importlib
import track_bola_utils
def __checkConfigFiles():
#checks if the config files needed for training exist. If not, it generates them.
try:
import config_training as cfgtraining
except ImportError:
print "File config_training.py not found. Generating a new copy..."
a = os.getcwd() + "/"
import shutil
shutil.copyfile(a+"config_training.py.example", a+"config_training.py")
import config_training as cfgtraining
print "config_training.py copied and imported successfully."
print ""
print "Note: To create a custom configuration file for a given subject, copy 'config_training.py' into SUBJNAME_config_training.py"
print ""
except:
print "Error importing config_training."
os._exit(1)
if 'config_training' in sys.modules:
del(sys.modules["config_training"])
pass
def __checkModules():
def __checkOneModule(arg):
#checks if the given module exists in the system.
import imp
try:
imp.find_module( str(arg) )
found = True
except ImportError:
found = False
if (found == False):
print "Module %r not found" % (str(arg))
return found
print "Checking modules."
if (__checkOneModule("cv2") == False):
print "Exiting because of missing import: "+ "cv2"
sys.exit(1)
pass
if (__checkOneModule("timeit") == False):
print "Exiting because of missing import: "+ "timeit"
sys.exit(1)
pass
if (__checkOneModule("numpy") == False):
print "Exiting because of missing import: "+ "numpy"
sys.exit(1)
pass
if (__checkOneModule("pygame") == False):
print "Exiting because of missing import: "+ "pygame"
sys.exit(1)
pass
if (__checkOneModule("parallel") == False):
print "Warning: missing module: " + "parallel"
pass
if (__checkOneModule("Tkinter") == False):
print "Warning: missing module: " + "Tkinter"
pass
if (__checkOneModule("gtk") == False):
print "Warning: missing module: " + "gtk"
print ""
print ""
print "If you are using default configurations, install gtk for python or change configuration variable usingTk to the value 1"
print ""
print ""
pass
pass
__checkModules()
__checkConfigFiles()
class Training():
def __init__(self):
self.trainingInit()
pass
class gVariables():
#Global variables to be used within the Training class.
#Contains global variables AND some training functions (internal to the Training class).
@staticmethod
def dummy_fn():
#does nothing, used before as a testing function.
print "testing"
@staticmethod
def fn_testingFunction():
#print Training.gVariables.videoDet.getMovementMethod()
#print Training.gVariables.videoDet.getMovementThreshold()
#print "end fn_testingFunction"
#Training.gVariables.videoDet.flushCapturedFrames()
pass
@staticmethod
def fn_giveDrop():
#print "giving drop"
Training.gVariables.fn_testingFunction() #should do nothing if nothing is being tested.
Training.gVariables.logger.debug('valve drop')
Training.gVariables.valve1.drop()
if (Training.gVariables.trialExecuting == True):
Training.gVariables.logger.info('Drop given manually - training started.')
Training.gVariables.dropsAmountGivenManually += 1
else:
Training.gVariables.logger.info('Drop given manually - training not started.')
@staticmethod
def fn_savestate():
#print "giving drop"
Training.gVariables.logger.debug('save state')
print "Saving all variables state."
Training.gVariables.fn_internalSaveFileWithVars("configs/config_Pavlov.py", 1)
Training.gVariables.fn_internalSaveFileWithVars("configs/config_Skinner.py", 2)
Training.gVariables.fn_internalSaveFileWithVars("configs/config_Ocond.py", 3)
Training.gVariables.fn_internalSaveFileWithVars("configs/config_Discr.py", 4)
print "Done saving."
pass
@staticmethod
def fn_internalSaveFileWithVars(nombr, num):
if (num == 1):
targetObj = Training.gVariables.pavlovVars
if (num == 2):
targetObj = Training.gVariables.skinnerVars
if (num == 3):
targetObj = Training.gVariables.ocondVars
if (num == 4):
targetObj = Training.gVariables.discrVars
fileToSave = open(nombr, "w+");
fileToSave.write("#%s\n" % time.asctime( time.localtime(time.time()) ) ) ;
fileToSave.write("eventTime1_sound = %r\n" % targetObj.eventTime1_sound);
fileToSave.write("eventTime1_movement_start = %r\n" % targetObj.eventTime1_movement_start);
fileToSave.write("eventTime2_movement = %r\n" % targetObj.eventTime2_movement);
fileToSave.write("eventTime3_trialEnd = %r\n" % targetObj.eventTime3_trialEnd);
fileToSave.write("requireStillness = %r\n" % targetObj.requireStillness);
fileToSave.write("interTrialRandom1Time = %r\n" % targetObj.interTrialRandom1Time);
fileToSave.write("interTrialRandom2Time = %r\n" % targetObj.interTrialRandom2Time);
fileToSave.write("movementTime = %r\n" % targetObj.movementTime);
fileToSave.write("idleTime = %r\n" % targetObj.idleTime);
fileToSave.write("soundGenDuration1 = %r\n" % targetObj.soundGenDuration1);
fileToSave.write("soundGenDuration2 = %r\n" % targetObj.soundGenDuration2);
fileToSave.write("soundGenVolume1 = %r\n" % targetObj.soundGenVolume1);
fileToSave.write("soundGenVolume2 = %r\n" % targetObj.soundGenVolume2);
fileToSave.write("soundGenFrequency1 = %r\n" % targetObj.soundGenFrequency1);
fileToSave.write("soundGenFrequency2 = %r\n" % targetObj.soundGenFrequency2);
fileToSave.write("toneOneProbability = %r\n" % targetObj.toneOneProbability);
@staticmethod
def fn_giveReward():
#gives a drop of water and counts the trial as successful.
Training.giveReward();
if (Training.gVariables.trialExecuting == True):
Training.gVariables.logger.info('Reward given manually.')
Training.gVariables.dropsAmountGivenManually += 1
else:
Training.gVariables.logger.info('Reward not given because training is not in execution.')
@staticmethod
def fn_closeValve():
#Calls the valve object to close if opened.
Training.gVariables.logger.info('valve closed manually')
Training.gVariables.valve1.close()
@staticmethod
def fn_openValve():
#Calls the valve object to open if closed.
Training.gVariables.logger.info('valve opened manually')
Training.gVariables.valve1.open()
@staticmethod
def fn_tone1Test(newfreq):
#Tests the tone n°1
#the argument is the new frequency (if it changed). FIrst updates freq variable then plays.
beforefreq = Training.gVariables.soundGenFrequency1
Training.gVariables.fn_setFrequencyT1(newfreq)
Training.gVariables.logger.info('Changed Tone 1 Frequency to: %d Hz (before was %d Hz)' % (Training.gVariables.soundGenFrequency1, beforefreq ) )
Training.gVariables.s1.play()
@staticmethod
def fn_tone2Test(newfreq):
#Tests the tone n°2
#the argument is the new frequency (if it changed). FIrst updates freq then plays.
beforefreq = Training.gVariables.soundGenFrequency2
Training.gVariables.fn_setFrequencyT2(newfreq)
Training.gVariables.logger.info('Changed Tone 2 Frequency to: %d Hz (before was %d Hz)' % (Training.gVariables.soundGenFrequency2, beforefreq ) )
Training.gVariables.s2.play()
@staticmethod
def fn_setMovementMethod(value_given):
Training.gVariables.videoDet.setMovementMethod(value_given)
print "Movement method set: ", value_given
Training.gVariables.logger.info( "Movement method set: " + str(value_given) )
@staticmethod
def fn_setNumberOfDropsMovement(value_given):
Training.gVariables.numberOfRewardDropsGo = int(value_given)
print "Number of drops per 'movement trial reward' set: ", value_given
Training.gVariables.logger.info( "Number of drops per 'movement trial reward' set: " + str(value_given) )
@staticmethod
def fn_setNumberOfDropsIdle(value_given):
Training.gVariables.numberOfRewardDropsNoGo = int(value_given)
print "Number of drops per 'idle trial reward' set: ", value_given
Training.gVariables.logger.info( "Number of drops per 'idle trial reward' set: " + str(value_given) )
@staticmethod
def fn_movementThresholdSet(value_given):
#aumentar threshold
Training.gVariables.videoDet.setMovementThreshold(int(value_given) )
print "Movement Threshold changed to : " + str(Training.gVariables.videoDet.getMovementThreshold())
Training.gVariables.logger.info( "Movement Threshold changed to : " + str(Training.gVariables.videoDet.getMovementThreshold()) )
@staticmethod
def fn_toneOneProbabilitySet(value_given):
#set Probability of the tone nr1 to value
if (isinstance( value_given, float ) == False ):
return;
Training.gVariables.toneOneProbability = value_given
print "Tone One Probabilty changed to : " + str(Training.gVariables.toneOneProbability * 100) + " %"
Training.gVariables.logger.info( "Tone One Probabilty changed to : " + str(Training.gVariables.toneOneProbability * 100) + " %" )
@staticmethod
def fn_setITRandom1(value_given):
Training.gVariables.interTrialRandom1Time = value_given
print "Intertrial random 1 time set to : ", value_given
Training.gVariables.logger.info( "Intertrial random 1 time set to : " + str(value_given) )
@staticmethod
def fn_setITRandom2(value_given):
Training.gVariables.interTrialRandom2Time = value_given
Training.gVariables.logger.info( "Intertrial random 2 time set to : " + str(value_given) )
@staticmethod
def fn_setMovementWindowStart(value_given):
Training.gVariables.eventTime1_movement_start = value_given
print "Movement window Start set to value: ", value_given
Training.gVariables.logger.info( "Movement window Start set to value: " + str(value_given) )
@staticmethod
def fn_setMovementWindowEnd(value_given):
Training.gVariables.eventTime2_movement = value_given
print "Movement window End set to value: ", value_given
Training.gVariables.logger.info( "Movement window End set to value: " + str(value_given) )
@staticmethod
def fn_setTone1Duration(value_given):
if (value_given != Training.gVariables.soundGenDuration1):
Training.gVariables.soundGenDuration1 = value_given
Training.gVariables.fn_recreateTone1()
print "Tone 1 Duration set to value: ", value_given
Training.gVariables.logger.info( "Tone 1 Duration set to value: " + str(value_given) )
else:
print "Tone 1 Duration is already at value: ", value_given
Training.gVariables.logger.info( "Tone 1 Duration is already at value: " + str(value_given) )
@staticmethod
def fn_setTone2Duration(value_given):
if (value_given != Training.gVariables.soundGenDuration2):
Training.gVariables.soundGenDuration2 = value_given
Training.gVariables.fn_recreateTone2()
print "Tone 2 Duration set to value: ", value_given
Training.gVariables.logger.info( "Tone 2 Duration set to value: " + str(value_given) )
else:
print "Tone 2 Duration is already at value: ", value_given
Training.gVariables.logger.info( "Tone 2 Duration is already at value: " + str(value_given) )
pass
@staticmethod
def fn_setVolumeT1(volmn):
if ( float(volmn) != Training.gVariables.soundGenVolume1):
a = "setting volume T1: " + str(volmn)
print a
Training.gVariables.logger.info(a)
Training.gVariables.soundGenVolume1 = float(volmn)
Training.gVariables.s1.tone(Training.gVariables.soundGenDuration1, Training.gVariables.soundGenFrequency1, Training.gVariables.soundGenVolume1)
#Training.gVariables.s1 = soundGen.soundGen(Training.gVariables.soundGenFrequency1, Training.gVariables.soundGenDuration1)
else:
print "volume for Tone 1 already set at ", volmn
Training.gVariables.logger.info("volume for Tone 1 already set at " + str(volmn) )
pass
@staticmethod
def fn_setVolumeT2(volmn):
if ( float(volmn) != Training.gVariables.soundGenVolume2):
a = "setting volume T2: " + str(volmn)
print a
Training.gVariables.logger.info(a)
Training.gVariables.soundGenVolume2 = float(volmn)
Training.gVariables.s2.tone(Training.gVariables.soundGenDuration2, Training.gVariables.soundGenFrequency2, Training.gVariables.soundGenVolume2)
#Training.gVariables.s2 = soundGen.soundGen(Training.gVariables.soundGenFrequency2, Training.gVariables.soundGenDuration2)
else:
print "volume for Tone 2 already set at ", volmn
Training.gVariables.logger.info("volume for Tone 2 already set at " + str(volmn) )
pass
@staticmethod
def fn_setFrequencyT1(freq):
if ( int(freq) != Training.gVariables.soundGenFrequency1):
a = "setting frequency T1: " + str(freq)
print a
Training.gVariables.logger.info(a)
Training.gVariables.soundGenFrequency1 = int(freq)
Training.gVariables.s1.tone(Training.gVariables.soundGenDuration1, Training.gVariables.soundGenFrequency1)
#Training.gVariables.s1 = soundGen.soundGen(Training.gVariables.soundGenFrequency1, Training.gVariables.soundGenDuration1)
else:
print "frequency for Tone 1 already set at ", freq
Training.gVariables.logger.info("frequency for Tone 1 already set at " + str(freq) )
pass
@staticmethod
def fn_setFrequencyT2(freq):
if ( int(freq) != Training.gVariables.soundGenFrequency2):
a = "setting frequency T2: " + str(freq)
print a
Training.gVariables.logger.info(a)
Training.gVariables.soundGenFrequency2 = int(freq)
Training.gVariables.s2.tone(Training.gVariables.soundGenDuration2, Training.gVariables.soundGenFrequency2)
#Training.gVariables.s2 = soundGen.soundGen(Training.gVariables.soundGenFrequency2, Training.gVariables.soundGenDuration2)
else:
print "frequency for Tone 2 already set at ", freq
Training.gVariables.logger.info("frequency for Tone 2 already set at " + str(freq) )
pass
@staticmethod
def fn_recreateTone1():
#Training.gVariables.s1 = soundGen.soundGen(Training.gVariables.soundGenFrequency1, Training.gVariables.soundGenDuration1)
#recreating tone is too unstable. Better to configure tone
Training.gVariables.s1.tone(Training.gVariables.soundGenDuration1, Training.gVariables.soundGenFrequency1, Training.gVariables.soundGenVolume1)
pass
@staticmethod
def fn_recreateTone2():
#Training.gVariables.s2 = soundGen.soundGen(Training.gVariables.soundGenFrequency2, Training.gVariables.soundGenDuration2)
#recreating tone is too unstable. Better to configure tone
Training.gVariables.s2.tone(Training.gVariables.soundGenDuration2, Training.gVariables.soundGenFrequency2, Training.gVariables.soundGenVolume2)
pass
@staticmethod
def fn_movementTimeSet(nwmvnt):
#set movement time
movement_time = float(nwmvnt)
Training.gVariables.movementTime = movement_time
Training.gVariables.videoDet.setMovementTimeWindow(Training.gVariables.movementTime)
a = "Movement Time changed to : " + str(Training.gVariables.movementTime * 1000) + " ms"
print a
Training.gVariables.logger.info( a )
@staticmethod
def fn_idleTimeSet(nwmvnt):
#set idle time.
idle_time = float(nwmvnt)
Training.gVariables.idleTime = idle_time
a = "Idle Time changed to : " + str(Training.gVariables.idleTime * 1000) + " ms"
print a
Training.gVariables.logger.info( a )
@staticmethod
def fn_calibrateNoiseFilteringOn():
Training.gVariables.videoDet.setNoiseFiltering(True)
Training.gVariables.videoDet.calibrateCircle()
print "Calibrated. Noise Filtering is ON."
Training.gVariables.logger.info( "Calibrated. Noise Filtering is ON." )
@staticmethod
def fn_calibrateNoiseFilteringOff():
Training.gVariables.videoDet.setNoiseFiltering(False)
Training.gVariables.videoDet.calibrateCircle()
print "Calibrated. Noise Filtering is OFF."
Training.gVariables.logger.info( "Calibrated. Noise Filtering is OFF." )
@staticmethod
def fn_startStopTraining(flag):
#the flag comes from the API/GUICheck system.
#However, it is best to check if the training has started probing our own variables
#and override the flag information:
if (Training.gVariables.trialStarted == False):
#the trial is "startable"
flg = 1
else:
#the trial has started, is stoppable.
flg = 2
if (flg == 1):
Training.restartTraining()
if (flg == 2):
Training.stopTraining()
Training.gVariables.videoDet.flushCapturedFrames() # save cached frames to video file.
@staticmethod
def fn_pauseResumeTraining(flag):
#the flag comes from the API/GUICheck system.
#However, it is best to check if the training is resumable or pausable probing our own variables
#and override the flag information:
if (Training.gVariables.trialStarted == True):
if (Training.gVariables.trialExecuting == True):
#trial started and executing, is pausable
Training.pauseTraining()
else:
#trial started and NOT executing, is resumable
Training.resumeTraining()
else:
print "fn_pauseResumeTraining: \n Trial has not been started and cannot be paused or resumed."
Training.gVariables.logger.info( "fn_pauseResumeTraining: \n Trial has not been started and cannot be paused or resumed." )
Training.gVariables.videoDet.flushCapturedFrames() # save cached frames to video file.
@staticmethod
def fn_pauseResumeVideoRecording():
if (Training.gVariables.videoIsRecording == True):
Training.pauseVideoRecording();
else:
Training.resumeVideoRecording();
Training.gVariables.videoDet.flushCapturedFrames() # save cached frames to video file.
pass
@staticmethod
def fn_showTrackingFeedback():
Training.gVariables.videoDet.setTrackingFeedback(True)
pass
@staticmethod
def fn_hideTrackingFeedback():
Training.gVariables.videoDet.setTrackingFeedback(False)
pass
@staticmethod
def fn_showUserFeedback():
Training.gVariables.videoDet.setUserFeedback(True)
pass
@staticmethod
def fn_hideUserFeedback():
Training.gVariables.videoDet.setUserFeedback(False)
pass
@staticmethod
def getFormattedTime(a):
#returns h m s correctly, given the time in seconds as the argument
try:
hours = int (int(a) / 3600) # hours
minutes = int((int(a) - hours * 3600) / 60) # minutes
seconds = int(int(a) - hours * 3600 - minutes * 60)
if hours > 0:
hours = str(hours) + " h "
minutes = str(minutes) + " m "
else:
hours = ""
if (int(minutes) > 0):
minutes = str(minutes) + " m "
else:
minutes = ''
seconds = str(int(seconds)) + " s "
return ( str(hours) + str(minutes) + str(seconds) )
except:
return str(a) + ' s '
class saveVariables():
#each instance of this class will allocate variables associated with a type of training.
#the instances are loaded on init, and when a user chooses a certain type of training,
# it will load by default these variables associated with that type. To override, press save button.
type_pavlov = 0;
type_skinner = 0;
type_ocond = 0;
type_discr = 0;
nothingToLoad = 0; #if 1, there is nothing to load from here (probably there isn't a config file)
def __init__(self, numtype):
try:
numParsed = int(numtype)
except:
return 1;
self.type_pavlov = 0;
self.type_skinner = 0;
self.type_ocond = 0;
self.type_discr = 0;
self.nothingToLoad = 0;
import os, sys, inspect
# use this if you want to include modules from a subfolder
cmd_subfolder = os.path.realpath(os.path.abspath(os.path.join(os.path.split(inspect.getfile( inspect.currentframe() ))[0],"configs")))
if cmd_subfolder not in sys.path:
sys.path.insert(0, cmd_subfolder)
pass
if (numParsed == 1):
#type pavlov.
type_pavlov = 1;
try:
import config_Pavlov as cfg
self.eventTime1_sound = cfg.eventTime1_sound
self.eventTime1_movement_start = cfg.eventTime1_movement_start
self.eventTime2_movement = cfg.eventTime2_movement
self.eventTime3_trialEnd = cfg.eventTime3_trialEnd
self.requireStillness = cfg.requireStillness
self.interTrialRandom1Time = cfg.interTrialRandom1Time
self.interTrialRandom2Time = cfg.interTrialRandom2Time
self.movementTime = cfg.movementTime
self.idleTime = cfg.idleTime
self.soundGenDuration1 = cfg.soundGenDuration1
self.soundGenDuration2 = cfg.soundGenDuration2
self.soundGenFrequency1 = cfg.soundGenFrequency1
self.soundGenFrequency2 = cfg.soundGenFrequency2
self.soundGenVolume1 = cfg.soundGenVolume1
self.soundGenVolume2 = cfg.soundGenVolume2
self.toneOneProbability = cfg.toneOneProbability
print "config_Pavlov loaded successfully."
nothingToLoad = 0
except:
nothingToLoad = 1;
pass
if (numParsed == 2):
10BC8
#type skinner.
type_skinner = 1;
try:
import config_Skinner as cfg
self.eventTime1_sound = cfg.eventTime1_sound
self.eventTime1_movement_start = cfg.eventTime1_movement_start
self.eventTime2_movement = cfg.eventTime2_movement
self.eventTime3_trialEnd = cfg.eventTime3_trialEnd
self.requireStillness = cfg.requireStillness
self.interTrialRandom1Time = cfg.interTrialRandom1Time
self.interTrialRandom2Time = cfg.interTrialRandom2Time
self.movementTime = cfg.movementTime
self.idleTime = cfg.idleTime
self.soundGenDuration1 = cfg.soundGenDuration1
self.soundGenDuration2 = cfg.soundGenDuration2
self.soundGenFrequency1 = cfg.soundGenFrequency1
self.soundGenFrequency2 = cfg.soundGenFrequency2
self.soundGenVolume1 = cfg.soundGenVolume1
self.soundGenVolume2 = cfg.soundGenVolume2
self.toneOneProbability = cfg.toneOneProbability
print "config_Skinner loaded successfully."
nothingToLoad = 0
except:
nothingToLoad = 1;
pass
if (numParsed == 3):
#type ocond.
type_ocond = 1;
try:
import config_Ocond as cfg
self.eventTime1_sound = cfg.eventTime1_sound
self.eventTime1_movement_start = cfg.eventTime1_movement_start
self.eventTime2_movement = cfg.eventTime2_movement
self.eventTime3_trialEnd = cfg.eventTime3_trialEnd
self.requireStillness = cfg.requireStillness
self.interTrialRandom1Time = cfg.interTrialRandom1Time
self.interTrialRandom2Time = cfg.interTrialRandom2Time
self.movementTime = cfg.movementTime
self.idleTime = cfg.idleTime
self.soundGenDuration1 = cfg.soundGenDuration1
self.soundGenDuration2 = cfg.soundGenDuration2
self.soundGenFrequency1 = cfg.soundGenFrequency1
self.soundGenFrequency2 = cfg.soundGenFrequency2
self.soundGenVolume1 = cfg.soundGenVolume1
self.soundGenVolume2 = cfg.soundGenVolume2
self.toneOneProbability = cfg.toneOneProbability
print "config_Ocond loaded successfully."
nothingToLoad = 0
except:
nothingToLoad = 1;
pass
if (numParsed == 4):
#type discr.
type_discr = 1;
try:
import config_Discr as cfg
self.eventTime1_sound = cfg.eventTime1_sound
self.eventTime1_movement_start = cfg.eventTime1_movement_start
self.eventTime2_movement = cfg.eventTime2_movement
self.eventTime3_trialEnd = cfg.eventTime3_trialEnd
self.requireStillness = cfg.requireStillness
self.interTrialRandom1Time = cfg.interTrialRandom1Time
self.interTrialRandom2Time = cfg.interTrialRandom2Time
self.movementTime = cfg.movementTime
self.idleTime = cfg.idleTime
self.soundGenDuration1 = cfg.soundGenDuration1
self.soundGenDuration2 = cfg.soundGenDuration2
self.soundGenFrequency1 = cfg.soundGenFrequency1
self.soundGenFrequency2 = cfg.soundGenFrequency2
self.soundGenVolume1 = cfg.soundGenVolume1
self.soundGenVolume2 = cfg.soundGenVolume2
self.toneOneProbability = cfg.toneOneProbability
print "config_Discr loaded successfully."
nothingToLoad = 0
except:
nothingToLoad = 1;
pass
pass
if (nothingToLoad == 1):
import config_training as cfgtraining
#nothing to load. but as this hasn't loaded anything, its vars will be set to default vars
self.eventTime1_sound = cfgtraining.eventTime1_sound
self.eventTime1_movement_start = cfgtraining.eventTime1_movement_start
self.eventTime2_movement = cfgtraining.eventTime2_movement
self.eventTime3_trialEnd = cfgtraining.eventTime3_trialEnd
self.requireStillness = cfgtraining.requireStillness
self.interTrialRandom1Time = cfgtraining.interTrialRandom1Time
self.interTrialRandom2Time = cfgtraining.interTrialRandom2Time
self.movementTime = cfgtraining.movementTime
self.idleTime = cfgtraining.idleTime
self.soundGenDuration1 = cfgtraining.soundGenDuration1
self.soundGenDuration2 = cfgtraining.soundGenDuration2
self.soundGenFrequency1 = cfgtraining.soundGenFrequency1
self.soundGenFrequency2 = cfgtraining.soundGenFrequency2
self.soundGenVolume1 = cfgtraining.soundGenVolume1
self.soundGenVolume2 = cfgtraining.soundGenVolume2
self.toneOneProbability = cfgtraining.toneOneProbability
#print "Couldn't read config file for this custom training type configuration. Setting default variables."
pass
@staticmethod
def savePavlovVars():
Training.gVariables.pavlovVars.eventTime1_sound = Training.gVariables.eventTime1_sound
Training.gVariables.pavlovVars.eventTime1_movement_start = Training.gVariables.eventTime1_movement_start
Training.gVariables.pavlovVars.eventTime2_movement = Training.gVariables.eventTime2_movement
Training.gVariables.pavlovVars.eventTime3_trialEnd = Training.gVariables.eventTime3_trialEnd
Training.gVariables.pavlovVars.requireStillness = Training.gVariables.requireStillness
Training.gVariables.pavlovVars.interTrialRandom1Time = Training.gVariables.interTrialRandom1Time
Training.gVariables.pavlovVars.interTrialRandom2Time = Training.gVariables.interTrialRandom2Time
Training.gVariables.pavlovVars.movementTime = Training.gVariables.movementTime
Training.gVariables.pavlovVars.idleTime = Training.gVariables.idleTime
Training.gVariables.pavlovVars.soundGenDuration1 = Training.gVariables.soundGenDuration1
Training.gVariables.pavlovVars.soundGenDuration2 = Training.gVariables.soundGenDuration2
Training.gVariables.pavlovVars.soundGenFrequency1 = Training.gVariables.soundGenFrequency1
Training.gVariables.pavlovVars.soundGenFrequency2 = Training.gVariables.soundGenFrequency2
Training.gVariables.pavlovVars.soundGenVolume1 = Training.gVariables.soundGenVolume1
Training.gVariables.pavlovVars.soundGenVolume2 = Training.gVariables.soundGenVolume2
Training.gVariables.pavlovVars.toneOneProbability = Training.gVariables.toneOneProbability
pass
@staticmethod
def saveSkinnerVars():
Training.gVariables.skinnerVars.eventTime1_sound = Training.gVariables.eventTime1_sound
Training.gVariables.skinnerVars.eventTime1_movement_start = Training.gVariables.eventTime1_movement_start
Training.gVariables.skinnerVars.eventTime2_movement = Training.gVariables.eventTime2_movement
Training.gVariables.skinnerVars.eventTime3_trialEnd = Training.gVariables.eventTime3_trialEnd
Training.gVariables.skinnerVars.requireStillness = Training.gVariables.requireStillness
Training.gVariables.skinnerVars.interTrialRandom1Time = Training.gVariables.interTrialRandom1Time
Training.gVariables.skinnerVars.interTrialRandom2Time = Training.gVariables.interTrialRandom2Time
Training.gVariables.skinnerVars.movementTime = Training.gVariables.movementTime
Training.gVariables.skinnerVars.idleTime = Training.gVariables.idleTime
Training.gVariables.skinnerVars.soundGenDuration1 = Training.gVariables.soundGenDuration1
Training.gVariables.skinnerVars.soundGenDuration2 = Training.gVariables.soundGenDuration2
Training.gVariables.skinnerVars.soundGenFrequency1 = Training.gVariables.soundGenFrequency1
Training.gVariables.skinnerVars.soundGenFrequency2 = Training.gVariables.soundGenFrequency2
Training.gVariables.skinnerVars.soundGenVolume1 = Training.gVariables.soundGenVolume1
Training.gVariables.skinnerVars.soundGenVolume2 = Training.gVariables.soundGenVolume2
Training.gVariables.skinnerVars.toneOneProbability = Training.gVariables.toneOneProbability
pass
@staticmethod
def saveOcondVars():
Training.gVariables.ocondVars.eventTime1_sound = Training.gVariables.eventTime1_sound
Training.gVariables.ocondVars.eventTime1_movement_start = Training.gVariables.eventTime1_movement_start
Training.gVariables.ocondVars.eventTime2_movement = Training.gVariables.eventTime2_movement
Training.gVariables.ocondVars.eventTime3_trialEnd = Training.gVariables.eventTime3_trialEnd
Training.gVariables.ocondVars.requireStillness = Training.gVariables.requireStillness
Training.gVariables.ocondVars.interTrialRandom1Time = Training.gVariables.interTrialRandom1Time
Training.gVariables.ocondVars.interTrialRandom2Time = Training.gVariables.interTrialRandom2Time
Training.gVariables.ocondVars.movementTime = Training.gVariables.movementTime
Training.gVariables.ocondVars.idleTime = Training.gVariables.idleTime
Training.gVariables.ocondVars.soundGenDuration1 = Training.gVariables.soundGenDuration1
Training.gVariables.ocondVars.soundGenDuration2 = Training.gVariables.soundGenDuration2
Training.gVariables.ocondVars.soundGenFrequency1 = Training.gVariables.soundGenFrequency1
Training.gVariables.ocondVars.soundGenFrequency2 = Training.gVariables.soundGenFrequency2
Training.gVariables.ocondVars.soundGenVolume1 = Training.gVariables.soundGenVolume1
Training.gVariables.ocondVars.soundGenVolume2 = Training.gVariables.soundGenVolume2
Training.gVariables.ocondVars.toneOneProbability = Training.gVariables.toneOneProbability
pass
@staticmethod
def saveDiscrVars():
Training.gVariables.discrVars.eventTime1_sound = Training.gVariables.eventTime1_sound
Training.gVariables.discrVars.eventTime1_movement_start = Training.gVariables.eventTime1_movement_start
Training.gVariables.discrVars.eventTime2_movement = Training.gVariables.eventTime2_movement
Training.gVariables.discrVars.eventTime3_trialEnd = Training.gVariables.eventTime3_trialEnd
Training.gVariables.discrVars.requireStillness = Training.gVariables.requireStillness
Training.gVariables.discrVars.interTrialRandom1Time = Training.gVariables.interTrialRandom1Time
Training.gVariables.discrVars.interTrialRandom2Time = Training.gVariables.interTrialRandom2Time
Training.gVariables.discrVars.movementTime = Training.gVariables.movementTime
Training.gVariables.discrVars.idleTime = Training.gVariables.idleTime
Training.gVariables.discrVars.soundGenDuration1 = Training.gVariables.soundGenDuration1
Training.gVariables.discrVars.soundGenDuration2 = Training.gVariables.soundGenDuration2
Training.gVariables.discrVars.soundGenFrequency1 = Training.gVariables.soundGenFrequency1
Training.gVariables.discrVars.soundGenFrequency2 = Training.gVariables.soundGenFrequency2
Training.gVariables.discrVars.soundGenVolume1 = Training.gVariables.soundGenVolume1
Training.gVariables.discrVars.soundGenVolume2 = Training.gVariables.soundGenVolume2
Training.gVariables.discrVars.toneOneProbability = Training.gVariables.toneOneProbability
pass
@staticmethod
def loadPavlovVars():
Training.gVariables.eventTime1_sound = Training.gVariables.pavlovVars.eventTime1_sound
Training.gVariables.eventTime1_movement_start = Training.gVariables.pavlovVars.eventTime1_movement_start
Training.gVariables.eventTime2_movement = Training.gVariables.pavlovVars.eventTime2_movement
Training.gVariables.eventTime3_trialEnd = Training.gVariables.pavlovVars.eventTime3_trialEnd
Training.gVariables.requireStillness = Training.gVariables.pavlovVars.requireStillness
Training.gVariables.interTrialRandom1Time = Training.gVariables.pavlovVars.interTrialRandom1Time
Training.gVariables.interTrialRandom2Time = Training.gVariables.pavlovVars.interTrialRandom2Time
Training.gVariables.movementTime = Training.gVariables.pavlovVars.movementTime
Training.gVariables.idleTime = Training.gVariables.pavlovVars.idleTime
#Training.gVariables.soundGenDuration1 = Training.gVariables.pavlovVars.soundGenDuration1
#fn_setTone1Duration
Training.gVariables.fn_setTone1Duration(Training.gVariables.pavlovVars.soundGenDuration1)
#fn_setTone2Duration
#Training.gVariables.soundGenDuration2 = Training.gVariables.pavlovVars.soundGenDuration2
Training.gVariables.fn_setTone2Duration(Training.gVariables.pavlovVars.soundGenDuration2)
##
Training.gVariables.fn_setFrequencyT1(Training.gVariables.pavlovVars.soundGenFrequency1)
#Training.gVariables.soundGenFrequency1 = Training.gVariables.pavlovVars.soundGenFrequency1
Training.gVariables.fn_setFrequencyT2(Training.gVariables.pavlovVars.soundGenFrequency2)
Training.gVariables.fn_setVolumeT1(Training.gVariables.pavlovVars.soundGenVolume1)
#Training.gVariables.soundGenFrequency1 = Training.gVariables.pavlovVars.soundGenFrequency1
Training.gVariables.fn_setVolumeT2(Training.gVariables.pavlovVars.soundGenVolume2)
#Training.gVariables.soundGenFrequency2 = Training.gVariables.pavlovVars.soundGenFrequency2
Training.gVariables.toneOneProbability = Training.gVariables.pavlovVars.toneOneProbability
pass
@staticmethod
def loadSkinnerVars():
Training.gVariables.eventTime1_sound = Training.gVariables.skinnerVars.eventTime1_sound
Training.gVariables.eventTime1_movement_start = Training.gVariables.skinnerVars.eventTime1_movement_start
Training.gVariables.eventTime2_movement = Training.gVariables.skinnerVars.eventTime2_movement
Training.gVariables.eventTime3_trialEnd = Training.gVariables.skinnerVars.eventTime3_trialEnd
Training.gVariables.requireStillness = Training.gVariables.skinnerVars.requireStillness
Training.gVariables.interTrialRandom1Time = Training.gVariables.skinnerVars.interTrialRandom1Time
Training.gVariables.interTrialRandom2Time = Training.gVariables.skinnerVars.interTrialRandom2Time
Training.gVariables.movementTime = Training.gVariables.skinnerVars.movementTime
Training.gVariables.idleTime = Training.gVariables.skinnerVars.idleTime
#Training.gVariables.soundGenDuration1 = Training.gVariables.skinnerVars.soundGenDuration1
#fn_setTone1Duration
Training.gVariables.fn_setTone1Duration(Training.gVariables.skinnerVars.soundGenDuration1)
#fn_setTone2Duration
#Training.gVariables.soundGenDuration2 = Training.gVariables.skinnerVars.soundGenDuration2
Training.gVariables.fn_setTone2Duration(Training.gVariables.skinnerVars.soundGenDuration2)
##
Training.gVariables.fn_setFrequencyT1(Training.gVariables.skinnerVars.soundGenFrequency1)
#Training.gVariables.soundGenFrequency1 = Training.gVariables.skinnerVars.soundGenFrequency1
8
T
10BC8
raining.gVariables.fn_setFrequencyT2(Training.gVariables.skinnerVars.soundGenFrequency2)
Training.gVariables.fn_setVolumeT1(Training.gVariables.skinnerVars.soundGenVolume1)
#Training.gVariables.soundGenFrequency1 = Training.gVariables.skinnerVars.soundGenFrequency1
Training.gVariables.fn_setVolumeT2(Training.gVariables.skinnerVars.soundGenVolume2)
#Training.gVariables.soundGenFrequency2 = Training.gVariables.skinnerVars.soundGenFrequency2
Training.gVariables.toneOneProbability = Training.gVariables.skinnerVars.toneOneProbability
pass
@staticmethod
def loadOcondVars():
Training.gVariables.eventTime1_sound = Training.gVariables.ocondVars.eventTime1_sound
Training.gVariables.eventTime1_movement_start = Training.gVariables.ocondVars.eventTime1_movement_start
Training.gVariables.eventTime2_movement = Training.gVariables.ocondVars.eventTime2_movement
Training.gVariables.eventTime3_trialEnd = Training.gVariables.ocondVars.eventTime3_trialEnd
Training.gVariables.requireStillness = Training.gVariables.ocondVars.requireStillness
Training.gVariables.interTrialRandom1Time = Training.gVariables.ocondVars.interTrialRandom1Time
Training.gVariables.interTrialRandom2Time = Training.gVariables.ocondVars.interTrialRandom2Time
Training.gVariables.movementTime = Training.gVariables.ocondVars.movementTime
Training.gVariables.idleTime = Training.gVariables.ocondVars.idleTime
#Training.gVariables.soundGenDuration1 = Training.gVariables.ocondVars.soundGenDuration1
#fn_setTone1Duration
Training.gVariables.fn_setTone1Duration(Training.gVariables.ocondVars.soundGenDuration1)
#fn_setTone2Duration
#Training.gVariables.soundGenDuration2 = Training.gVariables.ocondVars.soundGenDuration2
Training.gVariables.fn_setTone2Duration(Training.gVariables.ocondVars.soundGenDuration2)
##
Training.gVariables.fn_setFrequencyT1(Training.gVariables.ocondVars.soundGenFrequency1)
#Training.gVariables.soundGenFrequency1 = Training.gVariables.ocondVars.soundGenFrequency1
Training.gVariables.fn_setFrequencyT2(Training.gVariables.ocondVars.soundGenFrequency2)
Training.gVariables.fn_setVolumeT1(Training.gVariables.ocondVars.soundGenVolume1)
Training.gVariables.fn_setVolumeT2(Training.gVariables.ocondVars.soundGenVolume2)
#Training.gVariables.soundGenFrequency2 = Training.gVariables.ocondVars.soundGenFrequency2
Training.gVariables.toneOneProbability = Training.gVariables.ocondVars.toneOneProbability
pass
@staticmethod
def loadDiscrVars():
Training.gVariables.eventTime1_sound = Training.gVariables.discrVars.eventTime1_sound
Training.gVariables.eventTime1_movement_start = Training.gVariables.discrVars.eventTime1_movement_start
Training.gVariables.eventTime2_movement = Training.gVariables.discrVars.eventTime2_movement
Training.gVariables.eventTime3_trialEnd = Training.gVariables.discrVars.eventTime3_trialEnd
Training.gVariables.requireStillness = Training.gVariables.discrVars.requireStillness
Training.gVariables.interTrialRandom1Time = Training.gVariables.discrVars.interTrialRandom1Time
Training.gVariables.interTrialRandom2Time = Training.gVariables.discrVars.interTrialRandom2Time
Training.gVariables.movementTime = Training.gVariables.discrVars.movementTime
Training.gVariables.idleTime = Training.gVariables.discrVars.idleTime
#Training.gVariables.soundGenDuration1 = Training.gVariables.discrVars.soundGenDuration1
#fn_setTone1Duration
Training.gVariables.fn_setTone1Duration(Training.gVariables.discrVars.soundGenDuration1)
#fn_setTone2Duration
#Training.gVariables.soundGenDuration2 = Training.gVariables.discrVars.soundGenDuration2
Training.gVariables.fn_setTone2Duration(Training.gVariables.discrVars.soundGenDuration2)
##
Training.gVariables.fn_setFrequencyT1(Training.gVariables.discrVars.soundGenFrequency1)
#Training.gVariables.soundGenFrequency1 = Training.gVariables.discrVars.soundGenFrequency1
Training.gVariables.fn_setFrequencyT2(Training.gVariables.discrVars.soundGenFrequency2)
Training.gVariables.fn_setVolumeT1(Training.gVariables.discrVars.soundGenVolume1)
Training.gVariables.fn_setVolumeT2(Training.gVariables.discrVars.soundGenVolume2)
#Training.gVariables.soundGenFrequency2 = Training.gVariables.discrVars.soundGenFrequency2
Training.gVariables.toneOneProbability = Training.gVariables.discrVars.toneOneProbability
pass
@staticmethod
def loadIntoAPIPavlovVars():
objc = Training.gVariables.currentGUI.pavlovVars
objc.toneStart = 0;
objc.toneEnd = Training.gVariables.pavlovVars.eventTime1_sound;
objc.movementWindowStart = Training.gVariables.pavlovVars.eventTime1_movement_start;
objc.movementWindowEnd = Training.gVariables.pavlovVars.eventTime2_movement;
objc.interTrialStart = Training.gVariables.pavlovVars.interTrialRandom1Time;
objc.interTrialEnd = Training.gVariables.pavlovVars.interTrialRandom2Time;
objc.probabilityToneOne = Training.gVariables.pavlovVars.toneOneProbability;
objc.frequencyTone1 = Training.gVariables.pavlovVars.soundGenFrequency1;
objc.frequencyTone2 = Training.gVariables.pavlovVars.soundGenFrequency2;
objc.volumeTone1 = Training.gVariables.pavlovVars.soundGenVolume1;
objc.volumeTone2= Training.gVariables.pavlovVars.soundGenVolume2;
#objc.movementAmount = Training.gVariables.pavlovVars.?¡??????
#objc.movementMethod = Training.gVariables.pavlovVars.??????????????????????????'
objc.movementTime = Training.gVariables.pavlovVars.movementTime;
objc.idleTime = Training.gVariables.pavlovVars.idleTime;
objc.requireStillnessVar = Training.gVariables.pavlovVars.requireStillness;
pass
@staticmethod
def loadIntoAPISkinnerVars():
objc = Training.gVariables.currentGUI.skinnerVars
objc.toneStart = 0;
objc.toneEnd = Training.gVariables.skinnerVars.eventTime1_sound;
objc.movementWindowStart = Training.gVariables.skinnerVars.eventTime1_movement_start;
objc.movementWindowEnd = Training.gVariables.skinnerVars.eventTime2_movement;
objc.interTrialStart = Training.gVariables.skinnerVars.interTrialRandom1Time;
objc.interTrialEnd = Training.gVariables.skinnerVars.interTrialRandom2Time;
objc.probabilityToneOne = Training.gVariables.skinnerVars.toneOneProbability;
objc.frequencyTone1 = Training.gVariables.skinnerVars.soundGenFrequency1;
objc.frequencyTone2 = Training.gVariables.skinnerVars.soundGenFrequency2;
objc.volumeTone1 = Training.gVariables.skinnerVars.soundGenVolume1;
objc.volumeTone2= Training.gVariables.skinnerVars.soundGenVolume2;
#objc.movementAmount = Training.gVariables.skinnerVars.?¡??????
#objc.movementMethod = Training.gVariables.skinnerVars.??????????????????????????'
objc.movementTime = Training.gVariables.skinnerVars.movementTime;
objc.idleTime = Training.gVariables.skinnerVars.idleTime;
objc.requireStillnessVar = Training.gVariables.skinnerVars.requireStillness;
pass
@staticmethod
def loadIntoAPIOcondVars():
objc = Training.gVariables.currentGUI.ocondVars
objc.toneStart = 0;
objc.toneEnd = Training.gVariables.ocondVars.eventTime1_sound;
objc.movementWindowStart = Training.gVariables.ocondVars.eventTime1_movement_start;
objc.movementWindowEnd = Training.gVariables.ocondVars.eventTime2_movement;
objc.interTrialStart = Training.gVariables.ocondVars.interTrialRandom1Time;
objc.interTrialEnd = Training.gVariables.ocondVars.interTrialRandom2Time;
objc.probabilityToneOne = Training.gVariables.ocondVars.toneOneProbability;
objc.frequencyTone1 = Training.gVariables.ocondVars.soundGenFrequency1;
objc.frequencyTone2 = Training.gVariables.ocondVars.soundGenFrequency2;
objc.volumeTone1 = Training.gVariables.ocondVars.soundGenVolume1;
objc.volumeTone2= Training.gVariables.ocondVars.soundGenVolume2;
#objc.movementAmount = Training.gVariables.ocondVars.?¡??????
#objc.movementMethod = Training.gVariables.ocondVars.??????????????????????????'
objc.movementTime = Training.gVariables.ocondVars.movementTime;
objc.idleTime = Training.gVariables.ocondVars.idleTime;
objc.requireStillnessVar = Training.gVariables.ocondVars.requireStillness;
pass
@staticmethod
def loadIntoAPIDiscrVars():
objc = Training.gVariables.currentGUI.discrVars
objc.toneStart = 0;
objc.toneEnd = Training.gVariables.discrVars.eventTime1_sound;
objc.movementWindowStart = Training.gVariables.discrVars.eventTime1_movement_start;
objc.movementWindowEnd = Training.gVariables.discrVars.eventTime2_movement;
objc.interTrialStart = Training.gVariables.discrVars.interTrialRandom1Time;
objc.interTrialEnd = Training.gVariables.discrVars.interTrialRandom2Time;
objc.probabilityToneOne = Training.gVariables.discrVars.toneOneProbability;
objc.frequencyTone1 = Training.gVariables.discrVars.soundGenFrequency1;
objc.frequencyTone2 = Training.gVariables.discrVars.soundGenFrequency2;
objc.volumeTone1 = Training.gVariables.discrVars.soundGenVolume1;
objc.volumeTone2= Training.gVariables.discrVars.soundGenVolume2;
#objc.movementAmount = Training.gVariables.discrVars.?¡??????
#objc.movementMethod = Training.gVariables.discrVars.??????????????????????????'
objc.movementTime = Training.gVariables.discrVars.movementTime;
objc.idleTime = Training.gVariables.discrVars.idleTime;
objc.requireStillnessVar = Training.gVariables.discrVars.requireStillness;
pass
pass
import config_training as cfgtraining
trainingName = cfgtraining.trainingName
# relevant Training variables
eventTime1_sound = cfgtraining.eventTime1_sound # in seconds. Instant of time when the soundGen ends.
eventTime1_movement_start = cfgtraining.eventTime1_movement_start # in seconds. Instant of time when the movement starts to be considered
eventTime2_movement = cfgtraining.eventTime2_movement # in seconds. Instant of time when movement ceases to be considered for reward
eventTime3_trialEnd = cfgtraining.eventTime3_trialEnd # in seconds. Instant of time when the trial ends.
minIdleIntertrialTime = cfgtraining.minIdleIntertrialTime # no-movement time in seconds before the start of next trial. If not reached this time with no movement, trial doesn't start
requireStillness = cfgtraining.requireStillness # require to stay idle to end trial and start next one.
numberOfRewardDropsGo = cfgtraining.numberOfRewardDropsGo #number of drops to give as reward when GO trial is successful
numberOfRewardDropsNoGo = cfgtraining.numberOfRewardDropsNoGo #number of drops to give as reward when GO trial is successful
pauseAudioAndVideoWhenTrPaused = cfgtraining.pauseAudioAndVideoWhenTrPaused #if 1, audio and video paused when training paused.
interTrialRandom1Time = cfgtraining.interTrialRandom1Time # intertrial time is random between this value and the random2 value
interTrialRandom2Time = cfgtraining.interTrialRandom2Time # intertrial time is random between previous value and this value. This
# is also the max duration of a trial.
#maxMovementTime = cfgtraining.maxMovementTime # max amount of movement time (10 means 1000 ms) to give reward. SHould be less than the opportunity duration
movementTime = cfgtraining.movementTime # continuous moving time that should be reached to give reward. 0.5 = 500 ms
# ex.: movementTime = 0.5 means that there should be movement detected over 500 ms at least
idleTime = cfgtraining.idleTime # continuous idle time that should be reached to give reward. 10= 1000 ms
soundGenDuration1 = cfgtraining.soundGenDuration1
soundGenDuration2 = cfgtraining.soundGenDuration2
soundGenFrequency1 = cfgtraining.soundGenFrequency1 # in Hz
soundGenFrequency2 = cfgtraining.soundGenFrequency2 # in Hz
soundGenVolume1 = cfgtraining.soundGenVolume1 # in Hz
soundGenVolume2 = cfgtraining.soundGenVolume2 # in Hz
flushVideoFramesEachTrial = cfgtraining.flushVideoFramesEachTrial #flush frames each trial
trialCount = 0 # total number of trials
movementTrialCount = 0 # total number of trials of the type "Move" (which requires the subject to move)
idleTrialCount = 0 # total number of trials of the type "Idle" (which requires the subject to stay idle.)
successTrialCount = 0 # total number of succesful trials
successMovementTrialCount = 0 # total number of succesful trials regarding movement state
successIdleTrialCount = 0 # total number of succesful trials regarding idle state
successRate = 0 # success rate = (success trials / total trial count) %
dropReleased = 0 # 0: no drop of water released this trial, 1: drop of water released
dropsAmountGivenManually = 0 # number of drops given manually.
trialExecuting = False # if true, the trial is online and working. Else, it has been stopped or never started
trialStarted = False # if true, the trial has been started (and as a consequence is pausable)
trialSuccessful = False # true: this trial was successful , false it was not.
countMovement = 0 # if it reaches 10, there has been detected a sustained movement for 1000 ms => give reward
countIdleTime = 0 # if it reaches 10, there has NOT been detected a sustained movement for 1000 ms => reset counters
LOOP_FUNCTION_SLEEP_TIME = 0.05 # sleep time for the trial loop function (how frequently it asks videodet)
#GUI Type:
GUIType = cfgtraining.usingTK
multiProcSubjectNameQuery = cfgtraining.multiProcSubjectNameQuery
currentGUI = None #user Interface API object.
current_mode=""
# video Detection:
videoDet = 0 # video Detection object. initialized in the main.
videoSecond = -1 # second camera object
videoMovementMethod = cfgtraining.MOVEMENT_METHOD_INITIAL_VALUE #movement method to be used for movement analysis.
movementAmount = cfgtraining.MOVEMENT_THRESHOLD_INITIAL_VALUE
absolute_start_time = timeit.default_timer() # time when training started.
start_time = timeit.default_timer() # time when training with tone started.
current_trial_start_time = timeit.default_timer() # current trial in execution, absolute time it started
current_trial_time = timeit.default_timer() # second of the current trial (between 0 and the maximum length of a trial)
current_trial_paused_time = 0 # to handle pause and resume correctly..
current_trial_stage = 0 # 0: tone, 1: movement detection, 2: inter-trial, 3: instant before changing to 0
toneOneProbability = cfgtraining.toneOneProbability
history_trial = [1, 2, 1, 2, 1, 2]
current_trial_type = 0 # 1: for tone one, reward after movement 2: for tone two, reward after standing still
current_trial_type_str = "" # same as type but with string format.
trial_comment = "" #comment about this training session.
override_training_types = 0; #if 1, all training types configs will be omitted.