Changeset 1236


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

Location:
trunk
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r1232 r1236  
    10191019        numbanks = rd.numbanks
    10201020        # is there an instrument parameter file defined for the current data set?
    1021         if rd.instparm or (lastdatafile == filename and lastIparmfile):
     1021        # or if this is a read on a set of set of files, use the last one again
     1022        #if rd.instparm or (lastdatafile == filename and lastIparmfile):
     1023        if rd.instparm or lastIparmfile:
    10221024            if rd.instparm:
    10231025                instfile = os.path.join(os.path.split(filename)[0],
     
    16741676                self.Bind(wx.EVT_MENU, obj.Exporter, id=item.GetId())
    16751677                self.ExportLookup[item.GetId()] = typ # lookup table for submenu item
    1676         #code to debug an Exporter. much is hard-coded below, but code is reloaded before
    1677         # each use allowing faster development
     1678               
     1679        #code to debug an Exporter. hard-coded the routine below, to allow a reload before use
    16781680        # def DebugExport(event):
    1679         #     print 'start reload'
    1680         #     reload(G2IO)
    1681         #     import G2export_ASCIImap as dev
    1682         #     reload(dev)
    1683         #     dev.ExportMapASCII(self).Exporter(event)
     1681        #      print 'start reload'
     1682        #      reload(G2IO)
     1683        #      import G2export_pwdr as dev
     1684        #      reload(dev)
     1685        #      dev.ExportPowderFXYE(self).Exporter(event)
    16841686        # item = menu.Append(
    16851687        #     wx.ID_ANY,kind=wx.ITEM_NORMAL,
    1686         #     help="debug exporter",text="test Export")
     1688        #     help="debug exporter",text="test Export FXYE")
    16871689        # self.Bind(wx.EVT_MENU, DebugExport, id=item.GetId())
    1688         # #self.ExportLookup[item.GetId()] = 'image'
    1689         # self.ExportLookup[item.GetId()] = 'map'
     1690        # # #self.ExportLookup[item.GetId()] = 'image'
     1691        # self.ExportLookup[item.GetId()] = 'powder'
    16901692
    16911693    def _Add_ExportMenuItems(self,parent):
    1692         item = parent.Append(
    1693             help='Select PWDR item to enable',id=wx.ID_ANY,
    1694             kind=wx.ITEM_NORMAL,
    1695             text='Export Powder Patterns...')
    1696         self.ExportPattern.append(item)
    1697         item.Enable(False)
    1698         self.Bind(wx.EVT_MENU, self.OnExportPatterns, id=item.GetId())
     1694        # item = parent.Append(
     1695        #     help='Select PWDR item to enable',id=wx.ID_ANY,
     1696        #     kind=wx.ITEM_NORMAL,
     1697        #     text='Export Powder Patterns...')
     1698        # self.ExportPattern.append(item)
     1699        # item.Enable(False)
     1700        # self.Bind(wx.EVT_MENU, self.OnExportPatterns, id=item.GetId())
    16991701
    17001702        item = parent.Append(
     
    17961798        self.Refine = []
    17971799        self.SeqRefine = []
    1798         self.ExportPattern = []
     1800        #self.ExportPattern = []
    17991801        self.ExportPeakList = []
    18001802        self.ExportHKL = []
     
    26982700        self.Close()
    26992701       
    2700     def OnExportPatterns(self,event):
    2701         names = ['All']
    2702         exports = []
    2703         item, cookie = self.PatternTree.GetFirstChild(self.root)
    2704         while item:
    2705             name = self.PatternTree.GetItemText(item)
    2706             if 'PWDR' in name:
    2707                 names.append(name)
    2708             item, cookie = self.PatternTree.GetNextChild(self.root, cookie)
    2709         if names:
    2710             dlg = wx.MultiChoiceDialog(self,'Select','Powder patterns to export',names)
    2711             if dlg.ShowModal() == wx.ID_OK:
    2712                 sel = dlg.GetSelections()
    2713                 if sel[0] == 0:
    2714                     exports = names[1:]
    2715                 else:
    2716                     for x in sel:
    2717                         exports.append(names[x])
    2718             dlg.Destroy()
    2719         if exports:
    2720             dlg = wx.FileDialog(self, 'Choose output powder file name', '.', '',
    2721                 'GSAS fxye file (*.fxye)|*.fxye|xye file (*.xye)|*.xye',
    2722                 wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT|wx.CHANGE_DIR)
    2723             try:
    2724                 if dlg.ShowModal() == wx.ID_OK:
    2725                     powderfile = dlg.GetPath()
    2726                     powderfile = G2IO.FileDlgFixExt(dlg,powderfile)
    2727                     if 'fxye' in powderfile:
    2728                         G2IO.powderFxyeSave(self,exports,powderfile)
    2729                     else:       #just xye
    2730                         G2IO.powderXyeSave(self,exports,powderfile)
    2731             finally:
    2732                 dlg.Destroy()
     2702    # def OnExportPatterns(self,event):
     2703    #     names = ['All']
     2704    #     exports = []
     2705    #     item, cookie = self.PatternTree.GetFirstChild(self.root)
     2706    #     while item:
     2707    #         name = self.PatternTree.GetItemText(item)
     2708    #         if 'PWDR' in name:
     2709    #             names.append(name)
     2710    #         item, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     2711    #     if names:
     2712    #         dlg = wx.MultiChoiceDialog(self,'Select','Powder patterns to export',names)
     2713    #         if dlg.ShowModal() == wx.ID_OK:
     2714    #             sel = dlg.GetSelections()
     2715    #             if sel[0] == 0:
     2716    #                 exports = names[1:]
     2717    #             else:
     2718    #                 for x in sel:
     2719    #                     exports.append(names[x])
     2720    #         dlg.Destroy()
     2721    #     if exports:
     2722    #         dlg = wx.FileDialog(self, 'Choose output powder file name', '.', '',
     2723    #             'GSAS fxye file (*.fxye)|*.fxye|xye file (*.xye)|*.xye',
     2724    #             wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT|wx.CHANGE_DIR)
     2725    #         try:
     2726    #             if dlg.ShowModal() == wx.ID_OK:
     2727    #                 powderfile = dlg.GetPath()
     2728    #                 powderfile = G2IO.FileDlgFixExt(dlg,powderfile)
     2729    #                 if 'fxye' in powderfile:
     2730    #                     G2IO.powderFxyeSave(self,exports,powderfile)
     2731    #                 else:       #just xye
     2732    #                     G2IO.powderXyeSave(self,exports,powderfile)
     2733    #         finally:
     2734    #             dlg.Destroy()
    27332735       
    27342736    def OnExportPeakList(self,event):
  • 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):
  • trunk/GSASIIgrid.py

    r1232 r1236  
    34343434       
    34353435    def GetSampleParms():
    3436         sampleParmDict = {'Temperature':300.,'Pressure':1.,
    3437                           'FreePrm1':0.,'FreePrm2':0.,'FreePrm3':0.,}
     3436        sampleParmDict = {'Temperature':[],'Pressure':[],
     3437                          'FreePrm1':[],'FreePrm2':[],'FreePrm3':[],}
    34383438        sampleParm = {}
    34393439        for name in histNames:
     
    36693669                mainSizer.Add((5,5),)
    36703670                pfx = value.split('Nref')[0]
    3671                 name = data[0][pfx.split(':')[0]+'::Name']
     3671                name = data[0].get(pfx.split(':')[0]+'::Name','?')
    36723672                mainSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' For phase '+name+':'))
    36733673                mainSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,
     
    38473847    G2frame.PickId = 0
    38483848    parentID = G2frame.root
    3849     for i in G2frame.ExportPattern: i.Enable(False)
     3849    #for i in G2frame.ExportPattern: i.Enable(False)
    38503850    defWid = [250,150]
    38513851    if item != G2frame.root:
     
    38573857            SetDataMenuBar(G2frame,G2frame.dataFrame.DataNotebookMenu)
    38583858            G2frame.PatternId = 0
    3859             for i in G2frame.ExportPattern: i.Enable(False)
     3859            #for i in G2frame.ExportPattern: i.Enable(False)
    38603860            data = G2frame.PatternTree.GetItemPyData(item)
    38613861            UpdateNotebook(G2frame,data)
    38623862        elif G2frame.PatternTree.GetItemText(item) == 'Controls':
    38633863            G2frame.PatternId = 0
    3864             for i in G2frame.ExportPattern: i.Enable(False)
     3864            #for i in G2frame.ExportPattern: i.Enable(False)
    38653865            data = G2frame.PatternTree.GetItemPyData(item)
    38663866            if not data:           #fill in defaults
     
    39083908            G2plt.PlotPowderLines(G2frame)
    39093909        elif 'PWDR' in G2frame.PatternTree.GetItemText(item):
    3910             for i in G2frame.ExportPattern: i.Enable(True)
     3910            #for i in G2frame.ExportPattern: i.Enable(True)
    39113911            UpdatePWHKPlot(G2frame,'PWDR',item)
    39123912        elif 'SASD' in G2frame.PatternTree.GetItemText(item):
    3913             for i in G2frame.ExportPattern: i.Enable(True)
     3913            #for i in G2frame.ExportPattern: i.Enable(True)
    39143914            UpdatePWHKPlot(G2frame,'SASD',item)
    39153915        elif 'HKLF' in G2frame.PatternTree.GetItemText(item):
  • trunk/GSASIIobj.py

    r1227 r1236  
    559559                                          containing in order:
    560560
    561                                            1. the x-postions (two-theta in degrees),
    562                                            2. the intensity values (Yobs),
    563                                            3. the weights for each Yobs value
    564                                            4. the computed intensity values (Ycalc)
    565                                            5. the background values
    566                                            6. Yobs-Ycalc
     561                                           0. the x-postions (two-theta in degrees),
     562                                           1. the intensity values (Yobs),
     563                                           2. the weights for each Yobs value
     564                                           3. the computed intensity values (Ycalc)
     565                                           4. the background values
     566                                           5. Yobs-Ycalc
    567567======================  ===============  ====================================================
    568568
  • trunk/GSASIIpy3.py

    r1183 r1236  
    3939    return val
    4040
     41def FormatPadValue(val,maxdigits=None):
     42    '''Format a float to fit in ``maxdigits[0]`` spaces with maxdigits[1] after decimal.
     43
     44    :param float val: number to be formatted.
     45
     46    :param list maxdigits: the number of digits & places after decimal to be used for display of the
     47      number (defaults to [10,2]).
     48
     49    :returns: a string with exactly maxdigits[0] characters (except under error conditions),
     50      but last character will always be a space
     51    '''
     52    if maxdigits is None:
     53        digits = [10,2]
     54    else:
     55        digits = maxdigits
     56    fmt = '{:'+str(digits[0])+'}'
     57    s = fmt.format(FormatValue(val,digits))
     58    if s[-1] == ' ':
     59        return s
     60    else:
     61        return s+' '
     62   
     63
    4164def FormatValue(val,maxdigits=None):
    4265    '''Format a float to fit in ``maxdigits[0]`` spaces with maxdigits[1] after decimal.
     
    4770      number (defaults to [10,2]).
    4871
    49     :returns: a string with <= maxdigits characters (I hope). 
     72    :returns: a string with <= maxdigits characters (usually). 
    5073    '''
    5174    if maxdigits is None:
     
    78101        fmt = "{" + (":{:d}.{:d}g".format(digits[0],decimals))+"}"
    79102    try:
    80         return fmt.format(val).strip()
     103        return fmt.format(float(val)).strip()
    81104    except ValueError as err:
    82105        print 'FormatValue Error with val,maxdigits,fmt=',val,maxdigits,fmt
     
    125148        if decimals == 0: fmt += "." # force a decimal place
    126149    try:
    127         return fmt.format(val).strip()
     150        return fmt.format(float(val)).strip()
    128151    except ValueError as err:
    129152        print 'FormatValue Error with val,maxdigits, sigfigs, fmt=',val, maxdigits,sigfigs, fmt
  • trunk/exports/G2export_csv.py

    r1191 r1236  
    2121GSASIIpath.SetVersionNumber("$Revision$")
    2222import GSASIIIO as G2IO
    23 #import GSASIIgrid as G2gd
    24 #import GSASIIstrIO as G2stIO
     23import GSASIIpy3 as G2py3
     24import GSASIIobj as G2obj
    2525import GSASIImath as G2mth
    26 #import GSASIIlattice as G2lat
    27 #import GSASIIspc as G2spc
    28 #import GSASIIphsGUI as G2pg
    29 #import GSASIIstrMain as G2stMn
    3026
    3127def WriteList(obj,headerItems):
     
    128124            )
    129125        self.exporttype = ['powder']
    130         self.multiple = False # only allow one histogram to be selected
     126        #self.multiple = False # only allow one histogram to be selected
     127        self.multiple = True
    131128
    132129    def Exporter(self,event=None):
     
    138135        self.loadTree()
    139136        if self.ExportSelect( # set export parameters
    140             AskFile=False # use the default file name
    141             ): return
    142         self.OpenFile()
    143         hist = self.histnam[0] # there should only be one histogram, in any case take the 1st
    144         histblk = self.Histograms[hist]
    145         WriteList(self,("x","y_obs","weight","y_calc","y_bkg"))
    146         fmt = 2*"{:.3f}," + "{:.5f}," + 2*"{:.3f},"
    147         for x,yobs,yw,ycalc,ybkg,obsmcalc in zip(histblk['Data'][0],
    148                                                  histblk['Data'][1],
    149                                                  histblk['Data'][2],
    150                                                  histblk['Data'][3],
    151                                                  histblk['Data'][4],
    152                                                  histblk['Data'][5],
    153                                                  ):
    154             self.Write(fmt.format(x,yobs,yw,ycalc,ybkg))
    155         self.CloseFile()
    156         print(str(hist)+' written to file '+str(self.filename))                       
     137            AskFile=False # use the default file name, which is ignored
     138            ): return
     139        filenamelist = []
     140        for hist in self.histnam:
     141            fileroot = G2obj.MakeUniqueLabel(self.MakePWDRfilename(hist),filenamelist)
     142            self.filename = fileroot + self.extension
     143            self.OpenFile()
     144            histblk = self.Histograms[hist]
     145            WriteList(self,("x","y_obs","weight","y_calc","y_bkg"))
     146            digitList = 2*((13,3),) + ((13,5),) + 2*((13,3),)
     147            for vallist in zip(histblk['Data'][0],
     148                           histblk['Data'][1],
     149                           histblk['Data'][2],
     150                           histblk['Data'][3],
     151                           histblk['Data'][4],
     152                           #histblk['Data'][5],
     153                           ):
     154                line = ""
     155                for val,digits in zip(vallist,digitList):
     156                    if line: line += ','
     157                    line += G2py3.FormatValue(val,digits)
     158                self.Write(line)
     159            self.CloseFile()
     160            print('Histogram '+str(hist)+' written to file '+str(self.filename))
    157161
    158162class ExportPowderReflCSV(G2IO.ExportBaseclass):
  • trunk/exports/G2export_examples.py

    r1127 r1236  
    2424GSASIIpath.SetVersionNumber("$Revision$")
    2525import GSASIIIO as G2IO
     26import GSASIIpy3 as G2py3
    2627#import GSASIIgrid as G2gd
    2728#import GSASIIstrIO as G2stIO
     
    145146        hist = self.histnam[0] # there should only be one histogram, in any case take the 1st
    146147        histblk = self.Histograms[hist]
    147         fmt = 2*"{:12.3f} " + "{:12.5f} " + 2*"{:12.3f} "
    148         hfmt = 5*"{:>12s} "
     148        hfmt = 5*"{:12s} "
     149        digitList = 2*((13,3),) + ((13,5),) + 2*((13,3),)
     150       
    149151        self.Write(hfmt.format("x","y_obs","weight","y_calc","y_bkg"))
    150         for x,yobs,yw,ycalc,ybkg,obsmcalc in zip(histblk['Data'][0],
    151                                                  histblk['Data'][1],
    152                                                  histblk['Data'][2],
    153                                                  histblk['Data'][3],
    154                                                  histblk['Data'][4],
    155                                                  histblk['Data'][5],
    156                                                  ):
    157             self.Write(fmt.format(x,yobs,yw,ycalc,ybkg))
    158         self.CloseFile()
    159         print(str(hist)+' written to file '+str(self.filename))                       
     152        for vallist in zip(histblk['Data'][0],
     153                           histblk['Data'][1],
     154                           histblk['Data'][2],
     155                           histblk['Data'][3],
     156                           histblk['Data'][4],
     157                           #histblk['Data'][5],
     158                           ):
     159            strg = ''
     160            for val,digits in zip(vallist,digitList):
     161                strg += G2py3.FormatPadValue(val,digits)
     162            self.Write(strg)
     163        self.CloseFile()
     164        print(str(hist)+' written to file '+str(self.filename))
     165       
    160166class ExportPowderReflText(G2IO.ExportBaseclass):
    161167    '''Used to create a text file of reflections from a powder data set
  • trunk/sphinxdocs/source/exports.rst

    r1123 r1236  
    3838    :members:
    3939    :synopsis: Export a project in CIF format
     40
     41.. automodule:: G2export_pwdr
     42    :members:
     43    :synopsis: Export powder data in GSAS and Topas formats
Note: See TracChangeset for help on using the changeset viewer.