Changeset 2450
- Timestamp:
- Aug 25, 2016 12:22:04 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/GSASIIgrid.py ¶
r2435 r2450 75 75 wxID_DRAWVIEWPOINT, wxID_DRAWTRANSFORM, wxID_DRAWDELETE, wxID_DRAWFILLCELL, 76 76 wxID_DRAWADDEQUIV, wxID_DRAWFILLCOORD, wxID_DRAWDISAGLTOR, wxID_DRAWPLANE, 77 wxID_DRAWDISTVP, 78 ] = [wx.NewId() for item in range(1 3)]77 wxID_DRAWDISTVP, wxID_DRAWADDSPHERE, 78 ] = [wx.NewId() for item in range(14)] 79 79 80 80 [ wxID_DRAWRESTRBOND, wxID_DRAWRESTRANGLE, wxID_DRAWRESTRPLANE, wxID_DRAWRESTRCHIRAL, … … 324 324 325 325 ################################################################################ 326 class SphereEnclosure(wx.Dialog): 327 ''' Add atoms within sphere of enclosure to drawing 328 329 :param wx.Frame parent: reference to parent frame (or None) 330 :param general: general data (includes drawing data) 331 :param atoms: drawing atoms data 332 333 ''' 334 def __init__(self,parent,general,drawing,indx): 335 wx.Dialog.__init__(self,parent,wx.ID_ANY,'Setup phase transformation', 336 pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE) 337 self.panel = wx.Panel(self) #just a dummy - gets destroyed in Draw! 338 self.General = general 339 self.Drawing = drawing 340 self.indx = indx 341 self.Sphere = 1.0 342 self.centers = [] 343 344 self.Draw() 345 346 def Draw(self): 347 348 def OnRadius(event): 349 event.Skip() 350 try: 351 val = float(radius.GetValue()) 352 if val < 0.5: 353 raise ValueError 354 self.Sphere = val 355 except ValueError: 356 pass 357 radius.SetValue('%.3f'%(self.Sphere)) 358 359 self.panel.Destroy() 360 self.panel = wx.Panel(self) 361 mainSizer = wx.BoxSizer(wx.VERTICAL) 362 mainSizer.Add(wx.StaticText(self.panel,label=' Sphere of enclosure controls:'),0,WACV) 363 topSizer = wx.BoxSizer(wx.HORIZONTAL) 364 atoms = [] 365 if len(self.indx): 366 topSizer.Add(wx.StaticText(self.panel,label=' Sphere centered at atoms: '),0,WACV) 367 cx,ct,cs = self.Drawing['atomPtrs'][:3] 368 # print self.Drawing.keys() 369 for id in self.indx: 370 atom = self.Drawing['Atoms'][id] 371 self.centers.append(atom[cx:cx+3]) 372 atoms.append('%s(%s)'%(atom[ct-1],atom[cs-1])) 373 topSizer.Add(wx.ComboBox(self.panel,choices=atoms,value=atoms[0], 374 style=wx.CB_READONLY|wx.CB_DROPDOWN),0,WACV) 375 else: 376 topSizer.Add(wx.StaticText(self.panel,label=' Sphere centered at drawing view point'),0,WACV) 377 self.centers.append(self.Drawing['viewPoint'][0]) 378 mainSizer.Add(topSizer,0,WACV) 379 sphereSizer = wx.BoxSizer(wx.HORIZONTAL) 380 sphereSizer.Add(wx.StaticText(self.panel,label=' Sphere radius: '),0,WACV) 381 radius = wx.TextCtrl(self.panel,value='%.3f'%(self.Sphere),style=wx.TE_PROCESS_ENTER) 382 radius.Bind(wx.EVT_TEXT_ENTER,OnRadius) 383 radius.Bind(wx.EVT_KILL_FOCUS,OnRadius) 384 sphereSizer.Add(radius,0,WACV) 385 mainSizer.Add(sphereSizer,0,WACV) 386 387 OkBtn = wx.Button(self.panel,-1,"Ok") 388 OkBtn.Bind(wx.EVT_BUTTON, self.OnOk) 389 cancelBtn = wx.Button(self.panel,-1,"Cancel") 390 cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel) 391 btnSizer = wx.BoxSizer(wx.HORIZONTAL) 392 btnSizer.Add((20,20),1) 393 btnSizer.Add(OkBtn) 394 btnSizer.Add((20,20),1) 395 btnSizer.Add(cancelBtn) 396 btnSizer.Add((20,20),1) 397 398 mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10) 399 self.panel.SetSizer(mainSizer) 400 self.panel.Fit() 401 self.Fit() 402 403 def GetSelection(self): 404 return self.centers,self.Sphere 405 406 def OnOk(self,event): 407 parent = self.GetParent() 408 parent.Raise() 409 self.EndModal(wx.ID_OK) 410 411 def OnCancel(self,event): 412 parent = self.GetParent() 413 parent.Raise() 414 self.EndModal(wx.ID_CANCEL) 415 416 ################################################################################ 326 417 class TransformDialog(wx.Dialog): 327 ''' Pha ae transformation418 ''' Phase transformation 328 419 329 420 :param wx.Frame parent: reference to parent frame (or None) … … 2054 2145 self.DrawAtomEdit.Append(id=wxID_DRAWADDEQUIV, kind=wx.ITEM_NORMAL,text='Add atoms', 2055 2146 help='Add symmetry & cell equivalents to drawing set from selected atoms') 2147 self.DrawAtomEdit.Append(id=wxID_DRAWADDSPHERE, kind=wx.ITEM_NORMAL,text='Add sphere of atoms', 2148 help='Add atoms within sphere of enclosure') 2056 2149 self.DrawAtomEdit.Append(id=wxID_DRAWTRANSFORM, kind=wx.ITEM_NORMAL,text='Transform draw atoms', 2057 2150 help='Transform selected atoms by symmetry & cell translations') -
TabularUnified trunk/GSASIIphsGUI.py ¶
r2431 r2450 4166 4166 G2plt.PlotStructure(G2frame,data) 4167 4167 4168 def AddSphere(event): 4169 generalData = data['General'] 4170 Amat,Bmat = G2lat.cell2AB(generalData['Cell'][1:7]) 4171 atomData = data['Drawing']['Atoms'] 4172 numAtoms = len(atomData) 4173 cx,ct,cs,ci = data['Drawing']['atomPtrs'] 4174 cuij = cs+5 4175 generalData = data['General'] 4176 SGData = generalData['SGData'] 4177 cellArray = G2lat.CellBlock(1) 4178 indx = drawAtoms.GetSelectedRows() 4179 indx.sort() 4180 dlg = G2gd.SphereEnclosure(G2frame,data['General'],data['Drawing'],indx) 4181 try: 4182 if dlg.ShowModal() == wx.ID_OK: 4183 centers,radius = dlg.GetSelection() 4184 for orig in centers: 4185 xyzA = np.array(orig) 4186 for atomB in atomData[:numAtoms]: 4187 xyzB = np.array(atomB[cx:cx+3]) 4188 Uij = atomB[cuij:cuij+6] 4189 # GSASIIpath.IPyBreak() 4190 result = G2spc.GenAtom(xyzB,SGData,False,Uij,True) 4191 for item in result: 4192 atom = copy.copy(atomB) 4193 atom[cx:cx+3] = item[0] 4194 atom[cx+3] = str(item[2])+'+' 4195 atom[cuij:cuij+6] = item[1] 4196 for xyz in cellArray+np.array(atom[cx:cx+3]): 4197 dist = np.sqrt(np.sum(np.inner(Amat,xyz-xyzA)**2)) 4198 if 0 < dist <= radius: 4199 if noDuplicate(xyz,atomData): 4200 C = xyz-atom[cx:cx+3]+item[3] 4201 newAtom = atom[:] 4202 newAtom[cx:cx+3] = xyz 4203 newAtom[cx+3] += str(int(round(C[0])))+','+str(int(round(C[1])))+','+str(int(round(C[2]))) 4204 atomData.append(newAtom) 4205 finally: 4206 dlg.Destroy() 4207 UpdateDrawAtoms() 4208 drawAtoms.ClearSelection() 4209 G2plt.PlotStructure(G2frame,data) 4210 4168 4211 def TransformSymEquiv(event): 4169 4212 indx = drawAtoms.GetSelectedRows() … … 7597 7640 G2frame.dataFrame.Bind(wx.EVT_MENU, SetViewPoint, id=G2gd.wxID_DRAWVIEWPOINT) 7598 7641 G2frame.dataFrame.Bind(wx.EVT_MENU, AddSymEquiv, id=G2gd.wxID_DRAWADDEQUIV) 7642 G2frame.dataFrame.Bind(wx.EVT_MENU, AddSphere, id=G2gd.wxID_DRAWADDSPHERE) 7599 7643 G2frame.dataFrame.Bind(wx.EVT_MENU, TransformSymEquiv, id=G2gd.wxID_DRAWTRANSFORM) 7600 7644 G2frame.dataFrame.Bind(wx.EVT_MENU, FillCoordSphere, id=G2gd.wxID_DRAWFILLCOORD) -
TabularUnified trunk/GSASIIstrIO.py ¶
r2448 r2450 1487 1487 Ax[3]*Ax[5]-Ax[1]*Ax[4], 1488 1488 Ax[3]*Ax[4]-Ax[0]*Ax[5]]) 1489 srcvlsq = np.inner(drVdA,np.inner( vcov,drVdA.T))1489 srcvlsq = np.inner(drVdA,np.inner(drVdA,vcov)) 1490 1490 Vol = 1/np.sqrt(rVsq) 1491 1491 sigVol = Vol**3*np.sqrt(srcvlsq)/2. #ok - checks with GSAS -
TabularUnified trunk/GSASIIstrMain.py ¶
r2448 r2450 538 538 sig = 0.0 539 539 if len(Xvcov): 540 sig = np.sqrt(np.inner(pdpx,np.inner( Xvcov,pdpx)))540 sig = np.sqrt(np.inner(pdpx,np.inner(pdpx,Xvcov))) 541 541 Dist.append([Oatom[0],Tatom[0],tunit,Top,ma.getdata(dist[indb])[i],sig]) 542 542 if (Dist[-1][-2]-AsumR) <= 0.:
Note: See TracChangeset
for help on using the changeset viewer.