Changeset 1585
- Timestamp:
- Nov 25, 2014 2:42:11 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIindex.py
r1582 r1585 47 47 npatand = lambda x: 180.*np.arctan(x)/np.pi 48 48 npatan2d = lambda y,x: 180.*np.arctan2(y,x)/np.pi 49 rpd = np.pi/180. 49 50 50 51 def scaleAbyV(A,V): … … 362 363 return [values[0],values[1],values[2],0,values[3],0] 363 364 else: 364 return list(values )365 return list(values[:6]) 365 366 366 367 def A2values(ibrav,A): … … 413 414 return True,np.sum(errFit(result[0],ibrav,Peaks[7],Peaks[4:7],Pwr)**2),A,result 414 415 415 def errFitZ(values,ibrav,d,H,tth,wave,Z,Zref ,Pwr):416 def errFitZ(values,ibrav,d,H,tth,wave,Z,Zref): 416 417 Zero = Z 417 418 if Zref: 418 419 Zero = values[-1] 419 A = Values2A(ibrav,values [:6])420 A = Values2A(ibrav,values) 420 421 Qo = 1./d**2 421 422 Qc = G2lat.calc_rDsqZ(H,A,Zero,tth,wave) 422 return (Qo-Qc)*d**Pwr 423 424 def FitHKLZ(wave,ibrav,peaks,A,Z,Zref,Pwr): 423 return (Qo-Qc) 424 425 def dervFitZ(values,ibrav,d,H,tth,wave,Z,Zref): 426 if ibrav in [0,1,2]: 427 derv = [H[0]*H[0]+H[1]*H[1]+H[2]*H[2],] 428 elif ibrav in [3,4,]: 429 derv = [H[0]*H[0]+H[1]*H[1]+H[0]*H[1],H[2]*H[2]] 430 elif ibrav in [5,6]: 431 derv = [H[0]*H[0]+H[1]*H[1],H[2]*H[2]] 432 elif ibrav in [7,8,9,10]: 433 derv = [H[0]*H[0],H[1]*H[1],H[2]*H[2]] 434 elif ibrav in [11,12]: 435 derv = [H[0]*H[0],H[1]*H[1],H[2]*H[2],H[0]*H[2]] 436 else: 437 derv = [H[0]*H[0],H[1]*H[1],H[2]*H[2],H[0]*H[1],H[0]*H[2],H[1]*H[2]] 438 if Zref: 439 derv.append(npsind(tth)*2.0*rpd/wave**2) 440 derv = -np.array(derv) 441 return derv.T 442 443 def FitHKLZ(wave,ibrav,peaks,A,Z,Zref): 425 444 'needs a doc string' 426 445 … … 429 448 if Zref: 430 449 values.append(Z) 431 result = so.leastsq(errFitZ,values, full_output=True,ftol=0.0001,factor=10.,432 args=(ibrav,Peaks[7],Peaks[4:7],Peaks[0],wave,Z,Zref ,Pwr))450 result = so.leastsq(errFitZ,values,Dfun=dervFitZ,full_output=True,ftol=0.0001, 451 args=(ibrav,Peaks[7],Peaks[4:7],Peaks[0],wave,Z,Zref)) 433 452 A = Values2A(ibrav,result[0][:6]) 434 453 if Zref: 435 454 Z = result[0][-1] 436 chisq = np.sum(errFitZ(result[0],ibrav,Peaks[7],Peaks[4:7],Peaks[0],wave,Z,Zref ,Pwr)**2)455 chisq = np.sum(errFitZ(result[0],ibrav,Peaks[7],Peaks[4:7],Peaks[0],wave,Z,Zref)**2) 437 456 return True,chisq,A,Z,result 438 457 439 def errFitZSS(values,ibrav,d,H,tth,wave,vec,Vref,Z,Zref ,Pwr):458 def errFitZSS(values,ibrav,d,H,tth,wave,vec,Vref,Z,Zref): 440 459 Zero = Z 441 460 if Zref: 442 461 Zero = values[-1] 443 A = Values2A(ibrav,values [:6])444 vec = Values2Vec(ibrav,vec,Vref,values)462 A = Values2A(ibrav,values) 463 Vec = Values2Vec(ibrav,vec,Vref,values) 445 464 Qo = 1./d**2 446 Qc = G2lat.calc_rDsqZSS(H,A,vec,Zero,tth,wave) 447 return (Qo-Qc)*d**Pwr 448 449 def FitHKLZSS(wave,ibrav,peaks,A,V,Vref,Z,Zref,Pwr): 465 Qc = G2lat.calc_rDsqZSS(H,A,Vec,Zero,tth,wave) 466 return (Qo-Qc) 467 468 def dervFitZSS(values,ibrav,d,H,tth,wave,vec,Vref,Z,Zref): 469 A = Values2A(ibrav,values) 470 Vec = Values2Vec(ibrav,vec,Vref,values) 471 HM = H[:3]+(H[3][:,np.newaxis]*Vec).T 472 if ibrav in [3,4,]: 473 derv = [HM[0]*HM[0]+HM[1]*HM[1]+HM[0]*HM[1],HM[2]*HM[2]] 474 elif ibrav in [5,6]: 475 derv = [HM[0]*HM[0]+HM[1]*HM[1],HM[2]*HM[2]] 476 elif ibrav in [7,8,9,10]: 477 derv = [HM[0]*HM[0],HM[1]*HM[1],HM[2]*HM[2]] 478 elif ibrav in [11,12]: 479 derv = [HM[0]*HM[0],HM[1]*HM[1],HM[2]*HM[2],HM[0]*HM[2]] 480 else: 481 derv = [HM[0]*HM[0],HM[1]*HM[1],HM[2]*HM[2],HM[0]*HM[1],HM[0]*HM[2],HM[1]*HM[2]] 482 if Vref[0]: 483 derv.append(2.*A[0]*HM[0]*H[3]+A[3]*HM[1]*H[3]+A[4]*HM[2]*H[3]) 484 if Vref[1]: 485 derv.append(2.*A[1]*HM[1]*H[3]+A[3]*HM[0]*H[3]+A[5]*HM[2]*H[3]) 486 if Vref[2]: 487 derv.append(2.*A[2]*HM[2]*H[3]+A[4]*HM[1]*H[3]+A[5]*HM[0]*H[3]) 488 if Zref: 489 derv.append(npsind(tth)*2.0*rpd/wave**2) 490 derv = -np.array(derv) 491 return derv.T 492 493 def FitHKLZSS(wave,ibrav,peaks,A,V,Vref,Z,Zref): 450 494 'needs a doc string' 451 495 … … 457 501 if Zref: 458 502 values.append(Z) 459 result = so.leastsq(errFitZSS,values, full_output=True,ftol=1.e-6,factor=10.,460 args=(ibrav,Peaks[8],Peaks[4:8],Peaks[0],wave,V,Vref,Z,Zref ,Pwr))503 result = so.leastsq(errFitZSS,values,Dfun=dervFitZSS,full_output=True,ftol=1.e-6, 504 args=(ibrav,Peaks[8],Peaks[4:8],Peaks[0],wave,V,Vref,Z,Zref)) 461 505 A = Values2A(ibrav,result[0]) 462 506 Vec = Values2Vec(ibrav,V,Vref,result[0]) 463 507 if Zref: 464 508 Z = result[0][-1] 465 chisq = np.sum(errFitZSS(result[0],ibrav,Peaks[8],Peaks[4:8],Peaks[0],wave,Vec,Vref,Z,Zref ,Pwr)**2)509 chisq = np.sum(errFitZSS(result[0],ibrav,Peaks[8],Peaks[4:8],Peaks[0],wave,Vec,Vref,Z,Zref)**2) 466 510 return True,chisq,A,Vec,Z,result 467 511 468 def errFitT(values,ibrav,d,H,tof,difC,Z,Zref ,Pwr):512 def errFitT(values,ibrav,d,H,tof,difC,Z,Zref): 469 513 Zero = Z 470 514 if Zref: 471 515 Zero = values[-1] 472 A = Values2A(ibrav,values [:6])516 A = Values2A(ibrav,values) 473 517 Qo = 1./d**2 474 518 Qc = G2lat.calc_rDsqT(H,A,Zero,tof,difC) 475 return (Qo-Qc)*d**Pwr 476 477 def FitHKLT(difC,ibrav,peaks,A,Z,Zref,Pwr): 519 return (Qo-Qc) 520 521 def dervFitT(values,ibrav,d,H,tof,difC,Z,Zref): 522 if ibrav in [0,1,2]: 523 derv = [H[0]*H[0]+H[1]*H[1]+H[2]*H[2],] 524 elif ibrav in [3,4,]: 525 derv = [H[0]*H[0]+H[1]*H[1]+H[0]*H[1],H[2]*H[2]] 526 elif ibrav in [5,6]: 527 derv = [H[0]*H[0]+H[1]*H[1],H[2]*H[2]] 528 elif ibrav in [7,8,9,10]: 529 derv = [H[0]*H[0],H[1]*H[1],H[2]*H[2]] 530 elif ibrav in [11,12]: 531 derv = [H[0]*H[0],H[1]*H[1],H[2]*H[2],H[0]*H[2]] 532 else: 533 derv = [H[0]*H[0],H[1]*H[1],H[2]*H[2],H[0]*H[1],H[0]*H[2],H[1]*H[2]] 534 if Zref: 535 derv.append(np.ones_like(d)/difC) 536 derv = -np.array(derv) 537 return derv.T 538 539 def FitHKLT(difC,ibrav,peaks,A,Z,Zref): 478 540 'needs a doc string' 479 541 … … 482 544 if Zref: 483 545 values.append(Z) 484 result = so.leastsq(errFitT,values, full_output=True,ftol=0.0001,factor=0.001,485 args=(ibrav,Peaks[7],Peaks[4:7],Peaks[0],difC,Z,Zref ,Pwr))486 A = Values2A(ibrav,result[0] [:6])546 result = so.leastsq(errFitT,values,Dfun=dervFitT,full_output=True,ftol=0.0001, 547 args=(ibrav,Peaks[7],Peaks[4:7],Peaks[0],difC,Z,Zref)) 548 A = Values2A(ibrav,result[0]) 487 549 if Zref: 488 550 Z = result[0][-1] 489 chisq = np.sum(errFitT(result[0],ibrav,Peaks[7],Peaks[4:7],Peaks[0],difC,Z,Zref ,Pwr)**2)551 chisq = np.sum(errFitT(result[0],ibrav,Peaks[7],Peaks[4:7],Peaks[0],difC,Z,Zref)**2) 490 552 return True,chisq,A,Z,result 491 553 … … 539 601 'needs a doc string' 540 602 dmin = getDmin(peaks) 541 OK,smin,Aref,Z,result = FitHKLZ(wave,ibrav,peaks,A,Zero,ZeroRef ,0)603 OK,smin,Aref,Z,result = FitHKLZ(wave,ibrav,peaks,A,Zero,ZeroRef) 542 604 Peaks = np.array(peaks).T 543 605 H = Peaks[4:7] … … 551 613 'needs a doc string' 552 614 dmin = getDmin(peaks) 553 print Zero 554 OK,smin,Aref,Vref,Z,result = FitHKLZSS(wave,ibrav,peaks,A,vec,vecRef,Zero,ZeroRef,0) 555 print Z 615 OK,smin,Aref,Vref,Z,result = FitHKLZSS(wave,ibrav,peaks,A,vec,vecRef,Zero,ZeroRef) 556 616 Peaks = np.array(peaks).T 557 617 H = Peaks[4:8] … … 565 625 'needs a doc string' 566 626 dmin = getDmin(peaks) 567 OK,smin,Aref,Z,result = FitHKLT(difC,ibrav,peaks,A,Zero,ZeroRef ,0)627 OK,smin,Aref,Z,result = FitHKLT(difC,ibrav,peaks,A,Zero,ZeroRef) 568 628 Peaks = np.array(peaks).T 569 629 H = Peaks[4:7] -
trunk/GSASIIlattice.py
r1581 r1585 424 424 return wave/(2.0*sind((pos-Inst.get('Zero',[0,0])[1])/2.0)) 425 425 else: #'T'OF - ignore difB 426 # return TOF2dsp(Inst,pos) 426 427 T = pos-Inst['Zero'][1] 427 428 T1 = Inst['difC'][1]**2-4.*Inst['difA'][1]*T 428 429 return 2.*T/(Inst['difC'][1]+np.sqrt(T1)) 430 431 def TOF2dsp(Inst,Pos): 432 import scipy.optimize as so 433 434 def func(d,pos,Inst): 435 return pos-Inst['difC'][1]*d-Inst['difA'][1]*d**2-Inst['Zero'][1]-Inst['difB'][1]/d 436 437 return [so.brentq(func,.01,100.,args=(pos,Inst)) for pos in Pos] 429 438 430 439 def Dsp2pos(Inst,dsp): -
trunk/GSASIIplot.py
r1583 r1585 215 215 arrows = {} 216 216 for direc in ('left','right','up','down','Expand X', 217 ' Expand Y','Shrink X','Shrink Y'):217 'Shrink X','Expand Y','Shrink Y'): 218 218 arrows[direc] = wx.NewId() 219 219 def __init__(self,plotCanvas): … … 223 223 POSITION_OF_CONFIGURE_SUBPLOTS_BTN = 6 # remove one button 224 224 self.DeleteToolByPos(POSITION_OF_CONFIGURE_SUBPLOTS_BTN) 225 parent = self.GetParent()225 self.parent = self.GetParent() 226 226 key = os.path.join(os.path.split(__file__)[0],'key.ico') 227 227 self.AddSimpleTool(self.ON_MPL_KEY,_load_bitmap(key),'Key press','Select key press') … … 236 236 self.AddSimpleTool(self.arrows[direc],_load_bitmap(icon), 237 237 'Shift '+direc,'Shift plot '+direc) 238 for direc in ('Expand X',' Expand Y','Shrink X','Shrink Y'):238 for direc in ('Expand X','Shrink X','Expand Y','Shrink Y'): 239 239 fil = ''.join([i[0].lower() for i in direc.split()]+['arrow.ico']) 240 240 wx.EVT_TOOL(self,self.arrows[direc],self.OnArrow) … … 265 265 elif event.Id == self.arrows['Expand X']: 266 266 delta = (xmax-xmin)/10. 267 #xmin += delta267 xmin += delta 268 268 xmax -= delta 269 269 elif event.Id == self.arrows['Expand Y']: 270 270 delta = (ymax-ymin)/10. 271 #ymin += delta271 ymin += delta 272 272 ymax -= delta 273 273 elif event.Id == self.arrows['Shrink X']: 274 274 delta = (xmax-xmin)/10. 275 #xmin -= delta275 xmin -= delta 276 276 xmax += delta 277 277 elif event.Id == self.arrows['Shrink Y']: 278 278 delta = (ymax-ymin)/10. 279 #ymin -= delta279 ymin -= delta 280 280 ymax += delta 281 281 else: 282 282 # should not happen! 283 283 GSASIIpath.IPyBreak() 284 self.parent.toolbar.push_current() 284 285 ax.axis((xmin,xmax,ymin,ymax)) 285 286 #print xmin,xmax,ymin,ymax 286 287 self.plotCanvas.figure.canvas.draw() 288 self.parent.toolbar.draw() 289 # self.parent.toolbar.push_current() 287 290 288 291 def OnHelp(self,event): -
trunk/GSASIIpwdGUI.py
r1582 r1585 2668 2668 spcSel.Bind(wx.EVT_CHOICE,OnSpcSel) 2669 2669 littleSizer.Add(spcSel,0,WACV) 2670 littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label=" Zero offset"),0,WACV) 2671 zero = wx.TextCtrl(G2frame.dataDisplay,value="%.4f"%(controls[1]),style=wx.TE_PROCESS_ENTER) 2672 zero.Bind(wx.EVT_TEXT_ENTER,OnZero) 2673 zero.Bind(wx.EVT_KILL_FOCUS,OnZero) 2674 littleSizer.Add(zero,0,WACV) 2675 zeroVar = wx.CheckBox(G2frame.dataDisplay,label="Refine?") 2676 zeroVar.SetValue(controls[0]) 2677 zeroVar.Bind(wx.EVT_CHECKBOX,OnZeroVar) 2678 littleSizer.Add(zeroVar,0,WACV) 2670 if ssopt.get('Use',False): #zero for super lattice doesn't work! 2671 controls[0] = False 2672 else: 2673 littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label=" Zero offset"),0,WACV) 2674 zero = wx.TextCtrl(G2frame.dataDisplay,value="%.4f"%(controls[1]),style=wx.TE_PROCESS_ENTER) 2675 zero.Bind(wx.EVT_TEXT_ENTER,OnZero) 2676 zero.Bind(wx.EVT_KILL_FOCUS,OnZero) 2677 littleSizer.Add(zero,0,WACV) 2678 zeroVar = wx.CheckBox(G2frame.dataDisplay,label="Refine?") 2679 zeroVar.SetValue(controls[0]) 2680 zeroVar.Bind(wx.EVT_CHECKBOX,OnZeroVar) 2681 littleSizer.Add(zeroVar,0,WACV) 2679 2682 SSopt = wx.CheckBox(G2frame.dataDisplay,label="Super lattice?") 2680 2683 SSopt.SetValue(ssopt.get('Use',False))
Note: See TracChangeset
for help on using the changeset viewer.