\(\renewcommand\AA{\unicode{x212B}}\)
SaveP2D v1¶
Summary¶
The algorithm used to create a multidimensional ‘.p2d’ file from a 2D workspace.
See Also¶
Properties¶
| Name | Direction | Type | Default | Description | 
|---|---|---|---|---|
| Workspace | Input | Mandatory | Workspace that should be used. | |
| OutputFile | Input | string | Mandatory | Output File for “.p2d” Data. | 
| RemoveNaN | Input | boolean | True | Remove DataPoints with NaN as intensity value | 
| RemoveNegatives | Input | boolean | True | Remove data points with negative intensity values | 
| CutData | Input | boolean | False | Use the following inputs to limit data in Theta, lambda, d and dp | 
| TthMin | Input | long | 50 | Minimum for tth values | 
| TthMax | Input | long | 120 | Maximum for tth values | 
| LambdaMin | Input | number | 0.3 | Minimum for lambda values | 
| LambdaMax | Input | number | 1.1 | Maximum for lambda values | 
| DMin | Input | number | 0.11 | Minimum for d values | 
| DMax | Input | number | 1.37 | Maximum for d values | 
| DpMin | Input | number | 0.48 | Minimum for dp values | 
| DpMax | Input | number | 1.76 | Maximum for dp values | 
Description¶
Input¶
This algorithm can be used to create a powder pattern 2d (“.p2d”) output file as useable for
multidimensional Rietveld refinements.
The input for this algorithm needs to be a 2D workspace containing information about dSpacing and
dSpacingPerpendicular. A 2D workspace can be created using the Bin2DPowderDiffraction algorithm.
The input values removeNaN and removeNegatives control whether intensity values that are negative
or NaN, respectively, are automatically removed from the dataset.
RemoveNegatives also removes intensities equal to zero.
Turning cutDdata on, allows to cut the measuring data to the specified ranges of
theta, lambda, dSpacing and dSpacingPerpendicular.
Output¶
The output file contains a short comment header giving the title, the instrument parameter file, the binning parameters of the workspace and the used instrument/detector bank. Thereafter the measuring data is written into 5 columns, namely, 2theta, lambda, dSpacing, dSpacingPerpendicular and intensity.
Usage¶
Example: Create a “.p2d” file from a 2D Workspace. Remember to change the Filepath for the OutputFile!
    # create a 2D Workspace
# repeat this block for each spectrum
xData = [1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0]                    # d values for one spectrum (one dPerpendicular value)
yData = ['1','2','3','4']                                                # dPerpendicular binedges
zData = [1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]                    # intensity values
eData = [1,1,1,1,1,1,1,1,1]                              # error values
# used to join all spectra
xDataTotal = []                                                              # d Values for all spectra
zDataTotal = []                                                              # intensity values for all spectra
eDataTotal = []                                          # error values for all spectra
nSpec = len(yData)-1                                     # number of spectra
# Create d and intensity lists for workspace
for i in range(0,nSpec):
    xDataTotal.extend(xData)           # extends the list of x values in accordance to the number of spectra used
    zDataTotal.extend(zData)           # extends the list of intensity values in accordance to the number of spectra used
    eDataTotal.extend(eData)       # extends the list of error values in accordance to the number of spectra used
# Create a 2D Workspace containing d and dPerpendicular values with intensities
CreateWorkspace(OutputWorkspace = 'Usage_Example', DataX = xDataTotal, DataY = zDataTotal, DataE = eDataTotal, WorkspaceTitle = 'test', NSpec = nSpec, UnitX = 'dSpacing', VerticalAxisUnit = 'dSpacingPerpendicular', VerticalAxisValues = yData)
# Save to the users home directory
file_name = "Usage_Example"
path = os.path.join(os.path.expanduser("~"), file_name)
# Create a .p2d file containing the testdata
SaveP2D(Workspace = "Usage_Example", OutputFile = path, RemoveNaN = False, RemoveNegatives = False, CutData = False)
# Does the file exist? If it exists, print it!
path = os.path.join(os.path.expanduser("~"), file_name + '.p2d')
if os.path.isfile(path):
    with open(path, 'r') as of:
        data = of.readlines()
    for entry in data:
        print(entry[:-1]) # leave out the last character to remove unnecessary newlines
Output: The resulting output file (Usage_Example.p2d) looks like this(2theta and lambda get calculated in the algorithm):
 Exporting: ...
    0%
   33%
   67%
 Exported: ...
 #Title: test
 #Inst: .prm
 #Binning: ddperp   0.8888889    1.0000000
 #Bank: 1
 #2theta   lambda   d-value   dp-value   counts
   81.3046911      1.3029352      1.0000000      1.5000000      1.0000000
   42.5730378      1.4521280      2.0000000      1.5000000      1.0000000
   28.5401669      1.4789581      3.0000000      1.5000000      1.0000000
   21.4420009      1.4882141      4.0000000      1.5000000      1.0000000
   17.1666094      1.4924723      5.0000000      1.5000000      1.0000000
   14.3112545      1.4947782      6.0000000      1.5000000      1.0000000
   12.2697184      1.4961662      7.0000000      1.5000000      1.0000000
   10.7376523      1.4970660      8.0000000      1.5000000      1.0000000
    9.5455787      1.4976825      9.0000000      1.5000000      1.0000000
  147.7039064      1.9210925      1.0000000      2.5000000      1.0000000
   74.0366222      2.4082809      2.0000000      2.5000000      1.0000000
   48.4687709      2.4628222      3.0000000      2.5000000      1.0000000
   36.1141714      2.4797153      4.0000000      2.5000000      1.0000000
   28.8035116      2.4871957      5.0000000      2.5000000      1.0000000
   23.9632304      2.4911738      6.0000000      2.5000000      1.0000000
   20.5194188      2.4935442      7.0000000      2.5000000      1.0000000
   17.9428625      2.4950714      8.0000000      2.5000000      1.0000000
   15.9421282      2.4961135      9.0000000      2.5000000      1.0000000
  178.1486860      1.9997390      1.0000000      3.5000000      1.0000000
  112.5838945      3.3275045      2.0000000      3.5000000      1.0000000
   70.0240404      3.4424897      3.0000000      3.5000000      1.0000000
   51.4130764      3.4700953      4.0000000      3.5000000      1.0000000
   40.7483187      3.4814929      5.0000000      3.5000000      1.0000000
   33.7894761      3.4873718      6.0000000      3.5000000      1.0000000
   28.8774112      3.4908181      7.0000000      3.5000000      1.0000000
   25.2199975      3.4930167      8.0000000      3.5000000      1.0000000
   22.3888960      3.4945073      9.0000000      3.5000000      1.0000000
Categories: AlgorithmIndex | Diffraction\DataHandling
Source¶
Python: SaveP2D.py