![]() |
#1
|
|||
|
|||
check user input using vizinfo panel
Dear all
I am running an experiment with a 3x2 design, so that I have two variables, one with three levels and the other one with two. Before the experiment starts, the experimenter has to choose what sequence of two levels, each from one of the two variables, have to be presented, but I would like to create a mechanism that controls if the input sequence has already been chosen. Specifically, I posed these conditions: - if the sequence of variables has not already been chosen, the execution flow keeps going on - if the sequence of variables has already been chosen but the experiment wants to go on anyway, the output data are renamed to prevent overwriting. - if the sequence of variables has already been chosen and the experimenter wants to choose another sequence, turns back to the vizinfo panel. The first two conditions work, but the third doesn't. Specifically, the user can choose another sequence but when he hits again the run button nothing happens and so the experiment doesn't go on. Could anyone tell me where I did wrong in my code? best regards, armo Code:
import viz import vizinfo class Experiment: def __init__(self,title): self.title = title # create a class object with the current experiment data current_exp = Experiment('current experiment') class ExperimentalSetting: def __init__(self, var1=None, var2=None): self.var1 = var1 self.var2 = var2 class ExperimentalSession: def __init__(self, phase=None, number=None): self.phase = phase self.number = number self.settings = ExperimentalSetting() def __repr__(self): return self.phase + ' ' + str(self.number) # create a class object with the current session data current_session = ExperimentalSession() viz.go() def get_session_info(): global phase global current_session global current_RT_file global current_ACC_file import os def check_existing_file(file_name, extension): '''checks if a file already exists''' if os.path.exists( file_name + extension ): print 'file already exists...' return True else: return False def add_suffix(f): '''adds a suffix to a file. Used when a file already exists''' copy_suffix = 'Copy' f = f + ' - ' + copy_suffix return f def rename_existing_file(file_name, extension): '''if a file already exists, rename it with a suffix extension''' if check_existing_file(file_name, extension): checked_fileName = add_suffix(file_name) + extension else: checked_fileName = file_name + extension return checked_fileName current_RT_file = None current_ACC_file = None isEqual = False while not isEqual: print 'displaying vizinfo box' #Add the vizinfo box infoBox = vizinfo.add('') infoBox.scale(1.5,1.5) infoBox.translate( 0.85, 0.95 ) infoBox.title('Experiment Info: ' + current_exp.title) #Add the GUI elements to the box phaseTrainingBox = infoBox.add(viz.RADIO,1,'Training') phaseExperimentBox = infoBox.add(viz.RADIO,1,'Experiment') variable1_A_Box = infoBox.add(viz.RADIO,2,'A') variable1_B_Box = infoBox.add(viz.RADIO,2,'B') variable1_C_Box = infoBox.add(viz.RADIO,2,'C') variable2_1_Box = infoBox.add(viz.RADIO,3,'1') variable2_2_Box = infoBox.add(viz.RADIO,3,'2') runButton = infoBox.add(viz.BUTTON,'Run') # waits for pressing the runbutton to go forward yield viztask.waitButtonUp(runButton) # get the current session settings if phaseTrainingBox.get() == viz.DOWN: current_session.phase = 'Training' elif phaseExperimentBox.get() == viz.DOWN: current_session.phase = 'Experiment' if variable1_A_Box.get() == viz.DOWN: current_session.settings.var1 = 'A' elif variable1_B_Box.get() == viz.DOWN: current_session.settings.var1 = 'B' elif variable1_C_Box.get() == viz.DOWN: current_session.settings.var1 = 'B' if variable2_1_Box.get() == viz.DOWN: current_session.settings.var2 = '1' elif variable2_2_Box.get() == viz.DOWN: current_session.settings.var2 = '2' current_file_labels = [ current_session.phase, current_session.settings.var1, current_session.settings.var2, ] # create two files object with the experiment RT and ACC data RT_folder = 'data/RT/' ACC_folder = 'data/ACC/' current_RT_file_name = RT_folder + '_'.join(current_file_labels) + '_RT' current_ACC_file_name = ACC_folder + '_'.join(current_file_labels) + '_ACC' print current_RT_file_name if check_existing_file(current_RT_file_name, '.txt') and check_existing_file(current_ACC_file_name, '.txt'): answer = viz.ask('this sequence has already been chosen. Continue?') if answer: print 'chose to continue and rename file' current_RT_file = open( rename_existing_file(current_RT_file_name, '.txt'),'w') current_ACC_file = open( rename_existing_file(current_ACC_file_name, '.txt'),'w') isEqual = True else: print 'chose not to continue' return else: print 'the file names don\'t already exist' current_RT_file = open( current_RT_file_name + '.txt','w') current_ACC_file = open( current_ACC_file_name + '.txt','w') break infoBox.remove() print 'current settings:', [x for x in current_file_labels] def experimental_flow(): yield get_session_info() import viztask viztask.schedule(experimental_flow) |
![]() |
Thread Tools | |
Display Modes | Rate This Thread |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
In there a way in Vizconnect to allow user to select between different input devices | JB_HP_Viz | Vizard | 2 | 11-05-2014 12:40 PM |
User keyboard input without halting the program | Zhi | Vizard | 2 | 06-23-2011 12:53 PM |
Controlling User Input | ohad | Vizard | 1 | 03-15-2010 05:16 PM |
User Input | Hodge1620 | Vizard | 2 | 11-17-2005 06:58 AM |
user input problem | Jerry | Vizard | 1 | 11-16-2005 03:15 PM |