def get_structural_preproc_data(self, subject_info, output_study_dir):
     # structural preprocessed data for HCP 7T subjects
     # is in the (3T) structural reference archive and project
     reference_3T_subject = hcp3t_subject.Hcp3TSubjectInfo(
         subject_info.structural_reference_project, subject_info.subject_id,
         subject_info.extra)
     self._reference_data_retriever.get_structural_preproc_data(
         reference_3T_subject, output_study_dir)
Exemplo n.º 2
0
def main():
    archive = hcp3t_archive.Hcp3T_Archive()

    project_names = ['HCP_500', 'HCP_900']

    for project_name in project_names:

        subject_ids = archive.available_subject_ids(project_name)

        for subject_id in subject_ids:
            subject_info = hcp3t_subject.Hcp3TSubjectInfo(
                project_name, subject_id)
            available_diffusion_scan_names = archive.available_diffusion_scan_names(
                subject_info)

            dir95_scan_LR_scan_name = subject_info.subject_id + '_3T_DWI_dir95_LR.nii.gz'
            dir95_scan_RL_scan_name = subject_info.subject_id + '_3T_DWI_dir95_RL.nii.gz'

            dir96_scan_LR_scan_name = subject_info.subject_id + '_3T_DWI_dir96_LR.nii.gz'
            dir96_scan_RL_scan_name = subject_info.subject_id + '_3T_DWI_dir96_RL.nii.gz'

            dir97_scan_LR_scan_name = subject_info.subject_id + '_3T_DWI_dir97_LR.nii.gz'
            dir97_scan_RL_scan_name = subject_info.subject_id + '_3T_DWI_dir97_RL.nii.gz'

            if ((dir96_scan_LR_scan_name in available_diffusion_scan_names) and
                (dir96_scan_RL_scan_name in available_diffusion_scan_names) and
                (dir97_scan_LR_scan_name in available_diffusion_scan_names) and
                (dir97_scan_RL_scan_name in available_diffusion_scan_names)):

                if ((dir95_scan_LR_scan_name in available_diffusion_scan_names)
                        and (dir95_scan_RL_scan_name
                             not in available_diffusion_scan_names)):

                    _inform(
                        "Subject: " + str(subject_info) +
                        " has all dir96 and dir97 scans and only dir95_LR.")

                elif ((dir95_scan_LR_scan_name
                       not in available_diffusion_scan_names)
                      and (dir95_scan_RL_scan_name
                           in available_diffusion_scan_names)):

                    _inform(
                        "Subject: " + str(subject_info) +
                        " has all dir96 and dir97 scans and only dir95_RL.")
def main():
    # create a parser object for getting the command line options
    parser = my_argparse.MyArgumentParser(description="Program to check Diffusion Preprocessing Output size")

    # mandatory arguments
    parser.add_argument('-p', '--project', dest='project', required=True, type=str)

    # optional arguments
    parser.add_argument('-s', '--subject', dest='subject', required=False, default='all', type=str)

    # parse the command line arguments
    args = parser.parse_args()

    # show parsed arguments
    log.debug("Project: " + args.project)
    log.debug("Subject: " + args.subject)

    # create archive
    archive = hcp3t_archive.Hcp3T_Archive()

    # Create a list of subjects to process
    subject_list = _build_subject_list(archive, args.project, args.subject)

    all_succeeded = True

    # Create a DiffusionOutputSizeChecker
    size_checker = DiffusionOutputSizeChecker()

    print("Subject\tExpected Volumes\tCheck Success")
    for subject in subject_list:
        subject_info = hcp3t_subject.Hcp3TSubjectInfo(args.project, subject)

        try:
            # check the diffusion preprocessing size for the specified subject
            (success, expected_size, msg) = size_checker.check_diffusion_preproc_size(archive, subject_info)
            print(subject_info.subject_id + "\t" + str(expected_size) + "\t" + str(success) + "\t" + msg)
            all_succeeded = all_succeeded and success
        except NoDiffusionPreprocResource as e:
            print(subject_info.subject_id + "\t" + "N/A" + "\t" + "N/A" + "\t" + "No Diff Preproc Resource")
            all_succeeded = False
        except FileNotFoundError as e:
            print(subject_info.subject_id + "\t" + "N/A" + "\t" + "N/A" + "\t" + "A necessary output file was not found")
            all_succeeded = False

    return all_succeeded
