Exemplo n.º 1
0
def update_sub_scans_file(output_dir,
                          bids_sub,
                          bids_ses,
                          bids_modality,
                          out_filename,
                          par_file,
                          public_output=True):
    """
    one file per subject with
    -ses id
    -filename
    -if not public: date of acquisition
    """
    general_info, image_defs = read_par(par_file)
    acq_time = parse_acq_time(general_info)

    scans_file = os.path.join(output_dir, bids_sub, bids_sub + "_scans.tsv")
    if os.path.exists(scans_file):
        scans = read_tsv(scans_file)
    else:
        scans = pd.DataFrame([])
    scans = scans.append(
        {
            "participant_id": bids_sub,
            "session_id": bids_ses,
            "filename":
            bids_ses + "/" + bids_modality + "/" + out_filename + ".nii.gz",
            "acq_time": acq_time
        },
        ignore_index=True)
    if not public_output:
        scans = scans[["participant_id", "session_id", "filename", "acq_time"]]
    else:
        scans = scans[["participant_id", "session_id", "filename"]]
    to_tsv(scans, scans_file)
Exemplo n.º 2
0
def reduce_sub_files(bids_dir, output_file, sub_file):
    df = pd.DataFrame([])
    layout = BIDSLayout(bids_dir)
    files = layout.get(extensions=sub_file)
    for file in [f.filename for f in files]:
        print(file)
        df_ = read_tsv(file)
        df = pd.concat((df, df_))

    to_tsv(df, os.path.join(bids_dir, output_file))
def get_acq_dates(info_out_dir):
    df = pd.DataFrame()
    info_out_dir = Path(info_out_dir)
    acq_dir = info_out_dir / "acq_time_PRIVATE"
    acq_files = list(acq_dir.glob("sub-*"))
    for file in acq_files:
        df_ = read_tsv(file)
        df_["acq_date"] = pd.to_datetime(df_.acq_time).dt.date
        subject, session, *_ = file.name.split("_")
        df = df.append(
            pd.DataFrame(
                {
                    "participant_id": subject,
                    "session_id": session,
                    "acq_date": df_.iloc[0].acq_date
                },
                index=[0]))
    df = df.sort_values(by=["participant_id", "session_id"])
    df = df.reset_index(drop=True)
    return df
Exemplo n.º 4
0
        type=int,
        default=120,
        help=
        "Checks if session duration is smaller x minutes (default: 120). If set to 0, "
        "don't check session duration")

    args = parser.parse_args()

    do_deface = True if args.public_output else False
    info_list_v2 = get_info_list_v2(do_deface)

    ###
    if args.analysis_level == "participant":
        if args.participant_label:
            old_sub_id_list = [s.strip() for s in args.participant_label]
        else:
            old_sub_id_list = read_tsv(args.subject_list_file,
                                       no_header=False).iloc[:, 0].to_list()
    elif args.analysis_level == "group":
        # participants automatically derived
        old_sub_id_list = []
    else:
        raise RuntimeError(f"Analysis level unknown {args.analysis_level}")

    run_conversion(args.raw_dir, args.output_base_dir, args.analysis_level,
                   args.info_out_dir, old_sub_id_list, args.session_label,
                   args.public_output, args.use_new_ids, args.ds_version,
                   info_list_v2, dataset_description_v2, args.new_id_lut_file,
                   args.bvecs_from_scanner_file, args.tp6_raw_lut,
                   args.dry_run, args.demo_file, args.session_duration_min)