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"
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"
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
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
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()
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
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
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
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
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)
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')
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')
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)