Changeset 2148


Ignore:
Timestamp:
Feb 13, 2016 1:56:05 PM (6 years ago)
Author:
vondreele
Message:

ReadPowderInstprm? modified to handle multibank instprm files. Fails if bank missing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r2147 r2148  
    956956        similar to G2pwdGUI.OnLoad
    957957        If instprm file has multiple banks each with header #Bank n: ..., this
    958         finds matching bank no. to load - rejects nonmatches.
     958        finds matching bank no. to load - problem with nonmatches?
    959959
    960960        :param list instLines: strings from GSAS-II parameter file; can be concatenated with ';'
     
    964964
    965965        '''
    966         if not instLines[0].startswith('#GSAS-II'): # not a valid file
    967             return None
     966        if 'GSAS-II' not in instLines[0]: # not a valid file
     967            return 'Not a valid GSAS-II instprm file'
    968968        newItems = []
    969969        newVals = []
    970970        Found = False
    971         for S in instLines:
     971        il = 0
     972        while il < len(instLines):
     973            S = instLines[il]
    972974            if S[0] == '#':
    973                 continue
     975                if Found:
     976                    break
     977                if 'Bank' in S:
     978                    if bank == int(S.split(':')[0].split()[1]):
     979                        il += 1
     980                        S = instLines[il]
     981                    else:
     982                        il += 1
     983                        S = instLines[il]
     984                        while il < len(instLines) and '#Bank' not in S:
     985                            il += 1
     986                            if il == len(instLines):
     987                                return 'Bank %d not found in .instprm file'%(bank)
     988                            S = instLines[il]
     989                        continue
     990                else:   #a non #Bank file
     991                    il += 1
     992                    S = instLines[il]
     993            Found = True
    974994            S = S.replace(' ','')
    975995            SS = S[:-1].split(';')
     
    9801000                    newVals.append(float(val))
    9811001                except ValueError:
    982                     newVals.append(val)                       
     1002                    newVals.append(val)
     1003            il += 1                       
    9831004        return G2IO.makeInstDict(newItems,newVals,len(newVals)*[False,]),{}
    9841005       
     
    12331254                if Lines is not None:
    12341255                    instParmList = self.ReadPowderInstprm(Lines,bank)    #know Bank - see above
    1235                 if instParmList is not None:
     1256                if 'list' in str(type(instParmList)):
    12361257                    rd.instfile = instfile
    12371258                    rd.instmsg = 'GSAS-II file '+instfile
    12381259                    return instParmList
     1260                else:
     1261                    rd.instmsg = instParmList   #an error message
     1262                    return None
    12391263                Iparm = self.ReadPowderIparm(instfile,bank,numbanks,rd)
    12401264                if Iparm:
Note: See TracChangeset for help on using the changeset viewer.