Exemplo n.º 1
0
def _test_sirepo_detector(RE, db, tmpdir, sim_type, sim_id, server_name):
    import datetime
    from ophyd.utils import make_dir_tree

    RE.subscribe(db.insert)

    root_dir = '/tmp/data'
    _ = make_dir_tree(datetime.datetime.now().year, base_path=root_dir)

    sirepo_det = SirepoDetector(sim_type=sim_type, sim_id=sim_id,
                                sirepo_server=server_name, root_dir=root_dir)
    sirepo_det.select_optic('Aperture')
    sirepo_det.create_parameter('horizontalSize')
    sirepo_det.create_parameter('verticalSize')
    sirepo_det.read_attrs = ['image', 'mean', 'photon_energy']
    sirepo_det.configuration_attrs = ['horizontal_extent',
                                      'vertical_extent',
                                      'shape']

    sirepo_det.active_parameters['Aperture_horizontalSize'].set(1.0)
    sirepo_det.active_parameters['Aperture_verticalSize'].set(1.0)

    RE(bp.count([sirepo_det]))

    hdr = db[-1]
    t = hdr.table()
    mean = t.iloc[0]['sirepo_det_mean']

    assert mean == 1334615738479247.2, "incorrect mean value from bp.count"
Exemplo n.º 2
0
def _test_srw_det_grid_scan(RE, db, tmpdir, sim_type, sim_id, server_name):
    import datetime
    from ophyd.utils import make_dir_tree

    RE.subscribe(db.insert)

    root_dir = '/tmp/data'
    _ = make_dir_tree(datetime.datetime.now().year, base_path=root_dir)

    srw_det = SirepoSRWDetector(name="srw_det",
                                sim_type=sim_type,
                                sim_id=sim_id,
                                sirepo_server=server_name,
                                root_dir=root_dir)
    srw_det.select_optic('Aperture')
    param1 = srw_det.create_parameter('horizontalSize')
    param2 = srw_det.create_parameter('verticalSize')
    srw_det.read_attrs = ['image', 'mean', 'photon_energy']
    srw_det.configuration_attrs = [
        'horizontal_extent', 'vertical_extent', 'shape'
    ]

    RE(bp.grid_scan([srw_det], param1, 0, 1, 3, param2, 0, 1, 3, True))

    db_means = []
    actual_means = [
        0, 0, 0, 1334615738479247.2, 1208898410914477.0, 0, 0,
        1208898410914477.0, 1334615738479247.2
    ]

    hdr = db[-1]
    t = hdr.table()
    for i in range(len(t)):
        db_means.append(t.iloc[i]['srw_det_mean'])
    assert actual_means == db_means, "grid_scan means do not match actual means"
Exemplo n.º 3
0
def flyer(sim_id, aperture, lens, optic, watch_point):
    params_to_change = []
    for i in range(1, 6):
        aperture_name = aperture
        parameters_update1 = {
            "horizontalSize": i * 0.1,
            "verticalSize": (16 - i) * 0.1
        }
        lens_name = lens
        parameters_update2 = {"horizontalFocalLength": i + 7}
        optics_name = optic
        parameters_update3 = {"horizontalSize": 6 - i}
        params_to_change.append({
            aperture_name: parameters_update1,
            lens_name: parameters_update2,
            optics_name: parameters_update3,
        })
    # setup data collection location
    root_dir = "/tmp/sirepo_flyer_data"
    _ = make_dir_tree(datetime.datetime.now().year, base_path=root_dir)
    sirepo_flyer = sf.SirepoFlyer(
        sim_id=sim_id,
        server_name="http://10.10.10.10:8000",
        root_dir=root_dir,
        params_to_change=params_to_change,
        watch_name=watch_point,
    )
    return sirepo_flyer
Exemplo n.º 4
0
def _test_shadow_detector(RE, db, tmpdir, sim_id, server_name,
                          sim_report_type):
    import datetime
    from ophyd.utils import make_dir_tree

    RE.subscribe(db.insert)

    root_dir = tmpdir / "data"
    _ = make_dir_tree(datetime.datetime.now().year, base_path=str(root_dir))

    shadow_det = SirepoShadowDetector(name="shadow_det",
                                      sim_report_type=sim_report_type,
                                      sim_id=sim_id,
                                      sirepo_server=server_name,
                                      root_dir=str(root_dir))
    shadow_det.select_optic('Aperture')
    shadow_det.create_parameter('horizontalSize')
    shadow_det.create_parameter('verticalSize')
    shadow_det.read_attrs = ['image', 'mean', 'photon_energy']
    shadow_det.configuration_attrs = [
        'horizontal_extent', 'vertical_extent', 'shape'
    ]

    shadow_det.active_parameters['Aperture_horizontalSize'].set(1.0)
    shadow_det.active_parameters['Aperture_verticalSize'].set(1.0)

    RE(bp.count([shadow_det]))

    return shadow_det
