From 85e752cac99ac93b6b72da390439975625686d3d Mon Sep 17 00:00:00 2001
From: Egor Sobolev <egor.sobolev@xfel.eu>
Date: Tue, 23 Jul 2024 20:42:34 +0200
Subject: [PATCH] Write detector resolution in crystfel geometry file, fix type
 issue for binary mask bitwise operations

---
 src/geomtools/__init__.py              | 5 +++--
 src/geomtools/detector/crystfel_frm.py | 5 +++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/geomtools/__init__.py b/src/geomtools/__init__.py
index 3f182b0..7dbf429 100644
--- a/src/geomtools/__init__.py
+++ b/src/geomtools/__init__.py
@@ -1,6 +1,7 @@
 from .detector import (  # noqa E401
-    assemble_data, get_pixel_positions, pixels_to_image, plot_data_on_detector,
-    plot_detector_layout, read_crystfel_geom, write_crystfel_geom)
+    assemble_data, get_detector_shape, get_pixel_positions, pixels_to_image,
+    plot_data_on_detector, plot_detector_layout, read_crystfel_geom,
+    write_crystfel_geom)
 from .sfx import (  # noqa E401
     avg_pixel_displacement, badpixels_mask, cell_volume, ellipse, extract_cell,
     extract_geometry, gauss2d_fit, get_min_bragg_dist, get_peak_position,
diff --git a/src/geomtools/detector/crystfel_frm.py b/src/geomtools/detector/crystfel_frm.py
index 0319151..008ea5f 100644
--- a/src/geomtools/detector/crystfel_frm.py
+++ b/src/geomtools/detector/crystfel_frm.py
@@ -6,7 +6,6 @@ from natsort import natsorted
 
 from .geom import get_detector_shape
 
-
 HEADER_TEMPLATE = """\
 ; {detector} geometry file written by geomtools
 ; You may need to edit this file to add:
@@ -45,6 +44,7 @@ def write_crystfel_geom(file, panels, beam, rigid_groups, mask=None):
     """Writes geometry in CrystFEL format in file."""
     # header
     clen = panels.clen[0]
+    res = panels.res[0]
     paths = {}
     paths['data'] = (
         panels.data[0] if panels.data[0]
@@ -65,7 +65,7 @@ def write_crystfel_geom(file, panels, beam, rigid_groups, mask=None):
 
     path_str = '\n'.join('{} = {} ;'.format(i, j) for i, j in paths.items())
     header = HEADER_TEMPLATE.format(
-        detector="AGIPD1M", resolution=1/200e-6, frame_dim=0,
+        detector="AGIPD1M", resolution=res, frame_dim=0,
         clen=clen, photon_energy=beam["photon_energy"],
         adu_per_ev=1, paths=path_str,
     )
@@ -162,6 +162,7 @@ def read_crystfel_geom(filename, indexes=dict()):
     if mask_file:
         with h5py.File(mask_file, "r") as f:
             mask = f[mask_path][:]
+            mask = mask.astype(int)
             mask = (
                 (np.bitwise_and(mask, mask_goodbits) != mask_goodbits) |
                 (np.bitwise_and(mask, mask_badbits) != 0)
-- 
GitLab