44
55Example usage:
66python convert_format.py \
7- --patterns "data/ptychoshelves/velo_19c2_Jun_IC_fly145/data_roi0_dp.hdf5" \
8- --probe "data/ptychoshelves/velo_19c2_Jun_IC_fly145/Niter100.mat" \
9- --probe-positions "data/ptychoshelves/velo_19c2_Jun_IC_fly145/data_roi0_para.hdf5" \
10- --metadata "data/ptychoshelves/velo_19c2_Jun_IC_fly145/data_roi0_para.hdf5" \
7+ --patterns "data/ptychoshelves/data_roi0_dp.hdf5" \
8+ --probe "data/ptychoshelves/Niter100.mat" \
9+ --probe-positions "data/ptychoshelves/data_roi0_para.hdf5" \
10+ --object "data/ptychoshelves/Niter100.mat" \
11+ --metadata "data/ptychoshelves/data_roi0_para.hdf5" \
1112 --product-name "ptychodus" \
1213 --output-dir "outputs" \
1314 --diffraction-reader "PtychoShelves" \
1415 --probe-reader "PtychoShelves" \
15- --probe-position-reader "PtychoShelves"
16-
16+ --probe-position-reader "PtychoShelves" \
17+ --object-reader "PtychoShelves"
1718"""
1819from __future__ import annotations
1920
99100 "CSV" ,
100101 "CXI" ,
101102]
103+ ObjectReaderName = ProbeReaderName
102104ProductWriterName = Literal ["HDF5" , "NPZ" ]
103105
104106DiffractionReaderChoices = list (DiffractionReaderName .__args__ )
105107DiffractionWriterChoices = list (DiffractionWriterName .__args__ )
106108ProbeReaderChoices = list (ProbeReaderName .__args__ )
107109ProbePositionReaderChoices = list (ProbePositionReaderName .__args__ )
110+ ObjectReaderChoices = list (ObjectReaderName .__args__ )
108111ProductWriterChoices = list (ProductWriterName .__args__ )
109112
110113
@@ -162,13 +165,15 @@ def convert_data(
162165 * ,
163166 probe_path : Path | None ,
164167 probe_position_path : Path | None ,
168+ object_path : Path | None ,
165169 metadata_path : Path | None ,
166170 diffraction_output : Path ,
167171 product_output : Path ,
168172 product_name : str | None ,
169173 diffraction_reader : DiffractionReaderName ,
170174 probe_reader : ProbeReaderName | None ,
171175 probe_position_reader : ProbePositionReaderName | None ,
176+ object_reader : ObjectReaderName | None ,
172177 diffraction_writer : DiffractionWriterName = "PtychoShelves" ,
173178 product_writer : ProductWriterName = "HDF5" ,
174179 settings_file : Optional [Path ] = None ,
@@ -187,6 +192,9 @@ def convert_data(
187192 probe_positions_path : Path or None
188193 Optional path to a scan or position file. When provided, it is opened
189194 with `probe_position_reader` before the probe/object builders are invoked.
195+ object_path : Path or None
196+ Optional path to a object file. When provided, it is opened
197+ with `object_reader` before the probe/object builders are invoked.
190198 metadata_path : Path or None
191199 Optional path to a metadata file. When provided, it is used to
192200 override the pixel size from data files.
@@ -260,6 +268,9 @@ def convert_data(
260268 if probe_path is not None :
261269 workflow_product .open_probe (probe_path , file_type = probe_reader or None )
262270
271+ if object_path is not None :
272+ workflow_product .open_object (object_path , file_type = object_reader or None )
273+
263274 model .diffraction .diffraction_api .save_patterns (diffraction_output , diffraction_writer )
264275 workflow_product .save_product (product_output , file_type = product_writer )
265276
@@ -339,6 +350,12 @@ def main(argv: list[str] | None = None) -> int:
339350 default = None ,
340351 help = "Optional probe positions file path required by many plugins." ,
341352 )
353+ parser .add_argument (
354+ "--object" ,
355+ type = Path ,
356+ default = None ,
357+ help = "Optional object file path required by many plugins." ,
358+ )
342359 parser .add_argument (
343360 "--metadata" ,
344361 type = Path ,
@@ -397,6 +414,12 @@ def main(argv: list[str] | None = None) -> int:
397414 choices = sorted (ProbePositionReaderChoices ),
398415 help = "Probe position reader plugin to use when a probe position file is provided." ,
399416 )
417+ parser .add_argument (
418+ "--object-reader" ,
419+ default = "PtychoShelves" ,
420+ choices = sorted (ObjectReaderChoices ),
421+ help = "Object reader plugin to use when a object file is provided." ,
422+ )
400423 parser .add_argument (
401424 "--product-writer" ,
402425 default = "HDF5" ,
@@ -422,6 +445,7 @@ def main(argv: list[str] | None = None) -> int:
422445 print ("Diffraction writers : " , ", " .join (sorted (DiffractionWriterChoices )))
423446 print ("Probe readers : " , ", " .join (sorted (ProbeReaderChoices )))
424447 print ("Probe position readers: " , ", " .join (sorted (ProbePositionReaderChoices )))
448+ print ("Object readers : " , ", " .join (sorted (ObjectReaderChoices )))
425449 print ("Product writers : " , ", " .join (sorted (ProductWriterChoices )))
426450 return 0
427451
@@ -450,6 +474,7 @@ def main(argv: list[str] | None = None) -> int:
450474 args .patterns ,
451475 probe_path = args .probe ,
452476 probe_position_path = args .probe_positions ,
477+ object_path = args .object ,
453478 metadata_path = args .metadata ,
454479 diffraction_output = diffraction_output ,
455480 product_output = product_output ,
@@ -458,6 +483,7 @@ def main(argv: list[str] | None = None) -> int:
458483 diffraction_writer = args .diffraction_writer ,
459484 probe_reader = args .probe_reader ,
460485 probe_position_reader = args .probe_position_reader ,
486+ object_reader = args .object_reader ,
461487 product_writer = args .product_writer ,
462488 settings_file = args .settings ,
463489 asserted_pixel_size = args .asserted_pixel_size ,
0 commit comments