37
37
__author__ = "Jerome Kieffer"
38
38
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
39
39
__licence__ = "MIT"
40
- __date__ = "03/12/2021 "
40
+ __date__ = "07/10/2024 "
41
41
__status__ = "production"
42
42
43
43
import logging
@@ -259,7 +259,7 @@ def convert_one(input_filename, options, start_at=0):
259
259
if options .pilatus :
260
260
shape = select_pilatus_detecor (shape )
261
261
262
- pilatus_headers = cbfimage .PilatusHeader ("Silicon sensor, thickness 0.001 m" )
262
+ pilatus_headers = cbfimage .PilatusHeader ()
263
263
if isinstance (source , limaimage .LimaImage ):
264
264
# Populate the Pilatus header from the Lima
265
265
entry_name = source .h5 .attrs .get ("default" )
@@ -290,7 +290,27 @@ def convert_one(input_filename, options, start_at=0):
290
290
except Exception as e :
291
291
logger .warning ("Error in searching for exposure time (%s): %s" , type (e ), e )
292
292
elif isinstance (source , eigerimage .EigerImage ):
293
- raise NotImplementedError ("Please implement Eiger detector data format parsing or at least open an issue" )
293
+ entry_name = source .h5 .attrs .get ("default" )
294
+ if entry_name :
295
+ entry = source .h5 .get (entry_name )
296
+ try :
297
+ nxdetector = entry ["instrument/detector" ]
298
+ except :
299
+ logger .error ("No detector definition in Eiger file, is this a master file ?" )
300
+ else :
301
+ detector = "%s, S/N %s" % (nxdetector ["description" ][()].decode (),
302
+ nxdetector ["detector_number" ][()].decode ())
303
+ pilatus_headers ["Detector" ] = detector
304
+ pilatus_headers ["Pixel_size" ] = (nxdetector ["x_pixel_size" ][()],
305
+ nxdetector ["y_pixel_size" ][()])
306
+ pilatus_headers ["Exposure_time" ] = nxdetector ["count_time" ][()]
307
+ pilatus_headers ["Exposure_period" ] = nxdetector ["frame_time" ][()]
308
+ pilatus_headers ["Wavelength" ] = entry ["instrument/beam/incident_wavelength" ][()]
309
+ pilatus_headers ["Detector_distance" ] = nxdetector ["detector_distance" ][()]
310
+ pilatus_headers ["Beam_xy" ] = (nxdetector ["beam_center_x" ][()],
311
+ nxdetector ["beam_center_y" ][()])
312
+ pilatus_headers ["sensor" ] = (nxdetector ["sensor_material" ][()].decode (),
313
+ nxdetector ["sensor_thickness" ][()])
294
314
else :
295
315
raise NotImplementedError ("Unsupported format: %s" % source .__class__ .__name__ )
296
316
@@ -307,6 +327,8 @@ def convert_one(input_filename, options, start_at=0):
307
327
pilatus_headers ["Alpha" ] = options .alpha
308
328
if options .kappa :
309
329
pilatus_headers ["Kappa" ] = options .kappa
330
+ if "sensor" not in pilatus_headers :
331
+ pilatus_headers ["sensor" ] = ("Silicon" , 0.001 )
310
332
formula = None
311
333
destination = None
312
334
if options .chi is not None :
0 commit comments