Exemplo n.º 5
0
def _test_srw_detector(RE, db, tmpdir, sim_type, sim_id, server_name):
    import datetime
    from ophyd.utils import make_dir_tree

    root_dir = "/tmp/sirepo-bluesky-data"
    _ = make_dir_tree(datetime.datetime.now().year, base_path=root_dir)

    srw_det = SirepoSRWDetector(name="srw_det",
                                sim_type=sim_type,
                                sim_id=sim_id,
                                sirepo_server=server_name,
                                root_dir=root_dir)
    srw_det.select_optic('Aperture')
    srw_det.create_parameter('horizontalSize')
    srw_det.create_parameter('verticalSize')
    srw_det.read_attrs = ['image', 'mean', 'photon_energy']
    srw_det.configuration_attrs = [
        'horizontal_extent', 'vertical_extent', 'shape'
    ]

    srw_det.active_parameters['Aperture_horizontalSize'].set(1.0)
    srw_det.active_parameters['Aperture_verticalSize'].set(1.0)

    srw_det.duration.kind = 'hinted'

    RE(bp.count([srw_det]))

    hdr = db[-1]
    t = hdr.table()
    mean = t.iloc[0]['srw_det_mean']

    assert mean == 1334615738479247.2, "incorrect mean value from bp.count"

    sim_durations = np.array(t["srw_det_duration"])
    assert (sim_durations > 0.0).all()
Exemplo n.º 6
0
def test_make_dir_tree():
    with tempfile.TemporaryDirectory() as tempdir:
        paths = make_dir_tree(2016, base_path=tempdir, mode=0o777)
        assert len(paths) == 366

        for path in paths:
            assert_file_mode(path, 0o777)

        assert os.path.join(tempdir, '2016', '03', '04') in paths
        assert os.path.join(tempdir, '2016', '02', '29') in paths
Exemplo n.º 7
0
def test_make_dir_tree():
    with tempfile.TemporaryDirectory() as tempdir:
        paths = make_dir_tree(2016, base_path=tempdir, mode=0o777)
        assert len(paths) == 366

        for path in paths:
            assert_file_mode(path, 0o777)

        assert os.path.join(tempdir, '2016', '03', '04') in paths
        assert os.path.join(tempdir, '2016', '02', '29') in paths
Exemplo n.º 8
0
def _test_sirepo_flyer(RE_no_plot, db, tmpdir, sim_id, server_name):
    import datetime
    from ophyd.utils import make_dir_tree

    RE_no_plot.subscribe(db.insert)

    root_dir = f'{tmpdir}/sirepo_flyer_data'
    _ = make_dir_tree(datetime.datetime.now().year, base_path=root_dir)

    params_to_change = []
    for i in range(1, 6):
        key1 = 'Aperture'
        parameters_update1 = {
            'horizontalSize': i * .1,
            'verticalSize': (16 - i) * .1
        }
        key2 = 'Lens'
        parameters_update2 = {'horizontalFocalLength': i + 7}
        key3 = 'Obstacle'
        parameters_update3 = {'horizontalSize': 6 - i}
        params_to_change.append({
            key1: parameters_update1,
            key2: parameters_update2,
            key3: parameters_update3
        })

    sirepo_flyer = SirepoFlyer(sim_id=sim_id,
                               server_name=server_name,
                               root_dir=root_dir,
                               params_to_change=params_to_change,
                               watch_name='W60',
                               run_parallel=False)

    RE_no_plot(bp.fly([sirepo_flyer]))

    hdr = db[-1]
    t = hdr.table(stream_name='sirepo_flyer')
    db_means = []
    actual_means = [
        36779651609602.38, 99449330615601.89, 149289119385413.34,
        223428480785808.78, 388594677365777.9
    ]
    for i in range(len(t)):
        db_means.append(t.iloc[i]['sirepo_flyer_mean'])

    assert set(actual_means) == set(
        db_means), "fly scan means do not match actual means"
def utils():
    # bluesky RunEngine
    RE = RunEngine({})
    bec = best_effort.BestEffortCallback()
    RE.subscribe(bec)

    # Mongo Backend
    db = Broker.named("local")
    try:
        databroker.assets.utils.install_sentinels(db.reg.config, version=1)
    except Exception:
        pass
    # update database info
    RE.subscribe(db.insert)
    db.reg.register_handler("srw", SRWFileHandler, overwrite=True)

    # store data
    root_dir = "/tmp/sirepo_flyer_data"
    _ = make_dir_tree(datetime.datetime.now().year, base_path=root_dir)

    return RE, db
