def main(argv): import getopt # every possible variable con = None roi = None sub = None try: # figure out this line opts, args = getopt.getopt(argv, "h:m:c:s:j:v:r", ["mask=", "contrast=", "sub="]) except getopt.GetoptError: print( 'run_cd_match_searchlight.py -m <maskfile> -c <contrast> -s <sub>') sys.exit(2) for opt, arg in opts: if opt == '-h': print( 'run_cd_match_searchlight.py -m <maskfile> -c <contrast> -s <sub>' ) sys.exit() elif opt in ("-m", "--mask"): roi = arg elif opt in ("-s", "--sub"): sub = arg elif opt in ("-j", "--jobs"): analysisSettings["searchlight"]["n_jobs"] = int(arg) elif opt in ("-v", "--verbose"): analysisSettings["searchlight"]["verbose"] = int(arg) elif opt in ("-r", "--radius"): analysisSettings["searchlight"]["radius"] = int(arg) # if not con: # print "not a valid contrast... exiting" # sys.exit(1) if None in [sub, roi]: print("Argument missing") sys.exit(2) logger = pu.setup_logger(os.path.join(paths['root'], 'analysis', sub, 'multivariate', 'searchlight', "lss"), fname="{}_CDMatch-MainRel".format(roi)) run_subject(sub, roi, settings=projectSettings, options=analysisSettings, logger=logger) pu.write_to_logger("Session ended at " + str(datetime.now()), logger=logger)
def main(_): import getopt # every possible variable roi = FLAGS.mask sub = FLAGS.sub phase = FLAGS.phase debug = FLAGS.debug analysis = FLAGS.analysis if FLAGS.jobs: analysisSettings["searchlight"]["n_jobs"] = int(FLAGS.jobs) if FLAGS.verbosity: analysisSettings["searchlight"]["verbose"] = int(FLAGS.verbose) if FLAGS.radius: analysisSettings["searchlight"]["radius"] = int(FLAGS.radius) # if not con: # print "not a valid contrast... exiting" # sys.exit(1) if None in [sub, roi]: print("Argument missing") sys.exit(2) logger = pu.setup_logger(os.path.join(paths['root'], 'analysis', sub, 'multivariate', 'searchlight', "lss"), fname="{}_{}-Match.log".format(roi, FLAGS.phase)) mask_file = os.path.join(paths["root"], "derivatives", sub, "masks", "{}.nii.gz".format(roi)) if analysis == "cvsl": pu.write_to_logger("Running MVPA", logger) sl = CVSearchlight(sub, mask_file, phase=phase, settings=analysisSettings["searchlight"], logger=logger, permutations=FLAGS.permutations) slargs = {} elif analysis == "rsa": pu.write_to_logger("Running RSA", logger) raw_models_df = pu.load_labels( os.path.join(paths["code"], "labels/raw_models.csv")) sl = RSASearchlight(sub, mask_file, phase=phase, settings=analysisSettings["searchlight"], logger=logger) if FLAGS.phase == "CD": sl.fmri_data = pu.index_img(sl.fmri_data, sl.selector.Match == '1') sl.labels = sl.labels[sl.selector.Match == '1'] sl.selector = sl.labels modelrdms, modelnames = get_cd_models(raw_models_df, sl.labels) else: modelnames = [ "mainrel", "rel", "numchar", "humanratings", "typicality", "w2vdiff", "concatword", "accuracy", "rstpostprob9", "rstpostprob79", "bart79thresh", "rstpostprob270", "bartregressacc", "accregressbart" ] model_rdms = get_model_rdms(raw_models_df, modelnames) # modelrdms = model_rdms[(model_rdms.type == "full")].dropna(axis=1).values[:, 2:].astype(np.float64) # deal with NAs in bart thresh rdms = model_rdms[model_rdms.type == "full"] bart = rdms[rdms.name == "rstpostprob79"].iloc[:, 2:].fillna(0) acc = rdms[rdms.name == "accuracy"].iloc[:, 2:].fillna(0) bart_regress_acc = sm.OLS(bart.T, acc.T).fit().resid acc_regress_bart = sm.OLS(acc.T, bart.T).fit().resid modelrdms = model_rdms[( model_rdms.type == "full")].iloc[:, 2:].fillna(0).values.astype( np.float64) modelrdms = np.concatenate( [modelrdms, np.vstack([bart_regress_acc, acc_regress_bart])], axis=0) slargs = {"modelrdms": modelrdms} else: pu.write_to_logger("wrong analysis specified, exiting...", logger) sys.exit(2) if not debug: _ = sl.run(**slargs) pu.write_to_logger("Session ended at " + str(datetime.now()), logger=logger)