示例#1
0
class ScanFolderConcatBatchReaderWithMask(ScanFolderConcatBatchReader):
    def __init__(self,
                 mask_img_path,
                 config,
                 in_ori_folder,
                 in_jac_folder,
                 batch_size,
                 file_list_txt=None):
        super().__init__(config, in_ori_folder, in_jac_folder, batch_size,
                         file_list_txt)
        self._mask_img = ScanWrapper(mask_img_path)
        self._masked_ref_ori = ScanWrapperWithMask(
            self._in_data_folder.get_file_path(0), self._mask_img.get_path())
        self._masked_ref_jac = ScanWrapperWithMask(
            self._in_jac_folder.get_file_path(0), self._mask_img.get_path())

    def save_flat_data(self, data_array, idx, out_folder):
        out_path_ori = os.path.join(out_folder, f'pc_ori_{idx}.nii.gz')
        out_path_jac = os.path.join(out_folder, f'pc_jac_{idx}.nii.gz')

        ori_data_flat = data_array[:self._get_number_of_voxel_ori()]
        jac_data_flat = data_array[self._get_number_of_voxel_ori():]

        self._masked_ref_ori.save_scan_flat_img(ori_data_flat, out_path_ori)
        self._masked_ref_jac.save_scan_flat_img(jac_data_flat, out_path_jac)

    def _run_single_scan(self, idx):
        in_ori_data_obj = ScanWrapperWithMask(
            self._in_data_folder.get_file_path(idx), self._mask_img.get_path())
        in_jac_data_obj = ScanWrapperWithMask(
            self._in_jac_folder.get_file_path(idx), self._mask_img.get_path())

        self._data_matrix[self._cur_idx, :self._get_number_of_voxel_ori(
        )] = in_ori_data_obj.get_data_flat()
        self._data_matrix[self._cur_idx,
                          self._get_number_of_voxel_ori(
                          ):] = in_jac_data_obj.get_data_flat()

        self._cur_idx += 1

    def _get_number_of_voxel_ori(self):
        return self._masked_ref_ori.get_data_flat().shape[0]

    def _get_number_of_voxel_jac(self):
        return self._masked_ref_jac.get_data_flat().shape[0]
示例#2
0
class ScanFolderBatchWithMaskReader(ScanFolderBatchReader):
    def __init__(self, config, in_folder, mask_img, batch_size, file_list_txt):
        super().__init__(config, in_folder, None, batch_size, file_list_txt)
        self._mask_img = ScanWrapper(mask_img)
        self._masked_ref = ScanWrapperWithMask(
            self._in_data_folder.get_file_path(0), self._mask_img.get_path())

    def save_flat_data(self, data_array, idx, out_folder):
        out_path = os.path.join(out_folder, f'pc_{idx}.nii.gz')

        self._masked_ref.save_scan_flat_img(data_array, out_path)

    def _run_single_scan(self, idx):
        in_data = ScanWrapperWithMask(self._in_data_folder.get_file_path(idx),
                                      self._mask_img.get_path())

        self._data_matrix[self._cur_idx, :] = in_data.get_data_flat()

        self._cur_idx += 1

    def _get_number_of_voxel(self):
        return self._masked_ref.get_data_flat().shape[0]
示例#3
0
class CalcJacobian(AbstractParallelRoutine):
    def __init__(self, config, in_dat_folder, out_folder, ref_img,
                 file_list_txt):
        super().__init__(config, in_dat_folder, file_list_txt)
        self._ref_img = ScanWrapper(ref_img)
        self._out_data_folder = DataFolder.get_data_folder_obj(
            config, out_folder, data_list_txt=file_list_txt)
        self._jacobian_tool = config['deedsBCV_jacobian']

    def _run_single_scan(self, idx):
        in_dat_prefix = self._in_data_folder.get_file_path(idx)
        out_file_path = self._out_data_folder.get_file_path(idx)
        ref_img_path = self._ref_img.get_path()

        jacobian_cmd_str = f'{self._jacobian_tool} -M {ref_img_path} -O {in_dat_prefix} -J {out_file_path}'
        logger.info(jacobian_cmd_str)
        os.system(jacobian_cmd_str)