def run(argv=None): # Initialize console = Console() console.init() console.print_message("Configuration of pyMonteCarlo") console.print_line() # Find settings.cfg settings = get_settings() # Programs programs = [] for program_alias in settings.get_available_program_aliases(): default = program_alias in settings.get_program_aliases() answer = \ console.prompt_boolean("Do you want to setup %s?" % program_alias, default) if answer: cli = settings.get_program_cli(program_alias) try: pass except Exception as ex: console.print_exception(ex) return cli.configure(console, settings) programs.append(program_alias) else: if program_alias in settings: delattr(settings, program_alias) console.print_line() settings.pymontecarlo.programs = ','.join(programs) # Save settings.write() console.print_success("Settings saved") # Finalize console.close()
def run(argv=None): # Initialize console = Console() console.init() programs = get_settings().get_programs() parser = _create_parser(programs) # Parse arguments (values, args) = parser.parse_args(argv) # Check inputs outputdir = values.outputdir if not os.path.exists(outputdir): console.print_error("The specified output directory (%s) does not exist" % outputdir) workdir = values.workdir if workdir is not None and not os.path.exists(workdir): console.print_error("The specified work directory (%s) does not exist" % workdir) if values.verbose: logging.getLogger().setLevel(logging.DEBUG) quiet = values.quiet nbprocesses = values.nbprocesses if nbprocesses <= 0: parser.error("Number of processes must be greater than 0.") overwrite = not values.skip aliases = dict(zip(map(attrgetter('alias'), programs), programs)) selected_aliases = [alias for alias in aliases if getattr(values, alias)] if not selected_aliases: console.print_error("Please select one Monte Carlo program") selected_programs = list(map(aliases.get, selected_aliases)) list_options = [] try: _load(args, list_options) except Exception as ex: console.print_error(str(ex)) if not list_options: console.print_error("Please specify at least one options file") # Setup runner = LocalRunner(outputdir, workdir, overwrite, nbprocesses) progressbar = ProgressBar(console) if not quiet: progressbar.start() # Start simulation with runner: for options in list_options: options.programs.update(selected_programs) runner.put(options) try: while runner.is_alive() and not runner.is_finished(): if not quiet: progressbar.update(runner.progress, runner.status) time.sleep(1) except Exception as ex: console.print_exception(ex) runner.close() if not quiet: progressbar.close() # Clean up console.close()
def run(argv=None): # Initialize console = Console() console.init() programs = get_settings().get_programs() parser = _create_parser(programs) # Parse arguments (values, args) = parser.parse_args(argv) # Check inputs outputdir = values.outputdir if not os.path.exists(outputdir): console.print_error( "The specified output directory (%s) does not exist" % outputdir) workdir = values.workdir if workdir is not None and not os.path.exists(workdir): console.print_error( "The specified work directory (%s) does not exist" % workdir) if values.verbose: logging.getLogger().setLevel(logging.DEBUG) quiet = values.quiet nbprocesses = values.nbprocesses if nbprocesses <= 0: parser.error("Number of processes must be greater than 0.") overwrite = not values.skip aliases = dict(zip(map(attrgetter('alias'), programs), programs)) selected_aliases = [alias for alias in aliases if getattr(values, alias)] if not selected_aliases: console.print_error("Please select one Monte Carlo program") selected_programs = list(map(aliases.get, selected_aliases)) list_options = [] try: _load(args, list_options) except Exception as ex: console.print_error(str(ex)) if not list_options: console.print_error("Please specify at least one options file") # Setup runner = LocalRunner(outputdir, workdir, overwrite, nbprocesses) progressbar = ProgressBar(console) if not quiet: progressbar.start() # Start simulation with runner: for options in list_options: options.programs.update(selected_programs) runner.put(options) try: while runner.is_alive() and not runner.is_finished(): if not quiet: progressbar.update(runner.progress, runner.status) time.sleep(1) except Exception as ex: console.print_exception(ex) runner.close() if not quiet: progressbar.close() # Clean up console.close()