|
38 | 38 | __author__ = "Jerome Kieffer"
|
39 | 39 | __copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
|
40 | 40 | __licence__ = "MIT"
|
41 |
| -__date__ = "15/03/2024" |
| 41 | +__date__ = "09/10/2024" |
42 | 42 | __status__ = "production"
|
43 | 43 |
|
44 | 44 | FOOTER = """To import your files as a project:
|
@@ -275,7 +275,22 @@ def common_headers(self):
|
275 | 275 | headers["dexposuretimeinsec"] = 1 # meaningfull value.
|
276 | 276 |
|
277 | 277 | elif isinstance(source, eigerimage.EigerImage):
|
278 |
| - raise NotImplementedError("Please implement Eiger detector data format parsing or at least open an issue") |
| 278 | + entry_name = source.h5.attrs.get("default") |
| 279 | + if entry_name is None: |
| 280 | + entry_name = "entry" |
| 281 | + entry = source.h5.get(entry_name) |
| 282 | + try: |
| 283 | + nxdetector = entry["instrument/detector"] |
| 284 | + except: |
| 285 | + logger.error("No detector definition in Eiger file, is this a master file ?") |
| 286 | + else: |
| 287 | + headers["drealpixelsizex"] = nxdetector["x_pixel_size"][()] * 1e3 |
| 288 | + headers["drealpixelsizey"] = nxdetector["y_pixel_size"][()] * 1e3 |
| 289 | + headers["dxorigininpix"] = nxdetector["beam_center_x"][()] |
| 290 | + headers["dyorigininpix"] = nxdetector["beam_center_y"][()] |
| 291 | + headers["ddistanceinmm"] = nxdetector["detector_distance"][()] * 1e3 |
| 292 | + headers["dexposuretimeinsec"] = nxdetector["count_time"][()] |
| 293 | + wavelength = entry["instrument/beam/incident_wavelength"][()] |
279 | 294 | else:
|
280 | 295 | raise NotImplementedError("Unsupported format: %s" % source.__class__.__name__)
|
281 | 296 | if self.mask is None:
|
@@ -324,7 +339,7 @@ def common_headers(self):
|
324 | 339 | value = numexpr.NumExpr(self.options.omega)
|
325 | 340 | self.scan_type = "omega"
|
326 | 341 | headers["dom_s"] = headers["dom_e"] = value
|
327 |
| - |
| 342 | + |
328 | 343 | return headers
|
329 | 344 |
|
330 | 345 | def convert_one(self, input_filename, start_at=0):
|
@@ -453,13 +468,14 @@ def treat_mask(self, full=False):
|
453 | 468 | dend = self.headers["dph_s"](self.processed_frames)
|
454 | 469 | dphi = 0.0
|
455 | 470 | domega = self.headers["dom_s"]
|
456 |
| - else: #Omega-scan |
| 471 | + elif self.scan_type=="omega": |
457 | 472 | iscantype = xcaliburimage.SCAN_TYPE.Omega.value
|
458 | 473 | dstart = self.headers["dom_s"](0)
|
459 | 474 | dend = self.headers["dom_s"](self.processed_frames)
|
460 | 475 | dphi = self.headers["dph_s"]
|
461 | 476 | domega = 0.0
|
462 |
| - |
| 477 | + else: |
| 478 | + raise RuntimeError("This program only supports Omega and Phi scans, please provide the scan type in the command-line. See the output of the `--help` options.") |
463 | 479 | oscil = (dend-dstart)/self.processed_frames
|
464 | 480 | sweep = xcaliburimage.Sweep(0,
|
465 | 481 | iscantype,
|
|
0 commit comments