def __init__(self, parent=None, paramfile=None, paramdictname=None): super(Paradigm, self).__init__(parent) # -- Read settings -- smServerType = rigsettings.STATE_MACHINE_TYPE # -- Create dispatcher -- self.dispatcherModel = dispatcher.Dispatcher(serverType=smServerType,interval=0.1) self.dispatcherView = dispatcher.DispatcherGUI(model=self.dispatcherModel) # -- Add parameters -- self.params = paramgui.Container() self.params['periodOn'] = paramgui.NumericParam('Period On',value=0.2, group='Timing Parameters') self.params['periodOff'] = paramgui.NumericParam('Period Off',value=0.2, group='Timing Parameters') self.params['trainOn'] = paramgui.NumericParam('Train On',value=2, group='Timing Parameters') self.params['trainOff'] = paramgui.NumericParam('Train Off',value=1, group='Timing Parameters') timingParams = self.params.layout_group('Timing Parameters') # -- Add graphical widgets to main window -- centralWidget = QtGui.QWidget() layoutMain = QtGui.QHBoxLayout() layoutMain.addWidget(self.dispatcherView) layoutOneColumn = QtGui.QVBoxLayout() layoutOneColumn.addWidget(timingParams) layoutOneColumn.addStretch() layoutMain.addLayout(layoutOneColumn) centralWidget.setLayout(layoutMain) self.setCentralWidget(centralWidget) # -- Center in screen -- paramgui.center_in_screen(self) # -- Connect signals from dispatcher -- self.dispatcherModel.prepareNextTrial.connect(self.prepare_next_trial) self.dispatcherModel.timerTic.connect(self.timer_tic) self.sm = statematrix.StateMatrix(inputs=rigsettings.INPUTS, outputs=rigsettings.OUTPUTS, readystate='ready_next_trial', extratimers=['trainTimer'])
def __init__(self, parent=None, paramfile=None, paramdictname=None): super(Paradigm, self).__init__(parent) # -- Read settings -- smServerType = rigsettings.STATE_MACHINE_TYPE # -- Create dispatcher -- self.dispatcherModel = dispatcher.Dispatcher(serverType=smServerType,interval=0.1) self.dispatcherView = dispatcher.DispatcherGUI(model=self.dispatcherModel) # -- Add parameters -- self.params = paramgui.Container() self.params['periodOn'] = paramgui.NumericParam('Period On',value=0.5, group='Timing Parameters') self.params['periodOff'] = paramgui.NumericParam('Period Off',value=1, group='Timing Parameters') timingParams = self.params.layout_group('Timing Parameters') self.params['irrelevant1'] = paramgui.MenuParam('Irrelevant 1', ['one_item','another_item'], value=0,group='Irrelevant') self.params['irrelevant2'] = paramgui.StringParam('Irrelevant 2',value='nothing', group='Irrelevant') irrelevantParams = self.params.layout_group('Irrelevant') # -- Add graphical widgets to main window -- centralWidget = QtGui.QWidget() layoutMain = QtGui.QHBoxLayout() layoutMain.addWidget(self.dispatcherView) layoutOneColumn = QtGui.QVBoxLayout() layoutOneColumn.addWidget(timingParams) layoutOneColumn.addWidget(irrelevantParams) layoutMain.addLayout(layoutOneColumn) centralWidget.setLayout(layoutMain) self.setCentralWidget(centralWidget) # -- Center in screen -- paramgui.center_in_screen(self) # -- Connect signals from dispatcher -- self.dispatcherModel.prepareNextTrial.connect(self.prepare_next_trial) self.dispatcherModel.timerTic.connect(self.timer_tic)
def __init__(self,parent=None, paramfile=None, paramdictname=None): super(RigTest, self).__init__(parent) self.name = 'rigtest' smServerType = rigsettings.STATE_MACHINE_TYPE # -- Create an empty state matrix -- self.sm = statematrix.StateMatrix(inputs=rigsettings.INPUTS, outputs=rigsettings.OUTPUTS, readystate='readyForNextTrial') # -- Create dispatcher -- self.dispatcherModel = dispatcher.Dispatcher(serverType=smServerType,interval=0.1) self.dispatcherView = dispatcher.DispatcherGUI(model=self.dispatcherModel) # -- Manual control of outputs -- self.manualControl = manualcontrol.WaterControl(self.dispatcherModel.statemachine) # -- Add parameters -- self.params = paramgui.Container() self.params['timeWaterValveL'] = paramgui.NumericParam('Time valve left',value=0.03, units='s',group='Water delivery') self.params['timeWaterValveR'] = paramgui.NumericParam('Time valve right',value=0.03, units='s',group='Water delivery') self.params['offTime'] = paramgui.NumericParam('Time between',value=0.25, units='s',group='Schedule') self.params['soundDuration'] = paramgui.NumericParam('Sound duration',value=0.26,decimals=2, units='s',group='Sound',enabled=False) self.params['soundIntensity'] = paramgui.NumericParam('Sound intensity',value=80, units='dB-SPL',group='Sound') self.params['soundAmplitude'] = paramgui.NumericParam('Avg sound amp',value=0.1,decimals=4, units='dB-SPL',group='Sound',enabled=False) scheduleGroup = self.params.layout_group('Schedule') soundGroup = self.params.layout_group('Sound') waterGroup = self.params.layout_group('Water delivery') # -- Add graphical widgets to main window -- self.centralWidget = QtGui.QWidget() layoutMain = QtGui.QHBoxLayout() layoutCol1 = QtGui.QVBoxLayout() layoutCol2 = QtGui.QVBoxLayout() layoutCol3 = QtGui.QVBoxLayout() layoutCol1.addWidget(self.dispatcherView) layoutCol2.addWidget(self.manualControl) layoutCol2.addWidget(scheduleGroup) layoutCol3.addWidget(waterGroup) layoutCol3.addWidget(soundGroup) layoutMain.addLayout(layoutCol1) layoutMain.addLayout(layoutCol2) layoutMain.addLayout(layoutCol3) self.centralWidget.setLayout(layoutMain) self.setCentralWidget(self.centralWidget) # -- Connect to sound server and define sounds -- print 'Conecting to soundserver...' print '***** FIXME: HARDCODED TIME DELAY TO WAIT FOR SERIAL PORT! *****' ### DEBUG time.sleep(0.2) self.soundClient = soundclient.SoundClient() self.soundCenterID = 1 self.soundLeftID = 2 self.soundRightID = 3 self.soundClient.start() self.prepare_sounds() # -- Connect signals from dispatcher -- self.dispatcherModel.prepareNextTrial.connect(self.prepare_next_trial) self.dispatcherModel.timerTic.connect(self._timer_tic) # -- Connect messenger -- self.messagebar = messenger.Messenger() self.messagebar.timedMessage.connect(self._show_message) self.messagebar.collect('Created window') # -- Connect signals to messenger self.dispatcherModel.logMessage.connect(self.messagebar.collect) # -- Center in screen -- paramgui.center_in_screen(self)
def __init__(self, parent=None, paramfile=None, paramdictname=None, dummy=False): super(WaterCalibration, self).__init__(parent) self.name = '2afc' # -- Read settings -- if dummy: smServerType = 'dummy' else: smServerType = rigsettings.STATE_MACHINE_TYPE # -- Module for saving data -- self.saveData = savedata.SaveData(rigsettings.DATA_DIR) # -- Create an empty state matrix -- self.sm = statematrix.StateMatrix(inputs=rigsettings.INPUTS, outputs=rigsettings.OUTPUTS, readystate='readyForNextTrial') # -- Add parameters -- self.params = paramgui.Container() ''' self.params['experimenter'] = paramgui.StringParam('Experimenter', value='experimenter', group='Session info') self.params['subject'] = paramgui.StringParam('Subject',value='subject', group='Session info') self.sessionInfo = self.params.layout_group('Session info') ''' self.params['timeWaterValveL'] = paramgui.NumericParam('Time valve left',value=0.04, units='s',group='Valves times') #self.params['timeWaterValveC'] = paramgui.NumericParam('Time valve center',value=0.04, # units='s',group='Valves times') self.params['timeWaterValveR'] = paramgui.NumericParam('Time valve right',value=0.04, units='s',group='Valves times') valvesTimes = self.params.layout_group('Valves times') self.params['waterVolumeL'] = paramgui.NumericParam('Water volume left',value=0, units='ml',group='Water volume') #self.params['waterVolumeC'] = paramgui.NumericParam('Water volume center',value=0, # units='ml',group='Water volume') self.params['waterVolumeR'] = paramgui.NumericParam('Water volume right',value=0, units='ml',group='Water volume') waterVolume = self.params.layout_group('Water volume') self.params['offTime'] = paramgui.NumericParam('Time between',value=0.5, units='s',group='Schedule') self.params['nDeliveries'] = paramgui.NumericParam('N deliveries',value=2, units='',group='Schedule') self.params['nDelivered'] = paramgui.NumericParam('N delivered',value=0, units='',group='Schedule') self.params['nDelivered'].set_enabled(False) schedule = self.params.layout_group('Schedule') # -- Create dispatcher -- self.dispatcherModel = dispatcher.Dispatcher(serverType=smServerType,interval=0.1) self.dispatcherView = dispatcher.DispatcherGUI(model=self.dispatcherModel) # -- Manual control of outputs -- self.manualControl = manualcontrol.ManualControl(self.dispatcherModel.statemachine) # -- Add graphical widgets to main window -- self.centralWidget = QtGui.QWidget() layoutMain = QtGui.QHBoxLayout() layoutCol1 = QtGui.QVBoxLayout() layoutCol2 = QtGui.QVBoxLayout() layoutCol3 = QtGui.QVBoxLayout() layoutCol1.addWidget(self.saveData) #layoutCol1.addWidget(self.sessionInfo) layoutCol1.addWidget(self.dispatcherView) layoutCol2.addWidget(valvesTimes) layoutCol2.addStretch() layoutCol2.addWidget(self.manualControl) layoutCol3.addWidget(waterVolume) layoutCol3.addStretch() layoutCol3.addWidget(schedule) layoutMain.addLayout(layoutCol1) layoutMain.addLayout(layoutCol2) layoutMain.addLayout(layoutCol3) self.centralWidget.setLayout(layoutMain) self.setCentralWidget(self.centralWidget) # -- Add variables storing results -- self.results = arraycontainer.Container() # -- Connect signals from dispatcher -- self.dispatcherModel.prepareNextTrial.connect(self.prepare_next_trial) self.dispatcherModel.timerTic.connect(self._timer_tic) # -- Connect messenger -- self.messagebar = messenger.Messenger() self.messagebar.timedMessage.connect(self._show_message) self.messagebar.collect('Created window') # -- Connect signals to messenger self.saveData.logMessage.connect(self.messagebar.collect) self.dispatcherModel.logMessage.connect(self.messagebar.collect) # -- Connect other signals -- self.saveData.buttonSaveData.clicked.connect(self.save_to_file) # -- Center in screen -- paramgui.center_in_screen(self)
def __init__(self, parent=None, paramfile=None, paramdictname=None, dummy=False): super(WaterCalibration, self).__init__(parent) self.name = '2afc' # -- Read settings -- if dummy: smServerType = 'dummy' else: smServerType = rigsettings.STATE_MACHINE_TYPE # -- Module for saving data -- self.saveData = savedata.SaveData(rigsettings.DATA_DIR) # -- Create an empty state matrix -- self.sm = statematrix.StateMatrix(inputs=rigsettings.INPUTS, outputs=rigsettings.OUTPUTS, readystate='readyForNextTrial') # -- Add parameters -- self.params = paramgui.Container() ''' self.params['experimenter'] = paramgui.StringParam('Experimenter', value='experimenter', group='Session info') self.params['subject'] = paramgui.StringParam('Subject',value='subject', group='Session info') self.sessionInfo = self.params.layout_group('Session info') ''' self.params['timeWaterValveL'] = paramgui.NumericParam( 'Time valve left', value=0.04, units='s', group='Valves times') #self.params['timeWaterValveC'] = paramgui.NumericParam('Time valve center',value=0.04, # units='s',group='Valves times') self.params['timeWaterValveR'] = paramgui.NumericParam( 'Time valve right', value=0.04, units='s', group='Valves times') valvesTimes = self.params.layout_group('Valves times') self.params['waterVolumeL'] = paramgui.NumericParam( 'Water volume left', value=0, units='ml', group='Water volume') #self.params['waterVolumeC'] = paramgui.NumericParam('Water volume center',value=0, # units='ml',group='Water volume') self.params['waterVolumeR'] = paramgui.NumericParam( 'Water volume right', value=0, units='ml', group='Water volume') waterVolume = self.params.layout_group('Water volume') self.params['offTime'] = paramgui.NumericParam('Time between', value=0.5, units='s', group='Schedule') self.params['nDeliveries'] = paramgui.NumericParam('N deliveries', value=2, units='', group='Schedule') self.params['nDelivered'] = paramgui.NumericParam('N delivered', value=0, units='', group='Schedule') self.params['nDelivered'].set_enabled(False) schedule = self.params.layout_group('Schedule') # -- Create dispatcher -- self.dispatcherModel = dispatcher.Dispatcher(serverType=smServerType, interval=0.1) self.dispatcherView = dispatcher.DispatcherGUI( model=self.dispatcherModel) # -- Manual control of outputs -- self.manualControl = manualcontrol.ManualControl( self.dispatcherModel.statemachine) # -- Add graphical widgets to main window -- self.centralWidget = QtGui.QWidget() layoutMain = QtGui.QHBoxLayout() layoutCol1 = QtGui.QVBoxLayout() layoutCol2 = QtGui.QVBoxLayout() layoutCol3 = QtGui.QVBoxLayout() layoutCol1.addWidget(self.saveData) #layoutCol1.addWidget(self.sessionInfo) layoutCol1.addWidget(self.dispatcherView) layoutCol2.addWidget(valvesTimes) layoutCol2.addStretch() layoutCol2.addWidget(self.manualControl) layoutCol3.addWidget(waterVolume) layoutCol3.addStretch() layoutCol3.addWidget(schedule) layoutMain.addLayout(layoutCol1) layoutMain.addLayout(layoutCol2) layoutMain.addLayout(layoutCol3) self.centralWidget.setLayout(layoutMain) self.setCentralWidget(self.centralWidget) # -- Add variables storing results -- self.results = arraycontainer.Container() # -- Connect signals from dispatcher -- self.dispatcherModel.prepareNextTrial.connect(self.prepare_next_trial) self.dispatcherModel.timerTic.connect(self._timer_tic) # -- Connect messenger -- self.messagebar = messenger.Messenger() self.messagebar.timedMessage.connect(self._show_message) self.messagebar.collect('Created window') # -- Connect signals to messenger self.saveData.logMessage.connect(self.messagebar.collect) self.dispatcherModel.logMessage.connect(self.messagebar.collect) # -- Connect other signals -- self.saveData.buttonSaveData.clicked.connect(self.save_to_file) # -- Center in screen -- paramgui.center_in_screen(self)
def __init__(self, parent=None, paramfile=None, paramdictname=None, dummy=False): super(PhotoStim, self).__init__(parent) self.name = 'photostim' # -- Read settings -- if dummy: smServerType = 'dummy' else: smServerType = rigsettings.STATE_MACHINE_TYPE # -- Module for saving data -- self.saveData = savedata.SaveData(rigsettings.DATA_DIR) # -- Create an empty state matrix -- self.sm = statematrix.StateMatrix(inputs=rigsettings.INPUTS, outputs=rigsettings.OUTPUTS, readystate='readyForNextTrial') # -- Add parameters -- self.params = paramgui.Container() self.params['timeStimLeft'] = paramgui.NumericParam('Time stim left',value=1.5, units='s',group='Stimulation times') self.params['timeDelayPostLeft'] = paramgui.NumericParam('Delay post left',value=4, units='s',group='Stimulation times') self.params['timeStimRight'] = paramgui.NumericParam('Time stim right',value=1.5, units='s',group='Stimulation times') self.params['timeDelayPostRight'] = paramgui.NumericParam('Delay post right',value=4, units='s',group='Stimulation times') self.params['timeStimBoth'] = paramgui.NumericParam('Time stim both',value=1.5, units='s',group='Stimulation times') self.params['timeDelayPostBoth'] = paramgui.NumericParam('Delay post both',value=6, units='s',group='Stimulation times') self.params['stimMode'] = paramgui.MenuParam('Stim Mode', ['Left','Right','Bilateral','Left-Right'], value=0,group='Stimulation times') self.params['experiment'] = paramgui.MenuParam('Experiment', ['EphysRecording','BehaviorMonitoring'], value=0,group='Stimulation times') stimTimes = self.params.layout_group('Stimulation times') # -- Create dispatcher -- self.dispatcherModel = dispatcher.Dispatcher(serverType=smServerType,interval=0.1) self.dispatcherView = dispatcher.DispatcherGUI(model=self.dispatcherModel) # -- Manual control of outputs -- self.manualControl = manualcontrol.ManualControl(self.dispatcherModel.statemachine) # -- Add graphical widgets to main window -- self.centralWidget = QtGui.QWidget() layoutMain = QtGui.QHBoxLayout() layoutCol1 = QtGui.QVBoxLayout() layoutCol2 = QtGui.QVBoxLayout() layoutCol3 = QtGui.QVBoxLayout() layoutCol1.addWidget(self.saveData) #layoutCol1.addWidget(self.sessionInfo) layoutCol1.addWidget(self.dispatcherView) layoutCol2.addWidget(self.manualControl) layoutCol2.addStretch() layoutCol3.addWidget(stimTimes) layoutCol3.addStretch() layoutMain.addLayout(layoutCol1) layoutMain.addLayout(layoutCol2) layoutMain.addLayout(layoutCol3) self.centralWidget.setLayout(layoutMain) self.setCentralWidget(self.centralWidget) # -- Add variables storing results -- self.results = arraycontainer.Container() # -- Connect signals from dispatcher -- self.dispatcherModel.prepareNextTrial.connect(self.prepare_next_trial) self.dispatcherModel.timerTic.connect(self._timer_tic) # -- Connect messenger -- self.messagebar = messenger.Messenger() self.messagebar.timedMessage.connect(self._show_message) self.messagebar.collect('Created window') # -- Connect signals to messenger self.saveData.logMessage.connect(self.messagebar.collect) self.dispatcherModel.logMessage.connect(self.messagebar.collect) # -- Connect other signals -- self.saveData.buttonSaveData.clicked.connect(self.save_to_file) # -- Center in screen -- paramgui.center_in_screen(self)