Changeset 3682


Ignore:
Timestamp:
Oct 18, 2018 3:01:22 PM (3 years ago)
Author:
vondreele
Message:

eliminate auto refresh og General after looking at spin ops
implement setting bond & angle restraints from CCDC MOGUL csv file

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIdataGUI.py

    r3681 r3682  
    48834883        # Restraints
    48844884        G2G.Define_wxId('wxID_RESTRAINTADD', 'wxID_RESTDELETE', 'wxID_RESRCHANGEVAL',
    4885             'wxID_RESTCHANGEESD', 'wxID_AARESTRAINTADD', 'wxID_AARESTRAINTPLOT',)
     4885            'wxID_RESTCHANGEESD', 'wxID_AARESTRAINTADD', 'wxID_AARESTRAINTPLOT','wxID_USEMOGUL')
    48864886        self.RestraintTab = wx.Menu(title='')
    48874887        self.RestraintEdit = wx.Menu(title='')
     
    48914891            'Add residue based restraints for macromolecules from macro file')
    48924892        self.RestraintEdit.Enable(G2G.wxID_AARESTRAINTADD,False)    #gets enabled if macromolecule phase
     4893        self.RestraintEdit.Append(G2G.wxID_USEMOGUL,'Add MOGUL restraints',
     4894            'Add restraints from MOGUL csv file')
     4895        self.RestraintEdit.Enable(G2G.wxID_USEMOGUL,False)    #gets enabled if bonds or angles
    48934896        self.RestraintEdit.Append(G2G.wxID_AARESTRAINTPLOT,'Plot residue restraints',
    48944897            'Plot selected residue based restraints for macromolecules from macro file')
  • trunk/GSASIIphsGUI.py

    r3681 r3682  
    19791979                try:
    19801980                    SSymbol = superGp.GetValue()
     1981                    refresh = True
    19811982                except AttributeError:
    19821983                    SSymbol = superGp.GetLabel()
     1984                    refresh = False
    19831985                SSGData = generalData['SSGData']
    19841986                if not generalData['SGData']['SGFixed']:
     
    20002002                    Text = '\n'.join(text)
    20012003                    wx.MessageBox(Text,caption=msg,style=Style)
    2002                 wx.CallAfter(UpdateGeneral)               
     2004                if refresh: wx.CallAfter(UpdateGeneral)               
    20032005                           
    20042006            def OnVecRef(event):
  • trunk/GSASIIrestrGUI.py

    r3588 r3682  
    7878        return macro        #advanced past 1st line
    7979       
     80    def getMOGULFile():
     81        dlg = wx.FileDialog(G2frame,message='Choose MOGUL csv file',
     82            defaultDir='.',defaultFile="",wildcard="MOGUL csv file (*.csv)|*.csv",
     83            style=wx.FD_OPEN | wx.FD_CHANGE_DIR)
     84        try:
     85            mogul = ''
     86            if dlg.ShowModal() == wx.ID_OK:
     87                csvfile = dlg.GetPath()
     88                mogul = open(csvfile,'Ur')
     89                head = mogul.readline()
     90                if 'Type' not in head:
     91                    print (head)
     92                    print ('**** ERROR - not a MOGUL csv file selected, try again ****')
     93                    mogul = []
     94        finally:
     95            dlg.Destroy()
     96        return mogul        #advanced past 1st line
     97       
    8098    def OnPlotAARestraint(event):
    8199        page = G2frame.restrBook.GetSelection()
     
    161179        elif 'Rama' in G2frame.restrBook.GetPageText(page):
    162180            AddAARamaRestraint(restrData['Rama'])
     181           
     182    def OnUseMogul(event):
     183        page = G2frame.restrBook.GetSelection()
     184        if 'Bond' in G2frame.restrBook.GetPageText(page):
     185            AddMogulBondRestraint(restrData['Bond'])
     186        elif 'Angle' in G2frame.restrBook.GetPageText(page):
     187            AddMogulAngleRestraint(restrData['Angle'])
    163188           
    164189    def makeChains(Names,Ids):
     
    244269        if not macro:
    245270            return
    246 #        Chains = makeChains(Names,Ids)           
    247271        macStr = macro.readline()
    248272        atoms = zip(Names,Coords,Ids)
     
    286310        macro.close()
    287311        print(' Found %d bond restraints'%len(bondRestData['Bonds']))
    288         UpdateBondRestr(bondRestData)               
     312        UpdateBondRestr(bondRestData)
     313
     314    def AddMogulBondRestraint(bondRestData):
     315        mogul = getMOGULFile()
     316        for line in mogul:
     317            items = line.split(',')
     318            if 'bond' == items[0]:
     319                oName,tName = items[2].split()
     320                oInd = Names.index(oName)
     321                tInd = Names.index(tName)
     322                if items[3] != 'No hits':
     323                    dist = float(items[6])
     324                    esd = float(items[7])
     325                else:
     326                    dist = float(items[5])
     327                    esd = 0.02
     328                newBond = [[Ids[oInd],Ids[tInd]],['1','1'],dist,esd]
     329                if newBond not in bondRestData['Bonds']:
     330                    bondRestData['Bonds'].append(newBond)             
     331        UpdateBondRestr(bondRestData)
    289332           
    290333    def AddAngleRestraint(angleRestData):
     
    422465        UpdateAngleRestr(angleRestData)               
    423466       
     467    def AddMogulAngleRestraint(angleRestData):
     468        mogul = getMOGULFile()
     469        for line in mogul:
     470            items = line.split(',')
     471            if 'angle' == items[0]:
     472                aName,bName,cName = items[2].split()
     473                aInd = Names.index(aName)
     474                bInd = Names.index(bName)
     475                cInd = Names.index(cName)
     476                if items[3] != 'No hits':
     477                    angle = float(items[6])
     478                    esd = float(items[7])
     479                else:
     480                    angle = float(items[5])
     481                    esd = 2.00
     482                newAngle = [[Ids[aInd],Ids[bInd],Ids[cInd]],['1','1','1'],angle,esd]
     483                if newAngle not in angleRestData['Angles']:
     484                    angleRestData['Angles'].append(newAngle)             
     485        UpdateAngleRestr(angleRestData)               
     486
    424487    def AddPlaneRestraint(restrData):
    425488        ids = []
     
    17721835        text = G2frame.restrBook.GetPageText(page)
    17731836        G2frame.dataWindow.RestraintEdit.SetLabel(G2G.wxID_RESRCHANGEVAL,'Change value')
     1837        G2frame.dataWindow.RestraintEdit.Enable(G2G.wxID_USEMOGUL,False)
    17741838        if text == 'Bond':
    17751839            G2gd.SetDataMenuBar(G2frame,G2frame.dataWindow.RestraintMenu)
    17761840            G2frame.dataWindow.RestraintEdit.Enable(G2G.wxID_RESTRAINTADD,True)
    17771841            G2frame.dataWindow.RestraintEdit.Enable(G2G.wxID_RESRCHANGEVAL,True)
     1842            G2frame.dataWindow.RestraintEdit.Enable(G2G.wxID_USEMOGUL,True)
    17781843            bondRestData = restrData['Bond']
    17791844            UpdateBondRestr(bondRestData)
     
    17821847            G2frame.dataWindow.RestraintEdit.Enable(G2G.wxID_RESTRAINTADD,True)
    17831848            G2frame.dataWindow.RestraintEdit.Enable(G2G.wxID_RESRCHANGEVAL,True)
     1849            G2frame.dataWindow.RestraintEdit.Enable(G2G.wxID_USEMOGUL,True)
    17841850            angleRestData = restrData['Angle']
    17851851            UpdateAngleRestr(angleRestData)
     
    19071973    G2gd.SetDataMenuBar(G2frame,G2frame.dataWindow.RestraintMenu)   
    19081974    G2frame.Bind(wx.EVT_MENU, OnAddRestraint, id=G2G.wxID_RESTRAINTADD)
     1975    G2frame.Bind(wx.EVT_MENU, OnUseMogul, id=G2G.wxID_USEMOGUL)
     1976    G2frame.dataWindow.RestraintEdit.Enable(G2G.wxID_USEMOGUL,True)
    19091977    if 'macro' in phasedata['General']['Type']:
    19101978        G2frame.dataWindow.RestraintEdit.Enable(G2G.wxID_AARESTRAINTADD,True)
Note: See TracChangeset for help on using the changeset viewer.