예제 #1
0
    def test_with_subfolders(self):
        self._create_tmp_files([op.join('./raw_data/ASL', f)
                                for f in ['mt_TG_PASL_s004a001.nii',
                                          'mt_TG_PASL_s008a001.nii',
                                          'mt_PK_PASL_s064a001.nii',
                                          'mt_PK_PASL_s003a001.nii']])

        self._create_tmp_files([op.join('./raw_data/BOLD', f)
                                for f in ['mt_TG_BOLDepi_s003a001.nii',
                                          'mt_TG_BOLDepi_s005a001.nii',
                                          'mt_PK_BOLDepi_s022a001.nii',
                                          'mt_PK_BOLDepi_s007a001.nii']])

        src = '(?P<modality_folder>[a-zA-Z]+)/mt_(?P<subject>[A-Z]{2})_' \
              '(?P<modality>[a-zA-Z]+)_'\
              's(?P<session>[0-9]{3})a[0-9]{3}.nii'
        src_folder = op.join(self.tmp_dir, 'raw_data')
        dest_folder = (self.tmp_dir, 'export', '{subject}', '{modality}')
        dest_basename = '{modality}_session_{session}.nii'
        pio.rx_copy(src, src_folder, dest_basename, dest_folder)

        for fn in [op.join(self.tmp_dir, 'export', f)
                   for f in ['TG/PASL/PASL_session_004.nii',
                             'TG/PASL/PASL_session_008.nii',
                             'TG/BOLDepi/BOLDepi_session_003.nii',
                             'TG/BOLDepi/BOLDepi_session_005.nii',
                             'PK/PASL/PASL_session_064.nii',
                             'PK/PASL/PASL_session_003.nii',
                             'PK/BOLDepi/BOLDepi_session_022.nii',
                             'PK/BOLDepi/BOLDepi_session_007.nii']]:
            self.assert_file_exists(fn)
예제 #2
0
    def test_with_subfolders(self):
        self._create_tmp_files([
            op.join('./raw_data/ASL', f) for f in [
                'mt_TG_PASL_s004a001.nii', 'mt_TG_PASL_s008a001.nii',
                'mt_PK_PASL_s064a001.nii', 'mt_PK_PASL_s003a001.nii'
            ]
        ])

        self._create_tmp_files([
            op.join('./raw_data/BOLD', f) for f in [
                'mt_TG_BOLDepi_s003a001.nii', 'mt_TG_BOLDepi_s005a001.nii',
                'mt_PK_BOLDepi_s022a001.nii', 'mt_PK_BOLDepi_s007a001.nii'
            ]
        ])

        src = '(?P<modality_folder>[a-zA-Z]+)/mt_(?P<subject>[A-Z]{2})_' \
              '(?P<modality>[a-zA-Z]+)_'\
              's(?P<session>[0-9]{3})a[0-9]{3}.nii'
        src_folder = op.join(self.tmp_dir, 'raw_data')
        dest_folder = (self.tmp_dir, 'export', '{subject}', '{modality}')
        dest_basename = '{modality}_session_{session}.nii'
        pio.rx_copy(src, src_folder, dest_basename, dest_folder)

        for fn in [
                op.join(self.tmp_dir, 'export', f) for f in
            [
                'TG/PASL/PASL_session_004.nii', 'TG/PASL/PASL_session_008.nii',
                'TG/BOLDepi/BOLDepi_session_003.nii',
                'TG/BOLDepi/BOLDepi_session_005.nii',
                'PK/PASL/PASL_session_064.nii', 'PK/PASL/PASL_session_003.nii',
                'PK/BOLDepi/BOLDepi_session_022.nii',
                'PK/BOLDepi/BOLDepi_session_007.nii'
            ]
        ]:
            self.assert_file_exists(fn)
