def reformat_args(args): """ reformat_args(args) Returns reformatted args for analyses, specifically - Sets stimulus parameters to "none" if they are irrelevant to the stimtype - Changes stimulus parameters from "both" to actual values - Sets seed, though doesn't seed - Modifies analyses (if "all" or "all_" in parameter) Adds the following args: - dend (str) : type of dendrites to use ("allen", "extr") - omit_sess (str): sess to omit - omit_mice (str): mice to omit Required args: - args (Argument parser): parser with the following attributes: runtype (str) : runtype ("pilot" or "prod") stimtype (str) : stimulus to analyse (visflow or gabors) Returns: - args (Argument parser): input parser, with the following attributes added: visflow_dir, visflow_size, gabfr, gabk, gab_oriomit_sess, omit_mice, dend, analyses, seed """ args = copy.deepcopy(args) [args.visflow_dir, args.visflow_size, args.gabfr, args.gabk, args.gab_ori] = sess_gen_util.get_params(args.stimtype, "both", 128, "any", 16, "any") if args.plane == "soma": args.dend = "allen" args.omit_sess, args.omit_mice = sess_gen_util.all_omit( args.stimtype, args.runtype, args.visflow_dir, args.visflow_size, args.gabk) # choose a seed if none is provided (i.e., args.seed=-1), but seed later args.seed = rand_util.seed_all(args.seed, "cpu", log_seed=False, seed_now=False) # collect analysis letters all_analyses = "".join(get_analysis_fcts().keys()) if "all" in args.analyses: if "_" in args.analyses: excl = args.analyses.split("_")[1] args.analyses, _ = gen_util.remove_lett(all_analyses, excl) else: args.analyses = all_analyses elif "_" in args.analyses: raise ValueError("Use '_' in args.analyses only with 'all'.") return args
def reformat_args(args): """ reformat_args(args) Returns reformatted args for analyses, specifically - Sets stimulus parameters to "none" if they are irrelevant to the stimtype - Changes stimulus parameters from "both" to actual values - Sets seed, though doesn't seed - Modifies analyses (if "all" or "all_" in parameter) Adds the following args: - omit_sess (str): sess to omit - omit_mice (str): mice to omit Required args: - args (Argument parser): parser with the following attributes: visflow_dir (str) : visual flow direction values to include (e.g., "right", "left" or "both") visflow_size (int or str): visual flow size values to include (e.g., 128, 256, "both") gabfr (int) : gabor frame value to start sequences at (e.g., 0, 1, 2, 3) gabk (int or str) : gabor kappa values to include (e.g., 4, 16 or "both") gab_ori (int or str) : gabor orientation values to include (e.g., 0, 45, 90, 135, 180, 225 or "all") runtype (str) : runtype ("pilot" or "prod") stimtype (str) : stimulus to analyse (visflow or gabors) Returns: - args (Argument parser): input parser, with the following attributes modified: visflow_dir, visflow_size, gabfr, gabk, gab_ori, grps, analyses, seed and the following attributes added: omit_sess, omit_mice """ args = copy.deepcopy(args) [args.visflow_dir, args.visflow_size, args.gabfr, args.gabk, args.gab_ori] = sess_gen_util.get_params(args.stimtype, args.visflow_dir, args.visflow_size, args.gabfr, args.gabk, args.gab_ori) args.omit_sess, args.omit_mice = sess_gen_util.all_omit( args.stimtype, args.runtype, args.visflow_dir, args.visflow_size, args.gabk) # choose a seed if none is provided (i.e., args.seed=-1), but seed later args.seed = rand_util.seed_all(args.seed, "cpu", log_seed=False, seed_now=False) # collect analysis letters all_analyses = "".join(get_analysis_fcts().keys()) if "all" in args.analyses: if "_" in args.analyses: excl = args.analyses.split("_")[1] args.analyses, _ = gen_util.remove_lett(all_analyses, excl) else: args.analyses = all_analyses elif "_" in args.analyses: raise ValueError("Use '_' in args.analyses only with 'all'.") return args
def main(args): """ main(args) Runs analyses with parser arguments. Required args: - args (dict): parser argument dictionary """ # set logger to the specified level logger_util.set_level(level=args.log_level) args.fontdir = DEFAULT_FONTDIR if DEFAULT_FONTDIR.is_dir() else None if args.dict_path is not None: source = "modif" if args.modif else "run" plot_dicts.plot_from_dicts(Path(args.dict_path), source=source, plt_bkend=args.plt_bkend, fontdir=args.fontdir, parallel=args.parallel, datetime=not (args.no_datetime), overwrite=args.overwrite) else: args = reformat_args(args) if args.datadir is None: args.datadir = DEFAULT_DATADIR else: args.datadir = Path(args.datadir) mouse_df = DEFAULT_MOUSE_DF_PATH # get numbers of sessions to analyse if args.sess_n == "all": all_sess_ns = sess_gen_util.get_sess_vals(mouse_df, "sess_n", runtype=args.runtype, plane=args.plane, line=args.line, min_rois=args.min_rois, pass_fail=args.pass_fail, incl=args.incl, omit_sess=args.omit_sess, omit_mice=args.omit_mice, sort=True) else: all_sess_ns = gen_util.list_if_not(args.sess_n) # get analysis parameters for each session number all_analys_pars = gen_util.parallel_wrap(prep_analyses, all_sess_ns, args_list=[args, mouse_df], parallel=args.parallel) # split parallel from sequential analyses bool(args.parallel * (not args.debug)) if args.parallel: run_seq = "" # should be run parallel within analysis all_analyses = gen_util.remove_lett(args.analyses, run_seq) sess_parallels = [True, False] analyses_parallels = [False, True] else: all_analyses = [args.analyses] sess_parallels, analyses_parallels = [False], [False] for analyses, sess_parallel, analyses_parallel in zip( all_analyses, sess_parallels, analyses_parallels): if len(analyses) == 0: continue args_dict = { "analyses": analyses, "seed": args.seed, "parallel": analyses_parallel, } # run analyses for each parameter set gen_util.parallel_wrap(run_analyses, all_analys_pars, args_dict=args_dict, parallel=sess_parallel, mult_loop=True)
def reformat_args(args): """ reformat_args(args) Returns reformatted args for analyses, specifically - Sets stimulus parameters to "none" if they are irrelevant to the stimtype - Changes stimulus parameters from "both" to actual values - Modifies the session number parameter - Sets seed, though doesn't seed - Modifies analyses (if "all" or "all_" in parameter) - Sets latency parameters based on lat_method Adds the following args: - dend (str) : type of dendrites to use ("allen" or "extr") - omit_sess (str): sess to omit - omit_mice (str): mice to omit Required args: - args (Argument parser): parser with the following attributes: visflow_dir (str) : visual flow direction values to include (e.g., "right", "left" or "both") visflow_size (int or str): visual flow size values to include (e.g., 128, 256, "both") gabfr (int) : gabor frame value to start sequences at (e.g., 0, 1, 2, 3) gabk (int or str) : gabor kappa values to include (e.g., 4, 16 or "both") gab_ori (int or str) : gabor orientation values to include (e.g., 0, 45, 90, 135, 180, 225 or "all") mouse_ns (str) : mouse numbers or range (e.g., 1, "1,3", "1-3", "all") runtype (str) : runtype ("pilot" or "prod") sess_n (str) : session number range (e.g., "1-1", "all") stimtype (str) : stimulus to analyse (visflow or gabors) Returns: - args (Argument parser): input parser, with the following attributes modified: visflow_dir, visflow_size, gabfr, gabk, gab_ori, sess_n, mouse_ns, analyses, seed, lat_p_val_thr, lat_rel_std and the following attributes added: omit_sess, omit_mice, dend """ args = copy.deepcopy(args) if args.plane == "soma": args.dend = "allen" [args.visflow_dir, args.visflow_size, args.gabfr, args.gabk, args.gab_ori] = sess_gen_util.get_params(args.stimtype, args.visflow_dir, args.visflow_size, args.gabfr, args.gabk, args.gab_ori) if args.datatype == "run": args.fluor = "n/a" if args.plane == "soma": args.dend = "allen" args.omit_sess, args.omit_mice = sess_gen_util.all_omit( args.stimtype, args.runtype, args.visflow_dir, args.visflow_size, args.gabk) if "-" in str(args.sess_n): vals = str(args.sess_n).split("-") if len(vals) != 2: raise ValueError( "If args.sess_n is a range, must have format 1-3.") st = int(vals[0]) end = int(vals[1]) + 1 args.sess_n = list(range(st, end)) if args.lat_method == "ratio": args.lat_p_val_thr = None elif args.lat_method == "ttest": args.lat_rel_std = None # choose a seed if none is provided (i.e., args.seed=-1), but seed later args.seed = rand_util.seed_all(args.seed, "cpu", log_seed=False, seed_now=False) # collect mouse numbers from args.mouse_ns if "," in args.mouse_ns: args.mouse_ns = [int(n) for n in args.mouse_ns.split(",")] elif "-" in args.mouse_ns: vals = str(args.mouse_ns).split("-") if len(vals) != 2: raise ValueError( "If args.mouse_ns is a range, must have format 1-3.") st = int(vals[0]) end = int(vals[1]) + 1 args.mouse_ns = list(range(st, end)) elif args.mouse_ns not in ["all", "any"]: args.mouse_ns = int(args.mouse_ns) # collect analysis letters all_analyses = "".join(get_analysis_fcts().keys()) if "all" in args.analyses: if "_" in args.analyses: excl = args.analyses.split("_")[1] args.analyses, _ = gen_util.remove_lett(all_analyses, excl) else: args.analyses = all_analyses elif "_" in args.analyses: raise ValueError("Use '_' in args.analyses only with 'all'.") return args