Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

auto_gain plan cannot handle baseline stream #359

Open
canismarko opened this issue Jan 29, 2025 · 1 comment
Open

auto_gain plan cannot handle baseline stream #359

canismarko opened this issue Jan 29, 2025 · 1 comment
Assignees
Labels
bug Something isn't working

Comments

@canismarko
Copy link
Contributor

Describe the bug

If the autogain plan has the baseline decorator applied, then the recommender engine fails when it receives events for the baseline stream.

To Reproduce
Steps to reproduce the behavior:

  1. Create an auto_gain plan.
  2. Wrap it in baseline_wrapper
  3. Execute the plan on a run engine.
  4. See error

Expected behavior

Autogain recommender should ignore the baseline readings.

Exception

Traceback (most recent call last):
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky_queueserver/manager/worker.py", line 303, in _execute_plan
    result = func()
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky_queueserver/manager/worker.py", line 496, in start_plan_func
    return self._RE(g, **plan_meta)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/run_engine.py", line 973, in __call__
    plan_return = self._resume_task(init_func=_build_task)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/run_engine.py", line 1120, in _resume_task
    raise exc
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/run_engine.py", line 1755, in _run
    raise err
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/run_engine.py", line 1609, in _run
    msg = self._plan_stack[-1].send(resp)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/haven/preprocessors/inject_metadata.py", line 110, in inject_haven_md_wrapper
    return (yield from msg_mutator(plan, _inject_md))
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/preprocessors.py", line 271, in msg_mutator
    msg = plan.send(_s)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/preprocessors.py", line 413, in subs_wrapper
    return (yield from finalize_wrapper(_inner_plan(), _unsubscribe()))
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/preprocessors.py", line 536, in finalize_wrapper
    ret = yield from plan
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/preprocessors.py", line 411, in _inner_plan
    return (yield from plan)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/utils/__init__.py", line 1258, in dec_inner
    return (yield from plan)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/haven/preprocessors/open_shutters.py", line 70, in open_shutters_wrapper
    return_val = yield from new_plan
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/preprocessors.py", line 536, in finalize_wrapper
    ret = yield from plan
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/haven/preprocessors/open_shutters.py", line 91, in open_fast_shutters_wrapper
    response = yield msg
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/preprocessors.py", line 259, in msg_mutator
    _s = yield msg
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/run_engine.py", line 1676, in _run
    new_response = await coro(msg)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/run_engine.py", line 2076, in _save
    await current_run.save(msg)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/bundlers.py", line 570, in save
    await self.emit(DocumentNames.event, event_doc)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/run_engine.py", line 2679, in emit
    self.emit_sync(name, doc)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/run_engine.py", line 2676, in emit_sync
    self.dispatcher.process(name, doc)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/run_engine.py", line 2699, in process
    exceptions = self.cb_registry.process(name, name.name, doc)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/utils/__init__.py", line 422, in process
    func(*args, **kwargs)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky/utils/__init__.py", line 512, in __call__
    return mtd(*args, **kwargs)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/event_model/__init__.py", line 191, in __call__
    return self._dispatch(name, doc, validate)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/event_model/__init__.py", line 208, in _dispatch
    output_event_page = self.event_page(event_page)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/event_model/__init__.py", line 1644, in event_page
    callback("event_page", doc)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky_adaptive/per_event.py", line 77, in callback
    independent, measurement = extract_event_page(independent_keys, dependent_keys, payload=doc["data"])
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky_adaptive/utils.py", line 96, in extract_event_page
    return tuple(np.atleast_2d(np.asarray([payload[k] for k in key_list])).T for key_list in key_lists)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky_adaptive/utils.py", line 96, in <genexpr>
    return tuple(np.atleast_2d(np.asarray([payload[k] for k in key_list])).T for key_list in key_lists)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven/lib/python3.10/site-packages/bluesky_adaptive/utils.py", line 96, in <listcomp>
    return tuple(np.atleast_2d(np.asarray([payload[k] for k in key_list])).T for key_list in key_lists)
KeyError: 'Ipreslit-preamp-gain_level'

Additional context
Add any other context about the problem here.

@canismarko canismarko self-assigned this Jan 29, 2025
@canismarko canismarko added the bug Something isn't working label Jan 29, 2025
@canismarko
Copy link
Contributor Author

Added workaround in #360 by removing the baseline decorator from the auto_gain plan. In the future, we should figure out how to make these compatible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant