Changeset 652
- Timestamp:
- Jun 22, 2012 1:53:54 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIgrid.py
r648 r652 38 38 39 39 [ wxID_FOURCALC, wxID_FOURSEARCH, wxID_PEAKSMOVE, wxID_PEAKSCLEAR, wxID_CHARGEFLIP, 40 wxID_PEAKSUNIQUE, 41 ] = [wx.NewId() for item in range( 6)]40 wxID_PEAKSUNIQUE, wxID_PEAKSDELETE, 41 ] = [wx.NewId() for item in range(7)] 42 42 43 43 [ wxID_PWDRADD, wxID_HKLFADD, wxID_DATADELETE, … … 568 568 self.MapPeaksEdit.Append(id=wxID_PEAKSUNIQUE, kind=wx.ITEM_NORMAL,text='Unique peaks', 569 569 help='Reduce map peak list to unique set') 570 self.MapPeaksEdit.Append(id=wxID_PEAKSDELETE, kind=wx.ITEM_NORMAL,text='Delete peaks', 571 help='Delete selected peaks') 570 572 self.MapPeaksEdit.Append(id=wxID_PEAKSCLEAR, kind=wx.ITEM_NORMAL,text='Clear peaks', 571 573 help='Clear the map peak list') -
trunk/GSASIIimage.py
r584 r652 722 722 del NST 723 723 if Dtth: 724 H2 = [tth for tth in np.linspace(LUtth[0],LUtth[1],numChans+1)]724 H2 = np.array([tth for tth in np.linspace(LUtth[0],LUtth[1],numChans+1)]) 725 725 else: 726 H2 = LUtth726 H2 = np.array(LUtth) 727 727 if Dazm: 728 728 H1 = np.array([azm for azm in np.linspace(LRazm[0],LRazm[1],numAzms+1)]) 729 729 else: 730 730 H1 = LRazm 731 H0[0] /= npcosd(H2[:-1]) 731 732 Nup += 1 732 733 dlg.Update(Nup) -
trunk/GSASIImath.py
r648 r652 25 25 import scipy.optimize as so 26 26 import scipy.linalg as sl 27 import numpy.fft as fft 27 28 28 29 sind = lambda x: np.sin(x*np.pi/180.) … … 524 525 def FourierMap(data,reflData): 525 526 526 import numpy.fft as fft527 527 generalData = data['General'] 528 528 if not generalData['Map']['MapType']: … … 583 583 return mapData 584 584 585 # map printing for testing purposes 586 def printRho(SGLaue,rho,rhoMax): 587 dim = len(rho.shape) 588 if dim == 2: 589 ix,jy = rho.shape 590 for j in range(jy): 591 line = '' 592 if SGLaue in ['3','3m1','31m','6/m','6/mmm']: 593 line += (jy-j)*' ' 594 for i in range(ix): 595 r = int(100*rho[i,j]/rhoMax) 596 line += '%4d'%(r) 597 print line+'\n' 598 else: 599 ix,jy,kz = rho.shape 600 for k in range(kz): 601 print 'k = ',k 602 for j in range(jy): 603 line = '' 604 if SGLaue in ['3','3m1','31m','6/m','6/mmm']: 605 line += (jy-j)*' ' 606 for i in range(ix): 607 r = int(100*rho[i,j,k]/rhoMax) 608 line += '%4d'%(r) 609 print line+'\n' 610 ## keep this 611 585 612 def findOffset(SGData,rho,Fhkl): 586 613 … … 592 619 if SGData['SpGrp'] == 'P 1': 593 620 return [0,0,0] 594 # will need to consider 'SGPolax': one of '','x','y','x y','z','x z','y z','xyz','111' 621 # will need to consider 'SGPolax': one of '','x','y','x y','z','x z','y z','xyz','111'? 595 622 mapShape = rho.shape 596 623 steps = np.array(mapShape) … … 612 639 DH = [] 613 640 Dphi = [] 614 while i < 20: 641 while i < 20: #use 20 strongest F's 615 642 F = Flist[i] 616 643 hkl = np.unravel_index(Fdict[F],hklShape) … … 629 656 continue 630 657 DH.append(dH) 631 Dphi.append((dang+ 0.5) % 1.0)658 Dphi.append((dang+.5) % 1.0) 632 659 i += 1 633 660 DH = np.array(DH) … … 636 663 # print item[0],'%.4f'%(item[1]) 637 664 DX = np.zeros(3) 638 X,Y,Z = np.mgrid[0:1 :10j,0:1:10j,0:1:10j]665 X,Y,Z = np.mgrid[0:12,0:12,0:12] 639 666 XYZ = np.array(zip(X.flatten(),Y.flatten(),Z.flatten())) 640 667 Mmin = 1.e10 668 Ms = [] 641 669 642 670 for xyz in XYZ: #do a global search for best roll 643 M = np.sum(calcPhase(xyz,DH,Dphi)**2) 671 M = np.sum(calcPhase(xyz/12.,DH,Dphi)**2) 672 Ms.append(M) 644 673 if M < Mmin: 645 674 DX = xyz 646 675 Mmin = M 647 676 # Ms = np.array(Ms) 677 # Ms = np.reshape(Ms,newshape=(12,12,12)) 678 # printRho(SGData['SGLaue'],Ms,np.max(Ms)) 679 print ' Search result:',Mmin,DX 648 680 result = so.leastsq(calcPhase,DX,full_output=True,args=(DH,Dphi)) 649 681 # for item in zip(DH,Dphi,result[2]['fvec']): … … 653 685 print ' map offset chi**2: %.3f, map offset: %d %d %d'%(chisq,DX[0],DX[1],DX[2]) 654 686 return DX 687 688 def findOffset2(SGData,rho,Fhkl): 689 if SGData['SpGrp'] == 'P 1': 690 return [0,0,0] 691 mapShape = rho.shape 692 mapHalf = np.array(mapShape)/2 693 steps = np.array(mapShape) 694 hklShape = Fhkl.shape 695 hklHalf = np.array(hklShape)/2 696 for M,T in SGData['SGOps'][1:]: 697 FThkl = np.zeros(shape=hklShape,dtype='c16') 698 for ind,F in enumerate(Fhkl.flatten()): 699 if F: 700 HKL = np.unravel_index(ind,hklShape)-hklHalf 701 HKLT = np.inner(HKL,M.T) 702 phi = (np.angle(F,deg=True)/360.+np.vdot(T,HKL) % 1.)*360. 703 phasep = complex(cosd(phi),-sind(phi)) #want F* 704 h,k,l = HKLT+hklHalf 705 FThkl[h,k,l] = np.absolute(F)*phasep 706 Cd = np.real(fft.fftn(fft.fftshift(Fhkl*FThkl))) 707 CdMax = np.array(np.unravel_index(np.argmax(Cd),mapShape)) 708 print CdMax,CdMax/2 709 DX = CdMax/2 710 711 print ' Test map offset : %d %d %d'%(DX[0],DX[1],DX[2]) 712 return DX 713 655 714 656 715 def ChargeFlip(data,reflData,pgbar): 657 # import scipy.fftpack as fft658 import numpy.fft as fft659 716 generalData = data['General'] 660 717 mapData = generalData['Map'] … … 728 785 np.seterr(**old) 729 786 print ' Charge flip time: %.4f'%(time.time()-time0),'no. elements: %d'%(Ehkl.size) 730 print ' No.cycles = ',Ncyc,'Residual Rcf =%8.3f%s'%(Rcf,'%') 787 print ' No.cycles = ',Ncyc,'Residual Rcf =%8.3f%s'%(Rcf,'%')+' Map size:',CErho.shape 731 788 CErho = np.real(fft.fftn(fft.fftshift(CEhkl))) 789 # roll = findOffset2(SGData,CErho,CEhkl) #doesn't work 732 790 roll = findOffset(SGData,CErho,CEhkl) 733 734 # for i,j,k in [[1,0,0],[0,1,0],[0,0,1]]: 735 # print i,j,k,CErho.shape,CEhkl.shape 736 # 737 # Rmap = np.roll(np.roll(np.roll(CErho,i,axis=0),j,axis=1),k,axis=2) 738 # Rhkl = fft.ifftshift(fft.ifftn(Rmap)) 739 # R = findOffset(SGData,Rmap,Rhkl) 740 791 741 792 mapData['Rcf'] = Rcf 742 793 mapData['rho'] = np.roll(np.roll(np.roll(CErho,roll[0],axis=0),roll[1],axis=1),roll[2],axis=2) -
trunk/GSASIIphsGUI.py
r650 r652 317 317 generalData['POhkl'] = [0,0,1] 318 318 if 'Map' not in generalData: 319 generalData['Map'] = {'MapType':'','RefList':'','Resolution': 1.0,319 generalData['Map'] = {'MapType':'','RefList':'','Resolution':0.5, 320 320 'rho':[],'rhoMax':0.,'mapSize':10.0,'cutOff':50.,'Flip':False} 321 321 if 'Flip' not in generalData: 322 generalData['Flip'] = {'RefList':'','Resolution': 1.0,'Norm element':'None',323 'k-factor': 1.1}322 generalData['Flip'] = {'RefList':'','Resolution':0.5,'Norm element':'None', 323 'k-factor':0.1} 324 324 if 'doPawley' not in generalData: 325 325 generalData['doPawley'] = False … … 1276 1276 cid = colLabels.index(parm) 1277 1277 dlg.Destroy() 1278 print parm,cid,indx1279 1278 if parm in ['Type']: 1280 1279 dlg = G2elemGUI.PickElement(G2frame) … … 1282 1281 if dlg.Elem not in ['None']: 1283 1282 El = dlg.Elem.strip() 1284 print El,indx,cid1285 1283 for r in indx: 1286 1284 atomData[r][cid] = El … … 3737 3735 G2plt.PlotStructure(G2frame,data) 3738 3736 3737 def OnPeaksDelete(event): 3738 if 'Map Peaks' in data: 3739 mapPeaks = data['Map Peaks'] 3740 Ind = MapPeaks.GetSelectedRows() 3741 Ind.sort() 3742 Ind.reverse() 3743 print Ind 3744 for ind in Ind: 3745 mapPeaks = np.delete(mapPeaks,ind,0) 3746 data['Map Peaks'] = mapPeaks 3747 FillMapPeaksGrid() 3748 G2plt.PlotStructure(G2frame,data) 3749 3739 3750 def OnPeaksUnique(event): 3740 3751 generalData = data['General'] … … 3756 3767 mapPeaks[ind][1:] -= Dx/2. 3757 3768 FillMapPeaksGrid() 3769 G2plt.PlotStructure(G2frame,data) 3758 3770 3759 3771 def OnFourierMaps(event): … … 3822 3834 data['Map Peaks'] = np.concatenate((mags,peaks),axis=1) 3823 3835 3824 print ' Map search peaks found:'3825 print ' No. Mag. x y z'3826 for j,i in enumerate(sortIdx[::-1]):3827 print ' %3d %8.3f %8.5f %8.5f %8.5f'%(j,mags[i],peaks[i][0],peaks[i][1],peaks[i][2])3836 # print ' Map search peaks found:' 3837 # print ' No. Mag. x y z' 3838 # for j,i in enumerate(sortIdx[::-1]): 3839 # print ' %3d %8.3f %8.5f %8.5f %8.5f'%(j,mags[i],peaks[i][0],peaks[i][1],peaks[i][2]) 3828 3840 print ' Map search finished, time = %.2fs'%(time.time()-time0) 3829 3841 Page = G2frame.dataDisplay.FindPage('Map peaks') … … 3832 3844 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksMove, id=G2gd.wxID_PEAKSMOVE) 3833 3845 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksUnique, id=G2gd.wxID_PEAKSUNIQUE) 3846 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksDelete, id=G2gd.wxID_PEAKSDELETE) 3834 3847 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksClear, id=G2gd.wxID_PEAKSCLEAR) 3835 3848 UpdateDrawAtoms() … … 3949 3962 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksMove, id=G2gd.wxID_PEAKSMOVE) 3950 3963 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksUnique, id=G2gd.wxID_PEAKSUNIQUE) 3964 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksDelete, id=G2gd.wxID_PEAKSDELETE) 3951 3965 G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksClear, id=G2gd.wxID_PEAKSCLEAR) 3952 3966 FillMapPeaksGrid()
Note: See TracChangeset
for help on using the changeset viewer.