Changeset 403 for trunk/GSASIIstruct.py


Ignore:
Timestamp:
Oct 27, 2011 4:34:28 PM (11 years ago)
Author:
vondreele
Message:

speedup GetUsedHistogramsAndPhases?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIstruct.py

    r400 r403  
    109109    return datus[1]
    110110   
     111def GetHistograms(GPXfile,hNames):
     112    """ Returns a dictionary of histograms found in GSASII gpx file
     113    input:
     114        GPXfile = .gpx full file name
     115        hNames = list of histogram names
     116    return:
     117        Histograms = dictionary of histograms (types = PWDR & HKLF)
     118    """
     119    file = open(GPXfile,'rb')
     120    Histograms = {}
     121    while True:
     122        try:
     123            data = cPickle.load(file)
     124        except EOFError:
     125            break
     126        datum = data[0]
     127        hist = datum[0]
     128        if hist in hNames:
     129            if 'PWDR' in hist[:4]:
     130                PWDRdata = {}
     131                PWDRdata['Data'] = datum[1][1]          #powder data arrays
     132                PWDRdata[data[2][0]] = data[2][1]       #Limits
     133                PWDRdata[data[3][0]] = data[3][1]       #Background
     134                PWDRdata[data[4][0]] = data[4][1]       #Instrument parameters
     135                PWDRdata[data[5][0]] = data[5][1]       #Sample parameters
     136                try:
     137                    PWDRdata[data[9][0]] = data[9][1]       #Reflection lists might be missing
     138                except IndexError:
     139                    PWDRdata['Reflection lists'] = {}
     140   
     141                Histograms[hist] = PWDRdata
     142            elif 'HKLF' in hist[:4]:
     143                HKLFdata = []
     144                datum = data[0]
     145                HKLFdata = datum[1:][0]
     146                Histograms[hist] = HKLFdata           
     147    file.close()
     148    return Histograms
     149   
    111150def GetHistogramNames(GPXfile,hType):
    112151    """ Returns a list of histogram names found in GSASII gpx file
     
    141180    phaseNames = GetPhaseNames(GPXfile)
    142181    histoList = GetHistogramNames(GPXfile,['PWDR','HKLF'])
     182    allHistograms = GetHistograms(GPXfile,histoList)
    143183    phaseData = {}
    144184    for name in phaseNames:
     
    155195            for hist in Phase['Histograms']:
    156196                if hist not in Histograms:
    157                     if 'PWDR' in hist[:4]:
    158                         Histograms[hist] = GetPWDRdata(GPXfile,hist)
    159                     elif 'HKLF' in hist[:4]:
    160                         Histograms[hist] = GetHKLFdata(GPXfile,hist)
     197                    Histograms[hist] = allHistograms[hist]
    161198                    #future restraint, etc. histograms here           
    162199                    hId = histoList.index(hist)
Note: See TracChangeset for help on using the changeset viewer.