Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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')
Ejemplo n.º 3
0
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)'
Ejemplo n.º 4
0
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()