nsls-ii-csx / profile_collection Goto Github PK
View Code? Open in Web Editor NEWLicense: BSD 3-Clause "New" or "Revised" License
License: BSD 3-Clause "New" or "Revised" License
The solution provided in #83 depended on a Kill-STS
PV that was custom built by John.
So for this kill motor, I made a new PV which is really a subset of another PV. The logic in EPICS is
record(calc, "$(SYS)$(DEV)Kill-Sts") {
field(INPA, "$(SYS)$(DEV)Sts:1-Sts CPP")
field(CALC, "(A>>11&1)=0")
}
which means its taking the PV that exists everywhere for turbo pmac,
$(SYS)$ (DEV)Sts:1-Sts , generically, and its doing the operation on its value:
value>>11&1 and asking if that is equal to 0? If yes, then Kill-Sts is set to 1, if it not equal 0, Kill-Sts is set to 0.
We can embed this logic into the ophyd read back instead, so that it generically maps to all motors without need for custom EPICS database entries.
Will take some modification of class PMACKiller(EpicsSignal):
There was a typo in a script that
So there is a recovery process, but this function should be more robust because it is 1) confusing for typical user if they make this mistake and 2) i was on a very bright bragg so it was lucky that I was here to block the beam instead of home sleeping.
def plan_end_200K():
yield from mv(inout, 'Out')
#Rod scans
print('\n\n****** bragg now *****\n\n')
yield from mv(fccd.exposure,(0.02,0.3,18*2)) ###
#yield from bps.sleep(60*5)
yield from mv(fccd.exposure,(3,0,18*2)) ###
There should have been a plan after the first fccd.exposure instead of setting another exposure time.
Here is the traceback:
In [6]: RE(plan_end_200K())
****** bragg now *****
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
~/Beamline/ScienceComm/2018_11_MuR/20181120_dinner.py in <module>()
----> 1 RE(plan_end_200K())
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/run_engine.py in __call__(self, *args, **metadata_kw)
668 # it (unless it is a canceled error)
669 if exc is not None:
--> 670 raise exc
671
672 if self._interrupted:
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/run_engine.py in _run(self)
1118 self.log.error("Run aborted")
1119 self.log.error("%r", err)
-> 1120 raise err
1121 finally:
1122 # Some done_callbacks may still be alive in other threads.
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/run_engine.py in _run(self)
996 try:
997 msg = self._plan_stack[-1].throw(
--> 998 self._exception)
999 except Exception as e:
1000 # The current plan did not handle it,
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in __call__(self, plan)
1236 plan = monitor_during_wrapper(plan, self.monitors)
1237 plan = baseline_wrapper(plan, self.baseline)
-> 1238 return (yield from plan)
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in baseline_wrapper(plan, devices, name)
1092 return (yield from plan)
1093 else:
-> 1094 return (yield from plan_mutator(plan, insert_baseline))
1095
1096
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
73 # if we have a stashed exception, pass it along
74 try:
---> 75 msg = plan_stack[-1].throw(exception)
76 except Exception as e:
77 # if we catch an exception,
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in monitor_during_wrapper(plan, signals)
722 plan1 = plan_mutator(plan, insert_after_open)
723 plan2 = plan_mutator(plan1, insert_before_close)
--> 724 return (yield from plan2)
725
726
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
73 # if we have a stashed exception, pass it along
74 try:
---> 75 msg = plan_stack[-1].throw(exception)
76 except Exception as e:
77 # if we catch an exception,
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
73 # if we have a stashed exception, pass it along
74 try:
---> 75 msg = plan_stack[-1].throw(exception)
76 except Exception as e:
77 # if we catch an exception,
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in fly_during_wrapper(plan, flyers)
780 plan1 = plan_mutator(plan, insert_after_open)
781 plan2 = plan_mutator(plan1, insert_before_close)
--> 782 return (yield from plan2)
783
784
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
73 # if we have a stashed exception, pass it along
74 try:
---> 75 msg = plan_stack[-1].throw(exception)
76 except Exception as e:
77 # if we catch an exception,
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
73 # if we have a stashed exception, pass it along
74 try:
---> 75 msg = plan_stack[-1].throw(exception)
76 except Exception as e:
77 # if we catch an exception,
~/Beamline/ScienceComm/2018_11_MuR/20181120_dinner.py in plan_end_200K()
42 yield from mv(fccd.exposure,(0.02,0.3,18*2)) ###
43 #yield from bps.sleep(60*5)
---> 44 yield from mv(fccd.exposure,(3,0,18*2)) ###
45 yield from scan_L_aboveBragg()
46 print('\n\n****** done above, now below *****\n\n')
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/plan_stubs.py in mv(*args)
240 step, = utils.merge_cycler(cyl)
241 for obj, val in step.items():
--> 242 ret = yield Msg('set', obj, val, group=group)
243 status_objects.append(ret)
244 yield Msg('wait', None, group=group)
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
161 try:
162 # yield out the 'current message' and collect the return
--> 163 inner_ret = yield msg
164 except GeneratorExit:
165 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
161 try:
162 # yield out the 'current message' and collect the return
--> 163 inner_ret = yield msg
164 except GeneratorExit:
165 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
161 try:
162 # yield out the 'current message' and collect the return
--> 163 inner_ret = yield msg
164 except GeneratorExit:
165 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
161 try:
162 # yield out the 'current message' and collect the return
--> 163 inner_ret = yield msg
164 except GeneratorExit:
165 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
161 try:
162 # yield out the 'current message' and collect the return
--> 163 inner_ret = yield msg
164 except GeneratorExit:
165 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/run_engine.py in _run(self)
1068 # exceptions (coming in via throw) can be
1069 # raised
-> 1070 response = yield from coro(msg)
1071 # special case `CancelledError` and let the outer
1072 # exception block deal with it.
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/asyncio/coroutines.py in coro(*args, **kw)
208 @functools.wraps(func)
209 def coro(*args, **kw):
--> 210 res = func(*args, **kw)
211 if (base_futures.isfuture(res) or inspect.isgenerator(res) or
212 isinstance(res, CoroWrapper)):
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/bluesky/run_engine.py in _set(self, msg)
1822 group = kwargs.pop('group', None)
1823 self._movable_objs_touched.add(msg.obj)
-> 1824 ret = msg.obj.set(*msg.args, **kwargs)
1825 p_event = asyncio.Event(loop=self.loop)
1826 pardon_failures = self._pardon_failures
/epics/xf/23id/ipython/profile_collection/startup/csx1/devices/areadetector.py in set(self, exp)
191 # Set delay generator
192 self.parent.dg1.A.set(aa)
--> 193 self.parent.dg1.B.set(bb)
194 self.parent.dg1.C.set(cc)
195 self.parent.dg1.D.set(dd)
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/ophyd/signal.py in set(self, value, timeout, settle_time)
928 '''
929 if not self._put_complete:
--> 930 return super().set(value, timeout=timeout, settle_time=settle_time)
931
932 # using put completion:
/opt/conda_envs/collection-2018-1.0.1/lib/python3.6/site-packages/ophyd/signal.py in set(self, value, timeout, settle_time)
179
180 if self._set_thread is not None:
--> 181 raise RuntimeError('Another set() call is still in progress')
182
183 st = Status(self)
RuntimeError: Another set() call is still in progress
Efixed Q just uses the beamline energy, we don't have a way of keep tracking of the offset. It is too hard to correct.
Options:
@cmazzoli, I would like to get your perspective
profile_collection
bsui
remotely (does it touch any hardware?) - use git grep .put
or git grep caput
BS_ENV=collection-2020-2.0rc7-1 bsui
.value
-> .get()
if it's in a Device
, or with yield from bps.read()
if in a planhistory.sqlite
issue - see https://blueskyproject.io/bluesky/metadata.html#persistence-between-sessions2020C2.0
@cmazzoli and @wen-hu - I see that added fccd_intersection
to the start document. That is good info to capture. Can we rename the dictionary to be {'fccd' : {'intersection': [400,400]} }
? This would be really helpful for the already implementation of marking the dark images as darks and gain so that we can change get_fastccd_images()
to find the most recent dark image: {'fccd': {'image': 'dark' , 'gain':'auto'} }
. We can just update()
this to the new {fccd: {intersection: [400,400]} }
The only thing I do not know is if this should be in the configuration (descriptors
) because if the exposure time matters, then it will be faster to get all of that information out of the database if it is in the same place.....atleast that it what I naively believe. What do you say? Do you want me to confirm if there is a performance gain?
need to extend to scanning single axis (L) with h and k offset by gamma of 4 (so not equal to 0).
@stuwilkins @tacaswell @danielballan @mrakitin @awalter-bnl
I am not sure if the bug is with mv(fccd.exposure())
or with ct_dark_all
. Both are defined in the profile.
Basically, I had to add a sleep so that the number of images where changed in time before the next function read what the number of images was before changing and then resetting.
def O_Kedge_25K():
num_lights = 900#14400
num_darks =20#100
yield from mv(fccd.exposure,(0.1, 1, num_lights))
yield from bps.sleep(2) ################### ADDED THIS LINE TO FIX BEHAVIOR #####
yield from ct_dark_all(num_darks)
print('First lights with .1s exposure')
yield from count([fccd],md={'purpose':'XPCS O K same exp time'})
I wanted 900 images with count() and only got 20
In [287]: RE(O_Kedge_25K())
Starting procedure to acquire darks 9.3Hz or 0.108s.
Current number of images = 900.
Setting to 20 images.
Gain bit set to 0 for a gain value of auto
Transient Scan ID: 120117 Time: 2019-06-27 23:39:47
Persistent Unique Scan ID: 'b1677387-5372-4d82-b483-6f4746401dfe'
New stream: 'baseline'
New stream: 'primary'
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
| seq_num | time | fccd_stats1_total | fccd_stats2_total | fccd_stats3_total | fccd_stats4_total | fccd_stats5_total |
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
| 1 | 23:40:11.0 | -1133 | -122723 | -567 | -308869 | -1519351 |
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
generator count ['b1677387'] (scan num: 120117)
Gain bit set to 1 for a gain value of x2
Transient Scan ID: 120118 Time: 2019-06-27 23:40:11
Persistent Unique Scan ID: 'b45229f8-4742-4d7e-8504-6e4ec30c037b'
New stream: 'baseline'
New stream: 'primary'
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
| seq_num | time | fccd_stats1_total | fccd_stats2_total | fccd_stats3_total | fccd_stats4_total | fccd_stats5_total |
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
| 1 | 23:40:35.9 | -82821021 | -3041218805 | -12523402 | -11983369898 | -30074223585 |
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
generator count ['b45229f8'] (scan num: 120118)
Gain bit set to 2 for a gain value of x1
Gain bit set to 2 for a gain value of x1
Transient Scan ID: 120119 Time: 2019-06-27 23:40:36
Persistent Unique Scan ID: '11a19b25-44fb-4cf6-8305-49a0e6565509'
New stream: 'baseline'
New stream: 'primary'
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
| seq_num | time | fccd_stats1_total | fccd_stats2_total | fccd_stats3_total | fccd_stats4_total | fccd_stats5_total |
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
| 1 | 23:41:00.7 | -40897647 | -1506658266 | -6220041 | -5937055523 | -14935057947 |
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
generator count ['11a19b25'] (scan num: 120119)
Returning to intial conditions (pre-count).
Total images per trigger are NOW: 20
FCCD FCRIC gain value is NOW: auto
First lights with .1s exposure
Transient Scan ID: 120120 Time: 2019-06-27 23:41:03
Persistent Unique Scan ID: '3b22c776-e9ba-4c1f-9907-96b30b12969d'
New stream: 'baseline'
New stream: 'primary'
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
| seq_num | time | fccd_stats1_total | fccd_stats2_total | fccd_stats3_total | fccd_stats4_total | fccd_stats5_total |
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
| 1 | 23:41:27.7 | 1681 | 90179 | -444 | 2495839 | 2590413 |
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
generator count ['3b22c776'] (scan num: 120120)
Out[287]:
('b1677387-5372-4d82-b483-6f4746401dfe',
'b45229f8-4742-4d7e-8504-6e4ec30c037b',
'11a19b25-44fb-4cf6-8305-49a0e6565509',
'3b22c776-e9ba-4c1f-9907-96b30b12969d')
Gain bit set to 2 for a gain value of x1
Transient Scan ID: 120123 Time: 2019-06-27 23:44:45
Persistent Unique Scan ID: 'a031f6be-510b-4955-ba85-db486e293045'
New stream: 'baseline'
New stream: 'primary'
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
| seq_num | time | fccd_stats1_total | fccd_stats2_total | fccd_stats3_total | fccd_stats4_total | fccd_stats5_total |
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
| 1 | 23:45:10.0 | -40896549 | -1506623794 | -6219825 | -5936917403 | -14934642767 |
+-----------+------------+-------------------+-------------------+-------------------+-------------------+-------------------+
generator count ['a031f6be'] (scan num: 120123)
Returning to intial conditions (pre-count).
Total images per trigger are NOW: 900
FCCD FCRIC gain value is NOW: auto
First lights with .1s exposure
Transient Scan ID: 120124 Time: 2019-06-27 23:45:12
Persistent Unique Scan ID: '3b377bf7-9473-4ceb-8515-3e0a7e5a7874'
New stream: 'baseline'
Motivation: #10
Attn: @danielballan
Currently, the number of images requested for a "light" run does not change when collected to replaced expired darks.
Beamline needs to produce some data to determine the number of required dark images so that the result is statistically accurate. This is because the exposure time of the camera varies (0.01s - 5 s). For now, maybe 50 images are a good starting point, and anyone taking exposures longer than 1 or 2 seconds should switch to manual dark collection.
@cmazzoli @wen-hu can we move the configuration values to the configuration attributes the baseline list is really long and it will make it easier to read. just talking about dly - icof unless there is a real need to treat these things like readback and setpoint. there is a get_config
function that will make uncovering these values easier.
'nanop_tx',
'nanop_tx_user_setpoint',
'nanop_tx_dly',
'nanop_tx_rtry',
'nanop_tx_rdbd',
'nanop_tx_rmod',
'nanop_tx_cnen',
'nanop_tx_pcof',
'nanop_tx_icof',
'nanop_ty',
'nanop_ty_user_setpoint',
'nanop_ty_dly',
'nanop_ty_rtry',
'nanop_ty_rdbd',
'nanop_ty_rmod',
'nanop_ty_cnen',
'nanop_ty_pcof',
'nanop_ty_icof',
'nanop_tz',
'nanop_tz_user_setpoint',
'nanop_tz_dly',
'nanop_tz_rtry',
'nanop_tz_rdbd',
'nanop_tz_rmod',
'nanop_tz_cnen',
'nanop_tz_pcof',
'nanop_tz_icof',
'nanop_bx',
'nanop_bx_user_setpoint',
'nanop_bx_dly',
'nanop_bx_rtry',
'nanop_bx_rdbd',
'nanop_bx_rmod',
'nanop_bx_cnen',
'nanop_bx_pcof',
'nanop_bx_icof',
'nanop_by',
'nanop_by_user_setpoint',
'nanop_by_dly',
'nanop_by_rtry',
'nanop_by_rdbd',
'nanop_by_rmod',
'nanop_by_cnen',
'nanop_by_pcof',
'nanop_by_icof',
'nanop_bz',
'nanop_bz_user_setpoint',
'nanop_bz_dly',
'nanop_bz_rtry',
'nanop_bz_rdbd',
'nanop_bz_rmod',
'nanop_bz_cnen',
'nanop_bz_pcof',
Investigate IOC or profile to find the fix to issue reported in NSLS-II/Bug-Reports#178
@mrakitin @MikeHart85 I remember when you deployed bluesky at the start of 2020-3, there were some questions from you about these nested values
Where you suggesting to only include the top level, and let whatever code sort it out at the end? I don't quite remember what you didn't like or thought was wrong. Perhaps you guys don't remember either. Next time, I will make a better note.
1. inout
in baseline reports values that are labeled as floats, not strings. The type() should be changed to string
2. fccd_image
shape is taken from top level AD setup. WRitten files should get image shape from the plugin responsibble for writing the image.
For item 2, the HDF plugin writes the file, and the PVs associated with array shape are :
XF:23ID1-ES{FCCD}HDF1:ArraySize0_RBV
XF:23ID1-ES{FCCD}HDF1:ArraySize1_RBV
The raw images is rotated in CSXtools so the user sees something different. The unrotated images has the first number being horizontal, and the second number being veritcal.
After processing by CSXtools, image shape flips axes
This is extra confusing because the raw image is not the image handled through the ROI and STATS plugins so don't change sutff associated with ROI and STATS as this represents the postCSXtools process orientation that use users sees activley in imageJ at the beamline.
the lattice parameters are part of the tardis object but are not saved with the tardis object's configuration attributes.
It seems we are also saving the calculation energy, but these are crazy units. Pete J has PR to hklpy that adds the wavelength to the configuration attributes which makes more since for calculation in a notebook.
TODO
tardis
configuration datatardis
configuration dataCurrently, db[-1]descriptors[0]["configuration"]["tardis"]["data"]
:
['tardis_energy',
'tardis_UB',
'tardis_theta_user_offset',
'tardis_theta_user_offset_dir',
'tardis_theta_velocity',
'tardis_theta_acceleration',
'tardis_theta_motor_egu',
'tardis_delta_user_offset',
'tardis_delta_user_offset_dir',
'tardis_delta_velocity',
'tardis_delta_acceleration',
'tardis_delta_motor_egu',
'tardis_gamma_user_offset',
'tardis_gamma_user_offset_dir',
'tardis_gamma_velocity',
'tardis_gamma_acceleration',
'tardis_gamma_motor_egu']
Currently, it's not used. Need to replace the explicit definitions of RE, db, etc. in startup/00-nsls2-tools.py
-> startup/csx1/startup/startup.py
with nslsii.configure_base(...)
. That will bring better control of the instantiated things and the default logging configuration.
The following worked for a long time and then the plan got "hung up" . Had to restart bsui in order to regain control. This is an intermittent issue.
In [231]: RE(bpp.pchain(ct_dark_all(20), ct([fccd],num=1,md={'purpose':'test und offset -24 & fast shutter & 2x1 bflslt'})))
Starting procedure to acquire darks 1.18e+02Hz or 0.009s.
Current number of images = 5.
Setting to 20 images.
A 'deferred pause' has been requested. The RunEngine will pause at the next checkpoint. To pause immediately, hit Ctrl+C again in the next 10 seconds.
Deferred pause acknowledged. Continuing to checkpoint.
^CPausing...
---------------------------------------------------------------------------
RunEngineInterrupted Traceback (most recent call last)
~/Beamline/Commissioning/2019_08/defs.py in <module>
----> 1 RE(bpp.pchain(ct_dark_all(20), ct([fccd],num=1,md={'purpose':'test und offset -24 & fast shutter & 2x1 bflslt'})))
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in __call__(self, *args, **metadata_kw)
754
755 if self._interrupted:
--> 756 raise RunEngineInterrupted(self.pause_msg) from None
757
758 return tuple(self._run_start_uids)
RunEngineInterrupted:
Your RunEngine is entering a paused state. These are your options for changing
the state of the RunEngine:
RE.resume() Resume the plan.
RE.abort() Perform cleanup, then kill plan. Mark exit_stats='aborted'.
RE.stop() Perform cleanup, then kill plan. Mark exit_status='success'.
RE.halt() Emergency Stop: Do not perform cleanup --- just stop.
In [232]: RE.abort()
Aborting: running cleanup and marking exit_status as 'abort'...
Returning to intial conditions (pre-count).
Total images per trigger are NOW: 5
FCCD FCRIC gain value is NOW: auto
[E 18:29:52.774 run_engine:1257] Run aborted
Traceback (most recent call last):
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py", line 1150, in _run
msg = self._plan_stack[-1].send(resp)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 1294, in __call__
return (yield from plan)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 1149, in baseline_wrapper
return (yield from plan_mutator(plan, insert_baseline))
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 790, in monitor_during_wrapper
return (yield from plan2)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 848, in fly_during_wrapper
return (yield from plan2)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 267, in pchain
rets.append((yield from p))
File "/epics/xf/23id/ipython/profile_collection/startup/csx1/plans/dark_ff.py", line 171, in ct_dark_all
yield from bps.mv(fccd.fccd1.capture_bgnd, 1)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/plan_stubs.py", line 247, in mv
yield Msg('wait', None, group=group)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 194, in plan_mutator
inner_ret = yield msg
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 194, in plan_mutator
inner_ret = yield msg
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 194, in plan_mutator
inner_ret = yield msg
[Previous line repeated 2 more times]
bluesky.utils.RequestAbort
Out[232]: []
In [233]: RE.abort()
---------------------------------------------------------------------------
TransitionError Traceback (most recent call last)
~/Beamline/Commissioning/2019_08/defs.py in <module>
----> 1 RE.abort()
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in abort(self, reason)
1007 """
1008 if self.state.is_idle:
-> 1009 raise TransitionError("RunEngine is already idle.")
1010 print("Aborting: running cleanup and marking "
1011 "exit_status as 'abort'...")
TransitionError: RunEngine is already idle.
In [234]: RE(bpp.pchain(ct_dark_all(20), ct([fccd],num=1,md={'purpose':'test und offset -24 & fast shutter & 2x1 bflslt'})))
Starting procedure to acquire darks 1.18e+02Hz or 0.009s.
Current number of images = 5.
Setting to 20 images.
Returning to intial conditions (pre-count).
Total images per trigger are NOW: 5
FCCD FCRIC gain value is NOW: auto
[E 18:30:05.022 run_engine:1261] Run aborted
Traceback (most recent call last):
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py", line 1150, in _run
msg = self._plan_stack[-1].send(resp)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 1294, in __call__
return (yield from plan)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 1149, in baseline_wrapper
return (yield from plan_mutator(plan, insert_baseline))
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 790, in monitor_during_wrapper
return (yield from plan2)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 848, in fly_during_wrapper
return (yield from plan2)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 267, in pchain
rets.append((yield from p))
File "/epics/xf/23id/ipython/profile_collection/startup/csx1/plans/dark_ff.py", line 171, in ct_dark_all
yield from bps.mv(fccd.fccd1.capture_bgnd, 1)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/plan_stubs.py", line 245, in mv
ret = yield Msg('set', obj, val, group=group)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 194, in plan_mutator
inner_ret = yield msg
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 194, in plan_mutator
inner_ret = yield msg
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 194, in plan_mutator
inner_ret = yield msg
[Previous line repeated 2 more times]
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py", line 1208, in _run
new_response = yield from coro(msg)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/asyncio/coroutines.py", line 120, in coro
res = func(*args, **kw)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py", line 1955, in _set
ret = msg.obj.set(*msg.args, **kwargs)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/ophyd/signal.py", line 941, in set
return super().set(value, timeout=timeout, settle_time=settle_time)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/ophyd/signal.py", line 185, in set
raise RuntimeError('Another set() call is still in progress')
RuntimeError: Another set() call is still in progress
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
~/Beamline/Commissioning/2019_08/defs.py in <module>
----> 1 RE(bpp.pchain(ct_dark_all(20), ct([fccd],num=1,md={'purpose':'test und offset -24 & fast shutter & 2x1 bflslt'})))
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in __call__(self, *args, **metadata_kw)
751 # it (unless it is a canceled error)
752 if exc is not None:
--> 753 raise exc
754
755 if self._interrupted:
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in _run(self)
1260 self._reason = str(err)
1261 self.log.exception("Run aborted")
-> 1262 raise err
1263 finally:
1264 # Some done_callbacks may still be alive in other threads.
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in _run(self)
1148 else:
1149 try:
-> 1150 msg = self._plan_stack[-1].send(resp)
1151 # We have exhausted the top generator
1152 except StopIteration:
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in __call__(self, plan)
1292 plan = monitor_during_wrapper(plan, self.monitors)
1293 plan = baseline_wrapper(plan, self.baseline)
-> 1294 return (yield from plan)
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in baseline_wrapper(plan, devices, name)
1147 return (yield from plan)
1148 else:
-> 1149 return (yield from plan_mutator(plan, insert_baseline))
1150
1151
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
167 continue
168 else:
--> 169 raise ex
170 # if inserting / mutating, put new generator on the stack
171 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
120 ret = result_stack.pop()
121 try:
--> 122 msg = plan_stack[-1].send(ret)
123 except StopIteration as e:
124 # discard the exhausted generator
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in monitor_during_wrapper(plan, signals)
788 plan1 = plan_mutator(plan, insert_after_open)
789 plan2 = plan_mutator(plan1, insert_before_close)
--> 790 return (yield from plan2)
791
792
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
167 continue
168 else:
--> 169 raise ex
170 # if inserting / mutating, put new generator on the stack
171 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
120 ret = result_stack.pop()
121 try:
--> 122 msg = plan_stack[-1].send(ret)
123 except StopIteration as e:
124 # discard the exhausted generator
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
167 continue
168 else:
--> 169 raise ex
170 # if inserting / mutating, put new generator on the stack
171 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
120 ret = result_stack.pop()
121 try:
--> 122 msg = plan_stack[-1].send(ret)
123 except StopIteration as e:
124 # discard the exhausted generator
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in fly_during_wrapper(plan, flyers)
846 plan1 = plan_mutator(plan, insert_after_open)
847 plan2 = plan_mutator(plan1, insert_before_close)
--> 848 return (yield from plan2)
849
850
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
167 continue
168 else:
--> 169 raise ex
170 # if inserting / mutating, put new generator on the stack
171 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
120 ret = result_stack.pop()
121 try:
--> 122 msg = plan_stack[-1].send(ret)
123 except StopIteration as e:
124 # discard the exhausted generator
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
167 continue
168 else:
--> 169 raise ex
170 # if inserting / mutating, put new generator on the stack
171 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
120 ret = result_stack.pop()
121 try:
--> 122 msg = plan_stack[-1].send(ret)
123 except StopIteration as e:
124 # discard the exhausted generator
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in pchain(*args)
265 rets = deque()
266 for p in args:
--> 267 rets.append((yield from p))
268 return tuple(rets)
269
/epics/xf/23id/ipython/profile_collection/startup/csx1/plans/dark_ff.py in ct_dark_all(numim, detectors)
169 # SET TO 1 TO ARM FOR NEXT EVENT so that the FastCCD1 is
170 # already bkg subt
--> 171 yield from bps.mv(fccd.fccd1.capture_bgnd, 1)
172
173 # take darks
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/plan_stubs.py in mv(*args)
243 step, = utils.merge_cycler(cyl)
244 for obj, val in step.items():
--> 245 ret = yield Msg('set', obj, val, group=group)
246 status_objects.append(ret)
247 yield Msg('wait', None, group=group)
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
192 try:
193 # yield out the 'current message' and collect the return
--> 194 inner_ret = yield msg
195 except GeneratorExit:
196 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
192 try:
193 # yield out the 'current message' and collect the return
--> 194 inner_ret = yield msg
195 except GeneratorExit:
196 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
192 try:
193 # yield out the 'current message' and collect the return
--> 194 inner_ret = yield msg
195 except GeneratorExit:
196 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
192 try:
193 # yield out the 'current message' and collect the return
--> 194 inner_ret = yield msg
195 except GeneratorExit:
196 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
192 try:
193 # yield out the 'current message' and collect the return
--> 194 inner_ret = yield msg
195 except GeneratorExit:
196 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in _run(self)
1206 # exceptions (coming in via throw) can be
1207 # raised
-> 1208 new_response = yield from coro(msg)
1209
1210 # special case `CancelledError` and let the outer
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/asyncio/coroutines.py in coro(*args, **kw)
118 @functools.wraps(func)
119 def coro(*args, **kw):
--> 120 res = func(*args, **kw)
121 if (base_futures.isfuture(res) or inspect.isgenerator(res) or
122 isinstance(res, CoroWrapper)):
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in _set(self, msg)
1953 group = kwargs.pop('group', None)
1954 self._movable_objs_touched.add(msg.obj)
-> 1955 ret = msg.obj.set(*msg.args, **kwargs)
1956 p_event = asyncio.Event(loop=self.loop)
1957 pardon_failures = self._pardon_failures
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/ophyd/signal.py in set(self, value, timeout, settle_time)
939 '''
940 if not self._put_complete:
--> 941 return super().set(value, timeout=timeout, settle_time=settle_time)
942
943 # using put completion:
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/ophyd/signal.py in set(self, value, timeout, settle_time)
183
184 if self._set_thread is not None:
--> 185 raise RuntimeError('Another set() call is still in progress')
186
187 st = Status(self)
RuntimeError: Another set() call is still in progress
In [235]: RE(bpp.pchain(ct_dark_all(20), ct([fccd],num=1,md={'purpose':'test und offset -24 & fast shutter & 2x1 bflslt'})))
Starting procedure to acquire darks 1.18e+02Hz or 0.009s.
Current number of images = 5.
Setting to 20 images.
Returning to intial conditions (pre-count).
Total images per trigger are NOW: 5
FCCD FCRIC gain value is NOW: auto
[E 18:30:09.994 run_engine:1261] Run aborted
Traceback (most recent call last):
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py", line 1150, in _run
msg = self._plan_stack[-1].send(resp)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 1294, in __call__
return (yield from plan)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 1149, in baseline_wrapper
return (yield from plan_mutator(plan, insert_baseline))
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 790, in monitor_during_wrapper
return (yield from plan2)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 848, in fly_during_wrapper
return (yield from plan2)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 169, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 122, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 267, in pchain
rets.append((yield from p))
File "/epics/xf/23id/ipython/profile_collection/startup/csx1/plans/dark_ff.py", line 171, in ct_dark_all
yield from bps.mv(fccd.fccd1.capture_bgnd, 1)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/plan_stubs.py", line 245, in mv
ret = yield Msg('set', obj, val, group=group)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 194, in plan_mutator
inner_ret = yield msg
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 194, in plan_mutator
inner_ret = yield msg
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py", line 194, in plan_mutator
inner_ret = yield msg
[Previous line repeated 2 more times]
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py", line 1208, in _run
new_response = yield from coro(msg)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/asyncio/coroutines.py", line 120, in coro
res = func(*args, **kw)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py", line 1955, in _set
ret = msg.obj.set(*msg.args, **kwargs)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/ophyd/signal.py", line 941, in set
return super().set(value, timeout=timeout, settle_time=settle_time)
File "/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/ophyd/signal.py", line 185, in set
raise RuntimeError('Another set() call is still in progress')
RuntimeError: Another set() call is still in progress
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
~/Beamline/Commissioning/2019_08/defs.py in <module>
----> 1 RE(bpp.pchain(ct_dark_all(20), ct([fccd],num=1,md={'purpose':'test und offset -24 & fast shutter & 2x1 bflslt'})))
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in __call__(self, *args, **metadata_kw)
751 # it (unless it is a canceled error)
752 if exc is not None:
--> 753 raise exc
754
755 if self._interrupted:
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in _run(self)
1260 self._reason = str(err)
1261 self.log.exception("Run aborted")
-> 1262 raise err
1263 finally:
1264 # Some done_callbacks may still be alive in other threads.
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in _run(self)
1148 else:
1149 try:
-> 1150 msg = self._plan_stack[-1].send(resp)
1151 # We have exhausted the top generator
1152 except StopIteration:
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in __call__(self, plan)
1292 plan = monitor_during_wrapper(plan, self.monitors)
1293 plan = baseline_wrapper(plan, self.baseline)
-> 1294 return (yield from plan)
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in baseline_wrapper(plan, devices, name)
1147 return (yield from plan)
1148 else:
-> 1149 return (yield from plan_mutator(plan, insert_baseline))
1150
1151
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
167 continue
168 else:
--> 169 raise ex
170 # if inserting / mutating, put new generator on the stack
171 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
120 ret = result_stack.pop()
121 try:
--> 122 msg = plan_stack[-1].send(ret)
123 except StopIteration as e:
124 # discard the exhausted generator
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in monitor_during_wrapper(plan, signals)
788 plan1 = plan_mutator(plan, insert_after_open)
789 plan2 = plan_mutator(plan1, insert_before_close)
--> 790 return (yield from plan2)
791
792
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
167 continue
168 else:
--> 169 raise ex
170 # if inserting / mutating, put new generator on the stack
171 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
120 ret = result_stack.pop()
121 try:
--> 122 msg = plan_stack[-1].send(ret)
123 except StopIteration as e:
124 # discard the exhausted generator
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
167 continue
168 else:
--> 169 raise ex
170 # if inserting / mutating, put new generator on the stack
171 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
120 ret = result_stack.pop()
121 try:
--> 122 msg = plan_stack[-1].send(ret)
123 except StopIteration as e:
124 # discard the exhausted generator
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in fly_during_wrapper(plan, flyers)
846 plan1 = plan_mutator(plan, insert_after_open)
847 plan2 = plan_mutator(plan1, insert_before_close)
--> 848 return (yield from plan2)
849
850
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
167 continue
168 else:
--> 169 raise ex
170 # if inserting / mutating, put new generator on the stack
171 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
120 ret = result_stack.pop()
121 try:
--> 122 msg = plan_stack[-1].send(ret)
123 except StopIteration as e:
124 # discard the exhausted generator
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
167 continue
168 else:
--> 169 raise ex
170 # if inserting / mutating, put new generator on the stack
171 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
120 ret = result_stack.pop()
121 try:
--> 122 msg = plan_stack[-1].send(ret)
123 except StopIteration as e:
124 # discard the exhausted generator
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in pchain(*args)
265 rets = deque()
266 for p in args:
--> 267 rets.append((yield from p))
268 return tuple(rets)
269
/epics/xf/23id/ipython/profile_collection/startup/csx1/plans/dark_ff.py in ct_dark_all(numim, detectors)
169 # SET TO 1 TO ARM FOR NEXT EVENT so that the FastCCD1 is
170 # already bkg subt
--> 171 yield from bps.mv(fccd.fccd1.capture_bgnd, 1)
172
173 # take darks
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/plan_stubs.py in mv(*args)
243 step, = utils.merge_cycler(cyl)
244 for obj, val in step.items():
--> 245 ret = yield Msg('set', obj, val, group=group)
246 status_objects.append(ret)
247 yield Msg('wait', None, group=group)
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
192 try:
193 # yield out the 'current message' and collect the return
--> 194 inner_ret = yield msg
195 except GeneratorExit:
196 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
192 try:
193 # yield out the 'current message' and collect the return
--> 194 inner_ret = yield msg
195 except GeneratorExit:
196 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
192 try:
193 # yield out the 'current message' and collect the return
--> 194 inner_ret = yield msg
195 except GeneratorExit:
196 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
192 try:
193 # yield out the 'current message' and collect the return
--> 194 inner_ret = yield msg
195 except GeneratorExit:
196 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
192 try:
193 # yield out the 'current message' and collect the return
--> 194 inner_ret = yield msg
195 except GeneratorExit:
196 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in _run(self)
1206 # exceptions (coming in via throw) can be
1207 # raised
-> 1208 new_response = yield from coro(msg)
1209
1210 # special case `CancelledError` and let the outer
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/asyncio/coroutines.py in coro(*args, **kw)
118 @functools.wraps(func)
119 def coro(*args, **kw):
--> 120 res = func(*args, **kw)
121 if (base_futures.isfuture(res) or inspect.isgenerator(res) or
122 isinstance(res, CoroWrapper)):
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in _set(self, msg)
1953 group = kwargs.pop('group', None)
1954 self._movable_objs_touched.add(msg.obj)
-> 1955 ret = msg.obj.set(*msg.args, **kwargs)
1956 p_event = asyncio.Event(loop=self.loop)
1957 pardon_failures = self._pardon_failures
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/ophyd/signal.py in set(self, value, timeout, settle_time)
939 '''
940 if not self._put_complete:
--> 941 return super().set(value, timeout=timeout, settle_time=settle_time)
942
943 # using put completion:
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/ophyd/signal.py in set(self, value, timeout, settle_time)
183
184 if self._set_thread is not None:
--> 185 raise RuntimeError('Another set() call is still in progress')
186
187 st = Status(self)
RuntimeError: Another set() call is still in progress
In [236]: RE.abort()
---------------------------------------------------------------------------
TransitionError Traceback (most recent call last)
~/Beamline/Commissioning/2019_08/defs.py in <module>
----> 1 RE.abort()
/opt/conda_envs/collection-2019-3.0-csx/lib/python3.7/site-packages/bluesky/run_engine.py in abort(self, reason)
1007 """
1008 if self.state.is_idle:
-> 1009 raise TransitionError("RunEngine is already idle.")
1010 print("Aborting: running cleanup and marking "
1011 "exit_status as 'abort'...")
TransitionError: RunEngine is already idle.
In [237]:
xf23id1-ws2 # main "workhorse" collection machine
xf23id1-ws1 # same as ws2, used tangentially for other activities but hot-swap backup for ws2
xf23id1-ws4 # same as ws2, used tangentially for other activities but hot-swap backup for ws2
profile_collection
bsui
remotely (does it touch any hardware?) - use git grep .put
or git grep caput
current_env_tag
in the production
file/opt/conda/.condarc
:
channel_priority: flexible
channels:
- nsls2forge
- defaults
create_default_packages:
- anaconda-client
- pip
envs_dirs:
- ~/conda_envs
- /opt/conda_envs
ssl_verify: false
show_channel_urls: True
$ su - <your-controls-account>
$ sudo su -
# conda activate base # should be activated by default, but just in case.
# conda install conda -c defaults
profile_collection
repository as-found as 2020C2.1
and push to GitHub
$ git tag 2020C2.1 -m "Before 2021C1.0 deployment"
~/.bashrc
, if necessary, update the logging environment variables to use directory /var/log/bluesky/...
and add umask 0002
.
umask u=rwx,g=rwx,o=rx # 0002
export BLUESKY_LOG_FILE=/var/log/bluesky/bluesky.log
export BLUESKY_IPYTHON_LOG_FILE=/var/log/bluesky/bluesky_ipython.log
# sudo mkdir /var/log/bluesky
# sudo chown -Rv xf23id1:csx /var/log/bluesky
# sudo chmod -Rv g+rws /var/log/bluesky
source ~/.bashrc
.PersistentDict
to bug-fixed version (see the updated gist snippet: https://gist.github.com/jklynch/a4366b8900ec0c03883403455ae711b2).$ BS_ENV=collection-2021-1.0 bsui
jedi
in ipython
. Add this to the ipython
command line arguments inbsui
:
--IPCompleter.use_jedi=False
from databroker import catalog
cat = catalog['csx']
cat[-1].primary.read()
2021C1.0
$ git tag 2021C1.0 -m "After 2021C1.0 deployment"
current_env_tag="2021-1.0"
for the CSX beamline (https://github.com/NSLS-II/playbooks/pull/424)bsui
via ansible to use the new environment (http://nsls-ii.github.io/deployment/upgrading-beamlines.html#change-bsui-s-default-environment)We are missing framestore mode. See reference to EPICS code for ADFastCCD.
XF:23ID1-ES{FCCD}cam1:FrameStr
XF:23ID1-ES{FCCD}cam1:FrameStr_RBV
Do we want to add overscan rows? overscan columns are already present. HOwever, overscan columns looks to use the PV for setting, not the RBV PV. @stuwilkins should this be RBV? All of the code written here was done concurrently with the ADFastCDD development and I think this is one that was missed. Or maybe I do not understand something.
XF:23ID1-ES{FCCD}cam1:OverscanCols
XF:23ID1-ES{FCCD}cam1:OverscanCols_RBV
Do we want to add Row instructions from the FastCCD1 plugin that displays live images so we can use this information to automatically shape the image into something the user will want to see when using FrameStore or not using FrameStore?
XF:23ID1-ES{FCCD}FastCCD1:Rows_RBV
XF:23ID1-ES{FCCD}FastCCD1:RowOffset_RBV
We use 5or6 out of 32
profile_collection
bsui
remotely (does it touch any hardware?) - use git grep .put
or git grep caput
BS_ENV=collection-2020-2.0rc7 bsui
.value
-> .get()
if it's in a Device
, or with yield from bps.read()
if in a planhistory.sqlite
issue - see https://blueskyproject.io/bluesky/metadata.html#persistence-between-sessions2020C2.0
See below were someone forced an acquired period that is shorter than the necessary, calculated acquire time (due to mechanics of fast shutter)
will this break the camera if it is repeatedly treated in this way?
Input> db[107816].config_data('fccd')['primary'][0]
Output> {'primary': [{'fccd_cam_acquire_time': 0.05750000000000001,
'fccd_cam_acquire_period': 0.5,
'fccd_cam_image_mode': 1,
'fccd_cam_num_images': 240,
'fccd_cam_sdk_version': 'v1.0.0-RC1-33-gbc490e5',
'fccd_cam_firmware_version': '0x302D',
'fccd_cam_overscan_cols': 0,
'fccd_cam_fcric_gain': 0,
'fccd_cam_fcric_clamp': 0,
'fccd_dg2_A': 0.0,
'fccd_dg2_B': 0.0005,
'fccd_dg2_C': 0.01,
'fccd_dg2_D': 0.1,
'fccd_dg2_E': 0.0,
'fccd_dg2_F': 1e-06,
'fccd_dg2_G': 0.004,
'fccd_dg2_H': 0.005,
'fccd_dg1_A': 0.0,
'fccd_dg1_B': 0.0535,
'fccd_dg1_C': 0.0105,
'fccd_dg1_D': 0.042,
'fccd_dg1_E': 0.0,
'fccd_dg1_F': 0.001,
'fccd_dg1_G': 0.0035,
'fccd_dg1_H': 0.0535}]}
@wen-hu asked about it during the experiment on 10/24/2019. I think the LivePlot
is not having any effect when it's specified via subs = [..., LivePlot(...)]
and then passed to scan_nd
. Only a grid plot from the BestEffortCallback
is displayed. The code is located in the local commissioning folder with the plans for the users' scans.
Frame type is not used. Instead we have, for the dark images, created custom md keys for the start document. Maybe this is not needed if we use FrameType
and the existing md key 'fccd_cam_fcric_gain'
, which is in the descriptors document.
[xf23id1@xf23id-ws3 ~]$ caget -d24 XF:23ID1-ES{FCCD}cam1:FrameType
Options t,d,a are mutually exclusive. ('caget -h' for help.)
XF:23ID1-ES{FCCD}cam1:FrameType
Native data type: DBF_ENUM
Request type: DBR_GR_ENUM
Element count: 1
Value: Normal
Status: NO_ALARM
Severity: NO_ALARM
Enums: ( 4)
[ 0] Normal
[ 1] Background
[ 2] FlatField
[ 3] DblCorrelation
@johnsinsheimer do you have any idea what DblCorrelation
is?
once we've tested well and know we like it.
@tacaswell, @danielballan
Before I make a mess, could you please instruct me on how to do this canonically?
Thank you...
Update xspress3 to use nslsii, upstream change in nslsii is also needed.
In [32]:
print(h.start.motors)
list(tbl)
โ
['epu2_gap']
['time',
'dif_beam_stats1_total',
'dif_beam_stats2_total',
'dif_beam_stats3_total',
'dif_beam_stats4_total',
'dif_beam_stats5_total',
'epu2_gap_readback',
'epu2_gap_setpoint',
'epu2_gap_stop_signal']
REMOVE
['m1a_z_actuate',
'm1a_z_stop_signal',
'm1a_z_done',
'm1a_y_actuate',
'm1a_y_stop_signal',
'm1a_y_done',
'm1a_x_actuate',
'm1a_x_stop_signal',
'm1a_x_done',
'm1a_pit_actuate',
'm1a_pit_stop_signal',
'm1a_pit_done',
'm1a_yaw_actuate',
'm1a_yaw_stop_signal',
'm1a_yaw_done',
'm1a_rol_actuate',
'm1a_rol_stop_signal',
'm1a_rol_done',
'pgm_energy_stop_signal',
'pgm_fly_start_sig',
'pgm_fly_stop_sig',
#'pgm_fly_velocity', #check with @tacaswell, but should be in configuration
#'pgm_fly_scan_status', #check with @tacaswell, but should be in configuration
'epu2_gap_stop_signal',
'epu1_gap_stop_signal',
'epu2_phase_stop_signal',
'epu1_phase_stop_signal',
]
Then discuss with @cmazzoli and investigate:
Many repos under this org either lack LICENSE files, or have LICENSE files in a non-standard format that isn't recognized by Github as a normal BSD 3-clause license.
This issue is to summarily update all repos with the standard Brookhaven LICENSE file.
During today's troubleshooting at CSX (see 756d53b), we noticed that the summed spectral data is not saved to the db, just the last frame is stored, which we access with list(hdr.data('xsp3_settings_ch1'))[0]
. We need to figure out the way to store it as well.
Attn: @tacaswell
the clock frequency is missing so you have to assume that is 50MHz. The ioc does report the clock frequency so that if you decide to normalize by the time_base (channel 1), then you can reconvert back to scalar and then do the math to figure out photon counts.
Can we change motors
to sample
or s-motors
or sample-motors
or something like that?
During deployment, @mrakitin and I noticed that the profile_collection is set up in a very non-standard way, with a confusing symlink structure.
This issue is move the profile_collection to the standard location, so that it is in line with other beamlines.
need to have the set point, the output and enable status.
should this be in the baseline or the descriptors configuration for the beaseline?
seems like enable status and output are results of a "motor", pid set point is used as motor
therefore it seems like enable and output are configuration attributes, and therefore in the descriptors.
Versions of DAMA software:
- Bluesky : v1.6.3
- Ophyd : v1.5.1
- Databroker : v1.0.6
This problem is old and not consistently occurring. removed all .value in January and that did not help. seems to happen when exposure time is short and "network" robustness.
successful run has the setpoint never change (camonitor) but the readback value does change
[xf23id1@xf23id-ws3 ~/Beamline/Commissioning/2020_07]$ camonitor XF:23ID1-ES{FCCD}FastCCD1:CaptureBgnd_RBV
XF:23ID1-ES{FCCD}FastCCD1:CaptureBgnd_RBV 2020-07-31 18:41:04.261963 Off ### was the immedate after Enter
XF:23ID1-ES{FCCD}FastCCD1:CaptureBgnd_RBV 2020-07-31 19:06:06.197300 On ### happened with plan start
XF:23ID1-ES{FCCD}FastCCD1:CaptureBgnd_RBV 2020-07-31 19:06:06.272830 Off
waiting for it to fail again to capture camonitor
In [301]: RE(mv(fccd.exposure, (0.02, .1, 20)))
Out[301]: ()
In [302]: RE(bpp.pchain(ct_dark_all(20),rel_scan([fccd],nanop.by,-.1,0.1,201, md={'purpose':'ZP zoom 1/8 cut'})))
Starting procedure to acquire darks 36.4Hz or 0.028s.
Current number of images = 20.
Setting to 20 images.
A 'deferred pause' has been requested. The RunEngine will pause at the next checkpoint. To pause immediately, hit Ctrl+C again in the next 10 seconds.
Deferred pause acknowledged. Continuing to checkpoint.
^Ctrying a second time
Pausing...
---------------------------------------------------------------------------
RunEngineInterrupted Traceback (most recent call last)
~/Beamline/Commissioning/2020_07/MonoStab.py in <module>
----> 1 RE(bpp.pchain(ct_dark_all(20),rel_scan([fccd],nanop.by,-.1,0.1,201, md={'purpose':'ZP zoom 1/8 cut'})))
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/run_engine.py in __call__(self, *args, **metadata_kw)
796
797 if self._interrupted:
--> 798 raise RunEngineInterrupted(self.pause_msg) from None
799
800 return tuple(self._run_start_uids)
RunEngineInterrupted:
Your RunEngine is entering a paused state. These are your options for changing
the state of the RunEngine:
RE.resume() Resume the plan.
RE.abort() Perform cleanup, then kill plan. Mark exit_stats='aborted'.
RE.stop() Perform cleanup, then kill plan. Mark exit_status='success'.
RE.halt() Emergency Stop: Do not perform cleanup --- just stop.
In [303]: RE.abort()
Aborting: running cleanup and marking exit_status as 'abort'...
Returning to intial conditions (pre-count).
Total images per trigger are NOW: 20
FCCD FCRIC gain value is NOW: auto
Run aborted
Traceback (most recent call last):
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/run_engine.py", line 1353, in _run
msg = self._plan_stack[-1].send(resp)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 1307, in __call__
return (yield from plan)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 1162, in baseline_wrapper
return (yield from plan_mutator(plan, insert_baseline))
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 170, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 123, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 803, in monitor_during_wrapper
return (yield from plan2)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 170, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 123, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 170, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 123, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 861, in fly_during_wrapper
return (yield from plan2)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 170, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 123, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 170, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 123, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 268, in pchain
rets.append((yield from p))
File "/epics/xf/23id/ipython/profile_collection/startup/csx1/plans/dark_ff.py", line 190, in ct_dark_all
yield from bps.mv(fccd.fccd1.capture_bgnd, 1)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/plan_stubs.py", line 258, in mv
yield Msg('wait', None, group=group)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 195, in plan_mutator
inner_ret = yield msg
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 195, in plan_mutator
inner_ret = yield msg
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 195, in plan_mutator
inner_ret = yield msg
[Previous line repeated 2 more times]
bluesky.utils.RequestAbort
Out[303]: ()
In [304]: RE(bpp.pchain(ct_dark_all(20),rel_scan([fccd],nanop.by,-.1,0.1,201, md={'purpose':'ZP zoom 1/8 cut'})))
Starting procedure to acquire darks 36.4Hz or 0.028s.
Current number of images = 20.
Setting to 20 images.
Returning to intial conditions (pre-count).
Total images per trigger are NOW: 20
FCCD FCRIC gain value is NOW: auto
Run aborted
Traceback (most recent call last):
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/run_engine.py", line 1353, in _run
msg = self._plan_stack[-1].send(resp)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 1307, in __call__
return (yield from plan)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 1162, in baseline_wrapper
return (yield from plan_mutator(plan, insert_baseline))
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 170, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 123, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 803, in monitor_during_wrapper
return (yield from plan2)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 170, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 123, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 170, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 123, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 861, in fly_during_wrapper
return (yield from plan2)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 170, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 123, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 170, in plan_mutator
raise ex
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 123, in plan_mutator
msg = plan_stack[-1].send(ret)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 268, in pchain
rets.append((yield from p))
File "/epics/xf/23id/ipython/profile_collection/startup/csx1/plans/dark_ff.py", line 190, in ct_dark_all
yield from bps.mv(fccd.fccd1.capture_bgnd, 1)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/plan_stubs.py", line 256, in mv
ret = yield Msg('set', obj, val, group=group, **kwargs)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 195, in plan_mutator
inner_ret = yield msg
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 195, in plan_mutator
inner_ret = yield msg
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py", line 195, in plan_mutator
inner_ret = yield msg
[Previous line repeated 2 more times]
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/run_engine.py", line 1413, in _run
new_response = await coro(msg)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/run_engine.py", line 1909, in _set
ret = msg.obj.set(*msg.args, **kwargs)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/ophyd/signal.py", line 1670, in set
return super().set(value, timeout=timeout, settle_time=settle_time)
File "/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/ophyd/signal.py", line 301, in set
raise RuntimeError('Another set() call is still in progress '
RuntimeError: Another set() call is still in progress for fccd_fccd1_capture_bgnd
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
~/Beamline/Commissioning/2020_07/MonoStab.py in <module>
----> 1 RE(bpp.pchain(ct_dark_all(20),rel_scan([fccd],nanop.by,-.1,0.1,201, md={'purpose':'ZP zoom 1/8 cut'})))
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/run_engine.py in __call__(self, *args, **metadata_kw)
793 self._task_fut.add_done_callback(set_blocking_event)
794
--> 795 self._resume_task(init_func=_build_task)
796
797 if self._interrupted:
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/run_engine.py in _resume_task(self, init_func)
917 if (exc is not None
918 and not isinstance(exc, _RunEnginePanic)):
--> 919 raise exc
920
921 def install_suspender(self, suspender):
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/run_engine.py in _run(self)
1486 exit_reason = str(err)
1487 self.log.exception("Run aborted")
-> 1488 raise err
1489 finally:
1490 if not exit_reason:
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/run_engine.py in _run(self)
1351 else:
1352 try:
-> 1353 msg = self._plan_stack[-1].send(resp)
1354 # We have exhausted the top generator
1355 except StopIteration:
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in __call__(self, plan)
1305 plan = monitor_during_wrapper(plan, self.monitors)
1306 plan = baseline_wrapper(plan, self.baseline)
-> 1307 return (yield from plan)
1308
1309
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in baseline_wrapper(plan, devices, name)
1160 return (yield from plan)
1161 else:
-> 1162 return (yield from plan_mutator(plan, insert_baseline))
1163
1164
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
168 continue
169 else:
--> 170 raise ex
171 # if inserting / mutating, put new generator on the stack
172 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
121 ret = result_stack.pop()
122 try:
--> 123 msg = plan_stack[-1].send(ret)
124 except StopIteration as e:
125 # discard the exhausted generator
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in monitor_during_wrapper(plan, signals)
801 plan1 = plan_mutator(plan, insert_after_open)
802 plan2 = plan_mutator(plan1, insert_before_close)
--> 803 return (yield from plan2)
804
805
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
168 continue
169 else:
--> 170 raise ex
171 # if inserting / mutating, put new generator on the stack
172 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
121 ret = result_stack.pop()
122 try:
--> 123 msg = plan_stack[-1].send(ret)
124 except StopIteration as e:
125 # discard the exhausted generator
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
168 continue
169 else:
--> 170 raise ex
171 # if inserting / mutating, put new generator on the stack
172 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
121 ret = result_stack.pop()
122 try:
--> 123 msg = plan_stack[-1].send(ret)
124 except StopIteration as e:
125 # discard the exhausted generator
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in fly_during_wrapper(plan, flyers)
859 plan1 = plan_mutator(plan, insert_after_open)
860 plan2 = plan_mutator(plan1, insert_before_close)
--> 861 return (yield from plan2)
862
863
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
168 continue
169 else:
--> 170 raise ex
171 # if inserting / mutating, put new generator on the stack
172 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
121 ret = result_stack.pop()
122 try:
--> 123 msg = plan_stack[-1].send(ret)
124 except StopIteration as e:
125 # discard the exhausted generator
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
168 continue
169 else:
--> 170 raise ex
171 # if inserting / mutating, put new generator on the stack
172 # and replace the current msg with the first element from the
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
121 ret = result_stack.pop()
122 try:
--> 123 msg = plan_stack[-1].send(ret)
124 except StopIteration as e:
125 # discard the exhausted generator
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in pchain(*args)
266 rets = deque()
267 for p in args:
--> 268 rets.append((yield from p))
269 return tuple(rets)
270
/epics/xf/23id/ipython/profile_collection/startup/csx1/plans/dark_ff.py in ct_dark_all(numim, detectors)
188 # SET TO 1 TO ARM FOR NEXT EVENT so that the FastCCD1 is
189 # already bkg subt
--> 190 yield from bps.mv(fccd.fccd1.capture_bgnd, 1)
191
192 # take darks
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/plan_stubs.py in mv(group, *args, **kwargs)
254 (step,) = utils.merge_cycler(cyl)
255 for obj, val in step.items():
--> 256 ret = yield Msg('set', obj, val, group=group, **kwargs)
257 status_objects.append(ret)
258 yield Msg('wait', None, group=group)
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
193 try:
194 # yield out the 'current message' and collect the return
--> 195 inner_ret = yield msg
196 except GeneratorExit:
197 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
193 try:
194 # yield out the 'current message' and collect the return
--> 195 inner_ret = yield msg
196 except GeneratorExit:
197 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
193 try:
194 # yield out the 'current message' and collect the return
--> 195 inner_ret = yield msg
196 except GeneratorExit:
197 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
193 try:
194 # yield out the 'current message' and collect the return
--> 195 inner_ret = yield msg
196 except GeneratorExit:
197 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/preprocessors.py in plan_mutator(plan, msg_proc)
193 try:
194 # yield out the 'current message' and collect the return
--> 195 inner_ret = yield msg
196 except GeneratorExit:
197 # special case GeneratorExit. We must clean up all of our plans
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/run_engine.py in _run(self)
1411 # exceptions (coming in via throw) can be
1412 # raised
-> 1413 new_response = await coro(msg)
1414
1415 # special case `CancelledError` and let the outer
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/bluesky/run_engine.py in _set(self, msg)
1907 group = kwargs.pop('group', None)
1908 self._movable_objs_touched.add(msg.obj)
-> 1909 ret = msg.obj.set(*msg.args, **kwargs)
1910 p_event = asyncio.Event(loop=self.loop)
1911 pardon_failures = self._pardon_failures
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/ophyd/signal.py in set(self, value, timeout, settle_time)
1668 '''
1669 if not self._put_complete:
-> 1670 return super().set(value, timeout=timeout, settle_time=settle_time)
1671
1672 # using put completion:
/opt/conda_envs/collection-2020-2.0rc4/lib/python3.7/site-packages/ophyd/signal.py in set(self, value, timeout, settle_time)
299
300 if self._set_thread is not None:
--> 301 raise RuntimeError('Another set() call is still in progress '
302 f'for {self.name}')
303
RuntimeError: Another set() call is still in progress for fccd_fccd1_capture_bgnd
n [305]:
In [305]: fccd.fccd1.capture_bgnd
Out[305]: EpicsSignalWithRBV(read_pv='XF:23ID1-ES{FCCD}FastCCD1:CaptureBgnd_RBV', name='fccd_fccd1_capture_bgnd', parent='fccd_fccd1', value=0, timestamp=1596235264.261963, auto_monitor=False, string=False, write_pv='XF:23ID1-ES{FCCD}FastCCD1:CaptureBgnd', limits=False, put_complete=False)
it is already there for tardis, and tardis actually has corrected energy on top of that. this could be messy because it depends on enforcement. if this is chosen, we need to make a function for people to use when the change the tardis.calc energy. @cmazzoli probably worth a discussion
@johnsinsheimer does the new IOC that you are working on for IOS flyscanning have a PV to be used as a constant offset for exact energy calbration (so the readback + offset). Typically, changing the gratings can create 1 -3 eV shift that does not change the resolution.
related to #57
@danielballan can you add any others here
inout
(type to string)slt3_x_user_setpoint
(type to float)I thought we had done this with already since the PID device contains enable. Was it an oversight on my part 2 years ago when I first made these functions are did some one remove it for a good reason? I made these functions when the profiles was in nsls-ii 's repo so I do not know how to trace back the history to that point in time. Is it worth a discussion to understand if this is enable / disable PID should be in the count dark functions or should we use the permits associated with the PID control loop? @cmazzoli @wen-hu @stuwilkins
For now, I just had the users add 10s or so of sleep so that the beam is back on the pinhole before the start data collection.
attn @cmazzoli just a heads up.
See example code at 2ID.
With this change, you can change offset with
mv(epu1.offest, -5, epu1.table, 2)
Then you can get away from using caput and get to change these things in plans, which will make the plans print_summary
friendly.
https://github.com/NSLS-II-SIX/profile_collection/blob/master/startup/04-epu.py
Also see:
NSLS-II-SIX/profile_collection#8
It seems redundant to make a new class PositionerXY()
since SlitsXY()
already does the same thing. Is it worth making this the same device for slit 3 (pinholes mounted on a plate with specific x,y coordinates) and the fast shutter (X Y positions to define placement in the beam)? Or better to keep things redanant but separate.
Need more descriptive information in metadata to understand settings for beam line energy configuration. different grating settings focus in different places. Add the grating 1 - 10? for the calibration table.
While making changes to configuration attributes:
#30
what we do have:
fccd_mcs_input_mode: [3]
fccd_mcs_output_mode: [0]
fccd_mcs_output_polarity: [0]
fccd_mcs_channel_advance: [1]
fccd_mcs_count_on_start: [0]
fccd_mcs_max_channels: [100000]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.