Changeset 2321
- Timestamp:
- Jun 15, 2016 7:10:38 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIexprGUI.py
r2317 r2321 710 710 self.Oatom = '' 711 711 self.Tatom = '' 712 713 712 self.Draw() 714 713 … … 825 824 self.header = header 826 825 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() 827 831 self.Oatom = '' 828 832 self.Tatoms = ['',''] 829 833 self.Draw() 830 834 … … 834 838 Obj = event.GetEventObject() 835 839 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) 837 847 838 848 def OnOrigAtom(event): 839 849 Obj = event.GetEventObject() 840 850 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) 843 857 844 858 self.panel.Destroy() … … 860 874 # GSASIIpath.IPyBreak() 861 875 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) 863 877 origAtom = wx.ComboBox(self.panel,value=self.Oatom,choices=aNames, 864 878 style=wx.CB_READONLY|wx.CB_DROPDOWN) 865 879 origAtom.Bind(wx.EVT_COMBOBOX,OnOrigAtom) 866 atomSizer.Add(origAtom,0,WACV) 867 880 atomSizer.Add(origAtom,0,WACV) 868 881 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]] 869 890 870 891 -
trunk/GSASIIgrid.py
r2319 r2321 3433 3433 derivs = np.array( 3434 3434 [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)]) 3437 3436 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)) )) 3440 3438 PSvarDict = parmDict.copy() 3441 3439 PSvarDict.update(sampleDict[name]) -
trunk/GSASIImath.py
r2319 r2321 1529 1529 return dist 1530 1530 1531 def 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 1591 def CalcAngle(distance_dict, distance_atoms, parmDict): 1592 if not len(parmDict): 1593 return 0. 1594 1595 return 0. #angle 1596 1531 1597 def getSyXYZ(XYZ,ops,SGData): 1532 1598 '''default doc string
Note: See TracChangeset
for help on using the changeset viewer.