Changeset 1236 for trunk/GSASIIIO.py


Ignore:
Timestamp:
Mar 5, 2014 1:51:53 PM (8 years ago)
Author:
toby
Message:

Add FXYE & XYE exporters; allow multiple powder exports; fix formatting of float32 intensities (which should be gone); minor sequential refinement changes; remove old export patterns items; new padded format routine

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIIO.py

    r1228 r1236  
    10351035    G2frame.PatternId = Id
    10361036           
    1037 def powderFxyeSave(G2frame,exports,powderfile):
    1038     'Save a powder histogram as a GSAS FXYE file'
    1039     head,tail = ospath.split(powderfile)
    1040     name,ext = tail.split('.')
    1041     for i,export in enumerate(exports):
    1042         filename = ospath.join(head,name+'-%03d.'%(i)+ext)
    1043         prmname = filename.strip(ext)+'prm'
    1044         prm = open(prmname,'w')      #old style GSAS parm file
    1045         PickId = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, export)
    1046         Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame, \
    1047             PickId, 'Instrument Parameters'))[0]
    1048         prm.write( '            123456789012345678901234567890123456789012345678901234567890        '+'\n')
    1049         prm.write( 'INS   BANK      1                                                               '+'\n')
    1050         prm.write(('INS   HTYPE   %sR                                                              '+'\n')%(Inst['Type'][0]))
    1051         if 'Lam1' in Inst:              #Ka1 & Ka2
    1052             prm.write(('INS  1 ICONS%10.7f%10.7f    0.0000               0.990    0     0.500   '+'\n')%(Inst['Lam1'][0],Inst['Lam2'][0]))
    1053         elif 'Lam' in Inst:             #single wavelength
    1054             prm.write(('INS  1 ICONS%10.7f%10.7f    0.0000               0.990    0     0.500   '+'\n')%(Inst['Lam'][1],0.0))
    1055         prm.write( 'INS  1 IRAD     0                                                               '+'\n')
    1056         prm.write( 'INS  1I HEAD                                                                    '+'\n')
    1057         prm.write( 'INS  1I ITYP    0    0.0000  180.0000         1                                 '+'\n')
    1058         prm.write(('INS  1DETAZM%10.3f                                                          '+'\n')%(Inst['Azimuth'][0]))
    1059         prm.write( 'INS  1PRCF1     3    8   0.00100                                                '+'\n')
    1060         prm.write(('INS  1PRCF11     %15.6g%15.6g%15.6g%15.6g   '+'\n')%(Inst['U'][1],Inst['V'][1],Inst['W'][1],0.0))
    1061         prm.write(('INS  1PRCF12     %15.6g%15.6g%15.6g%15.6g   '+'\n')%(Inst['X'][1],Inst['Y'][1],Inst['SH/L'][1]/2.,Inst['SH/L'][1]/2.))
    1062         prm.close()
    1063         file = open(filename,'w')
    1064         print 'save powder pattern to file: ',filename
    1065         x,y,w,yc,yb,yd = G2frame.PatternTree.GetItemPyData(PickId)[1]
    1066         file.write(powderfile+'\n')
    1067         file.write('Instrument parameter file:'+ospath.split(prmname)[1]+'\n')
    1068         file.write('BANK 1 %d %d CONS %.2f %.2f 0 0 FXYE\n'%(len(x),len(x),\
    1069             100.*x[0],100.*(x[1]-x[0])))
    1070         s = list(np.sqrt(1./np.array(w)))       
    1071         XYW = zip(x,y,s)
    1072         for X,Y,S in XYW:
    1073             file.write("%15.6g %15.6g %15.6g\n" % (100.*X,Y,max(S,1.0)))
    1074         file.close()
    1075         print 'powder pattern file '+filename+' written'
     1037# def powderFxyeSave(G2frame,exports,powderfile):
     1038#     'Save a powder histogram as a GSAS FXYE file'
     1039#     head,tail = ospath.split(powderfile)
     1040#     name,ext = tail.split('.')
     1041#     for i,export in enumerate(exports):
     1042#         filename = ospath.join(head,name+'-%03d.'%(i)+ext)
     1043#         prmname = filename.strip(ext)+'prm'
     1044#         prm = open(prmname,'w')      #old style GSAS parm file
     1045#         PickId = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, export)
     1046#         Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame, \
     1047#             PickId, 'Instrument Parameters'))[0]
     1048#         prm.write( '            123456789012345678901234567890123456789012345678901234567890        '+'\n')
     1049#         prm.write( 'INS   BANK      1                                                               '+'\n')
     1050#         prm.write(('INS   HTYPE   %sR                                                              '+'\n')%(Inst['Type'][0]))
     1051#         if 'Lam1' in Inst:              #Ka1 & Ka2
     1052#             prm.write(('INS  1 ICONS%10.7f%10.7f    0.0000               0.990    0     0.500   '+'\n')%(Inst['Lam1'][0],Inst['Lam2'][0]))
     1053#         elif 'Lam' in Inst:             #single wavelength
     1054#             prm.write(('INS  1 ICONS%10.7f%10.7f    0.0000               0.990    0     0.500   '+'\n')%(Inst['Lam'][1],0.0))
     1055#         prm.write( 'INS  1 IRAD     0                                                               '+'\n')
     1056#         prm.write( 'INS  1I HEAD                                                                    '+'\n')
     1057#         prm.write( 'INS  1I ITYP    0    0.0000  180.0000         1                                 '+'\n')
     1058#         prm.write(('INS  1DETAZM%10.3f                                                          '+'\n')%(Inst['Azimuth'][0]))
     1059#         prm.write( 'INS  1PRCF1     3    8   0.00100                                                '+'\n')
     1060#         prm.write(('INS  1PRCF11     %15.6g%15.6g%15.6g%15.6g   '+'\n')%(Inst['U'][1],Inst['V'][1],Inst['W'][1],0.0))
     1061#         prm.write(('INS  1PRCF12     %15.6g%15.6g%15.6g%15.6g   '+'\n')%(Inst['X'][1],Inst['Y'][1],Inst['SH/L'][1]/2.,Inst['SH/L'][1]/2.))
     1062#         prm.close()
     1063#         file = open(filename,'w')
     1064#         print 'save powder pattern to file: ',filename
     1065#         x,y,w,yc,yb,yd = G2frame.PatternTree.GetItemPyData(PickId)[1]
     1066#         file.write(powderfile+'\n')
     1067#         file.write('Instrument parameter file:'+ospath.split(prmname)[1]+'\n')
     1068#         file.write('BANK 1 %d %d CONS %.2f %.2f 0 0 FXYE\n'%(len(x),len(x),\
     1069#             100.*x[0],100.*(x[1]-x[0])))
     1070#         s = list(np.sqrt(1./np.array(w)))       
     1071#         XYW = zip(x,y,s)
     1072#         for X,Y,S in XYW:
     1073#             file.write("%15.6g %15.6g %15.6g\n" % (100.*X,Y,max(S,1.0)))
     1074#         file.close()
     1075#         print 'powder pattern file '+filename+' written'
    10761076       
    1077 def powderXyeSave(G2frame,exports,powderfile):
    1078     'Save a powder histogram as a Topas XYE file'
    1079     head,tail = ospath.split(powderfile)
    1080     name,ext = tail.split('.')
    1081     for i,export in enumerate(exports):
    1082         filename = ospath.join(head,name+'-%03d.'%(i)+ext)
    1083         PickId = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, export)
    1084         file = open(filename,'w')
    1085         file.write('#%s\n'%(export))
    1086         print 'save powder pattern to file: ',filename
    1087         x,y,w,yc,yb,yd = G2frame.PatternTree.GetItemPyData(PickId)[1]
    1088         s = list(np.sqrt(1./np.array(w)))       
    1089         XYW = zip(x,y,s)
    1090         for X,Y,W in XYW:
    1091             file.write("%15.6g %15.6g %15.6g\n" % (X,Y,W))
    1092         file.close()
    1093         print 'powder pattern file '+filename+' written'
     1077# def powderXyeSave(G2frame,exports,powderfile):
     1078#     'Save a powder histogram as a Topas XYE file'
     1079#     head,tail = ospath.split(powderfile)
     1080#     name,ext = tail.split('.')
     1081#     for i,export in enumerate(exports):
     1082#         filename = ospath.join(head,name+'-%03d.'%(i)+ext)
     1083#         PickId = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, export)
     1084#         file = open(filename,'w')
     1085#         file.write('#%s\n'%(export))
     1086#         print 'save powder pattern to file: ',filename
     1087#         x,y,w,yc,yb,yd = G2frame.PatternTree.GetItemPyData(PickId)[1]
     1088#         s = list(np.sqrt(1./np.array(w)))       
     1089#         XYW = zip(x,y,s)
     1090#         for X,Y,W in XYW:
     1091#             file.write("%15.6g %15.6g %15.6g\n" % (X,Y,W))
     1092#         file.close()
     1093#         print 'powder pattern file '+filename+' written'
    10941094       
    10951095def PDFSave(G2frame,exports):
     
    17741774                                            extensionlist,
    17751775                                            strictExtension)
     1776        self.clockWd = None  # used in TOF
    17761777        self.ReInitialize()
    17771778       
     
    17931794        self.Sample = G2pdG.SetDefaultSample()
    17941795        self.GSAS = None     # used in TOF
    1795         self.clockWd = None  # used in TOF
    17961796        self.repeat_instparm = True # Should a parm file be
    17971797        #                             used for multiple histograms?
    1798         self.instparm = None # name hint
     1798        self.instparm = None # name hint from file of instparm to use
    17991799        self.instfile = '' # full path name to instrument parameter file
    18001800        self.instbank = '' # inst parm bank number
     
    18771877        if event:
    18781878            self.currentExportType = self.G2frame.ExportLookup.get(event.Id)
     1879
     1880    def MakePWDRfilename(self,hist):
     1881        '''Make a filename root (no extension) from a PWDR histogram name
     1882
     1883        :param str hist: the histogram name in data tree (starts with "PWDR ")
     1884        '''
     1885        file0 = ''
     1886        file1 = hist[5:]
     1887        # replace repeated blanks
     1888        while file1 != file0:
     1889            file0 = file1
     1890            file1 = file0.replace('  ',' ').strip()
     1891        file0 = file1.replace('Azm= ','A')
     1892        # if angle has unneeded decimal places on aziumuth, remove them
     1893        if file0[-3:] == '.00': file0 = file0[:-3]
     1894        file0 = file0.replace('.','_')
     1895        file0 = file0.replace(' ','_')
     1896        return file0
    18791897
    18801898    def ExportSelect(self,AskFile=True):
Note: See TracChangeset for help on using the changeset viewer.