baseops.limits.add(ShowersLimit(1000)) meas1 = Measurement(baseops) meas1.add_kratio(Ka(6), 0.5, standard=Material('Fe3C', composition_from_formula('Fe3C'))) def setter1(geometry, val): geometry.inclusion_material.composition = {26: val, 6: '?'} param1 = Parameter(setter1, 0.95, 0.0, 1.0) def setter2(geometry, val): geometry.inclusion_diameter_m = val param2 = Parameter(setter2, 200e-9, 150e-9, 250e-9) inclusion_material = Material('CrC', {26: 0.95, 6: 0.05}) geometry = Inclusion(pure(26), inclusion_material, 200e-9) exp = Experiment(geometry, [meas1], [param1, param2]) runner = LocalRunner(NISTMonte, '/tmp', nbprocesses=1) optimizer = LevenbergMarquardtOptimzier() reconstructor = Reconstructor(runner, optimizer, exp) print reconstructor.reconstruct()
opening_rad = radians(5.0) ops.detectors['xrays'] = PhotonIntensityDetector.annular(toa_rad, opening_rad) ops.limits.add(ShowersLimit(10000)) ops.models.add(FLUORESCENCE.fluorescence_compton) # Select simulation program # Could be change to other program from pymontecarlo.program.nistmonte.config import program # Run simulation from pymontecarlo.runner.local import LocalRunner outputdir = "/tmp" with LocalRunner(program, outputdir, nbprocesses=2) as runner: runner.put(ops) while runner.is_alive(): completed, progress, status = runner.report() print '%i completed, %4.2f %% %s' % (completed, progress * 100.0, status) time.sleep(5.0) list_results = runner.get_results() # Extract intensities data = [] for results in list_results[0]: x = results.options.beam.origin_nm[0] int_fe, _unc = results['xrays'].intensity('Fe Ka')
toa_rad = radians(40.0) opening_rad = radians(5.0) ops.detectors['xrays'] = PhotonIntensityDetector.annular(toa_rad, opening_rad) ops.limits.add(ShowersLimit(10)) # Select simulation program # Could be change to other program from pymontecarlo.program.nistmonte.config import program # Run simulation from pymontecarlo.runner.local import LocalRunner outputdir = "/tmp" with LocalRunner(program, outputdir) as runner: runner.put(ops) while runner.is_alive(): _completed, progress, status = runner.report() print '%4.2f %% %s' % (progress * 100.0, status) time.sleep(5.0) list_results = runner.get_results() # Extract carbon Ka intensity results = list_results[0] # Only one simulation results.save('/tmp/results.h5') intensity, intensity_unc = results[0]['xrays'].intensity("C Ka") print intensity, 'counts / (sr.electron)'
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()