예제 #3
0
    def test_callback(self):
        def filter_odd_session(s, d):
            if (int(d[-5]) % 2) != 0:
                return None
            else:
                return d

        self._create_tmp_files([op.join('./raw_data', f)
                                for f in ['ASL mt_TG_PASL_s004a001.nii',
                                          'ASL mt_TG_T1_s008a001.nii',
                                          'ASL mt_PK_PASL_s064a001.nii',
                                          'ASL mt_PK_T1_s003a001.nii']])
        src = 'ASL mt_(?P<subject>[A-Z]{2})_(?P<modality>[a-zA-Z0-9]+)_'\
              's(?P<session>[0-9]{3})a[0-9]{3}.nii'
        src_folder = op.join(self.tmp_dir, 'raw_data')
        dest_folder = (self.tmp_dir, 'export', '{subject}', '{modality}')
        dest_basename = '{modality}_session_{session}.nii'
        pio.rx_copy(src, src_folder, dest_basename, dest_folder,
                    replacements=[('T1', 'anat'), ('PASL', 'aslf')],
                    callback=filter_odd_session)
        for fn in [op.join(self.tmp_dir, 'export', f)
                   for f in ['TG/aslf/aslf_session_004.nii',
                             'TG/anat/anat_session_008.nii',
                             'PK/aslf/aslf_session_064.nii']]:
            self.assert_file_exists(fn)

        self.assert_file_exists('PK/anat/anat_session_003.nii', False)
예제 #4
0
    def test_callback(self):
        def filter_odd_session(s, d):
            if (int(d[-5]) % 2) != 0:
                return None
            else:
                return d

        self._create_tmp_files([
            op.join('./raw_data', f) for f in [
                'ASL mt_TG_PASL_s004a001.nii', 'ASL mt_TG_T1_s008a001.nii',
                'ASL mt_PK_PASL_s064a001.nii', 'ASL mt_PK_T1_s003a001.nii'
            ]
        ])
        src = 'ASL mt_(?P<subject>[A-Z]{2})_(?P<modality>[a-zA-Z0-9]+)_'\
              's(?P<session>[0-9]{3})a[0-9]{3}.nii'
        src_folder = op.join(self.tmp_dir, 'raw_data')
        dest_folder = (self.tmp_dir, 'export', '{subject}', '{modality}')
        dest_basename = '{modality}_session_{session}.nii'
        pio.rx_copy(src,
                    src_folder,
                    dest_basename,
                    dest_folder,
                    replacements=[('T1', 'anat'), ('PASL', 'aslf')],
                    callback=filter_odd_session)
        for fn in [
                op.join(self.tmp_dir, 'export', f) for f in
            [
                'TG/aslf/aslf_session_004.nii', 'TG/anat/anat_session_008.nii',
                'PK/aslf/aslf_session_064.nii'
            ]
        ]:
            self.assert_file_exists(fn)

        self.assert_file_exists('PK/anat/anat_session_003.nii', False)
예제 #5
0
 def test_dry(self):
     self._create_tmp_files(['AK98_T1_s01.nii'])
     src_folder = self.tmp_dir
     src = '[A-Z]{2}[0-9]{2}_(?P<modality>[a-zA-Z0-9]+)'
     dest_folder = (self.tmp_dir, 'export', '{modality}')
     dest_basename = 'data.nii'
     pio.rx_copy(src, src_folder, dest_basename, dest_folder, dry=True)
     fn = op.join(self.tmp_dir, 'export', 'T1', 'data.nii')
     if op.exists(fn):
         raise Exception('File %s should not exist' % fn)
예제 #6
0
 def test_dry(self):
     self._create_tmp_files(['AK98_T1_s01.nii'])
     src_folder = self.tmp_dir
     src = '[A-Z]{2}[0-9]{2}_(?P<modality>[a-zA-Z0-9]+)'
     dest_folder = (self.tmp_dir, 'export', '{modality}')
     dest_basename = 'data.nii'
     pio.rx_copy(src, src_folder, dest_basename, dest_folder, dry=True)
     fn = op.join(self.tmp_dir, 'export', 'T1', 'data.nii')
     if op.exists(fn):
         raise Exception('File %s should not exist' % fn)
