Skip to content

Commit 5dd1f4b

Browse files
authored
Merge pull request #2324 from EdgarGF93/fiberunits_deepcopy
lighter FiberIntegrator class
2 parents 17936e4 + 2b6b0ae commit 5dd1f4b

File tree

3 files changed

+225
-151
lines changed

3 files changed

+225
-151
lines changed

src/pyFAI/integrator/fiber.py

Lines changed: 102 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
__contact__ = "[email protected]"
3131
__license__ = "MIT"
3232
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
33-
__date__ = "24/10/2024"
33+
__date__ = "13/11/2024"
3434
__status__ = "stable"
3535
__docformat__ = 'restructuredtext'
3636

@@ -41,9 +41,59 @@
4141
from ..containers import Integrate1dResult
4242
from ..method_registry import IntegrationMethod
4343
from ..io import save_integrate_result
44-
from .. import units
44+
from ..units import parse_fiber_unit
4545
from ..utils.decorators import deprecated_warning
4646

47+
def get_deprecated_params_1d(**kwargs) -> dict:
48+
deprecated = {}
49+
if "npt_output" in kwargs:
50+
deprecated_warning(type_=type(kwargs["npt_output"]), name="npt_output", replacement=("npt_oop, npt_ip, vertical_integration instead"), since_version="2024.11/12")
51+
deprecated['npt_oop'] = kwargs["npt_output"]
52+
deprecated['vertical_integration'] = True
53+
if "npt_integrated" in kwargs:
54+
deprecated_warning(type_=type(kwargs["npt_integrated"]), name="npt_integrated", replacement=("npt_oop, npt_ip, vertical_integration instead"), since_version="2024.11/12")
55+
deprecated['npt_ip'] = kwargs["npt_integrated"]
56+
deprecated['vertical_integration'] = True
57+
if "output_unit" in kwargs:
58+
deprecated_warning(type_=type(kwargs["output_unit"]), name="output_unit", replacement=("unit_oop, unit_ip, vertical_integration instead"), since_version="2024.11/12")
59+
deprecated['unit_oop'] = kwargs["output_unit"]
60+
deprecated['vertical_integration'] = True
61+
if "integrated_unit" in kwargs:
62+
deprecated_warning(type_=type(kwargs["integrated_unit"]), name="integrated_unit", replacement=("unit_oop, unit_ip, vertical_integration instead"), since_version="2024.11/12")
63+
deprecated['unit_ip'] = kwargs["integrated_unit"]
64+
deprecated['vertical_integration'] = True
65+
if "output_unit_range" in kwargs:
66+
deprecated_warning(type_=type(kwargs["output_unit_range"]), name="output_unit_range", replacement=("oop_range, ip_range, vertical_integration instead"), since_version="2024.11/12")
67+
deprecated['oop_range'] = kwargs["output_unit_range"]
68+
deprecated['vertical_integration'] = True
69+
if "integrated_unit_range" in kwargs:
70+
deprecated_warning(type_=type(kwargs["integrated_unit_range"]), name="integrated_unit_range", replacement=("oop_range, ip_range, vertical_integration instead"), since_version="2024.11/12")
71+
deprecated['ip_range'] = kwargs["integrated_unit_range"]
72+
deprecated['vertical_integration'] = True
73+
return deprecated
74+
75+
def get_deprecated_params_2d(**kwargs) -> dict:
76+
deprecated = {}
77+
if "npt_horizontal" in kwargs:
78+
deprecated_warning(type_=type(kwargs["npt_horizontal"]), name="npt_horizontal", replacement="npt_ip", since_version="2024.11/12")
79+
deprecated['npt_ip'] = kwargs["npt_horizontal"]
80+
if "npt_vertical" in kwargs:
81+
deprecated_warning(type_=type(kwargs["npt_vertical"]), name="npt_vertical", replacement="npt_oop", since_version="2024.11/12")
82+
deprecated['npt_oop'] = kwargs["npt_vertical"]
83+
if "horizontal_unit" in kwargs:
84+
deprecated_warning(type_=type(kwargs["horizontal_unit"]), name="horizontal_unit", replacement="unit_ip", since_version="2024.11/12")
85+
deprecated['unit_ip'] = kwargs["horizontal_unit"]
86+
if "vertical_unit" in kwargs:
87+
deprecated_warning(type_=type(kwargs["vertical_unit"]), name="vertical_unit", replacement="unit_oop", since_version="2024.11/12")
88+
deprecated['unit_oop'] = kwargs["vertical_unit"]
89+
if "horizontal_unit_range" in kwargs:
90+
deprecated_warning(type_=type(kwargs["horizontal_unit_range"]), name="horizontal_unit_range", replacement="ip_range", since_version="2024.11/12")
91+
deprecated['ip_range'] = kwargs["horizontal_unit_range"]
92+
if "vertical_unit_range" in kwargs:
93+
deprecated_warning(type_=type(kwargs["vertical_unit_range"]), name="vertical_unit_range", replacement="oop_range", since_version="2024.11/12")
94+
deprecated['oop_range'] = kwargs["vertical_unit_range"]
95+
return deprecated
96+
4797
class FiberIntegrator(AzimuthalIntegrator):
4898

