TransformHKL v1¶
Summary¶
Specify a 3x3 matrix to apply to (HKL) vectors as a list of 9 comma separated numbers. Both the UB and HKL values will be updated
See Also¶
Properties¶
Name |
Direction |
Type |
Default |
Description |
---|---|---|---|---|
PeaksWorkspace |
InOut |
IPeaksWorkspace |
Mandatory |
Input Peaks Workspace |
Tolerance |
Input |
number |
0.15 |
Indexing Tolerance (0.15) |
HKLTransform |
Input |
dbl list |
1,0,0,0,1,0,0,0,1 |
Specify 3x3 HKL transform matrix as a comma separated list of 9 numbers |
FindError |
Input |
boolean |
True |
Whether to obtain the error in the lattice parameters. Set this to false if there are not enough peaks to do an optimization |
NumIndexed |
Output |
number |
Gets set with the number of indexed peaks. |
|
AverageError |
Output |
number |
Gets set with the average HKL indexing error. |
Description¶
Given a PeaksWorkspace with a UB matrix stored with
the sample, this algorithm will accept a 3x3 transformation matrix
Usage¶
Example:
ws=LoadIsawPeaks("TOPAZ_3007.peaks")
FindUBUsingFFT(ws,MinD=8.0,MaxD=13.0)
print("Before Transformation:")
print(ws.sample().getOrientedLattice().getUB())
#This HKLTransform is a matrix that will swap H and K and negate L
TransformHKL(ws,HKLTransform="0,1,0,1,0,0,0,0,-1")
print("\nAfter Transformation:")
print(ws.sample().getOrientedLattice().getUB())
Output:
Before Transformation:
[[ 0.01223576 0.00480107 0.08604016]
[-0.11654506 0.00178069 -0.00458823]
[-0.02737294 -0.08973552 -0.02525994]]
After Transformation:
[[ 0.00480107 0.01223576 -0.08604016]
[ 0.00178069 -0.11654506 0.00458823]
[-0.08973552 -0.02737294 0.02525994]]
Example - skipping error calculation
In special cases, users may not have enough peaks to find the error. For example, if peaks are constrained to two dimensions in HKL space, the error calculation will fail. In this case, FindError=False can be specified to skip the calculation. In this case, the lattice parameter error will be set to zero.
ws = CreatePeaksWorkspace(OutputType='LeanElasticPeak', NumberOfPeaks=0)
SetUB(ws, 5, 6, 7, 90, 90, 120)
ws.addPeak(ws.createPeakHKL([1, 2, 0]))
ws.addPeak(ws.createPeakHKL([0, 0, 3]))
TransformHKL(ws, tolerance=0.15, HKLTransform='0,1,0,1,0,0,0,0,-1', FindError=False)
print('peak(0) = ', ws.getPeak(0).getHKL())
print('peak(1) = ', ws.getPeak(1).getHKL())
ol = ws.sample().getOrientedLattice()
print('ea = ', ol.errora())
print('eb = ', ol.errorb())
print('ec = ', ol.errorc())
print('ealpha = ', ol.erroralpha())
print('ebeta = ', ol.errorbeta())
print('egamma = ', ol.errorgamma())
gives
peak(0) = [2,1,0]
peak(1) = [0,0,-3]
ea = 0.0
eb = 0.0
ec = 0.0
ealpha = 0.0
ebeta = 0.0
egamma = 0.0
Categories: AlgorithmIndex | Crystal\Peaks
Source¶
C++ header: TransformHKL.h
C++ source: TransformHKL.cpp