def __init__(self, parent=None, paramfile=None, paramdictname=None): super(Paradigm2AFC, self).__init__(parent) self.name = '2afc' smServerType = rigsettings.STATE_MACHINE_TYPE # -- Sides plot -- sidesplot.set_pg_colors(self) self.mySidesPlot = sidesplot.SidesPlot(nTrials=120) # -- Module for saving data -- self.saveData = savedata.SaveData(rigsettings.DATA_DIR, remotedir=rigsettings.REMOTE_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['trainer'] = paramgui.StringParam('Trainer (initials)', value='', group='Session info') 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') # -- Create dispatcher -- self.dispatcherModel = dispatcher.Dispatcher(serverType=smServerType,interval=0.1) self.dispatcherView = dispatcher.DispatcherGUI(model=self.dispatcherModel) # -- Connect to sound server and define sounds -- # FINISH # -- Manual control of outputs -- self.manualControl = manualcontrol.ManualControl(self.dispatcherModel.statemachine) # -- Add graphical widgets to main window -- self.centralWidget = QtGui.QWidget() layoutMain = QtGui.QVBoxLayout() layoutTop = QtGui.QVBoxLayout() layoutBottom = QtGui.QHBoxLayout() layoutCol1 = QtGui.QVBoxLayout() layoutCol2 = QtGui.QVBoxLayout() layoutMain.addLayout(layoutTop) #layoutMain.addStretch() layoutMain.addSpacing(0) layoutMain.addLayout(layoutBottom) layoutTop.addWidget(self.mySidesPlot) layoutBottom.addLayout(layoutCol1) layoutBottom.addLayout(layoutCol2) layoutCol1.addWidget(self.saveData) layoutCol1.addWidget(self.sessionInfo) layoutCol1.addWidget(self.dispatcherView) layoutCol2.addWidget(self.manualControl) layoutCol2.addStretch() self.centralWidget.setLayout(layoutMain) self.setCentralWidget(self.centralWidget) # -- Center in screen -- self._center_in_screen() # -- 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)
def __init__(self, parent=None, paramfile=None, paramdictname=None): super(Paradigm, self).__init__(parent) #self.setStyleSheet(stylesheets.styleCompact) # -- Read settings -- smServerType = rigsettings.STATE_MACHINE_TYPE #smServerType = 'dummy' # -- Module for saving data -- self.saveData = savedata.SaveData(rigsettings.DATA_DIR) # -- Sides plot -- sidesplot.set_pg_colors(self) self.mySidesPlot = sidesplot.SidesPlot(nTrials=80) # -- Create an empty state matrix -- self.sm = statematrix.StateMatrix(inputs=rigsettings.INPUTS, outputs=rigsettings.OUTPUTS, readystate='ready_next_trial') # -- Add parameters -- self.params = paramgui.Container() self.params['experimenter'] = paramgui.StringParam( 'Experimenter', value='santiago', group='Session info') self.params['subject'] = paramgui.StringParam('Subject', value='saja000', group='Session info') sessionInfo = self.params.layout_group('Session info') self.params['stimulusDuration'] = paramgui.NumericParam( 'Stim duration', value=0.2, group='Timing parameters') self.params['rewardDuration'] = paramgui.NumericParam( 'Reward duration', value=0.05, group='Timing parameters') timingParams = self.params.layout_group('Timing parameters') # -- Load parameters from a file -- #self.params.from_file('params_008.py','saja002') ### DEBUG self.params.from_file(paramfile, paramdictname) # -- Create dispatcher -- self.dispatcherModel = dispatcher.Dispatcher(serverType=smServerType, interval=0.3) self.dispatcherView = dispatcher.DispatcherGUI( model=self.dispatcherModel) # -- Manual control of outputs -- self.manualControl = manualcontrol.ManualControl( self.dispatcherModel.statemachine) # -- Add graphical widgets to main window -- centralWidget = QtGui.QWidget() layoutMain = QtGui.QVBoxLayout() layoutTop = QtGui.QVBoxLayout() layoutBottom = QtGui.QHBoxLayout() layoutCol1 = QtGui.QVBoxLayout() layoutCol2 = QtGui.QVBoxLayout() layoutMain.addLayout(layoutTop) #layoutMain.addStretch() layoutMain.addSpacing(0) layoutMain.addLayout(layoutBottom) layoutTop.addWidget(self.mySidesPlot) layoutBottom.addLayout(layoutCol1) layoutBottom.addLayout(layoutCol2) layoutCol1.addWidget(self.saveData) layoutCol1.addWidget(sessionInfo) layoutCol1.addWidget(self.dispatcherView) layoutCol2.addWidget(timingParams) layoutCol2.addWidget(self.manualControl) centralWidget.setLayout(layoutMain) self.setCentralWidget(centralWidget) # -- Center in screen -- self.center_in_screen() # -- Add variables for storing results -- maxNtrials = 4000 self.results = arraycontainer.Container() self.results.labels['rewardSide'] = {'left': 0, 'right': 1} self.results['rewardSide'] = np.random.randint(2, size=maxNtrials) self.results.labels['choice'] = {'left': 0, 'right': 1, 'none': 2} self.results['choice'] = np.empty(maxNtrials, dtype=int) self.results.labels['outcome'] = { 'correct': 1, 'error': 0, 'invalid': 2 } self.results['outcome'] = np.empty(maxNtrials, dtype=int) self.results['timeTrialStart'] = np.empty(maxNtrials, dtype=float) self.results['timeCenterIn'] = np.empty(maxNtrials, dtype=float) self.results['timeCenterOut'] = np.empty(maxNtrials, dtype=float) self.results['timeSideIn'] = np.empty(maxNtrials, dtype=float) # --- Create state matrix --- #self.set_state_matrix() ################# ????????????? # -- Connect signals from dispatcher -- self.dispatcherModel.prepareNextTrial.connect(self.prepare_next_trial) ###self.dispatcherModel.startNewTrial.connect(self.start_new_trial) self.dispatcherModel.timerTic.connect(self.timer_tic) # -- Connect messenger -- self.messagebar = messenger.Messenger() self.messagebar.timedMessage.connect(self.show_message) #self.messagebar.timedMessage.emit('Created window') 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) # -- Prepare first trial -- self.prepare_next_trial(0)
def __init__(self, parent=None, paramfile=None, paramdictname=None): super(Paradigm2AFC, self).__init__(parent) self.name = '2afc' smServerType = rigsettings.STATE_MACHINE_TYPE # -- Sides plot -- sidesplot.set_pg_colors(self) self.mySidesPlot = sidesplot.SidesPlot(nTrials=120) # -- Module for saving data -- self.saveData = savedata.SaveData(rigsettings.DATA_DIR, remotedir=rigsettings.REMOTE_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['trainer'] = paramgui.StringParam('Trainer (initials)', value='', group='Session info') 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') # -- Create dispatcher -- self.dispatcherModel = dispatcher.Dispatcher(serverType=smServerType,interval=0.1) self.dispatcherView = dispatcher.DispatcherGUI(model=self.dispatcherModel) # -- Connect to sound server and define sounds -- # FINISH # -- Manual control of outputs -- self.manualControl = manualcontrol.ManualControl(self.dispatcherModel.statemachine) # -- Add graphical widgets to main window -- self.centralWidget = QtGui.QWidget() layoutMain = QtGui.QVBoxLayout() layoutTop = QtGui.QVBoxLayout() layoutBottom = QtGui.QHBoxLayout() layoutCol1 = QtGui.QVBoxLayout() layoutCol2 = QtGui.QVBoxLayout() layoutMain.addLayout(layoutTop) #layoutMain.addStretch() layoutMain.addSpacing(0) layoutMain.addLayout(layoutBottom) layoutTop.addWidget(self.mySidesPlot) layoutBottom.addLayout(layoutCol1) layoutBottom.addLayout(layoutCol2) layoutCol1.addWidget(self.saveData) layoutCol1.addWidget(self.sessionInfo) layoutCol1.addWidget(self.dispatcherView) layoutCol2.addWidget(self.manualControl) layoutCol2.addStretch() self.centralWidget.setLayout(layoutMain) self.setCentralWidget(self.centralWidget) # -- Center in screen -- self._center_in_screen() # -- 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)
def __init__(self, parent=None): super(Paradigm, self).__init__(parent) # -- Read settings -- smServerType = rigsettings.STATE_MACHINE_TYPE #smServerType = 'dummy' # -- Create dispatcher -- self.dispatcherModel = dispatcher.Dispatcher(serverType=smServerType,interval=0.3) self.dispatcherView = dispatcher.DispatcherGUI(model=self.dispatcherModel) # -- Module for saving data -- self.saveData = savedata.SaveData() # -- Sides plot -- sidesplot.set_pg_colors(self) self.mySidesPlot = sidesplot.SidesPlot(nTrials=80) # -- Create an empty state matrix -- ###self.sm = statematrix.StateMatrix() # -- Add parameters -- self.params = paramgui.Container() self.params['stimulusDuration'] = paramgui.NumericParam('Stim duration',value=0.2, group='Timing Parameters') self.params['rewardDuration'] = paramgui.NumericParam('Reward duration',value=0.05, group='Timing Parameters') timingParams = self.params.layout_group('Timing Parameters') # -- Add graphical widgets to main window -- centralWidget = QtGui.QWidget() layoutMain = QtGui.QVBoxLayout() layoutTop = QtGui.QVBoxLayout() layoutBottom = QtGui.QHBoxLayout() layoutCol1 = QtGui.QVBoxLayout() layoutCol2 = QtGui.QVBoxLayout() layoutMain.addLayout(layoutTop) #layoutMain.addStretch() layoutMain.addSpacing(0) layoutMain.addLayout(layoutBottom) layoutTop.addWidget(self.mySidesPlot) layoutBottom.addLayout(layoutCol1) layoutBottom.addLayout(layoutCol2) layoutCol1.addWidget(self.saveData) layoutCol1.addWidget(self.dispatcherView) layoutCol2.addWidget(timingParams) centralWidget.setLayout(layoutMain) self.setCentralWidget(centralWidget) # -- Center in screen -- self.center_in_screen() # -- Add variables storing results -- # FIXME: put all these in one dict that can be easily saved self.results = arraycontainer.Container() maxNtrials = 4000 self.results.labels['rewardSide'] = {'left':0,'right':1} self.results['rewardSide'] = np.random.randint(2,size=maxNtrials) self.results.labels['choice'] = {'left':0,'right':1} self.results['choice'] = np.empty(maxNtrials,dtype=int) self.results.labels['outcome'] = {'correct':1,'error':0} self.results['outcome'] = np.empty(maxNtrials,dtype=int) # --- Create state matrix --- #self.set_state_matrix() ################# ????????????? # -- Connect signals from dispatcher -- self.dispatcherModel.prepareNextTrial.connect(self.prepare_next_trial) ###self.dispatcherModel.startNewTrial.connect(self.start_new_trial) self.dispatcherModel.timerTic.connect(self.timer_tic) # -- Connect messenger -- self.messagebar = messenger.Messenger() self.messagebar.timedMessage.connect(self.show_message) #self.messagebar.timedMessage.emit('Created window') 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) # -- Prepare first trial -- self.prepare_next_trial(0)
def __init__(self, parent=None, paramfile=None, paramdictname=None): super(Paradigm, self).__init__(parent) #self.setStyleSheet(stylesheets.styleCompact) # -- Read settings -- smServerType = rigsettings.STATE_MACHINE_TYPE #smServerType = 'dummy' # -- Module for saving data -- self.saveData = savedata.SaveData(rigsettings.DATA_DIR) # -- Sides plot -- sidesplot.set_pg_colors(self) self.mySidesPlot = sidesplot.SidesPlot(nTrials=80) # -- Create an empty state matrix -- self.sm = statematrix.StateMatrix(inputs=rigsettings.INPUTS, outputs=rigsettings.OUTPUTS, readystate='ready_next_trial') # -- Add parameters -- self.params = paramgui.Container() self.params['experimenter'] = paramgui.StringParam('Experimenter',value='santiago', group='Session info') self.params['subject'] = paramgui.StringParam('Subject',value='saja000', group='Session info') sessionInfo = self.params.layout_group('Session info') self.params['stimulusDuration'] = paramgui.NumericParam('Stim duration',value=0.2, group='Timing parameters') self.params['rewardDuration'] = paramgui.NumericParam('Reward duration',value=0.05, group='Timing parameters') timingParams = self.params.layout_group('Timing parameters') # -- Load parameters from a file -- #self.params.from_file('params_008.py','saja002') ### DEBUG self.params.from_file(paramfile,paramdictname) # -- Create dispatcher -- self.dispatcherModel = dispatcher.Dispatcher(serverType=smServerType,interval=0.3) self.dispatcherView = dispatcher.DispatcherGUI(model=self.dispatcherModel) # -- Manual control of outputs -- self.manualControl = manualcontrol.ManualControl(self.dispatcherModel.statemachine) # -- Add graphical widgets to main window -- centralWidget = QtGui.QWidget() layoutMain = QtGui.QVBoxLayout() layoutTop = QtGui.QVBoxLayout() layoutBottom = QtGui.QHBoxLayout() layoutCol1 = QtGui.QVBoxLayout() layoutCol2 = QtGui.QVBoxLayout() layoutMain.addLayout(layoutTop) #layoutMain.addStretch() layoutMain.addSpacing(0) layoutMain.addLayout(layoutBottom) layoutTop.addWidget(self.mySidesPlot) layoutBottom.addLayout(layoutCol1) layoutBottom.addLayout(layoutCol2) layoutCol1.addWidget(self.saveData) layoutCol1.addWidget(sessionInfo) layoutCol1.addWidget(self.dispatcherView) layoutCol2.addWidget(timingParams) layoutCol2.addWidget(self.manualControl) centralWidget.setLayout(layoutMain) self.setCentralWidget(centralWidget) # -- Center in screen -- self.center_in_screen() # -- Add variables for storing results -- maxNtrials = 4000 self.results = arraycontainer.Container() self.results.labels['rewardSide'] = {'left':0,'right':1} self.results['rewardSide'] = np.random.randint(2,size=maxNtrials) self.results.labels['choice'] = {'left':0,'right':1,'none':2} self.results['choice'] = np.empty(maxNtrials,dtype=int) self.results.labels['outcome'] = {'correct':1,'error':0,'invalid':2} self.results['outcome'] = np.empty(maxNtrials,dtype=int) self.results['timeTrialStart'] = np.empty(maxNtrials,dtype=float) self.results['timeCenterIn'] = np.empty(maxNtrials,dtype=float) self.results['timeCenterOut'] = np.empty(maxNtrials,dtype=float) self.results['timeSideIn'] = np.empty(maxNtrials,dtype=float) # --- Create state matrix --- #self.set_state_matrix() ################# ????????????? # -- Connect signals from dispatcher -- self.dispatcherModel.prepareNextTrial.connect(self.prepare_next_trial) ###self.dispatcherModel.startNewTrial.connect(self.start_new_trial) self.dispatcherModel.timerTic.connect(self.timer_tic) # -- Connect messenger -- self.messagebar = messenger.Messenger() self.messagebar.timedMessage.connect(self.show_message) #self.messagebar.timedMessage.emit('Created window') 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) # -- Prepare first trial -- self.prepare_next_trial(0)