Comments (4)
This requires possible breaking upstream changes to @stuwilkin ad code to pull the dark frame logic out of ophyd subscriptions and into explicit methods on the ad objects.
from bluesky.
Current proposal for a more flexible area detector, as hashed out in scattered, separate conversations with @tacaswell, @ericdill, @stuwilkins.
Remove dark frame logic from base class. The basic AreaDetectorFileStore
or whatever doesn't need to know anything about dark frames. Its trigger
method simply takes a frame. It does not manipulate a shutter. This aims to cater to users who (1) have no need for dark frames or (2) prefer to think of the shutter separately, not wanting their objects to get too smart. :- )
A dark-frame-aware subclass would inherit from this. It would hold a reference to a Shutter
(which joins Readable
and Movable
as a defined interface in bluesky) -- an ophyd obj with open
and close
methods proposed elsewhere by @tacaswell.
As now, it would have a trigger
method that always takes a light frame and sometimes takes a fresh dark frame. Here's the difference: an attribute (say, darkframe_is_stale
) would control whether the next trigger
takes a new darkframe. This is more flexible than darkframe_interval
. As now, the read
method would always returns a new light frame and most recent dark frame. In summary, it still has brains, but the procedure for how to intersperse dark frames is not baked in.
A further subclass could implement darkframe_interval
that touches darkframe_is_stale
.
If all the darkframe logic is implemented as a mixin class, it can be kept separate from hardware details. That is, you can have Eiger
and EigerDarkFrame
and EigerDarkFrameThatKnowsAboutIntervals
without repeated code.
from bluesky.
from bluesky.
attn bluesky/ophyd#165
from bluesky.
Related Issues (20)
- Extend OSX test matrix HOT 3
- Add progress for running custom plans
- Refactor StreamHandlers
- PersistentDict: Failure to recover RE.md from files on startup HOT 9
- CallbackRegistry.connect(): TODO item once Python2 support is dropped.
- Make a documentation 'how-to' run engine metadata configuration persistent
- Fix periodic CI
- let md_validator work on Chain_Map objects like RunEngineRedisDict HOT 1
- Add bps.locate plan stub
- Deprecate LiveImage HOT 3
- Add mode on the RE that pauses on error HOT 9
- Return completed futures from `bps.wait_for`
- Repo chores: old issues and PRs HOT 2
- Include return statments in generator docstrings HOT 1
- Expose `_vendor.super_state_machine.extras/errors` publicly HOT 2
- Allow empty describe collect dictionaries HOT 2
- ENH: Generic device configuration wrapper
- How to Configure Bluesky Plans to Emit Only Event Documents Without Start and Stop Documents? HOT 2
- Implement this suggestion and remove xfail lines
- unhelpful ValueError associated with positioner movement HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bluesky.