Changeset 249 for trunk/GSASIIIO.py


Ignore:
Timestamp:
Feb 18, 2011 3:36:51 PM (11 years ago)
Author:
vondreele
Message:

Modify export powder & delete data to allow global selections
make sure azimuth goes with pattern
refactor powderXyeSave & powderFxyeSave

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIIO.py

    r246 r249  
    802802        parms[10] = azm
    803803        Y = self.Integrate[0][i]
    804         W = np.sqrt(Y)
     804        W = 1./Y                    #probably not true
    805805        Sample = {'Scale':[1.0,True],'Type':'Debye-Scherrer','Absorption':[0.0,False],'DisplaceX':[0.0,False],
    806806            'DisplaceY':[0.0,False],'Diffuse':[],'Temperature':300.,'Pressure':1.0,'Humidity':0.0,'Voltage':0.0,'Force':0.0}
     
    828828    self.PatternId = Id
    829829           
    830 def powderFxyeSave(self,powderfile):
    831     file = open(powderfile,'w')
    832     prm = open(powderfile.strip('fxye')+'prm','w')      #old style GSAS parm file
    833     print 'save powder pattern to file: ',powderfile
     830def powderFxyeSave(self,exports,powderfile):
     831    head,tail = ospath.split(powderfile)
     832    name,ext = tail.split('.')
    834833    wx.BeginBusyCursor()
    835     Inst = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self, \
    836                     self.PickId, 'Instrument Parameters'))[1]
    837     if len(Inst) == 11:             #single wavelength
    838         lam1 = Inst[1]
    839         lam2 = 0.0
    840         GU,GV,GW = Inst[4:7]
    841         LX,LY = Inst[7:9]
    842         SL = HL = Inst[9]/2.0   
    843     else:                           #Ka1 & Ka2
    844         lam1 = Inst[1]
    845         lam2 = Inst[2]
    846         GU,GV,GW = Inst[6:9]
    847         LX,LY = Inst[9:11]
    848         SL = HL = Inst[11]/2.0   
    849     prm.write( '            123456789012345678901234567890123456789012345678901234567890        '+'\n')
    850     prm.write( 'INS   BANK      1                                                               '+'\n')
    851     prm.write( 'INS   HTYPE   PXCR                                                              '+'\n')
    852     prm.write(('INS  1 ICONS%10.7f%10.7f    0.0000               0.990    0     0.500   '+'\n')%(lam1,lam2))
    853     prm.write( 'INS  1 IRAD     0                                                               '+'\n')
    854     prm.write( 'INS  1I HEAD                                                                    '+'\n')
    855     prm.write( 'INS  1I ITYP    0    0.0000  180.0000         1                                 '+'\n')
    856     prm.write( 'INS  1PRCF1     3    8   0.00100                                                '+'\n')
    857     prm.write(('INS  1PRCF11     %15.6g%15.6g%15.6g%15.6g   '+'\n')%(GU,GV,GW,0.0))
    858     prm.write(('INS  1PRCF12     %15.6g%15.6g%15.6g%15.6g   '+'\n')%(LX,LY,SL,HL))
    859     prm.close()
    860     try:
    861         x,y,w,yc,yb,yd = self.PatternTree.GetItemPyData(self.PickId)[1]
    862         file.write(powderfile+'\n')
    863         file.write('BANK 1 %d %d CONS %.2f %.2f 0 0 FXYE\n'%(len(x),len(x),\
    864             100.*x[0],100.*(x[1]-x[0])))
    865         s = list(np.sqrt(1./np.array(w)))       
    866         XYW = zip(x,y,s)
    867         for X,Y,S in XYW:
    868             file.write("%15.6g %15.6g %15.6g\n" % (100.*X,Y,S))
    869         file.close()
    870     finally:
    871         wx.EndBusyCursor()
    872     print 'powder pattern file written'
     834    for i,export in enumerate(exports):
     835        filename = ospath.join(head,name+'-%03d.'%(i)+ext)
     836        prmname = filename.strip(ext)+'prm'
     837        prm = open(prmname,'w')      #old style GSAS parm file
     838        PickId = G2gd.GetPatternTreeItemId(self, self.root, export)
     839        Values,Names = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self, \
     840            PickId, 'Instrument Parameters'))[1::2]     #get values & names
     841        Inst = dict(zip(Names,Values))
     842        print Inst['Type']
     843        prm.write( '            123456789012345678901234567890123456789012345678901234567890        '+'\n')
     844        prm.write( 'INS   BANK      1                                                               '+'\n')
     845        prm.write(('INS   HTYPE   %sR                                                              '+'\n')%(Inst['Type']))
     846        if 'Lam1' in Inst:              #Ka1 & Ka2
     847            prm.write(('INS  1 ICONS%10.7f%10.7f    0.0000               0.990    0     0.500   '+'\n')%(Inst['Lam1'],Inst['Lam2']))
     848        elif 'Lam' in Inst:             #single wavelength
     849            prm.write(('INS  1 ICONS%10.7f%10.7f    0.0000               0.990    0     0.500   '+'\n')%(Inst['Lam'],0.0))
     850        prm.write( 'INS  1 IRAD     0                                                               '+'\n')
     851        prm.write( 'INS  1I HEAD                                                                    '+'\n')
     852        prm.write( 'INS  1I ITYP    0    0.0000  180.0000         1                                 '+'\n')
     853        prm.write(('INS  1DETAZM%10.3f                                                          '+'\n')%(Inst['Azimuth']))
     854        prm.write( 'INS  1PRCF1     3    8   0.00100                                                '+'\n')
     855        prm.write(('INS  1PRCF11     %15.6g%15.6g%15.6g%15.6g   '+'\n')%(Inst['U'],Inst['V'],Inst['W'],0.0))
     856        prm.write(('INS  1PRCF12     %15.6g%15.6g%15.6g%15.6g   '+'\n')%(Inst['X'],Inst['Y'],Inst['SH/L']/2.,Inst['SH/L']/2.))
     857        prm.close()
     858        file = open(filename,'w')
     859        print 'save powder pattern to file: ',filename
     860        try:
     861            x,y,w,yc,yb,yd = self.PatternTree.GetItemPyData(PickId)[1]
     862            file.write(powderfile+'\n')
     863            file.write('BANK 1 %d %d CONS %.2f %.2f 0 0 FXYE\n'%(len(x),len(x),\
     864                100.*x[0],100.*(x[1]-x[0])))
     865            s = list(np.sqrt(1./np.array(w)))       
     866            XYW = zip(x,y,s)
     867            for X,Y,S in XYW:
     868                file.write("%15.6g %15.6g %15.6g\n" % (100.*X,Y,max(S,1.0)))
     869            file.close()
     870        finally:
     871            wx.EndBusyCursor()
     872        print 'powder pattern file written'
    873873       
    874 def powderXyeSave(self,powderfile):
    875     file = open(powderfile,'w')
    876     print 'save powder pattern to file: ',powderfile
    877     wx.BeginBusyCursor()
    878     try:
    879         x,y,w,yc,yb,yd = self.PatternTree.GetItemPyData(self.PickId)[1]
    880         XYW = zip(x,y,w)
    881         for X,Y,W in XYW:
    882             file.write("%15.6g %15.6g %15.6g\n" % (X,Y,W))
    883         file.close()
    884     finally:
    885         wx.EndBusyCursor()
    886     print 'powder pattern file written'
     874def powderXyeSave(self,exports,powderfile):
     875    head,tail = ospath.split(powderfile)
     876    name,ext = tail.split('.')
     877    for i,export in enumerate(exports):
     878        filename = ospath.join(head,name+'-%03d.'%(i)+ext)
     879        PickId = G2gd.GetPatternTreeItemId(self, self.root, export)
     880        file = open(filename,'w')
     881        file.write('#%s\n'%(export))
     882        print 'save powder pattern to file: ',filename
     883        wx.BeginBusyCursor()
     884        try:
     885            x,y,w,yc,yb,yd = self.PatternTree.GetItemPyData(PickId)[1]
     886            XYW = zip(x,y,w)
     887            for X,Y,W in XYW:
     888                file.write("%15.6g %15.6g %15.6g\n" % (X,Y,W))
     889            file.close()
     890        finally:
     891            wx.EndBusyCursor()
     892        print 'powder pattern file written'
    887893   
    888894def PeakListSave(self,file,peaks):
Note: See TracChangeset for help on using the changeset viewer.