Skip to content

Commit

Permalink
Merge pull request #237 from rs-station/fw_fix
Browse files Browse the repository at this point in the history
Support clipping Sigma to avoid negative values in French-Wilson method
  • Loading branch information
DHekstra committed Jan 9, 2024
2 parents c1c8731 + ca49796 commit 66b7ba2
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions reciprocalspaceship/algorithms/scale_merged_intensities.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ def scale_merged_intensities(
mean_intensity_method="isotropic",
bins=100,
bw=2.0,
minimum_sigma=-np.inf,
):
"""
Scales merged intensities using Bayesian statistics in order to
Expand Down Expand Up @@ -240,6 +241,9 @@ def scale_merged_intensities(
parameter controls the distance that each reflection impacts in
reciprocal space. Only affects output if mean_intensity_method is
\"anisotropic\".
minimum_sigma : float
Minimum value imposed on Sigma (default: -np.inf, that is: no minimum).
Returns
-------
Expand Down Expand Up @@ -281,14 +285,11 @@ def scale_merged_intensities(
I, Sig = ds[intensity_key].to_numpy(), ds[sigma_key].to_numpy()
if mean_intensity_method == "isotropic":
dHKL = ds["dHKL"].to_numpy(dtype=np.float64)
Sigma = (
mean_intensity_by_resolution(I / multiplicity, dHKL, bins) * multiplicity
)
Sigma = mean_intensity_by_resolution(I / multiplicity, dHKL, bins)
elif mean_intensity_method == "anisotropic":
Sigma = (
mean_intensity_by_miller_index(I / multiplicity, ds.get_hkls(), bw)
* multiplicity
)
Sigma = mean_intensity_by_miller_index(I / multiplicity, ds.get_hkls(), bw)
Sigma = np.clip(Sigma, a_min=minimum_sigma, a_max=np.inf)
Sigma = Sigma * multiplicity

# Initialize outputs
ds[outputI] = 0.0
Expand Down

0 comments on commit 66b7ba2

Please sign in to comment.