4999
def __init__(self, *args, **kwargs):
@@ -62,53 +112,6 @@ def tilt_angle(self):
62112
def sample_orientation(self):
63113
return self._cache_parameters.get('sample_orientation', 1)
64114

65-
def parse_units(self, unit_ip, unit_oop, incident_angle=None, tilt_angle=None, sample_orientation=None):
66-
if unit_ip is None:
67-
unit_ip = units.get_unit_fiber("qip_nm^-1")
68-
else:
69-
unit_ip = units.to_unit(unit_ip)
70-
71-
if unit_oop is None:
72-
unit_oop = units.get_unit_fiber("qoop_nm^-1")
73-
else:
74-
unit_oop = units.to_unit(unit_oop)
75-
76-
if incident_angle is None:
77-
if isinstance(unit_ip, units.UnitFiber):
78-
incident_angle = unit_ip.incident_angle
79-
elif isinstance(unit_oop, units.UnitFiber):
80-
incident_angle = unit_oop.incident_angle
81-
else:
82-
incident_angle = 0.0
83-
84-
if tilt_angle is None:
85-
if isinstance(unit_ip, units.UnitFiber):
86-
tilt_angle = unit_ip.tilt_angle
87-
elif isinstance(unit_oop, units.UnitFiber):
88-
tilt_angle = unit_oop.tilt_angle
89-
else:
90-
tilt_angle = 0.0
91-
92-
if sample_orientation is None:
93-
if isinstance(unit_ip, units.UnitFiber):
94-
sample_orientation = unit_ip.sample_orientation
95-
elif isinstance(unit_oop, units.UnitFiber):
96-
sample_orientation = unit_oop.sample_orientation
97-
else:
98-
sample_orientation = 1
99-
100-
unit_ip = units.to_unit(unit_ip)
101-
unit_ip.set_incident_angle(incident_angle)
102-
unit_ip.set_tilt_angle(tilt_angle)
103-
unit_ip.set_sample_orientation(sample_orientation)
104-
105-
unit_oop = units.to_unit(unit_oop)
106-
unit_oop.set_incident_angle(incident_angle)
107-
unit_oop.set_tilt_angle(tilt_angle)
108-
unit_oop.set_sample_orientation(sample_orientation)
109-
110-
return unit_ip, unit_oop
111-
112115
def reset_integrator(self, incident_angle, tilt_angle, sample_orientation):
113116
reset = False
114117
if incident_angle != self.incident_angle:
@@ -169,33 +172,19 @@ def integrate_fiber(self, data,
169172
:return: chi bins center positions and regrouped intensity
170173
:rtype: Integrate1dResult
171174
"""
172-
if "npt_output" in kwargs:
173-
deprecated_warning(type_=type(kwargs["npt_output"]), name="npt_output", replacement=("npt_oop, npt_ip, vertical_integration instead"), since_version="2024.11/12")
174-
npt_oop = kwargs["npt_output"]
175-
vertical_integration = True
176-
if "npt_integrated" in kwargs:
177-
deprecated_warning(type_=type(kwargs["npt_integrated"]), name="npt_integrated", replacement=("npt_oop, npt_ip, vertical_integration instead"), since_version="2024.11/12")
178-
npt_ip = kwargs["npt_integrated"]
179-
vertical_integration = True
180-
if "output_unit" in kwargs:
181-
deprecated_warning(type_=type(kwargs["output_unit"]), name="output_unit", replacement=("unit_oop, unit_ip, vertical_integration instead"), since_version="2024.11/12")
182-
unit_oop = kwargs["output_unit"]
183-
vertical_integration = True
184-
if "integrated_unit" in kwargs:
185-
deprecated_warning(type_=type(kwargs["integrated_unit"]), name="integrated_unit", replacement=("unit_oop, unit_ip, vertical_integration instead"), since_version="2024.11/12")
186-
unit_ip = kwargs["integrated_unit"]
187-
vertical_integration = True
188-
if "output_unit_range" in kwargs:
189-
deprecated_warning(type_=type(kwargs["output_unit_range"]), name="output_unit_range", replacement=("oop_range, ip_range, vertical_integration instead"), since_version="2024.11/12")
190-
oop_range = kwargs["output_unit_range"]
191-
vertical_integration = True
192-
if "integrated_unit_range" in kwargs:
193-
deprecated_warning(type_=type(kwargs["integrated_unit_range"]), name="integrated_unit_range", replacement=("oop_range, ip_range, vertical_integration instead"), since_version="2024.11/12")
194-
ip_range = kwargs["integrated_unit_range"]
195-
vertical_integration = True
196-
197-
unit_ip, unit_oop = self.parse_units(unit_ip=unit_ip, unit_oop=unit_oop,
198-
sample_orientation=sample_orientation)
175+
deprecated_params = get_deprecated_params_1d(**kwargs)
176+
npt_oop = deprecated_params.get('npt_oop', None) or npt_oop
177+
npt_ip = deprecated_params.get('npt_ip', None) or npt_ip
178+
unit_oop = deprecated_params.get('unit_oop', None) or unit_oop
179+
unit_ip = deprecated_params.get('unit_ip', None) or unit_ip
180+
oop_range = deprecated_params.get('oop_range', None) or oop_range
181+
ip_range = deprecated_params.get('ip_range', None) or ip_range
182+
vertical_integration = deprecated_params.get('vertical_integration', None) or vertical_integration
183+
184+
unit_ip = unit_ip or 'qip_nm^-1'
185+
unit_oop = unit_oop or 'qoop_nm^-1'
186+
unit_ip = parse_fiber_unit(unit=unit_ip, sample_orientation=sample_orientation)
187+
unit_oop = parse_fiber_unit(unit=unit_oop, sample_orientation=unit_ip.sample_orientation)
199188

200189
self.reset_integrator(incident_angle=unit_ip.incident_angle,
201190
tilt_angle=unit_ip.tilt_angle,
@@ -314,35 +303,19 @@ def integrate_grazing_incidence(self, data,
314303
:return: chi bins center positions and regrouped intensity
315304
:rtype: Integrate1dResult
316305
"""
317-
if "npt_output" in kwargs:
318-
deprecated_warning(type_=type(kwargs["npt_output"]), name="npt_output", replacement=("npt_oop, npt_ip, vertical_integration instead"), since_version="2024.11/12")
319-
npt_oop = kwargs["npt_output"]
320-
vertical_integration = True
321-
if "npt_integrated" in kwargs:
322-
deprecated_warning(type_=type(kwargs["npt_integrated"]), name="npt_integrated", replacement=("npt_oop, npt_ip, vertical_integration instead"), since_version="2024.11/12")
323-
npt_ip = kwargs["npt_integrated"]
324-
vertical_integration = True
325-
if "output_unit" in kwargs:
326-
deprecated_warning(type_=type(kwargs["output_unit"]), name="output_unit", replacement=("unit_oop, unit_ip, vertical_integration instead"), since_version="2024.11/12")
327-
unit_oop = kwargs["output_unit"]
328-
vertical_integration = True
329-
if "integrated_unit" in kwargs:
330-
deprecated_warning(type_=type(kwargs["integrated_unit"]), name="integrated_unit", replacement=("unit_oop, unit_ip, vertical_integration instead"), since_version="2024.11/12")
331-
unit_ip = kwargs["integrated_unit"]
332-
vertical_integration = True
333-
if "output_unit_range" in kwargs:
334-
deprecated_warning(type_=type(kwargs["output_unit_range"]), name="output_unit_range", replacement=("oop_range, ip_range, vertical_integration instead"), since_version="2024.11/12")
335-
oop_range = kwargs["output_unit_range"]
336-
vertical_integration = True
337-
if "integrated_unit_range" in kwargs:
338-
deprecated_warning(type_=type(kwargs["integrated_unit_range"]), name="integrated_unit_range", replacement=("oop_range, ip_range, vertical_integration instead"), since_version="2024.11/12")
339-
ip_range = kwargs["integrated_unit_range"]
340-
vertical_integration = True
341-
342-
unit_ip, unit_oop = self.parse_units(unit_ip=unit_ip, unit_oop=unit_oop,
343-
incident_angle=incident_angle,
344-
tilt_angle=tilt_angle,
345-
sample_orientation=sample_orientation)
306+
deprecated_params = get_deprecated_params_1d(**kwargs)
307+
npt_oop = deprecated_params.get('npt_oop', None) or npt_oop
308+
npt_ip = deprecated_params.get('npt_ip', None) or npt_ip
309+
unit_oop = deprecated_params.get('unit_oop', None) or unit_oop
310+
unit_ip = deprecated_params.get('unit_ip', None) or unit_ip
311+
oop_range = deprecated_params.get('oop_range', None) or oop_range
312+
ip_range = deprecated_params.get('ip_range', None) or ip_range
313+
vertical_integration = deprecated_params.get('vertical_integration', None) or vertical_integration
314+
315+
unit_ip = unit_ip or 'qip_nm^-1'
316+
unit_oop = unit_oop or 'qoop_nm^-1'
317+
unit_ip = parse_fiber_unit(unit=unit_ip, incident_angle=incident_angle, tilt_angle=tilt_angle, sample_orientation=sample_orientation)
318+
unit_oop = parse_fiber_unit(unit=unit_oop, incident_angle=unit_ip.incident_angle, tilt_angle=unit_ip.tilt_angle, sample_orientation=unit_ip.sample_orientation)
346319

347320
self.reset_integrator(incident_angle=unit_ip.incident_angle,
348321
tilt_angle=unit_ip.tilt_angle,
@@ -400,27 +373,18 @@ def integrate2d_fiber(self, data,
400373
:return: regrouped intensity and unit arrays
401374
:rtype: Integrate2dResult
402375
"""
403-
if "npt_horizontal" in kwargs:
404-
deprecated_warning(type_=type(kwargs["npt_horizontal"]), name="npt_horizontal", replacement="npt_ip", since_version="2024.11/12")
405-
npt_ip = kwargs["npt_horizontal"]
406-
if "npt_vertical" in kwargs:
407-
deprecated_warning(type_=type(kwargs["npt_vertical"]), name="npt_vertical", replacement="npt_oop", since_version="2024.11/12")
408-
npt_oop = kwargs["npt_vertical"]
409-
if "horizontal_unit" in kwargs:
410-
deprecated_warning(type_=type(kwargs["horizontal_unit"]), name="horizontal_unit", replacement="unit_ip", since_version="2024.11/12")
411-
unit_ip = kwargs["horizontal_unit"]
412-
if "vertical_unit" in kwargs:
413-
deprecated_warning(type_=type(kwargs["vertical_unit"]), name="vertical_unit", replacement="unit_oop", since_version="2024.11/12")
414-
unit_oop = kwargs["vertical_unit"]
415-
if "horizontal_unit_range" in kwargs:
416-
deprecated_warning(type_=type(kwargs["horizontal_unit_range"]), name="horizontal_unit_range", replacement="ip_range", since_version="2024.11/12")
417-
ip_range = kwargs["horizontal_unit_range"]
418-
if "vertical_unit_range" in kwargs:
419-
deprecated_warning(type_=type(kwargs["vertical_unit_range"]), name="vertical_unit_range", replacement="oop_range", since_version="2024.11/12")
420-
oop_range = kwargs["vertical_unit_range"]
421-
422-
unit_ip, unit_oop = self.parse_units(unit_ip=unit_ip, unit_oop=unit_oop,
423-
sample_orientation=sample_orientation)
376+
deprecated_params = get_deprecated_params_2d(**kwargs)
377+
npt_oop = deprecated_params.get('npt_oop', None) or npt_oop
378+
npt_ip = deprecated_params.get('npt_ip', None) or npt_ip
379+
unit_oop = deprecated_params.get('unit_oop', None) or unit_oop
380+
unit_ip = deprecated_params.get('unit_ip', None) or unit_ip
381+
oop_range = deprecated_params.get('oop_range', None) or oop_range
382+
ip_range = deprecated_params.get('ip_range', None) or ip_range
383+
384+
unit_ip = unit_ip or 'qip_nm^-1'
385+
unit_oop = unit_oop or 'qoop_nm^-1'
386+
unit_ip = parse_fiber_unit(unit=unit_ip, sample_orientation=sample_orientation)
387+
unit_oop = parse_fiber_unit(unit=unit_oop, sample_orientation=unit_ip.sample_orientation)
424388

425389
self.reset_integrator(incident_angle=unit_ip.incident_angle,
426390
tilt_angle=unit_ip.tilt_angle,
@@ -478,29 +442,18 @@ def integrate2d_grazing_incidence(self, data,
478442
:return: regrouped intensity and unit arrays
479443
:rtype: Integrate2dResult
480444
"""
481-
if "npt_horizontal" in kwargs:
482-
deprecated_warning(type_=type(kwargs["npt_horizontal"]), name="npt_horizontal", replacement="npt_ip", since_version="2024.11/12")
483-
npt_ip = kwargs["npt_horizontal"]
484-
if "npt_vertical" in kwargs:
485-
deprecated_warning(type_=type(kwargs["npt_vertical"]), name="npt_vertical", replacement="npt_oop", since_version="2024.11/12")
486-
npt_oop = kwargs["npt_vertical"]
487-
if "horizontal_unit" in kwargs:
488-
deprecated_warning(type_=type(kwargs["horizontal_unit"]), name="horizontal_unit", replacement="unit_ip", since_version="2024.11/12")
489-
unit_ip = kwargs["horizontal_unit"]
490-
if "vertical_unit" in kwargs:
491-
deprecated_warning(type_=type(kwargs["vertical_unit"]), name="vertical_unit", replacement="unit_oop", since_version="2024.11/12")
492-
unit_oop = kwargs["vertical_unit"]
493-
if "horizontal_unit_range" in kwargs:
494-
deprecated_warning(type_=type(kwargs["horizontal_unit_range"]), name="horizontal_unit_range", replacement="ip_range", since_version="2024.11/12")
495-
ip_range = kwargs["horizontal_unit_range"]
496-
if "vertical_unit_range" in kwargs:
497-
deprecated_warning(type_=type(kwargs["vertical_unit_range"]), name="vertical_unit_range", replacement="oop_range", since_version="2024.11/12")
498-
oop_range = kwargs["vertical_unit_range"]
499-
500-
unit_ip, unit_oop = self.parse_units(unit_ip=unit_ip, unit_oop=unit_oop,
501-
incident_angle=incident_angle,
502-
tilt_angle=tilt_angle,
503-
sample_orientation=sample_orientation)
445+
deprecated_params = get_deprecated_params_2d(**kwargs)
446+
npt_oop = deprecated_params.get('npt_oop', None) or npt_oop
447+
npt_ip = deprecated_params.get('npt_ip', None) or npt_ip
448+
unit_oop = deprecated_params.get('unit_oop', None) or unit_oop
449+
unit_ip = deprecated_params.get('unit_ip', None) or unit_ip
450+
oop_range = deprecated_params.get('oop_range', None) or oop_range
451+
ip_range = deprecated_params.get('ip_range', None) or ip_range
452+
453+
unit_ip = unit_ip or 'qip_nm^-1'
454+
unit_oop = unit_oop or 'qoop_nm^-1'
455+
unit_ip = parse_fiber_unit(unit=unit_ip, incident_angle=incident_angle, tilt_angle=tilt_angle, sample_orientation=sample_orientation)
456+
unit_oop = parse_fiber_unit(unit=unit_oop, incident_angle=unit_ip.incident_angle, tilt_angle=unit_ip.tilt_angle, sample_orientation=unit_ip.sample_orientation)
504457

505458
self.reset_integrator(incident_angle=unit_ip.incident_angle,
506459
tilt_angle=unit_ip.tilt_angle,

0 commit comments

Comments
 (0)