def main(): parser = OptionParser(usage=description) parser.add_option("--db", default='flydra_db', help="FlydraDB directory") (options, args) = parser.parse_args() #@UnusedVariable if options.db is None: logger.error('Please specify a directory using --db.') sys.exit(-1) db = FlydraDB(options.db) for sample in db.list_samples(): if not db.has_rows(sample): continue rows = db.get_rows(sample) v = rows[:]['linear_velocity_modulus'] perc = [1, 5, 95, 99] print "Sample %s" % sample print " linear_velocity_modulus" for p in perc: s = scipy.stats.scoreatpercentile(v, p) print ' - %2d%% %.3f m/s' % (p, s) db.release_table(rows)
def main(): parser = OptionParser(usage=description) parser.add_option("--db", default='flydra_db', help="FlydraDB directory") parser.add_option("--interactive", help="Start compmake interactive session." " Otherwise run in batch mode", default=False, action="store_true") (options, args) = parser.parse_args() #@UnusedVariable db = FlydraDB(options.db, False) set_namespace('video_contrast') samples = db.list_samples() if not samples: print 'No samples found' for id in samples: if db.has_rows(id) and db.has_table(id, 'contrast') and \ db.has_table(id, 'luminance'): config = {'sample': id, 'db': options.db} comp(pg, 'flydra_display_contrast', config, job_id="flydra_display_contrast:%s" % id) if options.interactive: # start interactive session compmake_console() else: # batch mode # try to do everything batch_command('make all') # start the console if we are not done # (that is, make all failed for some reason) todo = list(parse_job_list('todo')) if todo: print('Still %d jobs to do.' % len(todo)) sys.exit(-2)
def get_all_data_for_signal(db, samples, interval_function, signal, signal_component): db = FlydraDB(db, False) all = [] for id in samples: if not db.has_rows(id): logger.warning('Could not find rows table for %s; skipping.' % (id)) continue rows_table = db.get_rows(id) try: interval = interval_function(db, id, rows_table) except Exception as e: logger.warning('Cannot compute interval for sample %s: %s '\ % (id, e)) db.release_table(rows_table) continue rows = rows_table[interval] s = extract_signal(rows, signal, signal_component) all.append(s) db.release_table(rows_table) db.close() return numpy.concatenate(all)
def main(): parser = OptionParser() parser.add_option("--db", default='flydra_db', help="FlydraDB directory") parser.add_option("--nocache", help="Ignores already computed results.", default=False, action="store_true") parser.add_option("--compute_mu", help="Computes mu and optic flow.", default=False, action="store_true") parser.add_option("--white", help="Computes luminance_w, with the arena" " painted white.", default=False, action="store_true") parser.add_option("--host", help="Use a remote rfsee. Otherwise, use local process.", default=None) (options, args) = parser.parse_args() #@UnusedVariable db = FlydraDB(options.db, False) # look for samples with the rows table do_samples = db.list_samples() do_samples = filter(lambda x: db.has_rows(x) and db.get_attr(x, 'stimulus') == 'nopost', do_samples) if not do_samples: raise Exception('Cannot find samples to hallucinate about.') print "Summary, including nopost." for s in sorted(get_db_stimulus_stats(db, include_nopost=True), key=(lambda x:-x.total_length)): print "stimulus: {s.stimulus:>10} samples: {s.total_number:>5} "\ " total length: {len:>5} minutes".format(s=s, len=s.total_length / (60 * 60)) stimulus_to_use = list(get_stimulus_to_use(db, len(do_samples))) for i, sample in enumerate(do_samples): stimulus = stimulus_to_use[i][0] print sample, stimulus if options.white: target = 'hluminance_w' else: target = 'hluminance' for i, sample_id in enumerate(do_samples): stimulus = stimulus_to_use[i][0] stimulus_xml = stimulus_to_use[i][1] print 'Sample %s/%s: %s' % (i + 1, len(do_samples), sample_id) if not db.has_sample(sample_id): raise Exception('Sample %s not found in db.' % sample_id) if not db.has_rows(sample_id): raise Exception('Sample %s does not have rows table.' % sample_id) if options.compute_mu: if db.has_table(sample_id, 'nearness') and not options.nocache: logger.info('Already computed nearness for %s; skipping' % sample_id) continue else: if db.has_table(sample_id, target) and not options.nocache: logger.info('Already computed luminance for %s; skipping' % sample_id) continue rows = db.get_rows(sample_id) results = render(rows, stimulus_xml, host=options.host, compute_mu=options.compute_mu, white=options.white) db.set_table(sample_id, target, results['luminance']) if options.compute_mu: db.set_table(sample_id, 'hnearness', results['nearness']) db.set_table(sample_id, 'hretinal_velocities', results['retinal_velocities']) db.release_table(rows) db.close()
def main(): parser = OptionParser() parser.add_option("--db", default='flydra_db', help="FlydraDB directory") parser.add_option("--nocache", help="Ignores already computed results.", default=False, action="store_true") parser.add_option("--compute_mu", help="Computes mu and optic flow.", default=False, action="store_true") parser.add_option("--white", help="Computes luminance_w, with the arena" " painted white.", default=False, action="store_true") parser.add_option("--host", help="Use a remote rfsee. Otherwise, use local process.", default=None) (options, args) = parser.parse_args() db = FlydraDB(options.db, False) if args: do_samples = args else: # look for samples with the rows table do_samples = db.list_samples() do_samples = filter(lambda x: db.has_rows(x), do_samples) if options.white: target = 'luminance_w' else: target = 'luminance' for i, sample_id in enumerate(do_samples): print 'Sample %s/%s: %s' % (i + 1, len(do_samples), sample_id) if not db.has_sample(sample_id): raise Exception('Sample %r not found in db.' % sample_id) if not db.has_rows(sample_id): raise Exception('Sample %r does not have rows table.' % sample_id) if not db.has_attr(sample_id, 'stimulus_xml'): raise Exception('Sample %r does not have the "stimulus_xml" attribute.' %sample_id) if options.compute_mu: if db.has_table(sample_id, 'nearness') and not options.nocache: logger.info('Already computed nearness for %r; skipping' % sample_id) continue else: if db.has_table(sample_id, target) and not options.nocache: logger.info('Already computed luminance for %r; skipping' % sample_id) continue rows = db.get_rows(sample_id) stimulus_xml = db.get_attr(sample_id, 'stimulus_xml') results = render(rows, stimulus_xml, host=options.host, compute_mu=options.compute_mu, white=options.white) db.set_table(sample_id, target, results['luminance']) if options.compute_mu: db.set_table(sample_id, 'nearness', results['nearness']) db.set_table(sample_id, 'retinal_velocities', results['retinal_velocities']) db.release_table(rows) db.close()