def test_steps(comment=''): flyers = [pb9.enc1, pba2.adc6, pba2.adc7] plan = bp.relative_scan([hhm.theta, pb9.enc1, pba2.adc6, pba2.adc7], hhm.theta, -0.1, 0.1, 5) plan = bp.fly_during_wrapper(plan, flyers) plan = bp.pchain(plan) yield from plan
def general_scan_plan(detectors, motor, rel_start, rel_stop, num): plan = bp.relative_scan(detectors, motor, rel_start, rel_stop, num) if hasattr(detectors[0], 'kickoff'): plan = bpp.fly_during_wrapper(plan, detectors) yield from plan
def general_scan_plan(detectors, motor, rel_start, rel_stop, num): plan = bp.relative_scan(detectors, motor, rel_start, rel_stop, num) if hasattr(detectors[0], 'kickoff'): plan = bpp.fly_during_wrapper(plan, detectors) yield from plan
def find_peak(det, mot, start, stop, steps): print(f"Scanning {mot.name} vs {det.name}...") uid = yield from bp.relative_scan([det], mot, start, stop, steps) sp = '_setpoint' if mot is ivu_gap else '_user_setpoint' data = np.array(db[uid].table()[[det.name+'_sum_all', mot.name+sp]])[1:] peak_idx = np.argmax(data[:, 0]) peak_x = data[peak_idx, 1] peak_y = data[peak_idx, 0] print(f"Found peak for {mot.name} at {peak_x} {mot.egu} [BPM reading {peak_y}]") return peak_x, peak_y
def sampleXY_plan(detectors, motor, start, stop, num): """ Example ------- >>> RE(sampleXY_plan([pba1.adc7], samplexy.x, -2, 2, 5, ''), LivePlot('pba1.adc7_volt', 'samplexy_x')) """ flyers = detectors plan = bp.relative_scan(flyers, motor, start, stop, num) if hasattr(flyers[0], 'kickoff'): plan = bpp.fly_during_wrapper(plan, flyers) # Check if I can remove bpp.pchain yield from plan
def tune(detectors, motor, start, stop, num, name='', **metadata): """ Example ------- >>> RE(tune([pba1.adc7], hhm.pitch,-2, 2, 5, ''), LivePlot('pba1.adc7_volt', 'hhm_pitch')) """ flyers = detectors plan = bp.relative_scan(flyers, motor, start, stop, num, md={'plan_name': 'tune ' + motor.name, 'name': name}) if hasattr(flyers[0], 'kickoff'): plan = bpp.fly_during_wrapper(plan, flyers) plan = bpp.pchain(plan) yield from plan
def sampleXY_plan(detectors, motor, start, stop, num): """ Example ------- >>> RE(sampleXY_plan([pba1.adc7], samplexy.x, -2, 2, 5, ''), LivePlot('pba1.adc7_volt', 'samplexy_x')) """ flyers = detectors plan = bp.relative_scan(flyers, motor, start, stop, num) if hasattr(flyers[0], 'kickoff'): plan = bpp.fly_during_wrapper(plan, flyers) # Check if I can remove bpp.pchain yield from plan
def test_round_trip_from_run_engine(db_all, RE): from bluesky.plans import count, scan, relative_scan, inner_product_scan from bluesky.examples import motor, det, motor1 fname = tempfile.NamedTemporaryFile().name cb = spec.DocumentToSpec(fname) RE.subscribe(cb) RE(scan([det], motor, -1, 1, 10), owner="Tom") RE(relative_scan([det], motor, -1, 1, 10)) RE(count([det])) RE(inner_product_scan([det], 10, motor, -1, 1, motor1, -1, 1)) sf = spec.Specfile(fname) sf1 = _round_trip(sf, db_all) # a2scan is not round trippable num_unconvertable_scans = 1 assert len(sf) == (len(sf1) + num_unconvertable_scans)
def dummy_edge_scan(sample_name, edge, md=None): from bluesky.examples import det, motor, det2 if md is None: md = {} local_md = {'plan_name': 'edge_ascan'} md = ChainMap(md, local_md) e_scan_params = EDGE_MAP[edge] # TODO configure the vortex sample_props = SAMPLE_MAP[sample_name] # sample_props = list(sample_manager.find(sample_name))[0] local_md.update(sample_props) lp_list = [] for n in ['det', 'det2']: fig = plt.figure(edge + ': ' + n) lp = bs.callbacks.LivePlot(n, 'motor', fig=fig) lp_list.append(lp) yield from bpp.subs_wrapper(bp.relative_scan([det, det2], motor, -5, 5, 15, md=md), lp_list)
def dummy_edge_scan(sample_name, edge, md=None): from bluesky.examples import det, motor, det2 if md is None: md = {} local_md = {'plan_name': 'edge_ascan'} md = ChainMap(md, local_md) e_scan_params = EDGE_MAP[edge] # TODO configure the vortex sample_props = SAMPLE_MAP[sample_name] # sample_props = list(sample_manager.find(sample_name))[0] local_md.update(sample_props) lp_list = [] for n in ['det', 'det2']: fig = plt.figure(edge + ': ' + n) lp = bs.callbacks.LivePlot(n, 'motor', fig=fig) lp_list.append(lp) yield from bpp.subs_wrapper(bp.relative_scan([det, det2], motor, -5, 5, 15, md=md), lp_list)
def tune(detectors, motor, start, stop, num, comment='', **metadata): """ Example ------- >>> RE(tune([pba2.adc7],-2, 2, 5, ''), LivePlot('pba2_adc7_volt', 'hhm_pitch')) """ flyers = detectors #[pba2.adc6, pba2.adc7] # Start with a step scan. plan = bp.relative_scan(flyers, motor, start, stop, num, md={'comment': comment}) plan = bp.fly_during_wrapper(plan, flyers) #for flyer in flyers: # yield from bp.stage(flyer) plan = bp.pchain(plan) yield from plan
def tune(detectors, motor, start, stop, num, name='', **metadata): """ Example ------- >>> RE(tune([pba1.adc7], hhm.pitch,-2, 2, 5, ''), LivePlot('pba1.adc7_volt', 'hhm_pitch')) """ flyers = detectors plan = bp.relative_scan(flyers, motor, start, stop, num, md={ 'plan_name': 'tune ' + motor.name, 'name': name }) if hasattr(flyers[0], 'kickoff'): plan = bpp.fly_during_wrapper(plan, flyers) plan = bpp.pchain(plan) yield from plan
def generate_data(RE): # This adds {'proposal_id': 1} to all future runs, unless overridden. RE.md['proposal_id'] = 1 RE(count([det])) RE(scan([det], motor, 1, 5, 5)) RE(scan([det], motor, 1, 10, 10)) RE.md['proposal_id'] = 2 RE(count([det])) RE(scan([det], motor, -1, 1, 5)) RE(relative_scan([det], motor, 1, 10, 10)) RE(scan([det], motor, -1, 1, 1000)) RE.md['proposal_id'] = 3 # This adds {'operator': 'Ken'} to all future runs, unless overridden. RE.md['operator'] = 'Ken' RE(count([det]), purpose='calibration', sample='A') RE(scan([det], motor, 1, 10, 10), operator='Dan') # temporarily overrides Ken RE(count([det]), sample='A') # (now back to Ken) RE(count([det]), sample='B') RE.md['operator'] = 'Dan' RE(count([det]), purpose='calibration') RE(scan([det], motor, 1, 10, 10)) del RE.md['operator'] # clean up by un-setting operator
def hhm_theta_scan(start, stop, num, flyers=[pb9.enc1, pba2.adc6, pba2.adc7], comment='', **metadata): """ Example ------- >>> RE(hhm_theta_scan(-0.1, 0.1, 2, [pb4.di, xia])) """ def inner(): md = {'plan_args': {}, 'plan_name': 'step scan', 'comment': comment} md.update(**metadata) yield from bp.open_run(md=md) # Start with a step scan. plan = bp.relative_scan([hhm_en.energy], hhm_en.energy, start, stop, num, md={'comment': comment}) # Wrap it in a fly scan with the Pizza Box. plan = bp.fly_during_wrapper(plan, flyers) # Working around a bug in fly_during_wrapper, stage and unstage the pizza box manually. for flyer in flyers: yield from bp.stage(flyer) yield from bp.stage(hhm) plan = bp.pchain(plan) #plan = bp.pchain(bp.stage(pb9.enc1), bp.stage(pba2.adc6), bp.stage(pba2.adc7), # plan, # bp.unstage(pb9.enc1), bp.unstage(pba2.adc6), bp.unstage(pba2.adc7)) yield from plan
from bluesky.plans import relative_scan from bluesky.callbacks import LiveTable RE(relative_scan([BTA2_DiagA2_1], BTA2_diag.trans, -0.1, 0.1, 5), LiveTable([BTA2_diag.trans, BTA2_DiagA2_1]))
def relative_scan(dets, motor, start, finish, intervals, time=None, *, md=None): yield from _pre_scan(dets, total_points=intervals + 1, count_time=time) return (yield from plans.relative_scan(dets, motor, start, finish, intervals+1, md=md))
from bluesky.plans import relative_scan from bluesky.callbacks import LiveTable, LivePlot assert epu2.connected RE(relative_scan([epu2], epu2.gap, 0, 0.2, 5), LiveTable([epu2]))
from bluesky.plans import relative_scan from bluesky.callbacks import LivePlot, LiveTable RE(relative_scan([qem08], m4_diag1, -1, 1, 5), [ LiveTable(['rs_diag_1_tey', 'm4_diag1']), LivePlot('rs_diag_1_tey', 'm4_diag1') ])