def __init__(self, num_darks, num_flats, num_radios, shape=(1024, 1024), walker=None, random=False, dtype=np.ushort, separate_scans=True, name_fmt='scan_{:>04}'): self.num_darks = num_darks self.num_flats = num_flats self.num_radios = num_radios self.shape = shape if random not in ['off', 'single', 'multi']: raise ValueError("random must be one of 'off', 'single', 'multi'") self.random = random self.dtype = dtype darks = Acquisition('darks', self.take_darks) flats = Acquisition('flats', self.take_flats) radios = Acquisition('radios', self.take_radios) super(ImagingExperiment, self).__init__([darks, flats, radios], walker=walker)
def setUp(self): super(TestExperimentBase, self).setUp() self.acquired = 0 self.root = '' self.walker = DummyWalker(root=self.root) self.name_fmt = 'scan_{:>04}' self.visited = 0 self.foo = Acquisition("foo", self.produce, consumers=[self.consume], acquire=self.acquire) self.bar = Acquisition("bar", self.produce, acquire=self.acquire) self.acquisitions = [self.foo, self.bar] self.num_produce = 2 self.item = None
def setUp(self): self.acquired = False self.item = None self.acquisition = Acquisition('foo', self.produce, consumers=[self.consume], acquire=self.acquire)
def __init__(self, directory, num_darks, num_flats, num_radios, darks_pattern='darks', flats_pattern='flats', radios_pattern='projections', roi_x0=None, roi_width=None, roi_y0=None, roi_height=None, walker=None, separate_scans=True, name_fmt='scan_{:>04}'): self.directory = directory self.num_darks = num_darks self.num_flats = num_flats self.num_radios = num_radios self.darks_pattern = darks_pattern self.flats_pattern = flats_pattern self.radios_pattern = radios_pattern self.roi_x0 = roi_x0 self.roi_width = roi_width self.roi_y0 = roi_y0 self.roi_height = roi_height darks = Acquisition('darks', self.take_darks) flats = Acquisition('flats', self.take_flats) radios = Acquisition('radios', self.take_radios) super(ImagingFileExperiment, self).__init__([darks, flats, radios], walker=walker)
def __init__(self, walker, flat_motor, radio_position, flat_position, camera, num_flats, num_darks, num_projections, separate_scans=True): """ :param walker: Walker for storing experiment data. :type walker: concert.storage.Walker :param flat_motor: LinearMotor for moving sample in and out of the beam. :type flat_motor: concert.devices.motors.base.LinearMotor :param radio_position: Position of *flat_motor* that the sample is positioned in the beam. :type radio_position: q.mm :param flat_position: Position of *flat_motor* that the sample is positioned out of the beam. :type flat_position: q.mm :param camera: Camera to acquire the images. :type camera: concert.devices.cameras.base.Camera :param num_flats: Number of images for flatfield correction. :type num_flats: int :param num_darks: Number of images for dark correction. :type num_darks: int :param num_projections: Number of projections. :type num_projections: int """ self._num_flats = num_flats self._num_darks = num_darks self._num_projections = num_projections self._radio_position = radio_position self._flat_position = flat_position self._finished = None self._flat_motor = flat_motor self._camera = camera darks_acq = Acquisition("darks", self._take_darks) flats_acq = Acquisition("flats", self._take_flats) radios_acq = Acquisition("radios", self._take_radios) super().__init__([darks_acq, flats_acq, radios_acq], walker, separate_scans=separate_scans)
class TestAcquisition(TestCase): def setUp(self): self.acquired = False self.item = None self.acquisition = Acquisition('foo', self.produce, consumers=[self.consume], acquire=self.acquire) def test_connect(self): self.acquisition.connect() self.assertEqual(1, self.item) def test_run(self): self.acquisition() self.assertTrue(self.acquired) self.assertEqual(1, self.item) def test_split_run(self): """First acquire data, then process.""" self.acquisition.acquire() self.assertTrue(self.acquired) self.assertEqual(self.item, None) self.acquisition.connect() self.assertEqual(1, self.item) def acquire(self): self.acquired = True def produce(self): yield 1 @coroutine def consume(self): while True: self.item = yield
def live_on_stream2disk_prepare(self): self.fname, fext = self.QFD.getSaveFileName(self, 'Select directory', self.last_dir, "Image Files (*.tif)") self.lv_dirwalker = DirectoryWalker(root=os.path.dirname(self.fname), dsetname="frames_{:>02}.tif", bytes_per_file=2**37) self.lv_acquisitions = [Acquisition("Radios", self.acq_lv_stream2disk)] self.lv_experiment = Experiment(acquisitions=self.lv_acquisitions, walker=self.lv_dirwalker, separate_scans=True, name_fmt="live_view_seq_{:>03}") self.cons_writer = ImageWriter(self.lv_acquisitions, self.lv_dirwalker, async=True) self.cons_viewer = Consumer(self.lv_acquisitions, self.viewer)
def __init__(self, walker): acq = Acquisition("test", self._run_test_acq) super(ExperimentException, self).__init__([acq], walker)