def do(action, args, config): """ Manage tasks. """ print("ACTION*: " + str(action)) print("ARGS*: " + str(args)) #===================================================================================== if 'trials' in action: try: trials_per_condition = int(args[0]) except: trials_per_condition = 500 model = config['model'] pg = model.get_pg(config['savefile'], config['seed'], config['dt']) # Conditions spec = model.spec mods = spec.mods freqs = spec.freqs n_conditions = spec.n_conditions n_trials = n_conditions * trials_per_condition print("{} trials".format(n_trials)) task = model.Task() trials = [] for n in xrange(n_trials): k = tasktools.unravel_index(n, (len(mods), len(freqs))) context = {'mod': mods[k.pop(0)], 'freq': freqs[k.pop(0)]} trials.append(task.get_condition(pg.rng, pg.dt, context)) runtools.run(action, trials, pg, config['trialspath']) #===================================================================================== elif action == 'psychometric': trialsfile = runtools.behaviorfile(config['trialspath']) fig = Figure() plot = fig.add() psychometric(trialsfile, plot) plot.vline(config['model'].spec.boundary) fig.save(path=config['figspath'], name='psychometric') fig.close() #===================================================================================== elif action == 'sort': if 'value' in args: network = 'v' else: network = 'p' trialsfile = runtools.activityfile(config['trialspath']) sort(trialsfile, (config['figspath'], 'sorted'), network=network)
def do(action, args, config): print("ACTION*: " + str(action)) print("ARGS*: " + str(args)) #===================================================================================== if 'trials' in action: try: trials_per_condition = int(args[0]) except: trials_per_condition = 100 model = config['model'] pg = model.get_pg(config['savefile'], config['seed'], config['dt']) spec = model.spec wagers = spec.wagers left_rights = spec.left_rights cohs = spec.cohs n_conditions = spec.n_conditions n_trials = trials_per_condition * n_conditions print("{} trials".format(n_trials)) task = model.Task() trials = [] for n in xrange(n_trials): k = tasktools.unravel_index(n, (len(wagers), len(left_rights), len(cohs))) context = { 'wager': wagers[k.pop(0)], 'left_right': left_rights[k.pop(0)], 'coh': cohs[k.pop(0)] } trials.append(task.get_condition(pg.rng, pg.dt, context)) runtools.run(action, trials, pg, config['trialspath']) #===================================================================================== elif action == 'sure_stimulus_duration': trialsfile = runtools.behaviorfile(config['trialspath']) fig = Figure() plot = fig.add() sure_stimulus_duration(trialsfile, plot) plot.xlabel('Stimulus duration (ms)') plot.ylabel('Probability sure target') fig.save(path=config['figspath'], name=action) #===================================================================================== elif action == 'correct_stimulus_duration': trialsfile = runtools.behaviorfile(config['trialspath']) fig = Figure() plot = fig.add() correct_stimulus_duration(trialsfile, plot) plot.xlabel('Stimulus duration (ms)') plot.ylabel('Probability correct') fig.save(path=config['figspath'], name=action) #===================================================================================== elif action == 'value_stimulus_duration': trialsfile = runtools.activityfile(config['trialspath']) fig = Figure() plot = fig.add() value_stimulus_duration(trialsfile, plot) plot.xlabel('Stimulus duration (ms)') plot.ylabel('Expected reward') fig.save(path=config['figspath'], name=action) #===================================================================================== elif action == 'sort': if 'value' in args: network = 'v' else: network = 'p' trialsfile = runtools.activityfile(config['trialspath']) sort(trialsfile, os.path.join(config['figspath'], 'sorted'), network=network)
def do(action, args, config): """ Manage tasks. """ print("ACTION*: " + str(action)) print("ARGS*: " + str(args)) if 'trials' in action: try: trials_per_condition = int(args[0]) except: trials_per_condition = 100 model = config['model'] pg = model.get_pg(config['savefile'], config['seed'], config['dt']) spec = model.spec gt_lts = spec.gt_lts fpairs = spec.fpairs n_conditions = spec.n_conditions n_trials = trials_per_condition * n_conditions print("{} trials".format(n_trials)) task = model.Task() trials = [] for n in xrange(n_trials): k = tasktools.unravel_index(n, (len(gt_lts), len(fpairs))) context = { 'delay': 3000, 'gt_lt': gt_lts[k.pop(0)], 'fpair': fpairs[k.pop(0)] } trials.append(task.get_condition(pg.rng, pg.dt, context)) runtools.run(action, trials, pg, config['trialspath']) #===================================================================================== elif action == 'performance': trialsfile = runtools.behaviorfile(config['trialspath']) fig = Figure() plot = fig.add() performance(trialsfile, plot) plot.xlabel('$f_1$ (Hz)') plot.ylabel('$f_2$ (Hz)') fig.save(os.path.join(config['figspath'], action)) #===================================================================================== elif action == 'sort': if 'value' in args: network = 'v' else: network = 'p' trialsfile = runtools.activityfile(config['trialspath']) sort(trialsfile, (config['figspath'], 'sorted'), network=network)
def do(action, args, config): """ Manage tasks. """ print("ACTION*: " + str(action)) print("ARGS*: " + str(args)) #===================================================================================== if action == 'plot_trial': try: trials_per_condition = int(args[0]) except: trials_per_condition = 1000 model = config['model'] pg = model.get_pg(config['savefile'], config['seed'], config['dt']) spec = model.spec juices = spec.juices offers = spec.offers n_conditions = spec.n_conditions n_trials = trials_per_condition * n_conditions print("{} trials".format(n_trials)) task = model.Task() fig = Figure(axislabelsize=10, ticklabelsize=9) plot = fig.add() plot_trial() performance(config['savefile'], plot) fig.save(path=config['figspath'], name='performance') fig.close() #===================================================================================== elif 'trials' in action: try: trials_per_condition = int(args[0]) except IndexError: trials_per_condition = 100 model = config['model'] pg = model.get_pg(config['savefile'], config['seed'], config['dt']) spec = model.spec juices = spec.juices offers = spec.offers n_conditions = spec.n_conditions n_trials = trials_per_condition * n_conditions print("{} trials".format(n_trials)) task = model.Task() trials = [] for n in xrange(n_trials): k = tasktools.unravel_index(n, (len(juices), len(offers))) context = {'juice': juices[k.pop(0)], 'offer': offers[k.pop(0)]} trials.append(task.get_condition(pg.rng, pg.dt, context)) runtools.run(action, trials, pg, config['trialspath']) #===================================================================================== elif action == 'choice_pattern': trialsfile = runtools.behaviorfile(config['trialspath']) # print trialsfile # fig = Figure() # plot = fig.add() savefile = config['figspath'] spec = config['model'].spec #print spec.offers choice_pattern(trialsfile, spec.offers, savefile, action) #plot.xlabel('Offer (\#B : \#A)') #plot.ylabel('Percent choice B') #plot.text_upper_left('1A = {}B'.format(spec.A_to_B), fontsize=10) #===================================================================================== elif action == 'sort': if 'value' in args: network = 'v' else: network = 'p' trialsfile = runtools.activityfile(config['trialspath']) sort(trialsfile, (config['figspath'], 'sorted'), network=network) #===================================================================================== elif action == 'statespace': trialsfile = runtools.activityfile(config['trialspath']) statespace(trialsfile, (config['figspath'], 'statespace'))
def do(action, args, config): """ Manage tasks. """ print("ACTION*: " + str(action)) print("ARGS*: " + str(args)) #===================================================================================== if 'trials' in action: try: trials_per_condition = int(args[0]) except IndexError: trials_per_condition = 100 model = config['model'] pg = model.get_pg(config['savefile'], config['seed'], config['dt']) spec = model.spec juices = spec.juices offers = spec.offers n_conditions = spec.n_conditions n_trials = trials_per_condition * n_conditions print("{} trials".format(n_trials)) task = model.Task() trials = [] for n in xrange(n_trials): k = tasktools.unravel_index(n, (len(juices), len(offers))) context = {'juice': juices[k.pop(0)], 'offer': offers[k.pop(0)]} trials.append(task.get_condition(pg.rng, pg.dt, context)) runtools.run(action, trials, pg, config['trialspath']) #===================================================================================== elif action == 'choice_pattern': trialsfile = runtools.behaviorfile(config['trialspath']) fig = Figure() plot = fig.add() spec = config['model'].spec choice_pattern(trialsfile, spec.offers, plot) plot.xlabel('Offer (\#B : \#A)') plot.ylabel('Percent choice B') plot.text_upper_left('1A = {}B'.format(spec.A_to_B), fontsize=10) fig.save(path=config['figspath'], name=action) fig.close() elif action == 'indifference_point': trialsfile = runtools.behaviorfile(config['trialspath']) fig = Figure() plot = fig.add() spec = config['model'].spec indifference_point(trialsfile, spec.offers, plot) plot.xlabel('$(n_B - n_A)/(n_B + n_A)$') plot.ylabel('Percent choice B') #plot.text_upper_left('1A = {}B'.format(spec.A_to_B), fontsize=10) fig.save(path=config['figspath'], name=action) fig.close() #===================================================================================== elif action == 'sort_epoch': behaviorfile = runtools.behaviorfile(config['trialspath']) activityfile = runtools.activityfile(config['trialspath']) epoch = args[0] if 'value' in args: network = 'v' else: network = 'p' separate_by_choice = ('separate-by-choice' in args) sort_epoch(behaviorfile, activityfile, epoch, config['model'].spec.offers, os.path.join(config['figspath'], 'sorted'), network=network, separate_by_choice=separate_by_choice)
def do(action, args, config): """ Manage tasks. """ print("ACTION*: " + str(action)) print("ARGS*: " + str(args)) #===================================================================================== if 'trials' in action: try: trials_per_condition = int(args[0]) except IndexError: trials_per_condition = 100 model = config['model'] pg = model.get_pg(config['savefile'], config['seed'], config['dt']) spec = model.spec juices = spec.juices offers = spec.offers n_conditions = spec.n_conditions n_trials = trials_per_condition * n_conditions print("{} trials".format(n_trials)) task = model.Task() trials = [] for n in xrange(n_trials): k = tasktools.unravel_index(n, (len(juices), len(offers))) context = { 'juice': juices[k.pop(0)], 'offer': offers[k.pop(0)] } trials.append(task.get_condition(pg.rng, pg.dt, context)) runtools.run(action, trials, pg, config['trialspath']) #===================================================================================== elif action == 'choice_pattern': trialsfile = runtools.behaviorfile(config['trialspath']) fig = Figure() plot = fig.add() spec = config['model'].spec choice_pattern(trialsfile, spec.offers, plot) plot.xlabel('Offer (\#B : \#A)') plot.ylabel('Percent choice B') plot.text_upper_left('1A = {}B'.format(spec.A_to_B), fontsize=10) fig.save(path=config['figspath'], name=action) fig.close() elif action == 'indifference_point': trialsfile = runtools.behaviorfile(config['trialspath']) fig = Figure() plot = fig.add() spec = config['model'].spec indifference_point(trialsfile, spec.offers, plot) plot.xlabel('$(n_B - n_A)/(n_B + n_A)$') plot.ylabel('Percent choice B') #plot.text_upper_left('1A = {}B'.format(spec.A_to_B), fontsize=10) fig.save(path=config['figspath'], name=action) fig.close() #===================================================================================== elif action == 'sort_epoch': behaviorfile = runtools.behaviorfile(config['trialspath']) activityfile = runtools.activityfile(config['trialspath']) epoch = args[0] if 'value' in args: network = 'v' else: network = 'p' separate_by_choice = ('separate-by-choice' in args) sort_epoch(behaviorfile, activityfile, epoch, config['model'].spec.offers, os.path.join(config['figspath'], 'sorted'), network=network, separate_by_choice=separate_by_choice)