Table of Contents
Replaces instances of NaN and infinity in the workspace with user defined numbers. If a replacement value is not provided the check will not occur. This algorithm can also be used to replace numbers whose absolute value is larger than a user-defined threshold.
Name | Direction | Type | Default | Description |
---|---|---|---|---|
InputWorkspace | Input | MatrixWorkspace | Mandatory | The name of the input workspace |
OutputWorkspace | Output | MatrixWorkspace | Mandatory | The name to use for the output workspace (can be the same as the input one). |
NaNValue | Input | number | Optional | The value used to replace occurrances of NaN (default: do not check). |
NaNError | Input | number | 0 | The error value used when replacing a value of NaN |
InfinityValue | Input | number | Optional | The value used to replace occurrances of positive or negative infinity (default: do not check). |
InfinityError | Input | number | 0 | The error value used when replacing a value of infinity |
BigNumberThreshold | Input | number | Optional | The threshold above which a number (positive or negative) should be replaced. (default: do not check) |
BigNumberValue | Input | number | 0 | The value with which to replace occurrances of ‘big’ numbers. |
BigNumberError | Input | number | 0 | The error value used when replacing a ‘big’ number |
The algorithm searches over all of the values in a workspace and if it finds a value set to NaN (not a number), infinity or larger than the ‘big’ threshold given then that value and the associated error is replaced by the user provided values.
If no value is provided for either NaNValue, InfinityValue or BigValueThreshold then the algorithm will exit with an error, as in this case it would not be checking anything.
Algorithm is now event aware.
Example
import numpy as np
ws = CreateSampleWorkspace(BankPixelWidth=1)
yArray = np.array(ws.readY(0))
yArray[0] = 8e80
yArray[1] = float("inf")
yArray[2] = float("-inf")
yArray[3] = float("NaN")
ws.setY(0,yArray)
ws = ReplaceSpecialValues(ws,NaNValue=0,InfinityValue=1000,
BigNumberThreshold=1000, BigNumberValue=1000)
print "i\tBefore\tAfter"
print "-\t------\t-----"
for i in range(4):
print "%i\t%s\t%s" % (i, yArray[i],ws.readY(0)[i])
Output:
i Before After
- ------ -----
0 8e+80 1000.0
1 inf 1000.0
2 -inf 1000.0
3 nan 0.0
Categories: Algorithms | CorrectionFunctions\SpecialCorrections