def _simple_interactive_demo():

    archive = hcp3t_archive.Hcp3T_Archive()
    completion_checker = OneSubjectCompletionChecker()

    # 100307
    subject_id_list = [
        100307, 100408, 101006, 101107, 101309, 101410, 101915, 102008, 102311,
        102816, 103111, 103414, 103515, 103818, 104012, 104820, 105014, 105115,
        105216, 105923, 106016, 106319, 106521, 107321, 107422, 108121, 108323,
        108525, 108828, 109123, 109325, 110411, 111312, 901442, 904044, 907656,
        910241, 912447, 917255, 922854, 930449, 932554, 937160, 951457, 957974,
        958976, 959574, 965367, 965771, 978578, 979984, 983773, 984472, 987983,
        991267, 992774, 994273
    ]

    for subject_id in subject_id_list:
        hcp3t_subject_info = hcp3t_subject.Hcp3TSubjectInfo(
            'HCP_500', str(subject_id))

        log.info("Checking subject: " + hcp3t_subject_info.subject_id)

        resource_exists = completion_checker.does_processed_resource_exist(
            archive, hcp3t_subject_info)
        log.info("resource_exists: " + str(resource_exists))

        processing_complete = completion_checker.is_processing_complete(
            archive, hcp3t_subject_info, False)
        log.info("processing_complete: " + str(processing_complete))

        try:
            (success, expected_size,
             msg) = output_size_checker.check_diffusion_preproc_size(
                 archive, hcp3t_subject_info)
            log.info("expected_size: " + str(expected_size) + "\tsuccess: " +
                     str(success) + "\t" + msg)
        except output_size_checker.NoDiffusionPreprocResource as e:
            log.info("expected_size: " + "N/A" + "tsuccess: " + "N/A" + "\t" +
                     "No Diff Preproc Resource")
        except FileNotFoundError as e:
            log.info("expected_size: " + "N/A" + "tsuccess: " + "N/A" + "\t" +
                     "A necessary output file was not found")
def main():
    archive = hcp3t_archive.Hcp3T_Archive()

    project_names = ['HCP_500', 'HCP_900']
    
    for project_name in project_names:

        subject_ids = archive.available_subject_ids(project_name)

        for subject_id in subject_ids:
            subject_info = hcp3t_subject.Hcp3TSubjectInfo(project_name, subject_id)
            available_diffusion_scan_fullpaths = archive.available_diffusion_scan_fullpaths(subject_info)

            for diffusion_scan in available_diffusion_scan_fullpaths:
                #_inform("")
                volume_count = get_volume_count(diffusion_scan)
                #_inform("diffusion_scan: " + diffusion_scan + " volume_count: " + str(volume_count))
                expected_volume_count = get_expected_volume_count(diffusion_scan)
                #_inform("diffusion_scan: " + diffusion_scan + " expected_volume_count: " + str(expected_volume_count))

                if volume_count != expected_volume_count:
                    _inform("diffusion_scan: " + os.path.basename(diffusion_scan) + 
                            " has expected volume count: " + str(expected_volume_count) +
                            " and actual volume count: " + str(volume_count))
