Ticket #10531 (assigned)
Plot MD should respect correspondent MD axis
| Reported by: | Alex Buts | Owned by: | Owen Arnold |
|---|---|---|---|
| Priority: | major | Milestone: | Backlog |
| Component: | Framework | Keywords: | |
| Cc: | Blocked By: | ||
| Blocking: | Tester: |
Description (last modified by Alex Buts) (diff)
Run two scripts below using data from ftp://ftp.nd.rl.ac.uk/scratch/VATES_Validation/Fe_data.zip to produce 1D MD cut.
Right click on the cut to look a the result.
The X-axis of the result presented on the right side make no sense and should look like the one plotted on the left side of the image provided (at least showing the axis numbers, caption is the separate issue)
Script 1 Generate data:
import os
#
data_path=os.path.dirname(os.path.realpath(__file__))
config.appendDataSearchDir(data_path)
config['defaultsave.directory']=data_path
# set up target ws name and remove target workspace with the same name which can occasionally exist.
# list of MD files (workspaces) to combine into target MD workspace
MD_FilesList='';
# define convetr to MD parameters
pars = dict();
pars['InputWorkspace']=''
pars['QDimensions']='Q3D'
pars['dEAnalysisMode']='Direct'
pars['Q3DFrames']='HKL'
pars['QConversionScales']='HKL'
pars['PreprocDetectorsWS']='preprDetMantid'
pars['MinValues']='-3,-3,-3,-40.0'
pars['MaxValues']='7,7,3,380.0'
pars['SplitInto']=50
pars['MaxRecursionDepth']=1
pars['MinRecursionDepth']=1
pars['OverwriteExisting']=1 # Change this to false, if the files should/can be added in memory
# test script combines all contributed files in memory
pars['OverwriteExisting']=0 # Change this to false, if the files should/can be added in memory
#
#---> Start loop over contributing files
psi=range(0,90,2)
#psi=range(0,4,2)
for n in range(len(psi)):
source_file = 'map'+str(15052+n)+'_ei400.nxspe'; # redefine source files list as function of loop number
target = 'MDMAP_psi'+str(n*2)+'.nxs';
# check if the file already been converted to MD and is there
if not(os.path.exists(target )):
print 'Converting ',source_file
current_ws=LoadNXSPE(Filename=source_file)
#### For the sample script, simulate load operation above
#current_ws = CreateSimulationWorkspace(Instrument='MAP',BinParams=[-3,1,3],UnitX='DeltaE',OutputWorkspace=source_file)
AddSampleLog(Workspace=current_ws,LogName='Ei',LogText='400.0',LogType='Number')
#### Add iformation which is not stored in the nxspe file
# Add UB matrix (lattice and the beam direction)
SetUB(Workspace=current_ws,a='2.87',b='2.87',c='2.87',u='1,0,0',v='0,1,0')
# Add crystal rotation (assume rotation abgle Psi=5*n where n is file number. Define list of angles if this is not correct
AddSampleLog(Workspace=current_ws,LogName='Psi',LogText=str(psi[n])+'.',LogType='Number') # --correct Psi value may be already in nxspe file. This operation is then unnecessary
# set crystal rotation
SetGoniometer(Workspace=current_ws,Axis0='Psi,0,1,0,1')
# Convert to MD
pars['InputWorkspace']=current_ws;
md_ws=ConvertToMD(**pars)
# save MD for further usage -- disabled in test script
SaveMD(md_ws,Filename=target);
DeleteWorkspace(md_ws); # delete intermediate workspace to save memory
DeleteWorkspace(current_ws);
# add the file name of the file to combine
if (len(MD_FilesList) == 0):
MD_FilesList = target;
else:
MD_FilesList=MD_FilesList+','+target;
#---> End loop
print(MD_FilesList)
# merge md files into file-based MD workspace
md_ws = MergeMDFiles(MD_FilesList,OutputFilename='TestSQW_1.nxs',Parallel='0');
# plot results using sliceviewer
#plotSlice(md_ws)
# produce some test output
#print "Resulting MD workspace contains {0} events and {1} dimensions".format(md_ws.getNEvents(),md_ws.getNumDims())
#print "MD workspace ID is:\n",md_ws.id
print "--------------------------------------------"
Script 2 make 1D cut.
import os
#
data_path=os.path.dirname(os.path.realpath(__file__))
config.appendDataSearchDir(data_path)
config['defaultsave.directory']=data_path
if 'md_ws' in mtd:
md_ws=mtd['md_ws'];
else:
md_ws=LoadMD(Filename='TestSQW_1.nxs');
cut2_MD=SliceMD(InputWorkspace='md_ws', AxisAligned=False, NormalizeBasisVectors=False,\
BasisVector0='[h:k:0],rlu,1,1,0,0', BasisVector1='dE,mEv,0,0,0,1', BasisVector2='[mh:k:0],rlu,-1,1,0,0', BasisVector3='l,rlu,0,0,1,0', OutputExtents='-3,3,0,280,-1.1,-0.9,-0.1,0.1', OutputBins='120,70,1,1')
cut1_1D=BinMD(cut2_MD,AxisAligned=True,AlignedDim0='[h:k:0],-3,3,120',AlignedDim1='dE,100,110,1')
Attachments
Change History
Changed 6 years ago by Alex Buts
- Attachment plotMD_bug.png added
Note: See
TracTickets for help on using
tickets.

Error in plot MD and how it should look like