示例#1
0
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)
示例#2
0
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)