Open prjemian opened 6 years ago
related to #48
my_series(start, stop, step, acquire_time=0.02)
:
user_tomo_scan
at series of tomo_stage.y
positionsuser_tomo_scan(*, acquire_time=0.02, iterations=1, delay_time_s=1.0, samOutDist=-3, md=None)
:
tomo_scan
:tomo_scan(*, start=0, stop=180, numProjPerSweep=1500, slewSpeed=5, accl=1, samInPos=0, samOutDist=-3, acquire_time=0.02, md=None)
:
cleanup
:
repeat
prepare
measure darks
measure flats
prepare for tomo
taxi
fly
collect
clean up
repeat
prepare
measure darks
measure flats
prepare for tomo
repeat
rotate
trigger
collect
clean up
Consensus of the NSLS-II DAMA team is for bluesky plans to be functions rather than class methods. For tomography scans, it seems more natural in Python to create a strong base class with subclasses for step and taxi/fly, then subclasses for each instrument.
@decarlof : Are you comfortable with the intention to create a generalized TomographyScanBase(object)
base class with subclasses for step and taxi/fly, then subclasses for each instrument. The class will have placeholders for the rotation axis, detector, shutter, displacement axis (for white frames), ... and a bluesky plan comparable to tomo_scan()
above. The user_tomo_scan()
(common settings picked out by the instrument team) would be defined in the instrument subclass.
import APS_BlueSky_tools.plans as APS_plans
class TomographyScanBase(object)
def tomo_scan(self, ...)
class TomographyStepScan(TomographyScanBase)
def tomo_scan(self, ...)
class TomographyTaxiFlyScan(TomographyScanBase)
def tomo_scan(self, ...)
# at 2-BM-B
class TomographyTaxiFlyScan2BMB(APS_plans.TomographyTaxiFlyScan)
def tomo_scan(self, ...)
First draft in another repo: https://github.com/BCDA-APS/APS_BlueSky_tools/blob/master/examples/tomo_issue49.ipynb
Incorporate #46 (add delay between each dark and flat).
Incorporate #48 (detector-specific info should be part of detector object)
These working plans have protocols that are general but also have protocols that are very specific to the instrumentation in 2-BM-B. Generalize for use in other stations and beam lines (32-ID-C comes to mind). Ultimately,
tomo_scan()
might become part of a standard library (perhapsAPS_BlueSky_tools
) for general use.