Exemplo n.º 10
0
def _test_shadow_detector(RE, db, tmpdir, sim_id, server_name,
                          sim_report_type):
    import datetime

    from ophyd.utils import make_dir_tree

    root_dir = tmpdir / "data"
    _ = make_dir_tree(datetime.datetime.now().year, base_path=str(root_dir))

    shadow_det = SirepoShadowDetector(
        name="shadow_det",
        sim_report_type=sim_report_type,
        sim_id=sim_id,
        sirepo_server=server_name,
        root_dir=str(root_dir),
    )
    shadow_det.select_optic("Aperture")
    shadow_det.create_parameter("horizontalSize")
    shadow_det.create_parameter("verticalSize")
    shadow_det.read_attrs = ["image", "mean", "photon_energy"]
    shadow_det.configuration_attrs = [
        "horizontal_extent", "vertical_extent", "shape"
    ]

    shadow_det.active_parameters["Aperture_horizontalSize"].set(1.0)
    shadow_det.active_parameters["Aperture_verticalSize"].set(1.0)

    shadow_det.duration.kind = 'hinted'

    uid, = RE(bp.count([shadow_det]))

    # Check that the duration for each step in the simulation is positive:
    sim_durations = np.array(db[uid].table()["shadow_det_duration"])
    assert (sim_durations > 0.0).all()

    return shadow_det
Exemplo n.º 11
0
import matplotlib.pyplot as plt
import numpy as np  # noqa F401
from bluesky.callbacks import best_effort
from bluesky.run_engine import RunEngine
from databroker import Broker
from ophyd.utils import make_dir_tree

from sirepo_bluesky.shadow_handler import ShadowFileHandler
from sirepo_bluesky.srw_handler import SRWFileHandler

RE = RunEngine({})
bec = best_effort.BestEffortCallback()
RE.subscribe(bec)

# MongoDB backend:
db = Broker.named('local')  # mongodb backend
try:
    databroker.assets.utils.install_sentinels(db.reg.config, version=1)
except Exception:
    pass

RE.subscribe(db.insert)
db.reg.register_handler('srw', SRWFileHandler, overwrite=True)
# db.reg.register_handler('shadow', ShadowFileHandler, overwrite=True)
db.reg.register_handler('SIREPO_FLYER', SRWFileHandler, overwrite=True)

plt.ion()

root_dir = '/tmp/srw_det_data'
_ = make_dir_tree(datetime.datetime.now().year, base_path=root_dir)
Exemplo n.º 12
0
import databroker
from databroker import Broker, temp_config

from ophyd.utils import make_dir_tree

from srw_handler import SRWFileHandler
import matplotlib.pyplot as plt

RE = RunEngine({})

bec = best_effort.BestEffortCallback()
RE.subscribe(bec)

# MongoDB backend:
# db = Broker.named('local')  # mongodb backend
# try:
#     databroker.assets.utils.install_sentinels(db.reg.config, version=1)
# except:
#     pass

# Temp sqlite backend:
db = Broker.from_config(temp_config())

RE.subscribe(db.insert)
db.reg.register_handler('srw', SRWFileHandler, overwrite=True)

plt.ion()
install_kicker()

_ = make_dir_tree(datetime.datetime.now().year, base_path='/tmp/data')
Exemplo n.º 13
0
from databroker import Broker, temp_config

from ophyd.utils import make_dir_tree

from srw_handler import SRWFileHandler
import matplotlib.pyplot as plt


RE = RunEngine({})

bec = best_effort.BestEffortCallback()
RE.subscribe(bec)

# MongoDB backend:
# db = Broker.named('local')  # mongodb backend
# try:
#     databroker.assets.utils.install_sentinels(db.reg.config, version=1)
# except:
#     pass

# Temp sqlite backend:
db = Broker.from_config(temp_config())

RE.subscribe(db.insert)
db.reg.register_handler('srw', SRWFileHandler, overwrite=True)

plt.ion()
install_qt_kicker()

_ = make_dir_tree(2018, base_path='/tmp/data')
Exemplo n.º 14
0
import databroker
from databroker import Broker, temp_config

from ophyd.utils import make_dir_tree

from srw_handler import SRWFileHandler
import matplotlib.pyplot as plt


RE = RunEngine({})

bec = best_effort.BestEffortCallback()
RE.subscribe(bec)

# MongoDB backend:
db = Broker.named('local')  # mongodb backend
try:
    databroker.assets.utils.install_sentinels(db.reg.config, version=1)
except:
    pass

RE.subscribe(db.insert)
db.reg.register_handler('srw', SRWFileHandler, overwrite=True)
db.reg.register_handler('SIREPO_FLYER', SRWFileHandler, overwrite=True)

plt.ion()
install_kicker()

ROOT_DIR = '/tmp/sirepo_flyer_data'
_ = make_dir_tree(datetime.datetime.now().year, base_path=ROOT_DIR)