\(\renewcommand\AA{\unicode{x212B}}\)

CountReflections v1

../_images/ImageNotFound.png

Enable screenshots using DOCS_SCREENSHOTS in CMake

Summary

Calculates statistics for a PeaksWorkspace based on symmetry and counting reflections.

See Also

PredictPeaks, SortHKL

Properties

Name

Direction

Type

Default

Description

InputWorkspace

Input

PeaksWorkspace

Mandatory

A workspace with peaks to calculate statistics for. Sample with valid UB-matrix is required.

LatticeCentering

Input

string

P

Lattice centering of the cell. Allowed values: [‘P’, ‘C’, ‘A’, ‘B’, ‘I’, ‘F’, ‘Robv’, ‘Rrev’, ‘H’]

PointGroup

Input

string

1

Point group symmetry for completeness and redundancy calculations. Allowed values: [‘-1’, ‘-3’, ‘-3 r’, ‘-31m’, ‘-3m’, ‘-3m r’, ‘-3m1’, ‘-4’, ‘-42m’, ‘-43m’, ‘-4m2’, ‘-6’, ‘-62m’, ‘-6m2’, ‘1’, ‘112’, ‘112/m’, ‘11m’, ‘2’, ‘2/m’, ‘222’, ‘23’, ‘2mm’, ‘3’, ‘3 r’, ‘312’, ‘31m’, ‘32’, ‘32 r’, ‘321’, ‘3m’, ‘3m r’, ‘3m1’, ‘4’, ‘4/m’, ‘4/mmm’, ‘422’, ‘432’, ‘4mm’, ‘6’, ‘6/m’, ‘6/mmm’, ‘622’, ‘6mm’, ‘m’, ‘m-3’, ‘m-3m’, ‘m2m’, ‘mm2’, ‘mmm’]

MinDSpacing

Input

number

1

Minimum d-spacing for completeness calculation.

MaxDSpacing

Input

number

100

Maximum d-spacing for completeness calculation.

UniqueReflections

Output

number

Number of unique reflections in data set.

Completeness

Output

number

Completeness of the data set as a fraction between 0 and 1.

Redundancy

Output

number

Average redundancy in data set, depending on point group.

MultiplyObserved

Output

number

Fraction of reflections with more than one observation.

MissingReflectionsWorkspace

Output

PeaksWorkspace

Reflections in specified d-range that are missing in input workspace.

Description

This algorithm computes some crystallographic data set quality indicators that are based on counting reflections according to their Miller indices HKL. Intensity information is not required for these indicators, so that the algorithm can also be used with predicted data (for example generated by PredictPeaks v1).

According to the specified lattice centering and the resolution boundaries, a set of theoretically measurable reflections is generated. How the reflections are mapped to a set of \(N_{theor.}\) unique reflections depends on the supplied point group. Then the \(N_{observed}\) actually observed peaks from the input workspace are assigned to their respective unique reflection, yielding \(N_{unique}\) observed unique reflections.

From this assignment it is possible to calculate the following indicators:

  • Unique reflections: \(N_{unique}\)

  • Completeness: \(\frac{N_{unique}}{N_{theor.}}\)

  • Redundancy: \(\frac{N_{observed}}{N_{unique}}\)

  • Multiply observed reflections: \(\frac{N_{unique} | N^{hkl}_{observed} > 1}{N_{unique}}\)

Furthermore, the algorithm optionally produces a list of missing reflections. In this list, each missing unique reflection is expanded to all symmetry equivalents according to the point group. For example, if the reflection family \(\{001\}\) was missing with point group \(\bar{1}\), the list would contain \((001)\) and \((00\bar{1})\).

The reason for expanding the unique reflections is to make the list more useful as an input to PredictPeaks v1 again.

Note

This algorithm has some overlap with SortHKL v1, which computes some of the indicators this algorithm calculates, but in addition also evaluates intensity information. SortHKL only works with peaks that carry intensity data while this algorithm also works without intensities.

Usage

The usage example uses the same data as the usage test in SortHKL v1, but produces slightly different data, because some intensities in the input file are 0, so these reflections are ignored by SortHKL v1:

# Load example peak data and find cell
peaks = LoadIsawPeaks(Filename=r'Peaks5637.integrate')

FindUBUsingFFT(peaks, MinD=0.25, MaxD=10, Tolerance=0.2)
SelectCellWithForm(peaks, FormNumber=9, Apply=True, Tolerance=0.15)
OptimizeLatticeForCellType(peaks, CellType='Hexagonal', Apply=True, Tolerance=0.2)

# Run the SortHKL algorithm
unique, completeness, redundancy, multiple = CountReflections(peaks, PointGroup='-3m1',
                                                              LatticeCentering='Robv', MinDSpacing=0.205,
                                                              MaxDSpacing=2.08, MissingReflectionsWorkspace='')

print('Data set statistics:')
print('             Peaks: {0}'.format(peaks.getNumberPeaks()))
print('            Unique: {0}'.format(unique))
print('      Completeness: {0}%'.format(round(completeness * 100, 2)))
print('        Redundancy: {0}'.format(round(redundancy, 2)))
print(' Multiply observed: {0}%'.format(round(multiple*100, 2)))

Output:

Data set statistics:
             Peaks: 434
            Unique: 358
      Completeness: 9.57%
        Redundancy: 1.21
 Multiply observed: 20.67%

The resulting completeness is slightly higher than in the SortHKL case, but for actual statistics it might be better to remove the zero intensity peaks from the workspace prior to running the algorithm.

Categories: AlgorithmIndex | Crystal\Peaks

Source

C++ header: CountReflections.h

C++ source: CountReflections.cpp