Changeset 5157 for trunk/GSASIIphsGUI.py
- Timestamp:
- Jan 24, 2022 11:04:47 PM (23 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIphsGUI.py
r5152 r5157 6994 6994 6995 6995 6996 # ###ISODISTORT results tab ###############################################################################6996 #--- ISODISTORT results tab ############################################################################### 6997 6997 6998 6998 def UpdateISODISTORT(Scroll=0): … … 7198 7198 G2plt.PlotStructure(G2frame,data) 7199 7199 UpdateISODISTORT() 7200 7200 7201 def OnSetZero(event): 7202 '''Reset all distortion mode values to 0''' 7203 ISOdata['modeDispl'] = [0.0 for i in ISOdata['ISOmodeDispl']] 7204 err = G2mth.ApplyModeDisp(data) 7205 if err: 7206 G2G.G2MessageBox(G2frame,'Do Draw atoms first') 7207 FindBondsDraw(data) 7208 G2plt.PlotStructure(G2frame,data) 7209 UpdateISODISTORT() 7210 7211 def OnSaveModes(event): 7212 '''Set initial distortion mode values to displayed values''' 7213 ISOdata['ISOmodeDispl'] = copy.deepcopy(ISOdata['modeDispl']) 7214 UpdateISODISTORT() 7215 7216 7217 7218 #### displayModes code starts here 7201 7219 ConstrData = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,G2frame.root, 'Constraints')) 7202 7220 pId = data['ranId'] 7203 7221 mainSizer = wx.BoxSizer(wx.VERTICAL) 7204 topSizer = wx.BoxSizer(wx.VERTICAL) 7205 topSizer.Add(wx.StaticText(ISODIST,label=ISOcite)) 7206 topSizer.Add(wx.StaticText(ISODIST,label=' ISODISTORT distortion modes for %s:'%data['General']['Name'])) 7207 lineSizer = wx.BoxSizer(wx.HORIZONTAL) 7208 lineSizer.Add(wx.StaticText(ISODIST,label=' Adjust magnitude of distortion modes (-2 to +2): '),0,WACV) 7209 reset = wx.Button(ISODIST,label='Reset modes') 7210 reset.Bind(wx.EVT_BUTTON,OnReset) 7211 lineSizer.Add(reset,0,WACV) 7212 topSizer.Add(lineSizer) 7213 slideSizer = wx.FlexGridSizer(0,5,0,0) 7214 slideSizer.AddGrowableCol(3,1) 7222 topSizer = wx.BoxSizer(wx.HORIZONTAL) 7223 topSizer.Add(wx.StaticText(ISODIST,label=' ISODISTORT distortion modes for phase %s'%data['General']['Name']),0,wx.BOTTOM,5) 7224 topSizer.Add((-1,-1),1,wx.EXPAND,1) 7225 topSizer.Add(G2G.HelpButton(ISODIST,helpIndex=G2frame.dataWindow.helpKey),0,wx.ALIGN_TOP) 7226 mainSizer.Add(topSizer,0,wx.EXPAND) 7227 7228 mainSizer.Add(wx.StaticText(ISODIST,label= 7229 u''' The 2nd column below shows the last saved mode values. The 3rd && 4th columns will set the 7230 display mode values. The positions in the Atoms and Draw Atoms tabs, as well as the atom 7231 positions shown in the Plot Window are changed to reflect the display mode values. The 7232 range of the slider corresponds to making a maximum atomic displacement between -2 && +2 \u212B.''')) 7233 mainSizer.Add((-1,10)) 7234 slideSizer = wx.FlexGridSizer(0,4,0,0) 7235 #slideSizer.AddGrowableCol(3,1) 7215 7236 modeDisp = ISOdata['modeDispl'] 7216 7237 idsp = 0 7238 slideSizer.Add(wx.StaticText(ISODIST,label='Isodistort mode name'),0,wx.ALIGN_CENTER) 7239 slideSizer.Add(wx.StaticText(ISODIST,label='Initial value')) 7240 slideSizer.Add(wx.StaticText(ISODIST,label='Display value'),0,wx.ALIGN_CENTER) 7241 slideSizer.Add(wx.StaticText(ISODIST,label='Refine?')) 7242 isoDict = {i.name:j for (i,j) in zip(data['ISODISTORT']['G2ModeList'],data['ISODISTORT']['IsoModeList'])} 7217 7243 for item in ConstrData['Phase']: 7218 if pId != item[-3].phase: 7244 if item[-1] != 'f': continue # only want new vars 7245 if item[-3] is None: continue # unnamed new var is not ISO 7246 try: 7247 if pId != item[-3].phase: continue # at present only ISO modes are associated with a phase 7248 except AttributeError: 7219 7249 continue 7220 slideSizer.Add(wx.StaticText(ISODIST,label=item[-3].name),0,WACV) 7221 slideSizer.Add(wx.StaticText(ISODIST,label=' %.5g '%ISOdata['ISOmodeDispl'][idsp]),0,WACV) 7250 if item[-3].name not in isoDict: continue 7251 isoName = isoDict[item[-3].name] 7252 slideSizer.Add(wx.StaticText(ISODIST,label=isoName),0,WACV) 7253 slideSizer.Add(wx.StaticText(ISODIST,label=' %.5g '%ISOdata['ISOmodeDispl'][idsp], 7254 style=wx.ALIGN_CENTER_HORIZONTAL),0,WACV|wx.EXPAND) 7255 lineSizer = wx.BoxSizer(wx.HORIZONTAL) 7222 7256 dispVal = G2G.ValidatedTxtCtrl(ISODIST,modeDisp,idsp,xmin=-2.,xmax=2.,size=(75,20),OnLeave=OnDispVal) 7223 slideSizer.Add(dispVal,0,WACV)7257 lineSizer.Add(dispVal,0,WACV) 7224 7258 displ = wx.Slider(ISODIST,style=wx.SL_HORIZONTAL,minValue=-2000,maxValue=2000,value=int(modeDisp[idsp]*1000)) 7225 7259 displ.Bind(wx.EVT_SLIDER, OnDispl) 7226 7260 Indx[displ.GetId()] = [idsp,dispVal] 7227 7261 Indx[dispVal.GetId()] = [idsp,displ] 7228 slideSizer.Add(displ,1,wx.EXPAND|wx.RIGHT) 7229 refDispl = wx.CheckBox(ISODIST,label=' Refine?') 7262 lineSizer.Add(displ) 7263 slideSizer.Add(lineSizer) 7264 refDispl = wx.CheckBox(ISODIST) 7230 7265 refDispl.SetValue(item[-2]) 7231 7266 refDispl.Bind(wx.EVT_CHECKBOX,OnRefDispl) 7232 7267 Indx[refDispl.GetId()] = [idsp,item] 7233 slideSizer.Add(refDispl,0,WACV )7268 slideSizer.Add(refDispl,0,WACV|wx.EXPAND|wx.LEFT,15) 7234 7269 idsp += 1 7235 7270 slideSizer.SetMinSize(wx.Size(450,10)) 7236 topSizer.Add(slideSizer) 7237 mainSizer.Add(topSizer) 7271 mainSizer.Add(slideSizer) 7272 lineSizer = wx.BoxSizer(wx.HORIZONTAL) 7273 reset = wx.Button(ISODIST,label='Reset modes to initial values') 7274 reset.Bind(wx.EVT_BUTTON,OnReset) 7275 lineSizer.Add(reset,0,WACV) 7276 reset = wx.Button(ISODIST,label='Set all modes to zero') 7277 reset.Bind(wx.EVT_BUTTON,OnSetZero) 7278 lineSizer.Add(reset,0,wx.ALL,10) 7279 reset = wx.Button(ISODIST,label='Save displayed mode values') 7280 reset.Bind(wx.EVT_BUTTON,OnSaveModes) 7281 lineSizer.Add(reset,0,WACV) 7282 mainSizer.Add(lineSizer,0,wx.TOP,5) 7283 mainSizer.Add(wx.StaticText(ISODIST,label=ISOcite),0,wx.TOP,10) 7284 mainSizer.Layout() 7238 7285 SetPhaseWindow(ISODIST,mainSizer,Scroll=Scroll) 7239 7286 7287 #### UpdateISODISTORT code starts here 7240 7288 Indx = {} 7241 7289 ISOdata = data['ISODISTORT'] … … 7243 7291 G2frame.dataWindow.ISODDataEdit.Enable(G2G.wxID_SHOWISO1,('G2VarList' in ISOdata) 7244 7292 or ('G2OccVarList' in ISOdata)) 7245 G2frame.dataWindow.ISODDataEdit.Enable(G2G.wxID_SHOWISOMODES,('G2VarList' in ISOdata) 7246 # or ('G2OccVarList' in data['ISODISTORT']) 7247 ) 7293 G2frame.dataWindow.ISODDataEdit.Enable(G2G.wxID_SHOWISOMODES,('G2VarList' in ISOdata)) 7294 7248 7295 ISOcite = ''' For use of ISODISTORT, please cite: 7249 H. T. Stokes, D. M. Hatch, and B. J. Campbell, ISODISTORT, ISOTROPY Software Suite, iso.byu.edu.7250 B. J. Campbell, H. T. Stokes, D. E. Tanner, and D. M. Hatch, "ISODISPLACE: An Internet Tool for7251 Exploring Structural Distortions." J. Appl. Cryst. 39, 607-614 (2006).7296 H. T. Stokes, D. M. Hatch, and B. J. Campbell, ISODISTORT, ISOTROPY Software Suite, iso.byu.edu. 7297 B. J. Campbell, H. T. Stokes, D. E. Tanner, and D. M. Hatch, "ISODISPLACE: An Internet Tool for 7298 Exploring Structural Distortions." J. Appl. Cryst. 39, 607-614 (2006). 7252 7299 ''' 7253 7300 if ISODIST.GetSizer(): … … 14129 14176 return 14130 14177 14131 # UpdatePhaseData execution starts here14178 #### UpdatePhaseData execution starts here 14132 14179 #patch 14133 14180 if 'RBModels' not in data:
Note: See TracChangeset
for help on using the changeset viewer.