MatrixWithCoords

This class is created to define intensity maps, for which the coordinates for the pixels in the map need to be defined.

d : the actual intensity map

xc, yc : 1d arrays that define the x and y coordinates of the intensity map

xc_label, yc_label : axis lables for the intensity map

datatype : type of the data (e.g. detector raw image, \(I(q, \phi)\) map, ...), which must be of type Enum DataType. This is useful when plotting the intensity map, so that the correct coordinates can be displayed.

conv(self, Nx1, Ny1, xc1, yc1, mask=None, cor_factor=1, datatype=DataType.det) convert the intensity map to new coordinates xc1, yc1. Masked pixels are omitted.

line_cut(self, x0, y0, ang, lT, lN, nT, nN, mask=None) return a line cut from the intensity map. Masked pixels are omitted.

copy(): create a deep copy of the object

expand(): exapnd the coordinates for the intensity map, e.g. in preparation for merging

merge(): merge two or more maps with the same axis labels

plot(): plot the intensity map

roi(): return a smaller map within the specified range

val(): return the integrated intensity within the specified range

flatten(): collapse the intensity map onto the apecified axis and returns an intensity profile

average(): average multiple intensity maps together

bkg_cor(): perform background subtraction with the specified scaling factor.

fill_gap() and apply_symmetry(): attempt to exapnd the intensity map coverage


Data2d

Generic scattering data. Multiple representations can exist: data (raw detector image), qrqz_data ( \(q_r - q_z\) map, grazing incidence), and qphi_data ( \(q - \phi\) map).

exp : the ExpPara for the scattering data.

label : by default this is set to the name of the data file. But it could be set when the instance is initilized.

uid, timestamp : optional information. They are extracted from the data file for Pilatus data collected at NSLS-II.

conv_Iq(self, qgrid, mask=None, cor_factor=1): convert the 2D scattering data into a 1D scattering intensity profile.

conv_Iqphi() and conv_Iqrqz(): generate the \(I(q, \phi)\) and \(I(q_r, q_z)\) map of the scattering data.


Axes2dPlot

This class displays 2D scattering data in a matplotlib Axes. It captures mouse clicks to display the reciprocal coordinates at the clicked pixel, and can overlay decorations (lines and symbols at specified reciprocal coordinates) onto the scattering data.

ax, cmap : parameters used by matplotlib to plot the sample

d2, exp : the scattering data and its ExpPara.

mark_points() , mark_coords() and mark_standard() generate the decorations (points, lines/grids with the given coordinates, and powder rings expected from standard samples) to be overlaid onto the scattering pattern. Refer to the Examples section.

plot(): plot the data.


Data1d

trans is the (relative) value of the transmitted intensity, which is used as a reference for normlization during background subtraction. Two modes are allowed (defined as members of the Enum transMode ) : external or from_waxs. For transMode.external , the trans value must be specified explicitly. For transMode.from_waxs, the trans value is calculated from the water scattering peak intensty near \(2.0 \unicode{x212B}^{-1}\) .

load_from_2D() populates the atrtibutes of the instance based on the input data, which can be a Data2d object, a data file, or a numpy array, and the specified ExpPara. The azimuthally averaged 1D data is generated using Data2d.conv_Iq(), after applying the polorization and solid angle corrections. The error bar is the standard deviation of intensity in all pixels that belong to the same q value.

merge(): merge data with another Data1d object. Within the overlapping q-range, the scattering intensity is averaged and the original data are saved can could be displayed later.

avg(): perform averaging with the given set of Data1d objects.

bkg_cor(): perform background subtraction, based on the trans value, optionally with a scaling factor. For solution scattering, this scaling factor could be estiamted using py4xs.slnxs.estiamte_scaling_factor().

plot(): plot the data, in a given matplotlib Axes if specified.

save(): export the data into a text file in a 3-column format (q, intensity, error bar).

plot_Guinier(): plot \(ln[I(q)]\) vs \(q^2\) (Guinier plot) and report \(I_0\) and \(R_g\) .