Changeset 936
- Timestamp:
- May 30, 2013 9:05:36 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIgrid.py
r934 r936 67 67 [ wxID_ATOMSEDITADD, wxID_ATOMSEDITINSERT, wxID_ATOMSEDITDELETE, wxID_ATOMSREFINE, 68 68 wxID_ATOMSMODIFY, wxID_ATOMSTRANSFORM, wxID_ATOMSVIEWADD, wxID_ATOMVIEWINSERT, 69 wxID_RELOADDRAWATOMS,wxID_ATOMSDISAGL,wxID_ATOMMOVE, wxID_RBAPPEND,69 wxID_RELOADDRAWATOMS,wxID_ATOMSDISAGL,wxID_ATOMMOVE, 70 70 wxID_ASSIGNATMS2RB 71 ] = [wx.NewId() for item in range(1 3)]71 ] = [wx.NewId() for item in range(12)] 72 72 73 73 [ wxID_DRAWATOMSTYLE, wxID_DRAWATOMLABEL, wxID_DRAWATOMCOLOR, wxID_DRAWATOMRESETCOLOR, … … 80 80 ] = [wx.NewId() for item in range(4)] 81 81 82 [ wxID_ADDMCSAATOM,wxID_ADDMCSARB,wxID_CLEARMCSARB, 83 ] = [wx.NewId() for item in range( 3)]82 [ wxID_ADDMCSAATOM,wxID_ADDMCSARB,wxID_CLEARMCSARB,wxID_MOVEMCSA, 83 ] = [wx.NewId() for item in range(4)] 84 84 85 85 [ wxID_CLEARTEXTURE,wxID_REFINETEXTURE, … … 1681 1681 self.AtomEdit.Append(id=wxID_ATOMSVIEWADD, kind=wx.ITEM_NORMAL,text='Append view point', 1682 1682 help='Appended as an H atom') 1683 self.AtomEdit.Append(id=wxID_RBAPPEND, kind=wx.ITEM_NORMAL,text='Append rigid body',1684 help='Append atoms for rigid body')1685 1683 self.AtomEdit.Append(id=wxID_ATOMSEDITINSERT, kind=wx.ITEM_NORMAL,text='Insert atom', 1686 1684 help='Select atom row to insert before; inserted as an H atom') … … 1784 1782 help='Add rigid body to MC/SA model' ) 1785 1783 self.MCSAEdit.Append(id=wxID_CLEARMCSARB, kind=wx.ITEM_NORMAL,text='Clear rigid bodies', 1786 help='Clear all rigid bodies from MC/SA model' ) 1784 help='Clear all atoms & rigid bodies from MC/SA model' ) 1785 self.MCSAEdit.Append(id=wxID_MOVEMCSA, kind=wx.ITEM_NORMAL,text='Move MC/SA solution', 1786 help='Move MC/SA solution to atom list' ) 1787 1787 self.PostfillDataMenu() 1788 1788 -
trunk/GSASIImath.py
r934 r936 283 283 return XYZ,Cart 284 284 285 def UpdateMCSAxyz(Bmat, mcsaModels,RBData):285 def UpdateMCSAxyz(Bmat,MCSA): 286 286 xyz = [] 287 287 atTypes = [] 288 288 iatm = 0 289 for model in mcsaModels[1:]: #skip the MD model289 for model in MCSA['Models'][1:]: #skip the MD model 290 290 if model['Type'] == 'Atom': 291 291 xyz.append(model['Pos'][0]) … … 293 293 iatm += 1 294 294 else: 295 rideList = [] 296 RBRes = RBData[model['Type']][model['RBId']] 295 RBRes = MCSA['rbData'][model['Type']][model['RBId']] 297 296 Pos = np.array(model['Pos'][0]) 298 297 Qori = np.array(model['Ori'][0]) … … 309 308 for ride in seq[3]: 310 309 Cart[ride] = prodQVQ(QuatA,Cart[ride]-Cart[seq[1]])+Cart[seq[1]] 311 rideList += seq[3] 312 centList = set(range(len(Cart)))-set(rideList) 313 if model['MolCent']: 314 cent = np.zeros(3) 315 for i in centList: 316 cent += Cart[i] 317 Cart -= cent/len(centList) 310 if model['MolCent'][1]: 311 Cart -= model['MolCent'][0] 318 312 for i,x in enumerate(Cart): 319 313 xyz.append(np.inner(Bmat,prodQVQ(Qori,x))+Pos) … … 322 316 iatm += 1 323 317 return np.array(xyz),atTypes 318 319 def SetMolCent(model,RBData): 320 rideList = [] 321 RBRes = RBData[model['Type']][model['RBId']] 322 if model['Type'] == 'Vector': 323 vecs = RBRes['rbVect'] 324 mags = RBRes['VectMag'] 325 Cart = np.zeros_like(vecs[0]) 326 for vec,mag in zip(vecs,mags): 327 Cart += vec*mag 328 elif model['Type'] == 'Residue': 329 Cart = np.array(RBRes['rbXYZ']) 330 for seq in RBRes['rbSeq']: 331 rideList += seq[3] 332 centList = set(range(len(Cart)))-set(rideList) 333 cent = np.zeros(3) 334 for i in centList: 335 cent += Cart[i] 336 model['MolCent'][0] = cent/len(centList) 324 337 325 338 def UpdateRBUIJ(Bmat,Cart,RBObj): -
trunk/GSASIIphsGUI.py
r934 r936 1207 1207 FillAtomsGrid(Atoms) 1208 1208 event.StopPropagation() 1209 G2plt.PlotStructure(G2frame,data) 1209 1210 1210 1211 def OnAtomViewAdd(event): … … 1217 1218 FillAtomsGrid(Atoms) 1218 1219 event.StopPropagation() 1220 G2plt.PlotStructure(G2frame,data) 1219 1221 1220 1222 def AtomAdd(x,y,z,El='H',Name='UNK'): … … 1234 1236 if 'Atoms' in data['Drawing']: 1235 1237 DrawAtomAdd(data['Drawing'],atomData[-1]) 1236 G2plt.PlotStructure(G2frame,data)1237 1238 1238 1239 def OnAtomInsert(event): … … 1240 1241 FillAtomsGrid(Atoms) 1241 1242 event.StopPropagation() 1243 G2plt.PlotStructure(G2frame,data) 1242 1244 1243 1245 def OnAtomViewInsert(event): … … 1248 1250 FillAtomsGrid(Atoms) 1249 1251 event.StopPropagation() 1250 1251 def OnRBAppend(event): #unfinished!1252 rbData = G2frame.PatternTree.GetItemPyData(1253 G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Rigid bodies'))1254 general = data['General']1255 atomData = data['Atoms']1256 Amat,Bmat = G2lat.cell2AB(general['Cell'][1:7])1257 rbNames = {}1258 for rbVec in rbData['Vector']:1259 if rbVec != 'AtInfo':1260 rbNames[rbData['Vector'][rbVec]['RBname']] = ['Vector',rbVec]1261 for rbRes in rbData['Residue']:1262 if rbRes != 'AtInfo':1263 rbNames[rbData['Residue'][rbRes]['RBname']] = ['Residue',rbRes]1264 if not rbNames:1265 print '**** ERROR - no rigid bodies defined ****'1266 return1267 dlg = wx.SingleChoiceDialog(G2frame.dataFrame,'Select','Rigid body',rbNames.keys())1268 if dlg.ShowModal() == wx.ID_OK:1269 sel = dlg.GetSelection()1270 rbname = rbNames.keys()[sel]1271 rbType,rbId = rbNames[rbname]1272 RB = rbData[rbType][rbId]1273 1252 1274 1253 def OnAtomMove(event): … … 4031 4010 Obj = event.GetEventObject() 4032 4011 model = Indx[Obj.GetId()] 4033 model['MolCent'] = Obj.GetValue() 4012 model['MolCent'][1] = Obj.GetValue() 4013 if model['MolCent'][1]: 4014 G2mth.SetMolCent(model,RBData) 4034 4015 G2plt.PlotStructure(G2frame,data) 4035 4016 … … 4049 4030 rbsizer1.Add(posVal,0,wx.ALIGN_CENTER_VERTICAL) 4050 4031 molcent = wx.CheckBox(MCSA,-1,label=' Use mol. center? ') 4051 molcent.SetValue(model['MolCent'] )4032 molcent.SetValue(model['MolCent'][1]) 4052 4033 molcent.Bind(wx.EVT_CHECKBOX,OnMolCent) 4053 4034 Indx[molcent.GetId()] = model … … 4318 4299 RB = rbData[rbType][rbId] 4319 4300 body = {'name':RB['RBname']+'('+str(len(data['MCSA']['Models']))+')','RBId':rbId,'Type':rbType, 4320 'Pos':[[0.,0.,0.],[False,False,False],[[0.,1.],[0.,1.],[0.,1.]]],'Ovar':'','MolCent': False,4301 'Pos':[[0.,0.,0.],[False,False,False],[[0.,1.],[0.,1.],[0.,1.]]],'Ovar':'','MolCent':[[0.,0.,0.],False], 4321 4302 'Ori':[[1.,0.,0.,0.],[False,False,False,False],[[-180.,180.],[-1.,1.],[-1.,1.],[-1.,1.]]]} 4322 4303 if rbType == 'Residue': … … 4335 4316 data['MCSA'] = {'Models':[{'Type':'MD','Coef':[1.0,False,[0.,3.],],'axis':[0,0,1]}],'Results':[],'AtInfo':{}} 4336 4317 G2plt.PlotStructure(G2frame,data) 4337 UpdateMCSA() 4338 4318 UpdateMCSA() 4319 4320 def OnMCSAmove(event): 4321 general = data['General'] 4322 Amat,Bmat = G2lat.cell2AB(general['Cell'][1:7]) 4323 xyz,aTypes = G2mth.UpdateMCSAxyz(Bmat,data['MCSA']) 4324 for iat,atype in enumerate(aTypes): 4325 x,y,z = xyz[iat] 4326 AtomAdd(x,y,z,atype,Name=atype+'(%d)'%(iat+1)) 4327 G2plt.PlotStructure(G2frame,data) 4328 4339 4329 ################################################################################ 4340 4330 ##### Pawley routines … … 4561 4551 mag,x,y,z,d = mapPeaks[ind] 4562 4552 AtomAdd(x,y,z,'H',Name='M '+'%d'%(int(100*mag/peakMax))) 4553 G2plt.PlotStructure(G2frame,data) 4563 4554 4564 4555 def OnPeaksClear(event): … … 4826 4817 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAtomAdd, id=G2gd.wxID_ATOMSEDITADD) 4827 4818 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAtomViewAdd, id=G2gd.wxID_ATOMSVIEWADD) 4828 G2frame.dataFrame.Bind(wx.EVT_MENU, OnRBAppend, id=G2gd.wxID_RBAPPEND)4829 4819 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAtomInsert, id=G2gd.wxID_ATOMSEDITINSERT) 4830 4820 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAtomViewInsert, id=G2gd.wxID_ATOMVIEWINSERT) … … 4915 4905 G2frame.dataFrame.Bind(wx.EVT_MENU, OnMCSAaddRB, id=G2gd.wxID_ADDMCSARB) 4916 4906 G2frame.dataFrame.Bind(wx.EVT_MENU, OnMCSAclear, id=G2gd.wxID_CLEARMCSARB) 4907 G2frame.dataFrame.Bind(wx.EVT_MENU, OnMCSAmove, id=G2gd.wxID_MOVEMCSA) 4917 4908 UpdateMCSA() 4918 4909 wx.CallAfter(G2plt.PlotStructure,G2frame,data) -
trunk/GSASIIplot.py
r935 r936 2619 2619 rbObj = testRBObj.get('rbObj',{}) 2620 2620 MCSA = data.get('MCSA',{}) 2621 mcsaModels = [] 2622 if len(MCSA): 2623 mcsaModels = MCSA['Models'] 2621 mcsaModels = MCSA.get('Models',[]) 2624 2622 drawAtoms = drawingData.get('Atoms',[]) 2625 2623 mapData = {} … … 3475 3473 RenderLabel(x,y,z,name,0.2,Or) 3476 3474 if len(mcsaModels) > 1 and pageName == 'MC/SA': #skip the default MD entry 3477 XYZ,atTypes = G2mth.UpdateMCSAxyz(Bmat, mcsaModels,MCSA.get('rbData',{}))3475 XYZ,atTypes = G2mth.UpdateMCSAxyz(Bmat,MCSA) 3478 3476 rbBonds = FindPeaksBonds(XYZ) 3479 3477 for ind,[x,y,z] in enumerate(XYZ):
Note: See TracChangeset
for help on using the changeset viewer.