예제 #7
0
    def test_basic(self):
        self._create_tmp_files([op.join('./raw_data', f)
                                for f in ['AC0832_anat.nii', 'AC0832_asl.nii',
                                          'AC0832_bold.nii', 'PK0612_asl.nii',
                                          'PK0612_bold.nii', 'dummy.nii']])
        src = '(?P<subject>[A-Z]{2}[0-9]{4})_(?P<modality>[a-zA-Z]+).nii'
        src_folder = op.join(self.tmp_dir, 'raw_data')
        dest_folder = (self.tmp_dir, 'export', '{subject}', '{modality}')
        dest_basename = 'data.nii'
        pio.rx_copy(src, src_folder, dest_basename, dest_folder)

        for fn in [op.join(self.tmp_dir, 'export', f)
                   for f in ['AC0832/bold/data.nii',
                             'AC0832/anat/data.nii',
                             'AC0832/asl/data.nii',
                             'PK0612/bold/data.nii',
                             'PK0612/asl/data.nii']]:
            self.assert_file_exists(fn)
예제 #8
0
    def test_advanced(self):
        self._create_tmp_files([op.join('./raw_data', f)
                                for f in ['ASL mt_TG_PASL_s004a001.nii',
                                          'ASL mt_TG_PASL_s008a001.nii',
                                          'ASL mt_PK_PASL_s064a001.nii',
                                          'ASL mt_PK_PASL_s003a001.nii']])
        src = 'ASL mt_(?P<subject>[A-Z]{2})_(?P<modality>[a-zA-Z]+)_'\
              's(?P<session>[0-9]{3})a[0-9]{3}.nii'
        src_folder = op.join(self.tmp_dir, 'raw_data')
        dest_folder = (self.tmp_dir, 'export', '{subject}', '{modality}')
        dest_basename = 'ASL_session_{session}.nii'
        pio.rx_copy(src, src_folder, dest_basename, dest_folder)

        for fn in [op.join(self.tmp_dir, 'export', f)
                   for f in ['TG/PASL/ASL_session_004.nii',
                             'TG/PASL/ASL_session_008.nii',
                             'PK/PASL/ASL_session_064.nii',
                             'PK/PASL/ASL_session_003.nii']]:
            self.assert_file_exists(fn)
예제 #9
0
    def test_basic(self):
        self._create_tmp_files([
            op.join('./raw_data', f) for f in [
                'AC0832_anat.nii', 'AC0832_asl.nii', 'AC0832_bold.nii',
                'PK0612_asl.nii', 'PK0612_bold.nii', 'dummy.nii'
            ]
        ])
        src = '(?P<subject>[A-Z]{2}[0-9]{4})_(?P<modality>[a-zA-Z]+).nii'
        src_folder = op.join(self.tmp_dir, 'raw_data')
        dest_folder = (self.tmp_dir, 'export', '{subject}', '{modality}')
        dest_basename = 'data.nii'
        pio.rx_copy(src, src_folder, dest_basename, dest_folder)

        for fn in [
                op.join(self.tmp_dir, 'export', f) for f in [
                    'AC0832/bold/data.nii', 'AC0832/anat/data.nii',
                    'AC0832/asl/data.nii', 'PK0612/bold/data.nii',
                    'PK0612/asl/data.nii'
                ]
        ]:
            self.assert_file_exists(fn)
예제 #10
0
    def test_advanced(self):
        self._create_tmp_files([
            op.join('./raw_data', f) for f in [
                'ASL mt_TG_PASL_s004a001.nii', 'ASL mt_TG_PASL_s008a001.nii',
                'ASL mt_PK_PASL_s064a001.nii', 'ASL mt_PK_PASL_s003a001.nii'
            ]
        ])
        src = 'ASL mt_(?P<subject>[A-Z]{2})_(?P<modality>[a-zA-Z]+)_'\
              's(?P<session>[0-9]{3})a[0-9]{3}.nii'
        src_folder = op.join(self.tmp_dir, 'raw_data')
        dest_folder = (self.tmp_dir, 'export', '{subject}', '{modality}')
        dest_basename = 'ASL_session_{session}.nii'
        pio.rx_copy(src, src_folder, dest_basename, dest_folder)

        for fn in [
                op.join(self.tmp_dir, 'export', f) for f in
            [
                'TG/PASL/ASL_session_004.nii', 'TG/PASL/ASL_session_008.nii',
                'PK/PASL/ASL_session_064.nii', 'PK/PASL/ASL_session_003.nii'
            ]
        ]:
            self.assert_file_exists(fn)