Exemple #1
0
 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)
Exemple #2
0
 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
Exemple #3
0
 def setUp(self):
     self.acquired = False
     self.item = None
     self.acquisition = Acquisition('foo',
                                    self.produce,
                                    consumers=[self.consume],
                                    acquire=self.acquire)
Exemple #4
0
 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)
Exemple #5
0
 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)
Exemple #6
0
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)
Exemple #8
0
 def setUp(self):
     self.acquired = False
     self.item = None
     self.acquisition = Acquisition('foo', self.produce, consumers=[self.consume],
                                    acquire=self.acquire)
Exemple #9
0
 def __init__(self, walker):
     acq = Acquisition("test", self._run_test_acq)
     super(ExperimentException, self).__init__([acq], walker)