Changeset 938


Ignore:
Timestamp:
May 31, 2013 6:14:01 PM (8 years ago)
Author:
toby
Message:

Add instrument name support; add export menu & CIF testing

Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r926 r938  
    680680        :param str lastdatafile: Name of last data file that was read.
    681681
     682        :returns: a list of two dicts, the first containing instrument parameters
     683          and the second used for future TOF datasets (timemaps?)
     684
    682685        '''
    683686        def SetPowderInstParms(Iparm, rd):
     
    691694                DataType = rd.instdict.get('type')
    692695            data = [DataType,]
     696            instname = Iparm.get('INS  1INAME ')
     697            if instname:
     698                rd.Sample['InstrName'] = instname.strip()
    693699            if 'C' in DataType:
    694700                wave1 = None
     
    992998        return # success
    993999
    994     def _init_Exports(self,parent):
     1000    def _init_Exports(self,menu):
    9951001        '''This is a place holder for when exports are handled in a manner similar to imports
    9961002        '''
    9971003#        submenu = wx.Menu()
    998 #        item = parent.AppendMenu(
     1004#        item = menu.AppendMenu(
    9991005#            wx.ID_ANY, 'entire project',
    10001006#            submenu, help='Export entire project')
    1001 #        item = submenu.Append(
    1002 #            wx.ID_ANY,
    1003 #            help='this is a module for testing',
    1004 #            kind=wx.ITEM_NORMAL,
    1005 #            text='to test file')
    1006 #        self.Bind(wx.EVT_MENU, self.OnExportTest, id=item.GetId())
    1007 #        import G2export
    1008 #    def OnExportTest(self,event):
    1009 #        import G2export
    1010 #        reload(G2export)
    1011 #        G2export.ProjExport(self)
     1007
     1008        # for now hard-code CIF testing here
     1009        item = menu.Append(
     1010            wx.ID_ANY,
     1011            help='CIF development',
     1012            kind=wx.ITEM_NORMAL,
     1013            text='full CIF test')
     1014        self.Bind(wx.EVT_MENU, self.OnTestCIF, id=item.GetId())
     1015        item = menu.Append(
     1016            wx.ID_ANY,
     1017            help='CIF development',
     1018            kind=wx.ITEM_NORMAL,
     1019            text='quick CIF test')
     1020        self.Bind(wx.EVT_MENU, self.OnTestCIF, id=item.GetId())
     1021
     1022    def OnTestCIF(self,event):
     1023        # hard-code CIF testing here
     1024        if event.EventObject.GetLabelText(event.Id).split()[0].lower() == "quick":
     1025            mode = 'simple'
     1026        else:
     1027            mode = 'full'
     1028        path2GSAS2 = os.path.join(
     1029            os.path.dirname(os.path.realpath(__file__)), # location of this file
     1030            'exports')
     1031        if path2GSAS2 not in sys.path: sys.path.append(path2GSAS2)
     1032        #reload(G2IO)
     1033        import G2cif
     1034        reload(G2cif)
     1035        exp = G2cif.ExportCIF(self)
     1036        exp.export(mode)
    10121037
    10131038    def _Add_ExportMenuItems(self,parent):
     
    10811106        Export = wx.Menu(title='')       
    10821107        menubar.Append(menu=Export, title='Export')
     1108        self._init_Exports(Export)
    10831109        self._Add_ExportMenuItems(Export)
    1084         #self._init_Exports(Export)
    10851110        HelpMenu=G2gd.MyHelp(self,helpType='Data tree',
    10861111            morehelpitems=[('&Tutorials','Tutorials')])
  • trunk/GSASIIIO.py

    r923 r938  
    946946    print 'index peak list saved'
    947947   
    948 def SetNewPhase(Name='New Phase',SGData=G2spc.SpcGroup('P 1')[1],cell=[1.0,1.0,1.0,90.,90,90.,1.]):
    949     'Create a new phase'
     948def SetNewPhase(Name='New Phase',SGData=None,cell=None):
     949    '''Create a new phase with default values for various parameters
     950
     951    :param str Name: Name for new Phase
     952
     953    :param dict SGData: space group data from :func:`GSASIIspc:SpcGroup`;
     954      defaults to data for P 1
     955
     956    :param list cell: unit cell parameter list; defaults to
     957      [1.0,1.0,1.0,90.,90,90.,1.]
     958
     959    '''
     960    if SGData is None: SGData = G2spc.SpcGroup('P 1')[1]
     961    if cell is None: cell=[1.0,1.0,1.0,90.,90,90.,1.]
    950962    phaseData = {
    951963        'ranId':ran.randint(0,sys.maxint),
     
    15331545
    15341546######################################################################
     1547class ExportBaseclass(object):
     1548    '''Defines a base class for the exporting of GSAS-II results
     1549    '''
     1550    def __init__(self,
     1551                 G2frame,
     1552                 formatName,
     1553                 longFormatName=None,
     1554                 ):
     1555        self.G2frame = G2frame
     1556        self.formatName = formatName # short string naming file type
     1557        if longFormatName: # longer string naming file type
     1558            self.longFormatName = longFormatName
     1559        else:
     1560            self.longFormatName = formatName
     1561        self.OverallParms = {}
     1562        self.GroupedParms = {}
     1563    def loadTree(self):
     1564        '''Load the contents of the data tree into a pair of dicts.
     1565       
     1566        The childrenless data tree items are overall parameters/controls for the
     1567        entire project and are placed in self.OverallParms
     1568
     1569        The data tree items with children are either Phase items or are
     1570        data of some sort. Date entries begin with a key, such as
     1571        PWDR, IMG, HKLF,... that identifies the data type.
     1572        * Phase items are placed in self.GroupedParms["Phases"][item]
     1573        * Data items are placed in self.GroupedParms["Phases"][key][item]
     1574
     1575          Note that there is no overall phase information, only information
     1576          stored for each phase, but there is overall information for each
     1577          data item. The overall data information is stored in
     1578          self.GroupedParms["Phases"][key][None]
     1579       
     1580        '''
     1581        self.OverallParms = {}
     1582        self.GroupedParms = {}
     1583        G2frame = self.G2frame
     1584        if G2frame.PatternTree.IsEmpty(): return # nothing to do
     1585        item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root)
     1586        while item:
     1587            name = G2frame.PatternTree.GetItemText(item)
     1588            item2, cookie2 = G2frame.PatternTree.GetFirstChild(item)
     1589            if item2:
     1590                key = name.split()[0]
     1591                if name == "Phases":
     1592                    self.GroupedParms[name] = {}
     1593                    d = self.GroupedParms[name]
     1594                else:
     1595                    if self.GroupedParms.get(key) is None:
     1596                        self.GroupedParms[key] = {}
     1597                    self.GroupedParms[key][name] = {}
     1598                    self.GroupedParms[key][name][None] = G2frame.PatternTree.GetItemPyData(item)
     1599                    d = self.GroupedParms[key][name]
     1600                while item2:
     1601                    name = G2frame.PatternTree.GetItemText(item2)
     1602                    d[name] = G2frame.PatternTree.GetItemPyData(item2)
     1603                    item2, cookie2 = G2frame.PatternTree.GetNextChild(item, cookie2)                           
     1604            else:
     1605                self.OverallParms[name] = G2frame.PatternTree.GetItemPyData(item)
     1606            item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)
     1607
     1608    def dumpTree(self,mode='type'):
     1609        '''Print out information on the data tree dicts loaded in loadTree
     1610        '''
     1611        print '\nOverall'
     1612        if mode == 'type':
     1613            def Show(arg): return type(arg)
     1614        else:
     1615            def Show(arg): return arg
     1616        for key in self.OverallParms:
     1617            print '  ',key,Show(self.OverallParms[key])
     1618        print '\nGrouped'
     1619        for key in self.GroupedParms:
     1620            if key == "Phases":
     1621                print '  Phases'
     1622                for key1 in self.GroupedParms[key]:
     1623                    print '    ',key1,Show(self.GroupedParms[key][key1])
     1624            else:
     1625                print '  ',key,Show(self.GroupedParms[key])
     1626                for key1 in self.GroupedParms[key]:
     1627                    print '    ',key1,Show(self.GroupedParms[key][key1][None])
     1628                    for key2 in self.GroupedParms[key][key1]:
     1629                        print '      ',key2,Show(self.GroupedParms[key][key1][key2])
     1630
     1631######################################################################
    15351632class ImportStructFactor(ImportBaseclass):
    15361633    '''Defines a base class for the reading of files with tables
  • trunk/GSASIIpwdGUI.py

    r923 r938  
    10831083                filename = os.path.splitext(filename)[0]+'.samprm'
    10841084                File = open(filename,'w')
    1085                 File.write("#GSAS-II sample parameter file; do not add/delete or change order of items!\n")
     1085                File.write("#GSAS-II sample parameter file\n")
    10861086                File.write("'Type':'"+str(data['Type'])+"'\n")
    10871087                File.write("'Gonio. radius':"+str(data['Gonio. radius'])+"\n")
     1088                if data.get('InstrName'):
     1089                    File.write("'InstrName':'"+str(data['InstrName'])+"'\n")
    10881090                File.close()
    10891091        finally:
     
    11211123    def OnSampleCopy(event):
    11221124        histName = G2frame.PatternTree.GetItemText(G2frame.PatternId)
    1123         histType,copyNames = SetCopyNames(histName,addNames=['Omega','Chi','Phi'])
     1125        histType,copyNames = SetCopyNames(
     1126            histName,
     1127            addNames=['Omega','Chi','Phi','Gonio. radius','InstrName'])
    11241128        copyDict = {}
    11251129        for parm in copyNames:
     
    12841288        else:
    12851289            Obj.SetValue(parm[2]%(data[parm[0]]))          #reset in case of error
     1290
     1291    def SetNameVal():
     1292        inst = instNameVal.GetValue()
     1293        data['InstrName'] = inst.strip()
     1294        print data['InstrName']
     1295    def OnNameVal(event):
     1296        event.Skip()
     1297        wx.CallAfter(SetNameVal)       
    12861298               
    12871299    mainSizer = wx.BoxSizer(wx.VERTICAL)
    1288     mainSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample parameters: '),0,wx.ALIGN_CENTER_VERTICAL)
     1300    topSizer = wx.BoxSizer(wx.HORIZONTAL)
     1301    topSizer.Add((-1,-1),1,wx.EXPAND,1)
     1302    topSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample and Experimental Parameters'))
     1303    topSizer.Add((-1,-1),1,wx.EXPAND,1)
     1304    mainSizer.Add(topSizer,0,wx.EXPAND,1)
     1305    nameSizer = wx.BoxSizer(wx.HORIZONTAL)
     1306    nameSizer.Add(wx.StaticText(G2frame.dataDisplay,wx.ID_ANY,'Instrument Name'),
     1307                0,wx.ALIGN_CENTER_VERTICAL)
     1308    nameSizer.Add((-1,-1),1,wx.EXPAND,1)
     1309    instNameVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,data.get('InstrName',''),
     1310                              size=(200,-1),style=wx.TE_PROCESS_ENTER)       
     1311    nameSizer.Add(instNameVal)
     1312    instNameVal.Bind(wx.EVT_CHAR,OnNameVal)
     1313    mainSizer.Add(nameSizer,0,wx.EXPAND,1)
     1314    mainSizer.Add((0,5),0)
     1315
    12891316    mainSizer.Add((5,5),0)
    1290     parmSizer = wx.FlexGridSizer(9,2,5,0)
     1317    parmSizer = wx.FlexGridSizer(10,2,5,0)
    12911318    scaleRef = wx.CheckBox(G2frame.dataDisplay,label=' Histogram scale factor: ')
    12921319    scaleRef.SetValue(data['Scale'][1])
Note: See TracChangeset for help on using the changeset viewer.