Skip to content

Commit

Permalink
Checkpointing progress on parsing van corr file. Refs #11289.
Browse files Browse the repository at this point in the history
  • Loading branch information
wdzhou committed Apr 23, 2015
1 parent 331855f commit ca54121
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 13 deletions.
Expand Up @@ -434,7 +434,25 @@ def loadSpicePDData(self, expno, scanno, datafilename):

return



def parseDetEffCorrFile(instrument, vancorrfname):
""" Parse detector efficiency correction file='HB2A
Return :: 2-tuple (table workspace and or
"""
if instrument.upper() == 'HB2A':
vancorrdict, errmsg = hutil.parseDetEffCorrFile(vancorrfname)
if vancorrdict.size() > 0:
detefftablews = self._generateTableWS(vancorrdict)
else:
detefftablews = None
else:
detefftablews = None
errmsg = "Instrument %s is not supported for parsing vanadium (detector efficiency) correction."

return (detefftablews, errmsg)


def parseSpiceData(self, expno, scanno, detefftablews=None):
""" Load SPICE data to MDWorkspaces
"""
Expand Down Expand Up @@ -831,6 +849,19 @@ def stripVanadiumPeaks(self, exp, scan, binparams, vanpeakposlist=None):
return


def _generateTableWS(self, vancorrdict):
""" Create table workspace
"""
tablews = api.CreateEmptyTableWorkspace()
tablews.addColumn('int', 'DetID')
tablews.addColumn('float', 'Correction')

for detid in sorted(vancorrdict.keys()):
tablews.appendRow( [detid, vancorrdict[detid]] )

return tablews


def _getValueFromTable(self, tablews, colname, rowindex=0):
""" Get value from a table workspace
"""
Expand Down
51 changes: 39 additions & 12 deletions Code/Mantid/scripts/HFIRPowderReduction/HfirPDReductionGUI.py
Expand Up @@ -423,20 +423,39 @@ def doLoadData(self):
autowavelength = returnbody[0]
vancorrfname = returnbody[1]
excldetfname = returnbody[2]
raise "Why excldetfname is not a string or None?"
print "Excluded File Name = ", str(excldetfname)
else:
autowavelength = None
vancorrfname = None
excldetfname = None

# Optionally parse det effecient file
if self.ui.checkBox_useDetEffCorr.isChecked():
if self.ui.checkBox_useDetEffCorr.isChecked() is True:
# Apply detector efficiency correction
if vancorrfname is None:
vancorrfname = QtGui.QFileBrowse()
# browse vanadium correction file
filefilter = "Text (*.txt);;Data (*.dat);;All files (*.*)"
curdir = os.getcwd()
vancorrfnames = QtGui.QFileDialog.getOpenFileNames(self, 'Open File(s)', curdir, filefilter)
if len(vancorrfnames) > 0:
vancorrfname = vancorrfnames[0]
self.ui.lineEdit_vcorrFileName.setText(str(vancorrfname))
else:
self._logError("User does not specify any vanadium correction file.")
self.ui.checkBox_useDetEffCorr.setChecked(False)
# ENDIF-len()
# ENDIF vancorrfname

# Parse if it is not None
if vancorrfname is not None:
detefftablews = self._myControl.parseDetEffCorrFile('HB2A', vancorrfname)
else:
detefftablews = None
# ENDIF

self.ui.lineEdit_vcorrFileName.setText(str(vancorrfname))

detefftablews = self._myControl.parseDetEffCorrFile('HB2A', vancorrfname)
else:
# Not chosen to apply detector efficiency correction:w
detefftablews = None
# ENDIF

Expand Down Expand Up @@ -481,15 +500,23 @@ def doLoadData(self):
# Reduce data

# optionally parse det exclusion file
excludedetlist = []
if self.ui.checkBox_useDetExcludeFile.isChecked():
if excldetfname is None:
excldetfname = QtGui.QFileBrowse()

excludedetlist = self._myControl.loadExcludedDetFile('HB2A', excldetfname)
self.ui.lineEdit_excludedDetFileName.setText(excldetfname)
else:
excludedetlist = []
# ENDIF
filefilter = "Text (*.txt);;Data (*.dat);;All files (*.*)"
curdir = os.getcwd()
excldetfnames = QtGui.QFileDialog.getOpenFileNames(slef, 'Open File(s)', curdir, filefilter)
try:
excldetfname = excldetfnames[0]
except IndexError:
self.ui.checkBox_useDetExcludeFile.setChecked(False)
# ENDIF

if excldetfname is not None:
print "Detector exclusion file name is %s." % (excldetfname)
self.ui.lineEdit_excludedDetFileName.setText(excldetfname)
excludedetlist = self._myControl.loadExcludedDetFile('HB2A', excldetfname)
# ENDIF

if itab == 2:
# Get other information
Expand Down
28 changes: 28 additions & 0 deletions Code/Mantid/scripts/HFIRPowderReduction/HfirUtility.py
Expand Up @@ -81,3 +81,31 @@ def makeDetGapFileName(expno):
url = 'http://neutron.ornl.gov/user_data/hb2a/exp%d/Datafiles/%s' % (expno, detgapfilename)

return (detgapfilename, url)


def parseDetEffCorrFile(vancorrfname):
""" Parse HB2A vanadium correction (detector efficiency correction) file
Return :: dictionary : key = det id, value = factor
"""
try:
cfile = open(vancorrfname, 'r')
lines = cfile.readlines()
cfile.close()
except IOError:
return (False, 'Unable to read vanadium correction file %s.'%(vancorrfname))

corrdict = {}
detid = 1
for line in lines:
line = line.strip()
if len(line) == 0 or line[0] == '#':
continue

terms = line.split()
factor = float(terms[0])
corrdict[detid] = factor

detid += 1
# ENDFOR

return corrdict

0 comments on commit ca54121

Please sign in to comment.