diff --git a/MDANSE/Src/MDANSE/Framework/Jobs/CoordinationNumber.py b/MDANSE/Src/MDANSE/Framework/Jobs/CoordinationNumber.py
index 085507894..a4a89c9b7 100644
--- a/MDANSE/Src/MDANSE/Framework/Jobs/CoordinationNumber.py
+++ b/MDANSE/Src/MDANSE/Framework/Jobs/CoordinationNumber.py
@@ -165,7 +165,7 @@ def finalize(self):
idj = self.selectedElements.index(at2)
if idi == idj:
- nij = ni * (ni - 1) / 2.0
+ nij = ni**2 / 2.0
else:
nij = ni * nj
self.hIntra[idi, idj] += self.hIntra[idj, idi]
diff --git a/MDANSE/Src/MDANSE/Framework/Jobs/CurrentCorrelationFunction.py b/MDANSE/Src/MDANSE/Framework/Jobs/CurrentCorrelationFunction.py
index 3c1fea796..41aaa4bc2 100644
--- a/MDANSE/Src/MDANSE/Framework/Jobs/CurrentCorrelationFunction.py
+++ b/MDANSE/Src/MDANSE/Framework/Jobs/CurrentCorrelationFunction.py
@@ -13,6 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
+from math import sqrt
from typing import Optional
import collections
import itertools
@@ -375,8 +376,8 @@ def finalize(self):
at1, at2 = pair
ni = nAtomsPerElement[at1]
nj = nAtomsPerElement[at2]
- self._outputData[f"j(q,t)_long_{pair_str}"][:] /= ni * nj
- self._outputData[f"j(q,t)_trans_{pair_str}"][:] /= ni * nj
+ self._outputData[f"j(q,t)_long_{pair_str}"][:] /= sqrt(ni * nj)
+ self._outputData[f"j(q,t)_trans_{pair_str}"][:] /= sqrt(ni * nj)
self._outputData[f"J(q,f)_long_{pair_str}"][:] = get_spectrum(
self._outputData[f"j(q,t)_long_{pair_str}"],
self.configuration["instrument_resolution"]["time_window"],
@@ -393,7 +394,7 @@ def finalize(self):
)
weights = self.configuration["weights"].get_weights()
- weight_dict = get_weights(weights, nAtomsPerElement, 2)
+ weight_dict = get_weights(weights, nAtomsPerElement, 2, conc_exp=0.5)
assign_weights(self._outputData, weight_dict, "j(q,t)_long_%s%s")
assign_weights(self._outputData, weight_dict, "j(q,t)_trans_%s%s")
assign_weights(self._outputData, weight_dict, "J(q,f)_long_%s%s")
diff --git a/MDANSE/Src/MDANSE/Framework/Jobs/DynamicCoherentStructureFactor.py b/MDANSE/Src/MDANSE/Framework/Jobs/DynamicCoherentStructureFactor.py
index 8b40eb825..e04b575dc 100644
--- a/MDANSE/Src/MDANSE/Framework/Jobs/DynamicCoherentStructureFactor.py
+++ b/MDANSE/Src/MDANSE/Framework/Jobs/DynamicCoherentStructureFactor.py
@@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
-
+from math import sqrt
import collections
import itertools
@@ -249,26 +249,22 @@ def finalize(self):
"""
Finalizes the calculations (e.g. averaging the total term, output files creations ...)
"""
-
nAtomsPerElement = self.configuration["atom_selection"].get_natoms()
-
weights = self.configuration["weights"].get_weights()
- weight_dict = get_weights(weights, nAtomsPerElement, 2)
+ weight_dict = get_weights(weights, nAtomsPerElement, 2, conc_exp=0.5)
assign_weights(self._outputData, weight_dict, "f(q,t)_%s%s")
assign_weights(self._outputData, weight_dict, "s(q,f)_%s%s")
for pair in self._elementsPairs:
pair_str = "".join(map(str, pair))
ni = nAtomsPerElement[pair[0]]
nj = nAtomsPerElement[pair[1]]
- extra_scaling = 1.0 / np.sqrt(ni * nj)
- self._outputData[f"f(q,t)_{pair_str}"].scaling_factor *= extra_scaling
+ self._outputData[f"f(q,t)_{pair_str}"] /= sqrt(ni * nj)
self._outputData[f"s(q,f)_{pair_str}"][:] = get_spectrum(
self._outputData[f"f(q,t)_{pair_str}"],
self.configuration["instrument_resolution"]["time_window"],
self.configuration["instrument_resolution"]["time_step"],
axis=1,
)
- self._outputData[f"s(q,f)_{pair_str}"].scaling_factor *= extra_scaling
self._outputData["f(q,t)_total"][:] = weighted_sum(
self._outputData,
diff --git a/MDANSE/Src/MDANSE/Framework/Jobs/DynamicIncoherentStructureFactor.py b/MDANSE/Src/MDANSE/Framework/Jobs/DynamicIncoherentStructureFactor.py
index 91b6bd6cd..59fef14b6 100644
--- a/MDANSE/Src/MDANSE/Framework/Jobs/DynamicIncoherentStructureFactor.py
+++ b/MDANSE/Src/MDANSE/Framework/Jobs/DynamicIncoherentStructureFactor.py
@@ -259,14 +259,13 @@ def finalize(self):
assign_weights(self._outputData, weight_dict, "s(q,f)_%s")
for element, number in list(nAtomsPerElement.items()):
extra_scaling = 1.0 / number
- self._outputData[f"f(q,t)_{element}"].scaling_factor *= extra_scaling
+ self._outputData[f"f(q,t)_{element}"] *= extra_scaling
self._outputData[f"s(q,f)_{element}"][:] = get_spectrum(
self._outputData[f"f(q,t)_{element}"],
self.configuration["instrument_resolution"]["time_window"],
self.configuration["instrument_resolution"]["time_step"],
axis=1,
)
- self._outputData[f"s(q,f)_{element}"].scaling_factor *= extra_scaling
self._outputData["f(q,t)_total"][:] = weighted_sum(
self._outputData,
diff --git a/MDANSE/Src/MDANSE/Framework/Jobs/NeutronDynamicTotalStructureFactor.py b/MDANSE/Src/MDANSE/Framework/Jobs/NeutronDynamicTotalStructureFactor.py
index 38a117c4e..e00132bc2 100644
--- a/MDANSE/Src/MDANSE/Framework/Jobs/NeutronDynamicTotalStructureFactor.py
+++ b/MDANSE/Src/MDANSE/Framework/Jobs/NeutronDynamicTotalStructureFactor.py
@@ -13,9 +13,9 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
+from math import sqrt
import collections
import itertools
-from typing import List
import numpy as np
@@ -400,34 +400,45 @@ def finalize(self):
bj = self.configuration["trajectory"]["instance"].get_atom_property(
pair[1], "b_coherent"
)
+ sqrt_cij = sqrt(
+ nAtomsPerElement[pair[0]] * nAtomsPerElement[pair[1]] * norm_natoms**2
+ )
+ pre_fac = 1 if pair[0] == pair[1] else 2
+ self._outputData[f"f(q,t)_coh_{pair_str}"].scaling_factor *= (
+ pre_fac * bi * bj * sqrt_cij
+ )
+ self._outputData[f"s(q,f)_coh_{pair_str}"].scaling_factor *= (
+ pre_fac * bi * bj * sqrt_cij
+ )
- if pair[0] == pair[1]: # Add a factor 2 if the two elements are different
- self._outputData[f"f(q,t)_coh_{pair_str}"] *= bi * bj * norm_natoms
- self._outputData[f"s(q,f)_coh_{pair_str}"] *= bi * bj * norm_natoms
- else:
- self._outputData[f"f(q,t)_coh_{pair_str}"] *= 2 * bi * bj * norm_natoms
- self._outputData[f"s(q,f)_coh_{pair_str}"] *= 2 * bi * bj * norm_natoms
-
- self._outputData["f(q,t)_coh_total"][:] += self._outputData[
- f"f(q,t)_coh_{pair_str}"
- ][:]
- self._outputData["s(q,f)_coh_total"][:] += self._outputData[
- f"s(q,f)_coh_{pair_str}"
- ][:]
+ self._outputData["f(q,t)_coh_total"][:] += (
+ self._outputData[f"f(q,t)_coh_{pair_str}"][:]
+ * self._outputData[f"f(q,t)_coh_{pair_str}"].scaling_factor
+ )
+ self._outputData["s(q,f)_coh_total"][:] += (
+ self._outputData[f"s(q,f)_coh_{pair_str}"][:]
+ * self._outputData[f"s(q,f)_coh_{pair_str}"].scaling_factor
+ )
# Compute incoherent functions and structure factor
- for element in nAtomsPerElement:
+ for element, number in nAtomsPerElement.items():
bi = self.configuration["trajectory"]["instance"].get_atom_property(
element, "b_incoherent2"
)
- self._outputData[f"f(q,t)_inc_{element}"][:] *= bi * norm_natoms
- self._outputData[f"s(q,f)_inc_{element}"][:] *= bi * norm_natoms
- self._outputData["f(q,t)_inc_total"][:] += self._outputData[
- f"f(q,t)_inc_{element}"
- ][:]
- self._outputData["s(q,f)_inc_total"][:] += self._outputData[
- f"s(q,f)_inc_{element}"
- ][:]
+ self._outputData[f"f(q,t)_inc_{element}"].scaling_factor *= (
+ bi * number * norm_natoms
+ )
+ self._outputData[f"s(q,f)_inc_{element}"].scaling_factor *= (
+ bi * number * norm_natoms
+ )
+ self._outputData["f(q,t)_inc_total"][:] += (
+ self._outputData[f"f(q,t)_inc_{element}"][:]
+ * self._outputData[f"f(q,t)_inc_{element}"].scaling_factor
+ )
+ self._outputData["s(q,f)_inc_total"][:] += (
+ self._outputData[f"s(q,f)_inc_{element}"][:]
+ * self._outputData[f"s(q,f)_inc_{element}"].scaling_factor
+ )
# Compute total F(Q,t) = inc + coh
self._outputData["f(q,t)_total"][:] = (
diff --git a/MDANSE/Src/MDANSE/Framework/Jobs/PairDistributionFunction.py b/MDANSE/Src/MDANSE/Framework/Jobs/PairDistributionFunction.py
index c447ee703..0e51cd7de 100644
--- a/MDANSE/Src/MDANSE/Framework/Jobs/PairDistributionFunction.py
+++ b/MDANSE/Src/MDANSE/Framework/Jobs/PairDistributionFunction.py
@@ -123,7 +123,7 @@ def finalize(self):
idj = self.selectedElements.index(pair[1])
if idi == idj:
- nij = ni * (ni - 1) / 2.0
+ nij = ni**2 / 2.0
else:
nij = ni * nj
self.hIntra[idi, idj] += self.hIntra[idj, idi]
diff --git a/MDANSE/Src/MDANSE/Framework/Jobs/StaticStructureFactor.py b/MDANSE/Src/MDANSE/Framework/Jobs/StaticStructureFactor.py
index 5ee23e75b..adf0c9d64 100644
--- a/MDANSE/Src/MDANSE/Framework/Jobs/StaticStructureFactor.py
+++ b/MDANSE/Src/MDANSE/Framework/Jobs/StaticStructureFactor.py
@@ -172,7 +172,7 @@ def finalize(self):
idj = self.selectedElements.index(pair[1])
if pair[0] == pair[1]:
- nij = ni * (ni - 1) / 2.0
+ nij = ni**2 / 2.0
else:
nij = ni * nj
self.hIntra[idi, idj] += self.hIntra[idj, idi]
@@ -212,11 +212,12 @@ def finalize(self):
weight_dict = get_weights(weights, nAtomsPerElement, 2)
assign_weights(self._outputData, weight_dict, "ssf_intra_%s%s")
assign_weights(self._outputData, weight_dict, "ssf_inter_%s%s")
+ assign_weights(self._outputData, weight_dict, "ssf_total_%s%s")
+
ssfIntra = weighted_sum(self._outputData, weight_dict, "ssf_intra_%s%s")
self._outputData["ssf_intra"][:] = ssfIntra
ssfInter = weighted_sum(self._outputData, weight_dict, "ssf_inter_%s%s")
-
self._outputData["ssf_inter"][:] = ssfInter
self._outputData["ssf_total"][:] = ssfIntra + ssfInter
diff --git a/MDANSE/Src/MDANSE/Framework/Jobs/VanHoveFunctionDistinct.py b/MDANSE/Src/MDANSE/Framework/Jobs/VanHoveFunctionDistinct.py
index f78bbb528..dca91731a 100644
--- a/MDANSE/Src/MDANSE/Framework/Jobs/VanHoveFunctionDistinct.py
+++ b/MDANSE/Src/MDANSE/Framework/Jobs/VanHoveFunctionDistinct.py
@@ -469,7 +469,7 @@ def finalize(self):
idj = self.selectedElements.index(pair[1])
if idi == idj:
- nij = ni * (ni - 1) / 2.0
+ nij = ni**2 / 2.0
else:
nij = ni * nj
self.h_intra[idi, idj] += self.h_intra[idj, idi]
diff --git a/MDANSE/Src/MDANSE/Framework/Jobs/XRayStaticStructureFactor.py b/MDANSE/Src/MDANSE/Framework/Jobs/XRayStaticStructureFactor.py
index a4bf8f94b..4252c0428 100644
--- a/MDANSE/Src/MDANSE/Framework/Jobs/XRayStaticStructureFactor.py
+++ b/MDANSE/Src/MDANSE/Framework/Jobs/XRayStaticStructureFactor.py
@@ -165,7 +165,7 @@ def finalize(self):
idj = self.selectedElements.index(pair[1])
if pair[0] == pair[1]:
- nij = ni * (ni - 1) / 2.0
+ nij = ni**2 / 2.0
else:
nij = ni * nj
self.hIntra[idi, idj] += self.hIntra[idj, idi]
@@ -211,6 +211,7 @@ def finalize(self):
weight_dict = get_weights(asf, nAtomsPerElement, 2)
assign_weights(self._outputData, weight_dict, "xssf_intra_%s%s")
assign_weights(self._outputData, weight_dict, "xssf_inter_%s%s")
+ assign_weights(self._outputData, weight_dict, "xssf_total_%s%s")
xssfIntra = weighted_sum(self._outputData, weight_dict, "xssf_intra_%s%s")
self._outputData["xssf_intra"][:] = xssfIntra
diff --git a/MDANSE/Src/MDANSE/Mathematics/Arithmetic.py b/MDANSE/Src/MDANSE/Mathematics/Arithmetic.py
index 6fbf86c6f..b0f3a9c81 100644
--- a/MDANSE/Src/MDANSE/Mathematics/Arithmetic.py
+++ b/MDANSE/Src/MDANSE/Mathematics/Arithmetic.py
@@ -19,7 +19,9 @@
import numpy as np
-def get_weights(props: Dict[str, float], contents: Dict[str, int], dim: int):
+def get_weights(
+ props: Dict[str, float], contents: Dict[str, int], dim: int, conc_exp: float = 1.0
+):
"""Calculate the scaling factors to be applied to output datasets.
Returns a dictionary of scaling factors, where the
@@ -33,6 +35,9 @@ def get_weights(props: Dict[str, float], contents: Dict[str, int], dim: int):
Dictionary of numbers of atoms in an object
dim : int
number of atom types in the label of the output datasets (e.g. 1 for "O", 2 for "CuCu")
+ conc_exp : float
+ The exponent the at the product of the concentrations are taken
+ to (e.g. (c_i * c_j)**0.5 which is used for DCSF jobs).
Returns
-------
@@ -43,17 +48,18 @@ def get_weights(props: Dict[str, float], contents: Dict[str, int], dim: int):
weights = {}
+ n_atms = sum(contents[el] for el in props)
cartesianProduct = itertools.product(props, repeat=dim)
for elements in cartesianProduct:
- atom_number_product = np.prod([contents[el] for el in elements])
+ atom_conc_product = np.prod([contents[el] / n_atms for el in elements])
property_product = np.prod(np.array([props[el] for el in elements]), axis=0)
- factor = atom_number_product * property_product
- # E.g. for property b_coh, 5 Cu atoms and dim=2
- # factor = 5*5 * b_coh(Cu)*b_coh(Cu)
+ factor = atom_conc_product**conc_exp * property_product
+ # E.g. for property b_coh, 5 Cu atoms, 100 total atoms, and dim=2
+ # factor = (5*5/(100*100))**conc_exp * b_coh(Cu)*b_coh(Cu)
weights[elements] = np.float64(np.copy(factor))
- normFactor += factor
+ normFactor += atom_conc_product * property_product
normalise = True
try:
diff --git a/MDANSE/Tests/UnitTests/Analysis/test_scattering.py b/MDANSE/Tests/UnitTests/Analysis/test_scattering.py
index dad03172d..fa4260d5b 100644
--- a/MDANSE/Tests/UnitTests/Analysis/test_scattering.py
+++ b/MDANSE/Tests/UnitTests/Analysis/test_scattering.py
@@ -52,8 +52,8 @@ def dcsf():
parameters["instrument_resolution"] = ("Ideal", {})
parameters["output_files"] = (temp_name, ("MDAFormat",), "INFO")
parameters["q_vectors"] = (
- "SphericalLatticeQVectors",
- {"seed": 0, "shells": (5.0, 36, 10.0), "n_vectors": 10, "width": 9.0},
+ "GridQVectors",
+ {"hrange": [0, 3, 1], "krange": [0, 3, 1], "lrange": [0, 3, 1], "qstep": 1},
)
parameters["running_mode"] = ("single-core",)
parameters["trajectory"] = short_traj
@@ -74,8 +74,8 @@ def disf():
parameters["instrument_resolution"] = ("Ideal", {})
parameters["output_files"] = (temp_name, ("MDAFormat",), "INFO")
parameters["q_vectors"] = (
- "SphericalLatticeQVectors",
- {"seed": 0, "shells": (5.0, 36, 10.0), "n_vectors": 10, "width": 9.0},
+ "GridQVectors",
+ {"hrange": [0, 3, 1], "krange": [0, 3, 1], "lrange": [0, 3, 1], "qstep": 1},
)
parameters["running_mode"] = ("single-core",)
parameters["trajectory"] = short_traj
@@ -110,13 +110,13 @@ def test_dcsf(traj_info, qvector_grid):
result_file = os.path.join(result_dir, f"dcsf_{traj_info[0]}.mda")
with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired:
keys = [
- key for key in desired.keys()
+ key for key in desired.keys()
if any(key.startswith(j) for j in ["f(q,t)", "s(q,f)"])
]
for key in keys:
np.testing.assert_array_almost_equal(
actual[f"/{key}"] * actual[f"/{key}"].attrs["scaling_factor"],
- desired[f"/{key}"],
+ desired[f"/{key}"] * desired[f"/{key}"].attrs["scaling_factor"],
)
os.remove(temp_name + ".mda")
@@ -144,8 +144,8 @@ def test_ccf(traj_info, qvector_grid):
parameters["running_mode"] = ("single-core",)
parameters["trajectory"] = traj_info[1]
parameters["weights"] = "equal"
- dcsf = IJob.create("CurrentCorrelationFunction")
- dcsf.run(parameters, status=True)
+ ccf = IJob.create("CurrentCorrelationFunction")
+ ccf.run(parameters, status=True)
assert path.exists(temp_name + ".mda")
assert path.isfile(temp_name + ".mda")
@@ -155,9 +155,9 @@ def test_ccf(traj_info, qvector_grid):
i for i in desired.keys() if any([j in i for j in ["J(q,f)", "j(q,t)"]])
]
for key in keys:
- # reference results were not rescaled
np.testing.assert_array_almost_equal(
- actual[f"/{key}"], desired[f"/{key}"],
+ actual[f"/{key}"] * actual[f"/{key}"].attrs["scaling_factor"],
+ desired[f"/{key}"] * desired[f"/{key}"].attrs["scaling_factor"],
)
os.remove(temp_name + ".mda")
@@ -217,7 +217,7 @@ def test_disf(traj_info, qvector_grid):
for key in keys:
np.testing.assert_array_almost_equal(
actual[f"/{key}"] * actual[f"/{key}"].attrs["scaling_factor"],
- desired[f"/{key}"],
+ desired[f"/{key}"] * desired[f"/{key}"].attrs["scaling_factor"],
)
os.remove(temp_name + ".mda")
@@ -322,6 +322,18 @@ def test_ndtsf(disf, dcsf, qvector_grid):
ndtsf.run(parameters, status=True)
assert path.exists(temp_name + ".mda")
assert path.isfile(temp_name + ".mda")
+
+ result_file = os.path.join(result_dir, "ndtsf.mda")
+ with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired:
+ keys = [
+ i for i in desired.keys() if any([j in i for j in ["f(q,t)", "s(q,f)"]])
+ ]
+ for key in keys:
+ np.testing.assert_array_almost_equal(
+ actual[f"/{key}"] * actual[f"/{key}"].attrs["scaling_factor"],
+ desired[f"/{key}"] * desired[f"/{key}"].attrs["scaling_factor"],
+ )
+
os.remove(temp_name + ".mda")
assert path.exists(temp_name + "_text.tar")
assert path.isfile(temp_name + "_text.tar")
diff --git a/MDANSE/Tests/UnitTests/Results/ccf_com_traj.mda b/MDANSE/Tests/UnitTests/Results/ccf_com_traj.mda
index 58289c644..ce78c4f8c 100644
Binary files a/MDANSE/Tests/UnitTests/Results/ccf_com_traj.mda and b/MDANSE/Tests/UnitTests/Results/ccf_com_traj.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/ccf_mdmc_traj.mda b/MDANSE/Tests/UnitTests/Results/ccf_mdmc_traj.mda
index 7dd963144..b62a4cf9f 100644
Binary files a/MDANSE/Tests/UnitTests/Results/ccf_mdmc_traj.mda and b/MDANSE/Tests/UnitTests/Results/ccf_mdmc_traj.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/ccf_short_traj.mda b/MDANSE/Tests/UnitTests/Results/ccf_short_traj.mda
index 72ecd83cf..5b3a317b1 100644
Binary files a/MDANSE/Tests/UnitTests/Results/ccf_short_traj.mda and b/MDANSE/Tests/UnitTests/Results/ccf_short_traj.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/dcsf_com_traj.mda b/MDANSE/Tests/UnitTests/Results/dcsf_com_traj.mda
index 407bab402..709163978 100644
Binary files a/MDANSE/Tests/UnitTests/Results/dcsf_com_traj.mda and b/MDANSE/Tests/UnitTests/Results/dcsf_com_traj.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/dcsf_mdmc_traj.mda b/MDANSE/Tests/UnitTests/Results/dcsf_mdmc_traj.mda
index 1d2cfdbab..623500c3b 100644
Binary files a/MDANSE/Tests/UnitTests/Results/dcsf_mdmc_traj.mda and b/MDANSE/Tests/UnitTests/Results/dcsf_mdmc_traj.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/dcsf_short_traj.mda b/MDANSE/Tests/UnitTests/Results/dcsf_short_traj.mda
index 3a739ce36..297a5a040 100644
Binary files a/MDANSE/Tests/UnitTests/Results/dcsf_short_traj.mda and b/MDANSE/Tests/UnitTests/Results/dcsf_short_traj.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/disf_com_traj.mda b/MDANSE/Tests/UnitTests/Results/disf_com_traj.mda
index 788e682c4..b8a8d6b65 100644
Binary files a/MDANSE/Tests/UnitTests/Results/disf_com_traj.mda and b/MDANSE/Tests/UnitTests/Results/disf_com_traj.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/disf_mdmc_traj.mda b/MDANSE/Tests/UnitTests/Results/disf_mdmc_traj.mda
index aafa960f9..f46b38bba 100644
Binary files a/MDANSE/Tests/UnitTests/Results/disf_mdmc_traj.mda and b/MDANSE/Tests/UnitTests/Results/disf_mdmc_traj.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/disf_short_traj.mda b/MDANSE/Tests/UnitTests/Results/disf_short_traj.mda
index 19825325c..9d8f8fb67 100644
Binary files a/MDANSE/Tests/UnitTests/Results/disf_short_traj.mda and b/MDANSE/Tests/UnitTests/Results/disf_short_traj.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VanHoveFunctionDistinct.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VanHoveFunctionDistinct.mda
index 4d5a8024e..18534b890 100644
Binary files a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VanHoveFunctionDistinct.mda and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VanHoveFunctionDistinct.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VanHoveFunctionDistinct.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VanHoveFunctionDistinct.mda
index 6f1e29662..08f422a0e 100644
Binary files a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VanHoveFunctionDistinct.mda and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VanHoveFunctionDistinct.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VanHoveFunctionDistinct.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VanHoveFunctionDistinct.mda
index 1aaea82d2..7b3a726e1 100644
Binary files a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VanHoveFunctionDistinct.mda and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VanHoveFunctionDistinct.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/ndtsf.mda b/MDANSE/Tests/UnitTests/Results/ndtsf.mda
new file mode 100644
index 000000000..02e3ed6b8
Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/ndtsf.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_CoordinationNumber.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_CoordinationNumber.mda
index 988bfcfde..47dc12cdf 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_CoordinationNumber.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_CoordinationNumber.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_PairDistributionFunction.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_PairDistributionFunction.mda
index 73c6003f0..505136f72 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_PairDistributionFunction.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_PairDistributionFunction.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_StaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_StaticStructureFactor.mda
index 59cf3c523..5c981c6da 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_StaticStructureFactor.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_StaticStructureFactor.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_XRayStaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_XRayStaticStructureFactor.mda
index 3d6063248..018d2290e 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_XRayStaticStructureFactor.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_XRayStaticStructureFactor.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_CoordinationNumber.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_CoordinationNumber.mda
index 31bf20c34..3a910289e 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_CoordinationNumber.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_CoordinationNumber.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_PairDistributionFunction.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_PairDistributionFunction.mda
index 8408fff5e..326490bba 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_PairDistributionFunction.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_PairDistributionFunction.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_StaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_StaticStructureFactor.mda
index e0bac78dc..89960c1d1 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_StaticStructureFactor.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_StaticStructureFactor.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_XRayStaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_XRayStaticStructureFactor.mda
index 2219290cf..1b08fbfa0 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_XRayStaticStructureFactor.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_XRayStaticStructureFactor.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_CoordinationNumber.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_CoordinationNumber.mda
index 65ef8cbe5..82f3309e5 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_CoordinationNumber.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_CoordinationNumber.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_PairDistributionFunction.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_PairDistributionFunction.mda
index 2c69a2dae..83e51742e 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_PairDistributionFunction.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_PairDistributionFunction.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_StaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_StaticStructureFactor.mda
index 1f817246b..40e9b4c78 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_StaticStructureFactor.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_StaticStructureFactor.mda differ
diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_XRayStaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_XRayStaticStructureFactor.mda
index bfa0d22aa..f0b186a92 100644
Binary files a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_XRayStaticStructureFactor.mda and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_XRayStaticStructureFactor.mda differ
diff --git a/MDANSE_GUI/Src/MDANSE_GUI/Tabs/Models/PlottingContext.py b/MDANSE_GUI/Src/MDANSE_GUI/Tabs/Models/PlottingContext.py
index 8266bcbec..bd4d76f56 100644
--- a/MDANSE_GUI/Src/MDANSE_GUI/Tabs/Models/PlottingContext.py
+++ b/MDANSE_GUI/Src/MDANSE_GUI/Tabs/Models/PlottingContext.py
@@ -290,7 +290,7 @@ def standard_items(self, key: int) -> List["QStandardItem"]:
"Colour",
"Line style",
"Marker",
- "Scaling",
+ "Apply weights?",
]
plotting_column_index = {
label: number for number, label in enumerate(plotting_column_labels)
@@ -396,7 +396,7 @@ def datasets(self) -> Dict:
)
set_scaling = (
self.itemFromIndex(
- self.index(row, plotting_column_index["Scaling"])
+ self.index(row, plotting_column_index["Apply weights?"])
).checkState()
== Qt.CheckState.Checked
)
@@ -453,7 +453,7 @@ def add_dataset(self, new_dataset: SingleDataset):
temp = items[plotting_column_index["Use it?"]]
temp.setCheckable(True)
temp.setCheckState(Qt.CheckState.Checked)
- temp = items[plotting_column_index["Scaling"]]
+ temp = items[plotting_column_index["Apply weights?"]]
temp.setEditable(False)
temp.setCheckable(True)
temp.setCheckState(Qt.CheckState.Checked)