Exemplo n.º 6
0
def _simple_interactive_demo():

    archive = Hcp3T_Archive()

    _inform("archive.FUNCTIONAL_SCAN_MARKER: " + archive.FUNCTIONAL_SCAN_MARKER)
    _inform("archive.RESTING_STATE_SCAN_MARKER: " + archive.RESTING_STATE_SCAN_MARKER)
    _inform("archive.TASK_SCAN_MARKER: " + archive.TASK_SCAN_MARKER)
    _inform("archive.UNPROC_SUFFIX: " + archive.UNPROC_SUFFIX)
    _inform("archive.PREPROC_SUFFIX: " + archive.PREPROC_SUFFIX)
    _inform("archive.FIX_PROCESSED_SUFFIX: " + archive.FIX_PROCESSED_SUFFIX)
    _inform("archive.NAME_DELIMITER: " + archive.NAME_DELIMITER)
    _inform("archive.TESLA_SPEC: " + archive.TESLA_SPEC)
    _inform("archive.build_home: " + archive.build_home)

    subject_info = hcp3t_subject.Hcp3TSubjectInfo('HCP_500', '100307')
    _inform("created subject_info: " + str(subject_info))
    _inform("archive.session_name(subject_info): " + archive.session_name(subject_info))
    _inform("archive.session_dir_fullpath(subject_info): " + archive.session_dir_fullpath(subject_info))
    _inform("archive.subject_resources_dir_fullpath(subject_info): " +
            archive.subject_resources_dir_fullpath(subject_info))

    _inform("")
    _inform("Available functional unproc dirs: ")
    for directory in archive.available_functional_unproc_dir_fullpaths(subject_info):
        _inform(directory)

    _inform("")
    _inform("Available functional unproc scan names: ")
    for name in archive.available_functional_unproc_names(subject_info):
        _inform(name)

    _inform("")
    _inform("Available diffusion unproc dirs: ")
    for directory in archive.available_diffusion_unproc_dir_fullpaths(subject_info):
        _inform(directory)

    _inform("")
    _inform("Available diffusion unproc scan names: ")
    for name in archive.available_diffusion_unproc_names(subject_info):
        _inform(name)

    _inform("")
    _inform("Available functional preproc dirs: ")
    for directory in archive.available_functional_preproc_dir_fullpaths(subject_info):
        _inform(directory)

    _inform("")
    _inform("Available functional preproc scan names: ")
    for name in archive.available_functional_preproc_names(subject_info):
        _inform(name)

    _inform("")
    _inform("Are the following functional scans preprocessed")
    for name in archive.available_functional_unproc_names(subject_info):
        _inform("scan name: " + name + " " + "\tfunctionally preprocessed: " +
                str(archive.functionally_preprocessed(subject_info, name)))

    _inform("")
    _inform("Available FIX processed dirs: ")
    for directory in archive.available_FIX_processed_dir_fullpaths(subject_info):
        _inform(directory)

    _inform("")
    _inform("Available FIX processed scan names: ")
    for name in archive.available_FIX_processed_names(subject_info):
        _inform(name)

#    _inform("")
#    _inform("Are the following functional scans FIX processed")
#    for name in archive.available_functional_unproc_names(subject_info):
#        _inform('scan name: ' + name + ' ' + '\tFIX processed: ' +
#              str(archive.FIX_processed(subject_info, name)))

    _inform("")
    _inform("Available resting state preproc dirs: ")
    for directory in archive.available_resting_state_preproc_dirs(subject_info):
        _inform(directory)

    _inform("")
    _inform("Available resting state preproc names: ")
    for name in archive.available_resting_state_preproc_names(subject_info):
        _inform(name)

    _inform("")
    _inform("Available task preproc dirs: ")
    for directory in archive.available_task_preproc_dirs(subject_info):
        _inform(directory)

    _inform("")
    _inform("Available task preproc names: ")
    for name in archive.available_task_preproc_names(subject_info):
        _inform(name)

    _inform("")
    _inform("Available functional unprocessed scan names: ")
    for name in archive.available_functional_unproc_names(subject_info):
        _inform(name + '\t' +
                '\tprefix: ' + archive.functional_scan_prefix(name) +
                '\tbase_name: ' + archive.functional_scan_base_name(name) +
                '\tpe_dir: ' + archive.functional_scan_pe_dir(name))

    _inform("")
    _inform("Available session dirs for project: " + subject_info.project)
    for session in archive.available_session_dirs(subject_info.project):
        _inform(session)

    _inform("")
    _inform("Available session names for project: " + subject_info.project)
    for name in archive.available_session_names(subject_info.project):
        _inform(name)

    _inform("")
    _inform("Available subject ids for project: " + subject_info.project)
    for subject_id in archive.available_subject_ids(subject_info.project):
        _inform(subject_id)

    _inform("")
    _inform("Number of available subject ids for project: " + subject_info.project + " " +
            str(archive.subject_count(subject_info.project)))

    _inform("")
    _inform("Available diffusion scans: ")
    for scan in archive.available_diffusion_scan_fullpaths(subject_info):
        _inform(scan)

    _inform("")
    _inform("Available diffusion scan names: ")
    for scan_name in archive.available_diffusion_scan_names(subject_info):
        _inform(scan_name)
