def test_write_struct(): with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") # Trigger a warning pfo_study_in = os.path.join(root_dir, 'test_data', 'bru_banana') scan2struct(pfo_study_in) # manage warning in python 2 or python 3: if sys.version_info[0] == 3: assert len(w) == 1 assert issubclass(w[-1].category, UserWarning) else: import exceptions assert len(w) == 1 assert issubclass(w[-1].category, exceptions.UserWarning) pfo_scan_in = os.path.join(root_dir, 'test_data', 'bru_banana', '1') banana_struct = scan2struct(pfo_scan_in) pfo_output = os.path.join(root_dir, 'test_data', 'nifti_banana', 'write_struct_here') if not os.path.exists(pfo_output): os.system('mkdir {}'.format(pfo_output)) write_struct(banana_struct, pfo_output, fin_scan='test') assert os.path.exists(os.path.join(pfo_output, 'acquisition_method.txt')) assert os.path.exists(os.path.join(pfo_output, 'test.nii.gz'))
def convert_scan(self, pfo_input_scan, pfo_output_converted, nifti_file_name=None, create_output_folder_if_not_exists=True): """ :param pfo_input_scan: path to folder (pfo) containing a scan from Bruker, see documentation for the difference between Bruker 'scan' and Bruker 'study'. :param pfo_output_converted: path to the folder where the converted scan will be stored. :param create_output_folder_if_not_exists: [True] if the output folder does not exist will be created. :param nifti_file_name: [None] filename of the nifti image that will be saved into the pfo_output folder. If None, the filename will be obtained from the parameter file of the study. :return: [None] save the data parsed from the raw Bruker scan into a folder, including the nifti image. """ if not os.path.isdir(pfo_input_scan): raise IOError('Input folder does not exist.') if create_output_folder_if_not_exists: os.makedirs(pfo_output_converted) print('FRAME BODY {}'.format(self.frame_body_as_frame_head)) print('UPSIDE DOWN {}'.format(self.sample_upside_down)) struct_scan = scan2struct( pfo_input_scan, correct_slope=self.correct_slope, correct_offset=self.correct_offset, sample_upside_down=self.sample_upside_down, nifti_version=self.nifti_version, qform_code=self.qform_code, sform_code=self.sform_code, get_acqp=self.get_acqp, get_method=self.get_method, get_reco=self.get_reco, frame_body_as_frame_head=self.frame_body_as_frame_head) if struct_scan is not None: write_struct( struct_scan, pfo_output_converted, fin_scan=nifti_file_name, save_human_readable=self.save_human_readable, save_b0_if_dwi=self.save_b0_if_dwi, verbose=self.verbose, )