diff --git a/news/tweaks.rst b/news/tweaks.rst new file mode 100644 index 00000000..d35e97a7 --- /dev/null +++ b/news/tweaks.rst @@ -0,0 +1,23 @@ +**Added:** + +* + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* fixed inadvertent overwrite of attributes on self.insert_scattering_quantity() + +**Security:** + +* diff --git a/src/diffpy/utils/scattering_objects/diffraction_objects.py b/src/diffpy/utils/scattering_objects/diffraction_objects.py index b02c5225..4b8793d7 100644 --- a/src/diffpy/utils/scattering_objects/diffraction_objects.py +++ b/src/diffpy/utils/scattering_objects/diffraction_objects.py @@ -19,6 +19,7 @@ def __init__(self, name='', wavelength=None): self.on_tth = [np.empty(1), np.empty(1)] self.on_d = [np.empty(1), np.empty(1)] self._all_arrays = [self.on_q, self.on_tth] + self.metadata = {} def __add__(self, other): summed = deepcopy(self) @@ -221,7 +222,8 @@ def get_angle_index(self, angle): if count >= len(self.angles): raise IndexError(f"WARNING: no angle {angle} found in angles list") - def insert_scattering_quantity(self, xarray, yarray, xtype, metadata={}): + def insert_scattering_quantity(self, xarray, yarray, xtype, metadata={}, + scat_quantity=None, name=None, wavelength=None): f""" insert a new scattering quantity into the scattering object @@ -241,7 +243,12 @@ def insert_scattering_quantity(self, xarray, yarray, xtype, metadata={}): """ self.input_xtype = xtype - self.metadata = metadata + # empty attributes have been defined in the __init__ method so only + # set the attributes that are not empty to avoid emptying them by mistake + if metadata: self.metadata = metadata + if scat_quantity is not None: self.scat_quantity = scat_quantity + if name is not None: self.name = name + if wavelength is not None: self.wavelength = wavelength if xtype.lower() in QQUANTITIES: self.on_q = [np.array(xarray),np.array(yarray)] elif xtype.lower() in ANGLEQUANTITIES: @@ -284,7 +291,7 @@ def q_to_tth(self): q = np.asarray(q) wavelength = float(self.wavelength) pre_factor = wavelength / (4 * np.pi) - return np.rad2deg(2 * np.arcsin(q * pre_factor)) + return np.rad2deg(2. * np.arcsin(q * pre_factor)) def tth_to_q(self): r"""