def check_requirements(config, software, configFileName=None, softwareFileName=None): """Verifying that all options and software paths are set.""" log = logging.getLogger(__name__) result_dir = config.result_dir required_field = [ 'reference_im_fn', 'result_dir', 'selection', 'num_of_iterations_per_level', 'num_of_levels', 'ants_params' ] pyLAR.containsRequirements(config, required_field, configFileName) required_software = [ 'EXE_BRAINSFit', 'EXE_AverageImages', 'EXE_antsRegistration', 'EXE_WarpImageMultiTransform' ] pyLAR.containsRequirements(software, required_software, softwareFileName) if not hasattr(config, "histogram_matching"): config.histogram_matching = False if config.histogram_matching: log.info("Script will perform histogram matching.") if not config.num_of_iterations_per_level >= 0: raise Exception( "'num_of_iterations_per_level' must be a positive integer (>=0).") if not config.num_of_levels >= 1: raise Exception( "''num_of_levels' must be a strictly positive integer (>=1).") if len(config.selection) < 2: raise Exception("'selection' must contain at least two values.") log.info('Results will be stored in:' + result_dir) if not os.path.exists(result_dir): os.makedirs(result_dir)
def main(argv=None): """Parsing command line arguments and reading input files.""" if argv is None: argv = sys.argv parser = argparse.ArgumentParser(prog=argv[0], description=__doc__) parser.add_argument('-c', "--configFN", required=True, help="Parameter configuration file") parser.add_argument('-s', "--configSoftware", required=True, help="Software configuration file") parser.add_argument('-a', "--algorithm", required=True, choices=['lr', 'uab', 'nglra'], help="Software configuration file") args = parser.parse_args(argv[1:]) # Assign parameters from the input config txt file configFN = args.configFN config = pyLAR.loadConfiguration(configFN, 'config') # Load software paths from file configSoftware = args.configSoftware software = pyLAR.loadConfiguration(configSoftware, 'software') pyLAR.containsRequirements(config, ['file_list_file_name', 'result_dir'], configFN) result_dir = config.result_dir file_list_file_name = config.file_list_file_name im_fns = pyLAR.readTxtIntoList(file_list_file_name) # 'clean' needs to be done before configuring the logger that creates a file in the output directory if hasattr(config, "clean") and config.clean: shutil.rmtree(result_dir) # configure logger logger = logging.getLogger() logger.setLevel(logging.INFO) pyLAR.configure_logger(logger, config, configFN) try: pyLAR.run(args.algorithm, config, software, im_fns, result_dir, configFN, configSoftware, file_list_file_name) val = 0 except: logger.exception('Error while processing', exc_info=True) val = 1 finally: pyLAR.close_handlers(logger) return val
def check_requirements(config, software, configFileName=None, softwareFileName=None): """Verifying that all options and software paths are set.""" log = logging.getLogger(__name__) pyLAR.containsRequirements(software, ['EXE_BRAINSFit'], softwareFileName) required_field = ['reference_im_fn', 'result_dir', 'selection', 'lamda', 'sigma', 'registration'] pyLAR.containsRequirements(config, required_field, configFileName) result_dir = config.result_dir if not hasattr(config, "histogram_matching"): config.histogram_matching = False if config.histogram_matching: log.info("Script will perform histogram matching.") if len(config.selection) < 1: error_message = '\'selection\' must contain at least one value.' raise Exception(error_message) log.info('Results will be stored in: ' + result_dir) if not os.path.exists(result_dir): os.makedirs(result_dir)
def check_requirements(config, software, configFileName=None, softwareFileName=None): """Verifying that all options and software paths are set.""" log = logging.getLogger(__name__) required_field = [ 'use_healthy_atlas', 'reference_im_fn', 'result_dir', 'selection', 'lamda', 'sigma', 'num_of_iterations_per_level', 'num_of_levels', 'registration_type' ] pyLAR.containsRequirements(config, required_field, configFileName) result_dir = config.result_dir registration_type = config.registration_type required_software = ['EXE_BRAINSFit'] if not hasattr(config, "histogram_matching"): config.histogram_matching = False if config.histogram_matching: log.info("Script will perform histogram matching.") if not config.use_healthy_atlas: required_software.append('EXE_AverageImages') if registration_type == 'BSpline': required_software.extend([ 'EXE_InvertDeformationField', 'EXE_BRAINSResample', 'EXE_BSplineToDeformationField' ]) pyLAR.containsRequirements(config, ['gridSize'], configFileName) elif registration_type == 'Demons': required_software.extend([ 'EXE_BRAINSDemonWarp', 'EXE_BRAINSResample', 'EXE_InvertDeformationField' ]) elif registration_type == 'ANTS': required_software.extend( ['EXE_antsRegistration', 'EXE_WarpImageMultiTransform']) pyLAR.containsRequirements(config, ['ants_params'], configFileName) if not config.num_of_iterations_per_level >= 0: raise Exception( 'Error in configuration file: "num_of_iterations_per_level"\ must be a positive integer (>=0).') if not config.num_of_levels >= 1: raise Exception( 'Error in configuration file: "num_of_levels" must be a strictly positive integer (>=1).' ) pyLAR.containsRequirements(software, required_software, softwareFileName) if len(config.selection) < 2: raise Exception( 'Error in configuration file: "selection" must contain at least two values.' ) log.info('Results will be stored in:' + result_dir) if not os.path.exists(result_dir): os.makedirs(result_dir)
def main(argv=None): """Parsing command line arguments and reading input files.""" if argv is None: argv = sys.argv parser = argparse.ArgumentParser( prog=argv[0], description=__doc__ ) parser.add_argument('-c', "--configFN", required=True, help="Parameter configuration file") parser.add_argument('-s', "--configSoftware", required=True, help="Software configuration file") parser.add_argument('-a', "--algorithm", required=True, choices=['lr', 'uab', 'nglra'], help="Software configuration file") args = parser.parse_args(argv[1:]) # Assign parameters from the input config txt file configFN = args.configFN config = pyLAR.loadConfiguration(configFN, 'config') # Load software paths from file configSoftware = args.configSoftware software = pyLAR.loadConfiguration(configSoftware, 'software') pyLAR.containsRequirements(config, ['file_list_file_name', 'result_dir'], configFN) result_dir = config.result_dir file_list_file_name = config.file_list_file_name im_fns = pyLAR.readTxtIntoList(file_list_file_name) # 'clean' needs to be done before configuring the logger that creates a file in the output directory if hasattr(config, "clean") and config.clean: shutil.rmtree(result_dir) # configure logger logger = logging.getLogger() logger.setLevel(logging.INFO) pyLAR.configure_logger(logger, config, configFN) try: pyLAR.run(args.algorithm, config, software, im_fns, result_dir, configFN, configSoftware, file_list_file_name) val = 0 except: logger.exception('Error while processing', exc_info=True) val = 1 finally: pyLAR.close_handlers(logger) return val
def check_requirements(config, software, configFileName=None, softwareFileName=None): """Verifying that all options and software paths are set.""" log = logging.getLogger(__name__) pyLAR.containsRequirements(software, ['EXE_BRAINSFit'], softwareFileName) required_field = [ 'reference_im_fn', 'result_dir', 'selection', 'lamda', 'sigma', 'registration' ] pyLAR.containsRequirements(config, required_field, configFileName) result_dir = config.result_dir if not hasattr(config, "histogram_matching"): config.histogram_matching = False if config.histogram_matching: log.info("Script will perform histogram matching.") if len(config.selection) < 1: error_message = '\'selection\' must contain at least one value.' raise Exception(error_message) log.info('Results will be stored in: ' + result_dir) if not os.path.exists(result_dir): os.makedirs(result_dir)
def check_requirements(config, software, configFileName=None, softwareFileName=None): """Verifying that all options and software paths are set.""" log = logging.getLogger(__name__) result_dir = config.result_dir required_field = ['reference_im_fn', 'result_dir', 'selection', 'num_of_iterations_per_level', 'num_of_levels', 'ants_params'] pyLAR.containsRequirements(config, required_field, configFileName) required_software = ['EXE_BRAINSFit', 'EXE_AverageImages', 'EXE_antsRegistration', 'EXE_WarpImageMultiTransform'] pyLAR.containsRequirements(software, required_software, softwareFileName) if not hasattr(config, "histogram_matching"): config.histogram_matching = False if config.histogram_matching: log.info("Script will perform histogram matching.") if not config.num_of_iterations_per_level >= 0: raise Exception("'num_of_iterations_per_level' must be a positive integer (>=0).") if not config.num_of_levels >= 1: raise Exception("''num_of_levels' must be a strictly positive integer (>=1).") if len(config.selection) < 2: raise Exception("'selection' must contain at least two values.") log.info('Results will be stored in:' + result_dir) if not os.path.exists(result_dir): os.makedirs(result_dir)
def check_requirements(config, software, configFileName=None, softwareFileName=None): """Verifying that all options and software paths are set.""" log = logging.getLogger(__name__) required_field = ['use_healthy_atlas', 'reference_im_fn', 'result_dir', 'selection', 'lamda', 'sigma', 'num_of_iterations_per_level', 'num_of_levels', 'registration_type'] pyLAR.containsRequirements(config, required_field, configFileName) result_dir = config.result_dir registration_type = config.registration_type required_software = ['EXE_BRAINSFit'] if not hasattr(config, "histogram_matching"): config.histogram_matching = False if config.histogram_matching: log.info("Script will perform histogram matching.") if not config.use_healthy_atlas: required_software.append('EXE_AverageImages') if registration_type == 'BSpline': required_software.extend(['EXE_InvertDeformationField', 'EXE_BRAINSResample', 'EXE_BSplineToDeformationField']) pyLAR.containsRequirements(config, ['gridSize'], configFileName) elif registration_type == 'Demons': required_software.extend(['EXE_BRAINSDemonWarp', 'EXE_BRAINSResample','EXE_InvertDeformationField']) elif registration_type == 'ANTS': required_software.extend(['EXE_antsRegistration', 'EXE_WarpImageMultiTransform']) pyLAR.containsRequirements(config, ['ants_params'], configFileName) if not config.num_of_iterations_per_level >= 0: raise Exception('Error in configuration file: "num_of_iterations_per_level"\ must be a positive integer (>=0).') if not config.num_of_levels >= 1: raise Exception('Error in configuration file: "num_of_levels" must be a strictly positive integer (>=1).') pyLAR.containsRequirements(software, required_software, softwareFileName) if len(config.selection) < 2: raise Exception('Error in configuration file: "selection" must contain at least two values.') log.info('Results will be stored in:' + result_dir) if not os.path.exists(result_dir): os.makedirs(result_dir)
def configure_logger(logger, config, config_file_name): _stream_logger(config, logger) pyLAR.containsRequirements(config, ['result_dir'], config_file_name) result_dir = config.result_dir _file_logger(result_dir, logger)