Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
573 changes: 573 additions & 0 deletions docs/plans/nrss_q_coordinate_semantics.md

Large diffs are not rendered by default.

9 changes: 8 additions & 1 deletion docs/source/getting_started/integration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,14 @@ For grazing-incidence experiments ``PGGeneralIntegrator`` uses
``pygix`` to output either reciprocal-space ``q_xy``/``q_z`` data or
caked ``q`` vs ``chi``. Datasets already in ``qx``/``qy`` coordinates
can be integrated with ``WPIntegrator`` which relies on
``skimage.transform.warp_polar`` (or its GPU version).
``skimage.transform.warp_polar`` (or its GPU version). ``WPIntegrator``
is a detector-plane ``qx``/``qy`` to ``chi``/``q_perp`` remesher, so it
is the right choice for reciprocal-plane / 2D NRSS outputs.

For NRSS detector-aware 3D outputs use ``NRSSIntegrator`` instead.
It keeps the same polar remesh approach but relabels the radial axis
with detector-corrected ``|q|`` so the reduced curve can be compared to
geometry-aware analytical form factors.

All integrators return properly labeled xarray objects so the rest of
the workflow can use normal xarray indexing and visualization.
30 changes: 15 additions & 15 deletions src/PyHyperScattering/Fitting.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,15 +94,15 @@ def fit_lorentz(x,guess=None,pos_int_override=False,silent=False):
except RuntimeError:
if not silent:
print("Fit failed to converge")
retval = xr.DataArray(data=np.nan,coords=x.coords).to_dataset(name='intensity')
retval['pos'] = xr.DataArray(data=np.nan,coords=x.coords)
retval['width'] = xr.DataArray(data=np.nan,coords=x.coords)
retval = xr.full_like(x, np.nan, dtype=float).to_dataset(name='intensity')
retval['pos'] = xr.full_like(x, np.nan, dtype=float)
retval['width'] = xr.full_like(x, np.nan, dtype=float)
return retval
if not silent:
print(f"Fit completed, coeff = {coeff}")
retval = xr.DataArray(data=coeff[0],coords=x.coords).to_dataset(name='intensity')
retval['pos'] = xr.DataArray(data=coeff[1],coords=x.coords)
retval['width'] = xr.DataArray(data=coeff[2],coords=x.coords)
retval = xr.full_like(x, coeff[0], dtype=float).to_dataset(name='intensity')
retval['pos'] = xr.full_like(x, coeff[1], dtype=float)
retval['width'] = xr.full_like(x, coeff[2], dtype=float)
return retval
def fit_lorentz_bg(x,guess=None,pos_int_override=False,silent=False):
'''
Expand Down Expand Up @@ -131,17 +131,17 @@ def fit_lorentz_bg(x,guess=None,pos_int_override=False,silent=False):
except RuntimeError:
if not silent:
print("Fit failed to converge")
retval = xr.DataArray(data=np.nan,coords=x.coords).to_dataset(name='intensity')
retval['pos'] = xr.DataArray(data=np.nan,coords=x.coords)
retval['width'] = xr.DataArray(data=np.nan,coords=x.coords)
retval['bg'] = xr.DataArray(data=np.nan,coords=x.coords)
retval = xr.full_like(x, np.nan, dtype=float).to_dataset(name='intensity')
retval['pos'] = xr.full_like(x, np.nan, dtype=float)
retval['width'] = xr.full_like(x, np.nan, dtype=float)
retval['bg'] = xr.full_like(x, np.nan, dtype=float)
return retval
if not silent:
print(f"Fit completed, coeff = {coeff}")
retval = xr.DataArray(data=coeff[0],coords=x.coords).to_dataset(name='intensity')
retval['pos'] = xr.DataArray(data=coeff[1],coords=x.coords)
retval['width'] = xr.DataArray(data=coeff[2],coords=x.coords)
retval['bg'] = xr.DataArray(data=coeff[3],coords=x.coords)
retval = xr.full_like(x, coeff[0], dtype=float).to_dataset(name='intensity')
retval['pos'] = xr.full_like(x, coeff[1], dtype=float)
retval['width'] = xr.full_like(x, coeff[2], dtype=float)
retval['bg'] = xr.full_like(x, coeff[3], dtype=float)
return retval

def fit_cos_anisotropy(data,qL,qU,qspacing,Enlist,ChiL,ChiU,binnumber,Chilim):
Expand Down Expand Up @@ -329,4 +329,4 @@ def fit_cos(x_data, y_data):
Ani_unc=0
Chisq=100

return params, Ani, Ani_unc, Chisq
return params, Ani, Ani_unc, Chisq
Loading
Loading