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)
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)
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)
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)
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)
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)
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)
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)
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)