From 80141283f3a5a799030bf8fb400c1386769cabf2 Mon Sep 17 00:00:00 2001 From: Juncheng E Date: Fri, 27 Aug 2021 10:36:24 +0200 Subject: [PATCH 1/4] Fix write_crystfel_geom offset unit --- extra_geom/crystfel_fmt.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extra_geom/crystfel_fmt.py b/extra_geom/crystfel_fmt.py index 540875d8..d46a22d4 100644 --- a/extra_geom/crystfel_fmt.py +++ b/extra_geom/crystfel_fmt.py @@ -54,7 +54,8 @@ def _crystfel_format_vec(vec): def frag_to_crystfel(fragment, p, a, ss_slice, fs_slice, dims, pixel_size): tile_name = 'p{}a{}'.format(p, a) - c = fragment.corner_pos / pixel_size + c = fragment.corner_pos + c[:2] = c[:2] / pixel_size dim_list = [] for num, value in dims.items(): if value == 'modno': From ee6ff294b05deeb453a0893c3537365b22399652 Mon Sep 17 00:00:00 2001 From: Juncheng E Date: Mon, 30 Aug 2021 14:49:25 +0200 Subject: [PATCH 2/4] Have a seperate coffset variable within 'frag_to_crystfel' --- extra_geom/crystfel_fmt.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extra_geom/crystfel_fmt.py b/extra_geom/crystfel_fmt.py index d46a22d4..35425ae4 100644 --- a/extra_geom/crystfel_fmt.py +++ b/extra_geom/crystfel_fmt.py @@ -54,8 +54,8 @@ def _crystfel_format_vec(vec): def frag_to_crystfel(fragment, p, a, ss_slice, fs_slice, dims, pixel_size): tile_name = 'p{}a{}'.format(p, a) - c = fragment.corner_pos - c[:2] = c[:2] / pixel_size + c = fragment.corner_pos[:2] / pixel_size + coffset = fragment.corner_pos[2] dim_list = [] for num, value in dims.items(): if value == 'modno': @@ -75,7 +75,7 @@ def frag_to_crystfel(fragment, p, a, ss_slice, fs_slice, dims, pixel_size): fs_vec=_crystfel_format_vec(fragment.fs_vec/ pixel_size), corner_x=c[0], corner_y=c[1], - coffset=c[2], + coffset=coffset, ) def write_crystfel_geom(self, filename, *, From 208df305cd51cd30340e070fee8dd21f677b3718 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Wed, 22 Sep 2021 09:23:57 +0100 Subject: [PATCH 3/4] Don't use extra local variable --- extra_geom/crystfel_fmt.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/extra_geom/crystfel_fmt.py b/extra_geom/crystfel_fmt.py index 35425ae4..d89c9805 100644 --- a/extra_geom/crystfel_fmt.py +++ b/extra_geom/crystfel_fmt.py @@ -55,7 +55,6 @@ def _crystfel_format_vec(vec): def frag_to_crystfel(fragment, p, a, ss_slice, fs_slice, dims, pixel_size): tile_name = 'p{}a{}'.format(p, a) c = fragment.corner_pos[:2] / pixel_size - coffset = fragment.corner_pos[2] dim_list = [] for num, value in dims.items(): if value == 'modno': @@ -75,7 +74,7 @@ def frag_to_crystfel(fragment, p, a, ss_slice, fs_slice, dims, pixel_size): fs_vec=_crystfel_format_vec(fragment.fs_vec/ pixel_size), corner_x=c[0], corner_y=c[1], - coffset=coffset, + coffset=fragment.corner_pos[2], ) def write_crystfel_geom(self, filename, *, From ca8449fc6c25935c94edc7afc5ac284ff2229022 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Wed, 22 Sep 2021 09:25:49 +0100 Subject: [PATCH 4/4] Test round-tripping .geom file with z dimension (coffset) --- extra_geom/tests/test_agipd_geometry.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/extra_geom/tests/test_agipd_geometry.py b/extra_geom/tests/test_agipd_geometry.py index 29ab5138..1f305df9 100644 --- a/extra_geom/tests/test_agipd_geometry.py +++ b/extra_geom/tests/test_agipd_geometry.py @@ -7,7 +7,7 @@ from matplotlib.axes import Axes from extra_geom import AGIPD_1MGeometry, agipd_asic_seams - +from .utils import assert_geom_close def test_snap_assemble_data(): @@ -72,15 +72,14 @@ def test_write_read_crystfel_file(tmpdir): geom = AGIPD_1MGeometry.from_quad_positions( quad_pos=[(-525, 625), (-550, -10), (520, -160), (542.5, 475)] ) + # Use the z dimension (coffset in .geom) + geom = geom.offset((0, 0, 0.001), modules=np.s_[8:12]) path = str(tmpdir / 'test.geom') geom.write_crystfel_geom(filename=path, photon_energy=9000, adu_per_ev=0.0075, clen=0.2) loaded = AGIPD_1MGeometry.from_crystfel_geom(path) - np.testing.assert_allclose( - loaded.modules[0][0].corner_pos, geom.modules[0][0].corner_pos - ) - np.testing.assert_allclose(loaded.modules[0][0].fs_vec, geom.modules[0][0].fs_vec) + assert_geom_close(loaded, geom) # Load the geometry file with cfelpyutils and test the rigid groups geom_dict = load_crystfel_geometry(path)