Changeset 2222
- Timestamp:
- Apr 22, 2016 11:41:55 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIIO.py
r2215 r2222 340 340 Data['Flat Bkg'] = 0.0 341 341 Data['setDefault'] = False 342 Data['range'] = [( Imin,Imax),[Imin,Imax]]342 Data['range'] = [(0,Imax),[Imin,Imax]] 343 343 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Image Controls'),Data) 344 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Frames':[],'Thresholds':[( Imin,Imax),[Imin,Imax]]}344 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Frames':[],'Thresholds':[(0,Imax),[Imin,Imax]]} 345 345 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Masks'),Masks) 346 346 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Stress/Strain'), -
trunk/GSASIIimgGUI.py
r2221 r2222 53 53 def GetImageZ(G2frame,data): 54 54 '''Gets image & applies dark, background & flat background corrections 55 :param wx.Frame G2frame: main GSAS-II frame 56 param: dict data: Image Controls dictionary 57 return: array sumImg: corrected image for background/dark/flat back 55 58 ''' 56 59 … … 63 66 if darkImg: 64 67 Did = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, darkImg) 65 Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Did) 66 imagefile = G2IO.CheckImageFile(G2frame,imagefile) 67 darkImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag) 68 sumImg += darkImage*darkScale 68 if Did: 69 Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Did) 70 imagefile = G2IO.CheckImageFile(G2frame,imagefile) 71 darkImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag) 72 sumImg += darkImage*darkScale 69 73 if not 'background image' in data: 70 74 return sumImg … … 72 76 if backImg: #ignores any transmission effect in the background image 73 77 Bid = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, backImg) 74 Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Bid) 75 imagefile = G2IO.CheckImageFile(G2frame,imagefile) 76 backImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag) 77 Bdata = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Bid,'Image Controls')) 78 if darkImg: 79 Did = G2gd.GetPatternTreeItemId(G2frame, G2frame.root,darkImg) 80 Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Did) 78 if Bid: 79 Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Bid) 81 80 imagefile = G2IO.CheckImageFile(G2frame,imagefile) 82 darkImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag) 83 backImage += darkImage*darkScale 84 sumImg += backImage*backScale 81 backImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag) 82 Bdata = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Bid,'Image Controls')) 83 if darkImg: 84 Did = G2gd.GetPatternTreeItemId(G2frame, G2frame.root,darkImg) 85 Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Did) 86 imagefile = G2IO.CheckImageFile(G2frame,imagefile) 87 darkImage = G2IO.GetImageData(G2frame,imagefile,True,ImageTag=imagetag) 88 backImage += darkImage*darkScale 89 sumImg += backImage*backScale 85 90 if darkImg: del darkImg #force cleanup 86 91 if backImg: del backImg 87 92 sumImg -= data.get('Flat Bkg',0.) 93 Imin = max(0.,np.min(sumImg)) 94 Imax = np.max(sumImg) 95 data['range'] = [(Imin,Imax),[Imin,Imax]] 88 96 return sumImg 89 97 … … 177 185 Imin = max(0.,np.min(G2frame.ImageZ)) 178 186 Imax = np.max(G2frame.ImageZ) 179 data['range'] = [( Imin,Imax),[Imin,Imax]]180 masks['Thresholds'] = [( Imin,Imax),[Imin,Imax]]187 data['range'] = [(0,Imax),[Imin,Imax]] 188 masks['Thresholds'] = [(0,Imax),[Imin,Imax]] 181 189 MaxSizer.GetChildren()[2].Window.SetValue(str(int(Imax))) #tricky 182 190 MaxSizer.GetChildren()[5].Window.SetValue(str(int(Imin))) #tricky … … 207 215 208 216 def OnIntegrateAll(event): 209 TextList = [[False,'All IMG',0]] 210 # Names = [] 211 if G2frame.PatternTree.GetCount(): 212 id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 213 while id: 214 name = G2frame.PatternTree.GetItemText(id) 215 if 'IMG' in name: 216 TextList.append([False,name,id]) 217 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 218 if len(TextList) == 1: 219 G2frame.ErrorDialog('Nothing to integrate','There must some "IMG" patterns') 220 return 221 dlg = G2frame.CopyDialog(G2frame,'Image integration controls','Select images to integrate:',TextList) 222 try: 223 if dlg.ShowModal() == wx.ID_OK: 224 result = dlg.GetData() 225 if result[0][0]: #the 'All IMG' is True 226 result = TextList[1:] 227 for item in result: item[0] = True 228 G2frame.EnablePlot = False 229 for item in result: 230 ifintegrate,name,id = item 231 G2frame.Image = id 232 if ifintegrate: 233 Id = G2gd.GetPatternTreeItemId(G2frame,id, 'Image Controls') 234 Data = G2frame.PatternTree.GetItemPyData(Id) 235 blkSize = 128 #this seems to be optimal; will break in polymask if >1024 236 Nx,Ny = Data['size'] 237 nXBlks = (Nx-1)/blkSize+1 238 nYBlks = (Ny-1)/blkSize+1 239 Nup = nXBlks*nYBlks*3+3 240 dlgp = wx.ProgressDialog("Elapsed time","2D image integration",Nup, 241 style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE) 242 try: 243 # GSASIIpath.IPyBreak() 244 image = GetImageZ(G2frame,Data) 245 Masks = G2frame.PatternTree.GetItemPyData( 246 G2gd.GetPatternTreeItemId(G2frame,id, 'Masks')) 247 G2frame.Integrate = G2img.ImageIntegrate(image,Data,Masks,blkSize,dlgp) 248 del image #force cleanup 249 pId = G2IO.SaveIntegration(G2frame,Id,Data) 250 finally: 251 dlgp.Destroy() 252 else: 253 G2frame.EnablePlot = True 254 G2frame.PatternTree.SelectItem(pId) 255 G2frame.PatternTree.Expand(pId) 256 G2frame.PatternId = pId 257 258 finally: 259 dlg.Destroy() 217 Names = G2gd.GetPatternTreeDataNames(G2frame,['IMG ',]) 218 dlg = G2G.G2MultiChoiceDialog(G2frame,'Image integration controls','Select images to integrate:',Names) 219 try: 220 if dlg.ShowModal() == wx.ID_OK: 221 items = dlg.GetSelections() 222 G2frame.EnablePlot = False 223 for item in items: 224 name = Names[item] 225 G2frame.Image = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,name) 226 CId = G2gd.GetPatternTreeItemId(G2frame,G2frame.Image,'Image Controls') 227 Data = G2frame.PatternTree.GetItemPyData(CId) 228 blkSize = 128 #this seems to be optimal; will break in polymask if >1024 229 Nx,Ny = Data['size'] 230 nXBlks = (Nx-1)/blkSize+1 231 nYBlks = (Ny-1)/blkSize+1 232 Nup = nXBlks*nYBlks*3+3 233 dlgp = wx.ProgressDialog("Elapsed time","2D image integration",Nup, 234 style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE) 235 try: 236 image = GetImageZ(G2frame,Data) 237 Masks = G2frame.PatternTree.GetItemPyData( 238 G2gd.GetPatternTreeItemId(G2frame,G2frame.Image,'Masks')) 239 G2frame.Integrate = G2img.ImageIntegrate(image,Data,Masks,blkSize,dlgp) 240 del image #force cleanup 241 pId = G2IO.SaveIntegration(G2frame,CId,Data) 242 finally: 243 dlgp.Destroy() 244 else: 245 G2frame.EnablePlot = True 246 G2frame.PatternTree.SelectItem(pId) 247 G2frame.PatternTree.Expand(pId) 248 G2frame.PatternId = pId 249 # GSASIIpath.IPyBreak() 250 finally: 251 dlg.Destroy() 260 252 261 253 def OnCopyControls(event): 262 TextList = [[False,'All IMG',0]] 263 # Names = [] 264 if G2frame.PatternTree.GetCount(): 265 id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 266 while id: 267 name = G2frame.PatternTree.GetItemText(id) 268 # Names.append(name) 269 if 'IMG' in name: 270 if id == G2frame.Image: 271 Source = name 272 Data = copy.deepcopy(data) 273 # Data = copy.deepcopy(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Image Controls'))) 274 Data['showLines'] = True 275 Data['ring'] = [] 276 Data['rings'] = [] 277 Data['ellipses'] = [] 278 Data['setDefault'] = False 279 else: 280 TextList.append([False,name,id]) 281 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 282 if len(TextList) == 1: 283 G2frame.ErrorDialog('Nothing to copy controls to','There must be more than one "IMG" pattern') 284 return 285 dlg = G2frame.CopyDialog(G2frame,'Copy image controls','Copy controls from '+Source+' to:',TextList) 286 try: 287 if dlg.ShowModal() == wx.ID_OK: 288 result = dlg.GetData() 289 if result[0][0]: 290 result = TextList[1:] 291 for item in result: item[0] = True 292 for i,item in enumerate(result): 293 ifcopy,name,id = item 294 if ifcopy: 295 oldData = copy.deepcopy(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Image Controls'))) 296 Data['range'] = oldData['range'] 297 Data['size'] = oldData['size'] 298 Data['GonioAngles'] = oldData.get('GonioAngles', [0.,0.,0.]) 299 Data['ring'] = [] 300 Data['rings'] = [] 301 Data['ellipses'] = [] 302 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Image Controls'),copy.deepcopy(Data)) 303 finally: 304 dlg.Destroy() 305 G2frame.PatternTree.SelectItem(G2frame.PickId) 254 Names = G2gd.GetPatternTreeDataNames(G2frame,['IMG ',]) 255 if len(Names) == 1: 256 G2frame.ErrorDialog('Nothing to copy controls to','There must be more than one "IMG" pattern') 257 return 258 # set up source 259 Data = copy.deepcopy(data) 260 Data['showLines'] = True 261 Data['ring'] = [] 262 Data['rings'] = [] 263 Data['ellipses'] = [] 264 Data['setDefault'] = False 265 Source = G2frame.PatternTree.GetItemText(G2frame.Image) 266 Names.pop(Names.index(Source)) 267 # select targets & do copy 268 dlg = G2G.G2MultiChoiceDialog(G2frame,'Copy image controls','Copy controls from '+Source+' to:',Names) 269 try: 270 if dlg.ShowModal() == wx.ID_OK: 271 items = dlg.GetSelections() 272 G2frame.EnablePlot = False 273 for item in items: 274 name = Names[item] 275 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,name) 276 CId = G2gd.GetPatternTreeItemId(G2frame,Id,'Image Controls') 277 oldData = copy.deepcopy(G2frame.PatternTree.GetItemPyData(CId)) 278 # Data['range'] = oldData['range'] 279 Data['size'] = oldData['size'] 280 Data['GonioAngles'] = oldData.get('GonioAngles', [0.,0.,0.]) 281 Data['ring'] = [] 282 Data['rings'] = [] 283 Data['ellipses'] = [] 284 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Image Controls'),copy.deepcopy(Data)) 285 finally: 286 dlg.Destroy() 287 G2frame.PatternTree.SelectItem(G2frame.PickId) 306 288 307 289 def OnSaveControls(event): … … 1191 1173 1192 1174 def OnCopyMask(event): 1193 TextList = [[False,'All IMG',0]] 1194 # Names = [] 1195 if G2frame.PatternTree.GetCount(): 1196 id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 1197 while id: 1198 name = G2frame.PatternTree.GetItemText(id) 1199 # Names.append(name) 1200 if 'IMG' in name: 1201 if id == G2frame.Image: 1202 Source = name 1203 Mask = copy.deepcopy(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Masks'))) 1204 Thresh = Mask.pop('Thresholds') #remove Thresholds from source mask & save it for later 1205 else: 1206 TextList.append([False,name,id]) 1207 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 1208 if len(TextList) == 1: 1209 G2frame.ErrorDialog('Nothing to copy mask to','There must be more than one "IMG" pattern') 1210 return 1211 dlg = G2frame.CopyDialog(G2frame,'Copy mask information','Copy mask from '+Source+' to:',TextList) 1212 try: 1213 if dlg.ShowModal() == wx.ID_OK: 1214 result = dlg.GetData() 1215 if result[0][0]: 1216 result = TextList[1:] 1217 for item in result: item[0] = True 1218 for i,item in enumerate(result): 1219 ifcopy,name,id = item 1220 if ifcopy: 1221 mask = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Masks')) 1222 # Mask['Thresholds'][0] = mask['Thresholds'][0] 1223 # Mask['Thresholds'][1][1] = min(mask['Thresholds'][1][1],Mask['Thresholds'][1][1]) 1224 mask.update(Mask) 1225 mask['Thresholds'][1][0] = Thresh[1][0] #copy only lower threshold 1226 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Masks'),copy.deepcopy(mask)) 1227 finally: 1228 dlg.Destroy() 1229 1175 Names = G2gd.GetPatternTreeDataNames(G2frame,['IMG ',]) 1176 if len(Names) == 1: 1177 G2frame.ErrorDialog('Nothing to copy masks to','There must be more than one "IMG" pattern') 1178 return 1179 Source = G2frame.PatternTree.GetItemText(G2frame.Image) 1180 Names.pop(Names.index(Source)) 1181 Data = copy.deepcopy(data) 1182 Thresh = Data.pop('Thresholds') # & remove it as well 1183 dlg = G2G.G2MultiChoiceDialog(G2frame,'Copy mask data','Copy masks from '+Source+' to:',Names) 1184 try: 1185 if dlg.ShowModal() == wx.ID_OK: 1186 items = dlg.GetSelections() 1187 for item in items: 1188 name = Names[item] 1189 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,name) 1190 MId = G2gd.GetPatternTreeItemId(G2frame,Id,'Masks') 1191 Mask = copy.deepcopy(G2frame.PatternTree.GetItemPyData(MId)) 1192 Mask.update(Data) 1193 Mask['Thresholds'][1][0] = Thresh[1][0] #copy only lower threshold 1194 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Masks'),Mask) 1195 finally: 1196 dlg.Destroy() 1197 1230 1198 def OnSaveMask(event): 1231 1199 CleanupMasks(data) … … 1513 1481 1514 1482 def OnCopyStrSta(event): 1515 TextList = [[False,'All IMG',0,0]] 1516 # Names = [] 1517 if G2frame.PatternTree.GetCount(): 1518 id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 1519 while id: 1520 name = G2frame.PatternTree.GetItemText(id) 1521 # Names.append(name) 1522 if 'IMG' in name: 1523 Data = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Stress/Strain')) 1524 if id == G2frame.Image: 1525 Source = name 1526 else: 1527 TextList.append([False,name,id,Data.get('Sample load',0.0)]) 1528 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 1529 if len(TextList) == 1: 1530 G2frame.ErrorDialog('Nothing to copy controls to','There must be more than one "IMG" pattern') 1531 return 1532 dlg = G2frame.CopyDialog(G2frame,'Copy stress/strain controls','Copy controls from '+Source+' to:',TextList) 1533 try: 1534 if dlg.ShowModal() == wx.ID_OK: 1535 result = dlg.GetData() 1536 if result[0][0]: 1537 result = TextList[1:] 1538 for item in result: item[0] = True 1539 for i,item in enumerate(result): 1540 ifcopy,name,id,load = item 1541 if ifcopy: 1542 Data = copy.deepcopy(data) 1543 Data['Sample load'] = load 1544 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Stress/Strain'),Data) 1545 finally: 1546 dlg.Destroy() 1483 Names = G2gd.GetPatternTreeDataNames(G2frame,['IMG ',]) 1484 if len(Names) == 1: 1485 G2frame.ErrorDialog('Nothing to copy controls to','There must be more than one "IMG" pattern') 1486 return 1487 Source = G2frame.PatternTree.GetItemText(G2frame.Image) 1488 Names.pop(Names.index(Source)) 1489 # GSASIIpath.IPyBreak() 1490 dlg = G2G.G2MultiChoiceDialog(G2frame,'Copy stress/strain controls','Copy controls from '+Source+' to:',Names) 1491 try: 1492 if dlg.ShowModal() == wx.ID_OK: 1493 items = dlg.GetSelections() 1494 for item in items: 1495 name = Names[item] 1496 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,name) 1497 CId = G2gd.GetPatternTreeItemId(G2frame,Id,'Stress/Strain') 1498 oldData = G2frame.PatternTree.GetItemPyData(CId) 1499 load = oldData.get('Sample load',0.0) 1500 Data = copy.deepcopy(data) 1501 Data['Sample load'] = load 1502 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Stress/Strain'),Data) 1503 finally: 1504 dlg.Destroy() 1505 G2frame.PatternTree.SelectItem(G2frame.PickId) 1547 1506 1548 1507 def OnLoadStrSta(event): … … 1674 1633 1675 1634 def OnFitAllStrSta(event): 1676 TextList = [[False,'All IMG',0]] 1677 # Names = [] 1678 if G2frame.PatternTree.GetCount(): 1679 choices = G2gd.GetPatternTreeDataNames(G2frame,['IMG ',]) 1680 if len(choices) == 1: 1681 G2frame.ErrorDialog('Nothing to fit','There must some "IMG" patterns') 1682 return 1683 sel = [] 1684 dlg = G2G.G2MultiChoiceDialog(G2frame,'Stress/Strain fitting','Select images to fit:',choices) 1685 dlg.SetSelections(sel) 1686 names = [] 1687 if dlg.ShowModal() == wx.ID_OK: 1688 for sel in dlg.GetSelections(): 1689 names.append(choices[sel]) 1690 dlg.Destroy() 1691 SeqResult = {} 1692 dlg = wx.ProgressDialog('Sequential IMG Strain fit','Data set name = '+names[0],len(names), 1693 style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_REMAINING_TIME|wx.PD_CAN_ABORT) 1694 wx.BeginBusyCursor() 1695 goodnames = [] 1696 try: 1697 for i,name in enumerate(names): 1698 print ' Sequential strain fit for ',name 1699 GoOn = dlg.Update(i,newmsg='Data set name = '+name)[0] 1700 if not GoOn: 1701 break 1702 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,name) 1703 Controls = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Image Controls')) 1704 StaCtrls = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Stress/Strain')) 1705 if not len(StaCtrls['d-zero']): 1706 continue 1707 goodnames.append(name) 1708 id = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, name) 1709 Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Id) 1710 image = GetImageZ(G2frame,Controls) 1711 G2img.FitStrSta(image,StaCtrls,Controls) 1712 G2plt.PlotStrain(G2frame,StaCtrls,newPlot=True) 1713 parmDict = {'Sample load':StaCtrls['Sample load'],} 1714 varyNames = ['e11','e12','e22'] 1715 sig = [] 1716 varyList = [] 1717 variables = [] 1718 for i,item in enumerate(StaCtrls['d-zero']): 1719 variables += item['Emat'] 1720 sig += item['Esig'] 1721 varylist = ['%d%s%s'%(i,';',Name) for Name in varyNames] 1722 varyList += varylist 1723 parmDict.update(dict(zip(varylist,item['Emat']))) 1724 parmDict['%d:Dcalc'%(i)] = item['Dcalc'] 1725 SeqResult[name] = {'variables':variables,'varyList':varyList,'sig':sig,'Rvals':[], 1726 'covMatrix':np.eye(len(variables)),'title':name,'parmDict':parmDict} 1727 else: 1728 SeqResult['histNames'] = goodnames 1729 dlg.Destroy() 1730 print ' ***** Sequential strain refinement successful *****' 1731 finally: 1732 wx.EndBusyCursor() 1733 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Sequential results') 1734 if Id: 1735 G2frame.PatternTree.SetItemPyData(Id,SeqResult) 1635 choices = G2gd.GetPatternTreeDataNames(G2frame,['IMG ',]) 1636 sel = [] 1637 dlg = G2G.G2MultiChoiceDialog(G2frame,'Stress/Strain fitting','Select images to fit:',choices) 1638 dlg.SetSelections(sel) 1639 names = [] 1640 if dlg.ShowModal() == wx.ID_OK: 1641 for sel in dlg.GetSelections(): 1642 names.append(choices[sel]) 1643 dlg.Destroy() 1644 SeqResult = {} 1645 dlg = wx.ProgressDialog('Sequential IMG Strain fit','Data set name = '+names[0],len(names), 1646 style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_REMAINING_TIME|wx.PD_CAN_ABORT) 1647 wx.BeginBusyCursor() 1648 goodnames = [] 1649 try: 1650 for i,name in enumerate(names): 1651 print ' Sequential strain fit for ',name 1652 GoOn = dlg.Update(i,newmsg='Data set name = '+name)[0] 1653 if not GoOn: 1654 break 1655 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,name) 1656 G2frame.Image = Id 1657 Controls = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Image Controls')) 1658 StaCtrls = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Stress/Strain')) 1659 if not len(StaCtrls['d-zero']): 1660 continue 1661 goodnames.append(name) 1662 id = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, name) 1663 Npix,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(Id) 1664 image = GetImageZ(G2frame,Controls) 1665 G2img.FitStrSta(image,StaCtrls,Controls) 1666 G2plt.PlotStrain(G2frame,StaCtrls,newPlot=True) 1667 parmDict = {'Sample load':StaCtrls['Sample load'],} 1668 varyNames = ['e11','e12','e22'] 1669 sig = [] 1670 varyList = [] 1671 variables = [] 1672 for i,item in enumerate(StaCtrls['d-zero']): 1673 variables += item['Emat'] 1674 sig += item['Esig'] 1675 varylist = ['%d%s%s'%(i,';',Name) for Name in varyNames] 1676 varyList += varylist 1677 parmDict.update(dict(zip(varylist,item['Emat']))) 1678 parmDict['%d:Dcalc'%(i)] = item['Dcalc'] 1679 SeqResult[name] = {'variables':variables,'varyList':varyList,'sig':sig,'Rvals':[], 1680 'covMatrix':np.eye(len(variables)),'title':name,'parmDict':parmDict} 1736 1681 else: 1737 Id = G2frame.PatternTree.AppendItem(parent=G2frame.root,text='Sequential results') 1738 G2frame.PatternTree.SetItemPyData(Id,SeqResult) 1739 G2frame.PatternTree.SelectItem(Id) 1740 print 'All images fitted' 1682 SeqResult['histNames'] = goodnames 1683 dlg.Destroy() 1684 print ' ***** Sequential strain refinement successful *****' 1685 finally: 1686 wx.EndBusyCursor() 1687 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Sequential results') 1688 if Id: 1689 G2frame.PatternTree.SetItemPyData(Id,SeqResult) 1690 else: 1691 Id = G2frame.PatternTree.AppendItem(parent=G2frame.root,text='Sequential results') 1692 G2frame.PatternTree.SetItemPyData(Id,SeqResult) 1693 G2frame.PatternTree.SelectItem(Id) 1694 print 'All images fitted' 1741 1695 1742 1696 def SamSizer():
Note: See TracChangeset
for help on using the changeset viewer.