Conda packages for csx analysis from 2019-1.2 works okay on this and other functions.
databroker 0.12.0
csxtools 0.13.0
Using conda packages for csx analysis from 2019-3.0.
databroker 0.13.0
csxtools 0.14.0
Will show flatfield function and then standard images functions (without flatfield). Note that flatfield uses get_fastccd_images()
so this is likely the problem. This is different from what @leofang described #68
Flatfield calcuation
#0.3s acq - same stats as above
bgnd1 = db[117332+3]
bgnd2 = db[117332+2]
bgnd8 = db[117332+1]
flat = db[117332]
ff = get_fastccd_flatfield(flat, (bgnd8, bgnd2, bgnd1))
KeyError Traceback (most recent call last)
<ipython-input-17-162df5f3ae04> in <module>
14 #ff = get_fastccd_flatfield(flat, (bgnd8, None, None))#, limits=(0.8, 1.2))
15
---> 16 ff = get_fastccd_flatfield(flat, (bgnd8, bgnd2, bgnd1))
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/csxtools/utils.py in get_fastccd_flatfield(light, dark, flat, limits)
291 Flatfield correction
292 """
--> 293 images = get_images_to_3D(get_fastccd_images(light, dark, flat))
294 images = stackmean(images)
295 flat = calculate_flatfield(images, limits)
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/csxtools/utils.py in get_fastccd_images(light_header, dark_headers, flat, gain, tag, roi)
92
93 tt = ttime.time()
---> 94 b = get_images_to_3D(bgnd_events, dtype=np.uint16)
95 logger.info("Image conversion took %.3f seconds",
96 ttime.time() - tt)
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/csxtools/utils.py in get_images_to_3D(images, dtype)
173
174 """
--> 175 im = np.vstack([np.asarray(im, dtype=dtype) for im in images])
176 return im
177
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/csxtools/utils.py in <listcomp>(.0)
173
174 """
--> 175 im = np.vstack([np.asarray(im, dtype=dtype) for im in images])
176 return im
177
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/_core.py in data(self, field, stream_name, fill)
490 for event in self.events(stream_name=stream_name,
491 fields=[field],
--> 492 fill=fill):
493 yield event['data'][field]
494
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/_core.py in events(self, stream_name, fields, fill)
380 ev_gen = self.db.get_events([self], stream_name=stream_name,
381 fields=fields, fill=fill)
--> 382 for ev in ev_gen:
383 yield ev
384
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/_core.py in get_events(self, headers, stream_name, fields, fill, handler_registry)
1512 stream_name=stream_name,
1513 fill=fill,
-> 1514 handler_registry=handler_registry):
1515 if name == 'event':
1516 yield doc
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/_core.py in get_documents(self, headers, stream_name, fields, fill, handler_registry)
1606 datum)
1607
-> 1608 doc = proc_gen.send(doc)
1609
1610 yield name, self.prepare_hook(name, doc)
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/_core.py in _fill_events_coro(self, descriptors, fields, inplace)
2056 d_id = data[dk]
2057 data[dk] = (registry_map[(desc_id, dk)]
-> 2058 .retrieve(d_id))
2059 filled[dk] = d_id
2060
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/assets/base_registry.py in retrieve(self, datum_id)
176 return self._api.retrieve(self._datum_col, datum_id,
177 self._datum_cache, self.get_spec_handler,
--> 178 logger)
179
180 def get_datum(self, datum_id):
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/assets/core.py in retrieve(col, datum_id, datum_cache, get_spec_handler, logger)
63 def retrieve(col, datum_id, datum_cache, get_spec_handler, logger):
64 datum = _get_datum_from_datum_id(col, datum_id, datum_cache, logger)
---> 65 handler = get_spec_handler(datum['resource'])
66 return handler(**datum['datum_kwargs'])
67
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/assets/base_registry.py in get_spec_handler(self, resource)
245
246 spec = resource['spec']
--> 247 handler = self.handler_reg[spec]
248
249 key = (str(resource['uid']), handler.__name__)
~/conda_envs/csx-dev-analysis/lib/python3.7/collections/__init__.py in __getitem__(self, key)
912 except KeyError:
913 pass
--> 914 return self.__missing__(key) # support subclasses that define __missing__
915
916 def get(self, key, default=None):
~/conda_envs/csx-dev-analysis/lib/python3.7/collections/__init__.py in __missing__(self, key)
904
905 def __missing__(self, key):
--> 906 raise KeyError(key)
907
908 def __getitem__(self, key):
KeyError: 'AD_HDF5'
getting images
#%%capture
images = get_fastccd_images(h, (bgnd8[0], bgnd2, bgnd1), flat=None)
stack = get_images_to_4D(images)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-11-19cab0555ecf> in <module>
1 #%%capture
----> 2 images = get_fastccd_images(h, (bgnd8[0], bgnd2, bgnd1), flat=None)
3 #stack = get_images_to_4D(images)
4
5 #### JUST ONE IMAGE PER POINT - this may work instead #
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/csxtools/utils.py in get_fastccd_images(light_header, dark_headers, flat, gain, tag, roi)
92
93 tt = ttime.time()
---> 94 b = get_images_to_3D(bgnd_events, dtype=np.uint16)
95 logger.info("Image conversion took %.3f seconds",
96 ttime.time() - tt)
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/csxtools/utils.py in get_images_to_3D(images, dtype)
173
174 """
--> 175 im = np.vstack([np.asarray(im, dtype=dtype) for im in images])
176 return im
177
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/csxtools/utils.py in <listcomp>(.0)
173
174 """
--> 175 im = np.vstack([np.asarray(im, dtype=dtype) for im in images])
176 return im
177
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/_core.py in data(self, field, stream_name, fill)
490 for event in self.events(stream_name=stream_name,
491 fields=[field],
--> 492 fill=fill):
493 yield event['data'][field]
494
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/_core.py in events(self, stream_name, fields, fill)
380 ev_gen = self.db.get_events([self], stream_name=stream_name,
381 fields=fields, fill=fill)
--> 382 for ev in ev_gen:
383 yield ev
384
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/_core.py in get_events(self, headers, stream_name, fields, fill, handler_registry)
1512 stream_name=stream_name,
1513 fill=fill,
-> 1514 handler_registry=handler_registry):
1515 if name == 'event':
1516 yield doc
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/_core.py in get_documents(self, headers, stream_name, fields, fill, handler_registry)
1606 datum)
1607
-> 1608 doc = proc_gen.send(doc)
1609
1610 yield name, self.prepare_hook(name, doc)
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/_core.py in _fill_events_coro(self, descriptors, fields, inplace)
2056 d_id = data[dk]
2057 data[dk] = (registry_map[(desc_id, dk)]
-> 2058 .retrieve(d_id))
2059 filled[dk] = d_id
2060
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/assets/base_registry.py in retrieve(self, datum_id)
176 return self._api.retrieve(self._datum_col, datum_id,
177 self._datum_cache, self.get_spec_handler,
--> 178 logger)
179
180 def get_datum(self, datum_id):
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/assets/core.py in retrieve(col, datum_id, datum_cache, get_spec_handler, logger)
63 def retrieve(col, datum_id, datum_cache, get_spec_handler, logger):
64 datum = _get_datum_from_datum_id(col, datum_id, datum_cache, logger)
---> 65 handler = get_spec_handler(datum['resource'])
66 return handler(**datum['datum_kwargs'])
67
~/conda_envs/csx-dev-analysis/lib/python3.7/site-packages/databroker/assets/base_registry.py in get_spec_handler(self, resource)
245
246 spec = resource['spec']
--> 247 handler = self.handler_reg[spec]
248
249 key = (str(resource['uid']), handler.__name__)
~/conda_envs/csx-dev-analysis/lib/python3.7/collections/__init__.py in __getitem__(self, key)
912 except KeyError:
913 pass
--> 914 return self.__missing__(key) # support subclasses that define __missing__
915
916 def get(self, key, default=None):
~/conda_envs/csx-dev-analysis/lib/python3.7/collections/__init__.py in __missing__(self, key)
904
905 def __missing__(self, key):
--> 906 raise KeyError(key)
907
908 def __getitem__(self, key):
KeyError: 'AD_HDF5'