def main():
    # create a parser object for getting the command line arguments
    parser = my_argparse.MyArgumentParser()

    # mandatory arguments
    parser.add_argument('-p',
                        '--project',
                        dest='project',
                        required=True,
                        type=str)
    parser.add_argument('-s',
                        '--subject',
                        dest='subject',
                        required=True,
                        type=str)
    parser.add_argument('-d',
                        '--study-dir',
                        dest='output_study_dir',
                        required=True,
                        type=str)

    # optional arguments
    parser.add_argument('-c',
                        '--copy',
                        dest='copy',
                        action='store_true',
                        required=False,
                        default=False)

    phase_choices = [
        "FULL", "full", "DIFFUSION_PREPROC_VETTING",
        "diffusion_preproc_vetting", "STRUCT_PREPROC", "struct_preproc",
        "DIFFUSION_PREPROC", "diffusion_preproc", "DIFFUSION_BEDPOSTX",
        "diffusion_bedpostx", "APPLY_HAND_RECLASSIFICATION_PREREQS",
        "apply_hand_reclassification_prereqs", "REAPPLYFIX_PREREQS",
        "reapplyfix_prereqs"
    ]

    default_phase_choice = phase_choices[0]

    parser.add_argument('-ph',
                        '--phase',
                        dest='phase',
                        required=False,
                        choices=phase_choices,
                        default=default_phase_choice)

    # parse the command line arguments
    args = parser.parse_args()

    # show arguments
    module_logger.info("Arguments:")
    module_logger.info("          Project: " + args.project)
    module_logger.info("          Subject: " + args.subject)
    module_logger.info(" Output Study Dir: " + args.output_study_dir)
    module_logger.info("             Copy: " + str(args.copy))
    module_logger.info("            Phase: " + args.phase)

    subject_info = hcp3t_subject.Hcp3TSubjectInfo(args.project, args.subject)
    archive = hcp3t_archive.Hcp3T_Archive()

    # create and configure CinabStyleDataRetriever
    data_retriever = CinabStyleDataRetriever(archive)
    data_retriever.copy = args.copy
    data_retriever.show_log = True

    # retrieve data based on phase requested
    if (args.phase.upper() == "FULL"):
        module_logger.debug("phase = FULL")
        data_retriever.get_full_data(subject_info, args.output_study_dir)

    elif (args.phase.upper() == "DIFFUSION_PREPROC_VETTING"):
        data_retriever.get_diffusion_preproc_vetting_data(
            subject_info, args.output_study_dir)

    elif (args.phase.upper() == "STRUCT_PREPROC"):
        data_retriever.get_data_through_STRUCT_PREPROC(subject_info,
                                                       args.output_study_dir)

    elif (args.phase.upper() == "DIFFUSION_PREPROC"):
        data_retriever.get_data_through_DIFFUSION_PREPROC(
            subject_info, args.output_study_dir)

    elif (args.phase.upper() == "DIFFUSION_BEDPOSTX"):
        data_retriever.get_diffusion_bedpostx_data(subject_info,
                                                   args.output_study_dir)

    elif (args.phase.upper() == "APPLY_HAND_RECLASSIFICATION_PREREQS"):
        data_retriever.get_apply_hand_reclassification_prereqs(
            subject_info, args.output_study_dir)

    elif (args.phase.upper() == "REAPPLYFIX_PREREQS"):
        data_retriever.get_reapplyfix_prereqs(subject_info,
                                              args.output_study_dir)
        data_retriever.remove_symlinks(args.output_study_dir)