Skip to content
Snippets Groups Projects
Commit 2e9c25af authored by Egor Sobolev's avatar Egor Sobolev
Browse files

Add script to refine geometry using SFX data

parent 3143f84e
No related branches found
No related tags found
No related merge requests found
......@@ -29,3 +29,4 @@ dependencies = [
]
[project.scripts]
geomtools-push = "geomtools.sfx.report:push_geometry"
geomtools-refine-sfx = "geomtools.sfx.optimiser:refine"
......@@ -6,7 +6,7 @@ from natsort import natsorted
HEADER_TEMPLATE = """\
; {detector} geometry file written by geomtools-optimiser-sfx
; {detector} geometry file written by geomtools
; You may need to edit this file to add:
; - data and mask locations in the file
; - mask_good & mask_bad values to interpret the mask
......
import argparse
import pathlib
import tempfile
from .refine import refine_geometry
from .crystfelio import extract_geometry, read_crystfel_streamfile
from ..detector import read_crystfel_geom, write_crystfel_geom
def refine():
parser = argparse.ArgumentParser(
description='Makes the detector geometry report')
parser.add_argument('-i', '--stream', type=pathlib.Path, required=True,
help="Crystfel stream file")
parser.add_argument('-c', '--connected', default="modules",
help="Collection of rigid groups to pose")
parser.add_argument('-o', '--output', type=pathlib.Path,
default=pathlib.Path("refined.geom"),
help="File to store refined geometry")
args = parser.parse_args()
stream_filename = args.stream.absolute()
geom_file = extract_geometry(stream_filename)
temp_geom_file = tempfile.NamedTemporaryFile("w+t", prefix='geomtools')
temp_geom_file.write(geom_file.read())
geom_file.seek(0)
panels, beam = read_crystfel_geom(
temp_geom_file.name, indexes={'modno': 1})
temp_geom_file.close()
fr, pe, la, re, ma = read_crystfel_streamfile(
stream_filename, panels, args.connected, disp=True)
panels_new, transform, clen = refine_geometry(ma, panels, 1.0)
with open(args.output.absolute(), "w") as f:
write_crystfel_geom(f, panels_new, beam, ["modules", "quads"])
if __name__ == "__main__":
refine()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment