Changeset 2321


Ignore:
Timestamp:
Jun 15, 2016 7:10:38 AM (5 years ago)
Author:
vondreele
Message:

start on CalcDistSig? & AddAngleDialog? from tablet

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIexprGUI.py

    r2317 r2321  
    710710        self.Oatom = ''
    711711        self.Tatom = ''
    712        
    713712        self.Draw()
    714713       
     
    825824        self.header = header
    826825        self.pName = Phases.keys()[0]
     826        DisAglCtls = {}
     827        dlg = G2gd.DisAglDialog(self.panel,DisAglCtls,self.Phases[self.pName]['General'],Reset=False)
     828        if dlg.ShowModal() == wx.ID_OK:
     829            Phases[self.pName]['General']['DisAglCtls'] = dlg.GetData()
     830        dlg.Destroy()
    827831        self.Oatom = ''
    828        
     832        self.Tatoms = ['','']
    829833        self.Draw()
    830834
     
    834838            Obj = event.GetEventObject()
    835839            self.pName = Obj.GetValue()
    836             self.Draw()
     840            self.Oatom = ''
     841            DisAglCtls = {}
     842            dlg = G2gd.DisAglDialog(self.panel,DisAglCtls,self.Phases[self.pName]['General'],Reset=False)
     843            if dlg.ShowModal() == wx.ID_OK:
     844                self.Phases[self.pName]['General']['DisAglCtls'] = dlg.GetData()
     845            dlg.Destroy()
     846            wx.CallAfter(self.Draw)
    837847           
    838848        def OnOrigAtom(event):
    839849            Obj = event.GetEventObject()
    840850            self.Oatom = Obj.GetValue()
    841             self.Draw()
    842            
     851            wx.CallAfter(self.Draw)           
     852
     853        def OnTargAtom(event):
     854            Obj = event.GetEventObject()
     855            self.Tatom = Obj.GetValue()
     856            wx.CallAfter(self.Draw)
    843857
    844858        self.panel.Destroy()
     
    860874#        GSASIIpath.IPyBreak()
    861875        atomSizer = wx.BoxSizer(wx.HORIZONTAL)
    862         atomSizer.Add(wx.StaticText(self.panel,label=' Origin atom: '),0,WACV)
     876        atomSizer.Add(wx.StaticText(self.panel,label=' Origin atom (O in A-O-B): '),0,WACV)
    863877        origAtom = wx.ComboBox(self.panel,value=self.Oatom,choices=aNames,
    864878            style=wx.CB_READONLY|wx.CB_DROPDOWN)
    865879        origAtom.Bind(wx.EVT_COMBOBOX,OnOrigAtom)
    866         atomSizer.Add(origAtom,0,WACV)
    867        
     880        atomSizer.Add(origAtom,0,WACV)       
    868881        mainSizer.Add(atomSizer)
     882        mainSizer.Add(wx.StaticText(self.panel,label=' A-O-B angle for A,B: '),0,WACV)
     883        neigh = []
     884        if self.Oatom:
     885#            GSASIIpath.IPyBreak()
     886            neigh = G2mth.FindAllNeighbors(Phase,self.Oatom,aNames)
     887        bNames = ['',]
     888        if neigh:
     889            bNames = [item[0]+' d=%.3f'%(item[1]) for item in neigh[0]]
    869890
    870891
  • trunk/GSASIIgrid.py

    r2319 r2321  
    34333433            derivs = np.array(
    34343434                [EvalPSvarDeriv(calcobj,parmDict.copy(),sampleDict[name],var,ESD)
    3435                  for var,ESD in zip(varyList,sigs)]
    3436                 )
     3435                 for var,ESD in zip(varyList,sigs)])
    34373436            esdList.append(np.sqrt(
    3438                 np.inner(derivs,np.inner(data[name]['covMatrix'],derivs.T))
    3439                 ))
     3437                np.inner(derivs,np.inner(data[name]['covMatrix'],derivs.T)) ))
    34403438            PSvarDict = parmDict.copy()
    34413439            PSvarDict.update(sampleDict[name])
  • trunk/GSASIImath.py

    r2319 r2321  
    15291529    return dist   
    15301530   
     1531def CalcDistSig(distance_dict, distance_atoms, parmDict,covData={}):
     1532    '''default doc string
     1533   
     1534    :param type name: description
     1535   
     1536    :returns: type name: description
     1537   
     1538    '''
     1539    def calcDist(Atoms,SyOps,Amat):
     1540        XYZ = []
     1541        for i,atom in enumerate(Atoms):
     1542            Inv,M,T,C,U = SyOps[i]
     1543            XYZ.append(np.array(atom[1:4]))
     1544            XYZ[-1] = Inv*(np.inner(M,np.array(XYZ[-1]))+T)+C+U
     1545            XYZ[-1] = np.inner(Amat,XYZ[-1]).T
     1546        V1 = XYZ[1]-XYZ[0]
     1547        return np.sqrt(np.sum(V1**2))
     1548       
     1549    if not len(parmDict):
     1550        return 0.
     1551    pId = distance_dict['pId']
     1552    pfx = '%d::'%(pId)
     1553    A = [parmDict['%s::A%d'%(pId,i)] for i in range(6)]
     1554    Amat = G2lat.cell2AB(G2lat.A2cell(A))[0]
     1555    Oxyz = [parmDict['%s::A%s:%d'%(pId,x,distance_atoms[0])] for x in ['x','y','z']]
     1556    Txyz = [parmDict['%s::A%s:%d'%(pId,x,distance_atoms[1])] for x in ['x','y','z']]
     1557    inv = 1
     1558    symNo = distance_dict['symNo']
     1559    if symNo < 0:
     1560        inv = -1
     1561        symNo *= -1
     1562    cen = symNo/100
     1563    op = symNo%100-1
     1564    M,T = distance_dict['SGData']['SGOps'][op]
     1565    D = T*inv+distance_dict['SGData']['SGCen'][cen]
     1566    D += distance_dict['cellNo']
     1567    Txyz = np.inner(M*inv,Txyz)+D
     1568    dist = np.sqrt(np.sum(np.inner(Amat,(Txyz-Oxyz))**2))
     1569
     1570    sig = -0.001
     1571    if 'covMatrix' in covData:
     1572        parmNames = []
     1573        dx = .00001
     1574        dadx = np.zeros(6)
     1575        for i in range(6):
     1576            ia = i/3
     1577            ix = i%3
     1578            Oxyz[ix+1] += dx
     1579            a0 = calcDist(Oatoms,SyOps,Amat)
     1580            Oatoms[ia][ix+1] -= 2*dx
     1581            dadx[i] = (calcDist(Oatoms,SyOps,Amat)-a0)/(2.*dx)
     1582        covMatrix = covData['covMatrix']
     1583        varyList = covData['varyList']
     1584        DistVcov = getVCov(names,varyList,covMatrix)
     1585        sig = np.sqrt(np.inner(dadx,np.inner(DistVcov,dadx)))
     1586        if sig < 0.001:
     1587            sig = -0.001
     1588   
     1589    return Dist,sig
     1590
     1591def CalcAngle(distance_dict, distance_atoms, parmDict):
     1592    if not len(parmDict):
     1593        return 0.
     1594
     1595    return 0.   #angle
     1596
    15311597def getSyXYZ(XYZ,ops,SGData):
    15321598    '''default doc string
Note: See TracChangeset for help on using the changeset viewer.