Changeset 165


Ignore:
Timestamp:
Oct 19, 2010 1:46:03 PM (12 years ago)
Author:
vondreele
Message:

patches for atom plotting & phase/histogram edits

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r164 r165  
    453453        generalData = data['General']
    454454        atomData = data['Atoms']
     455        Items = [G2gd.wxID_ATOMSEDITINSERT, G2gd.wxID_ATOMSEDITDELETE, G2gd.wxID_ATOMSREFINE,
     456            G2gd.wxID_ATOMSMODIFY, G2gd.wxID_ATOMSTRANSFORM, G2gd.wxID_ATONTESTINSERT]
     457        if atomData:
     458            for item in Items:   
     459                self.dataFrame.AtomsMenu.Enable(item,True)
     460        else:
     461            for item in Items:
     462                self.dataFrame.AtomsMenu.Enable(item,False)           
     463           
    455464        AAchoice = ": ,ALA,ARG,ASN,ASP,CYS,GLN,GLU,GLY,HIS,ILE,LEU,LYS,MET,PHE,PRO,SER,THR,TRP,TYR,VAL,MSE,HOH,UNK"
    456465        Types = [wg.GRID_VALUE_STRING,wg.GRID_VALUE_STRING,wg.GRID_VALUE_CHOICE+": ,X,XU,U,F,FX,FXU,FU",
     
    15051514                i = atomA[0]
    15061515                for j in IndB[0]:
    1507                     if j > i:
    1508                         if Styles[i] == 'polyhedra':
    1509                             atomData[i][-1].append(np.inner(Amat,Dx[j]))
    1510                         elif Styles[j] != 'polyhedra':
    1511                             atomData[i][-1].append(Dx[j]*Radii[i]/sumR[j])
    1512                             atomData[j][-1].append(-Dx[j]*Radii[j]/sumR[j])
     1516                    if Styles[i] == 'polyhedra':
     1517                        atomData[i][-1].append(np.inner(Amat,Dx[j]))
     1518                    elif Styles[j] != 'polyhedra' and j > i:
     1519                        atomData[i][-1].append(Dx[j]*Radii[i]/sumR[j])
     1520                        atomData[j][-1].append(-Dx[j]*Radii[j]/sumR[j])
    15131521
    15141522    def DrawAtomsDelete(event):   
     
    17561764    def UpdateDData():
    17571765        UseList = data['Histograms']
     1766        if UseList:
     1767            self.dataFrame.DataMenu.Enable(G2gd.wxID_DATADELETE,True)
     1768        else:
     1769            self.dataFrame.DataMenu.Enable(G2gd.wxID_DATADELETE,False)           
    17581770        generalData = data['General']
    17591771        SGData = generalData['SGData']
     
    17821794            Obj.SetValue("%.4f"%(UseList[Indx[Obj.GetId()]]['Scale'][0]))          #reset in case of error
    17831795           
     1796        def OnCutoffVal(event):
     1797            Obj = event.GetEventObject()
     1798            try:
     1799                cutoff = float(Obj.GetValue())
     1800                if cutoff > 0:
     1801                    UseList[Indx[Obj.GetId()]]['Cutoff'] = cutoff
     1802            except ValueError:
     1803                pass
     1804            Obj.SetValue("%.3f"%(UseList[Indx[Obj.GetId()]]['Cutoff']))          #reset in case of error
     1805
    17841806        def OnSizeType(event):
    17851807            Obj = event.GetEventObject()
     
    18491871            Obj = event.GetEventObject()
    18501872            hist = Indx[Obj.GetId()]
    1851             UseList[hist]['MDtexture'][1][pid] = Obj.GetValue()
     1873            UseList[hist]['MDtexture'][1] = Obj.GetValue()
    18521874           
    18531875        def OnMDVal(event):
     
    19221944               
    19231945            if item[:4] == 'PWDR' and UseList[item]['Show']:
     1946                cutoffSizer = wx.BoxSizer(wx.HORIZONTAL)
     1947                cutoffSizer.Add(wx.StaticText(dataDisplay,label=' Peak cutoff ratio: '),0,wx.ALIGN_CENTER_VERTICAL)
     1948                cutoffVal = wx.TextCtrl(dataDisplay,wx.ID_ANY,'%.3f'%(UseList[item]['Cutoff']),
     1949                    style=wx.TE_PROCESS_ENTER)               
     1950                Indx[cutoffVal.GetId()] = item
     1951                cutoffVal.Bind(wx.EVT_TEXT_ENTER,OnCutoffVal)
     1952                cutoffVal.Bind(wx.EVT_KILL_FOCUS,OnCutoffVal)
     1953                cutoffSizer.Add(cutoffVal,0,wx.ALIGN_CENTER_VERTICAL)
     1954                mainSizer.Add(cutoffSizer)
     1955                mainSizer.Add((0,5),0)
    19241956                sizeSizer = wx.BoxSizer(wx.HORIZONTAL)
    19251957                choices = ['isotropic','uniaxial',]
     
    21422174                            'Size':['isotropic',[10000.,0,],[False,False],[0,0,1]],
    21432175                            'Mustrain':['isotropic',[0.0,0,],[False,False],[0,0,1]],                           
    2144                             'Extinction':[0.0,False]}
     2176                            'Extinction':[0.0,False],'Cutoff':0.01}
    21452177                    data['Histograms'] = UseList
    21462178                    UpdateDData()
  • trunk/GSASIIplot.py

    r164 r165  
    11261126    drawingData = data['Drawing']
    11271127    drawAtoms = drawingData['Atoms']
    1128     Wt = [255,255,255,255]
    1129     Rd = [255,0,0,255]
    1130     Gr = [0,255,0,255]
    1131     Bl = [0,0,255,255]
     1128    Wt = [255,255,255]
     1129    Rd = [255,0,0]
     1130    Gr = [0,255,0]
     1131    Bl = [0,0,255]
    11321132    uBox = np.array([[0,0,0],[1,0,0],[1,1,0],[0,1,0],[0,0,1],[1,0,1],[1,1,1],[0,1,1]])
    11331133    uEdges = np.array([
     
    13191319        glBegin(GL_LINES)
    13201320        for line,color in zip(uEdges,uColors):
    1321             glColor4ubv(color)
     1321            glColor3ubv(color)
    13221322            glVertex3fv(line[0])
    13231323            glVertex3fv(line[1])
     
    13371337        glBegin(GL_LINES)
    13381338        for line,color in zip(uEdges,uColors)[:3]:
    1339             glColor4ubv(color)
     1339            glColor3ubv(color)
    13401340            glVertex3fv(line[0])
    13411341            glVertex3fv(line[1])
     
    13901390        glEnable(GL_COLOR_MATERIAL)
    13911391        glLineWidth(1)
    1392         glColor4fv(color)
     1392        glColor3fv(color)
    13931393        glPushMatrix()
    13941394        glBegin(GL_LINES)
     
    15331533                    R4 = np.concatenate((np.concatenate((R,[[0],[0],[0]]),axis=1),[[0,0,0,1],]),axis=0)
    15341534                    E = np.sqrt(E)
    1535                     RenderEllipsoid(x,y,z,ellipseProb,E,R4,color)
     1535                    if atom[ct] == 'H' and not drawingData['showHydrogen']:
     1536                        pass
     1537                    else:
     1538                        RenderEllipsoid(x,y,z,ellipseProb,E,R4,color)                   
    15361539                else:
    1537                     radius = ellipseProb*math.sqrt(abs(atom[cs+4]))
    1538                     RenderSphere(x,y,z,radius,color)
     1540                    if atom[ct] == 'H' and not drawingData['showHydrogen']:
     1541                        pass
     1542                    else:
     1543                        radius = ellipseProb*math.sqrt(abs(atom[cs+4]))
     1544                        RenderSphere(x,y,z,radius,color)
    15391545            elif 'lines' in atom[cs]:
    15401546                radius = 0.1
  • trunk/GSASIIspc.py

    r163 r165  
    33import numpy as np
    44import numpy.ma as ma
     5import numpy.linalg as nl
    56import math
    67import sys
     
    595596    return GetKNsym(str(Isym)),Mult
    596597   
     598def ElemPosition(SGData):
     599    ''' Under development
     600    Object here is to return a list of symmetry element types and locations suitable
     601    for say drawing them.
     602    So far I have the element type... getting all possible locations without lookup may be impossible!
     603    '''
     604    SymElements = []
     605    Inv = SGData['SGInv']
     606    Cen = SGData['SGCen']
     607    eleSym = {-3:['','-1'],-2:['',-6],-1:['2','-4'],0:['3','-3'],1:['4','m'],2:['6',''],3:['1','']}
     608    # get operators & expand if centrosymmetric
     609    Ops = SGData['SGOps']
     610    opM = np.array([op[0].T for op in Ops])
     611    opT = np.array([op[1] for op in Ops])
     612    if Inv:
     613        opM = np.concatenate((opM,-opM))
     614        opT = np.concatenate((opT,-opT))
     615    opMT = zip(opM,opT)
     616    for M,T in opMT[1:]:        #skip I
     617        Dt = int(nl.det(M))
     618        Tr = int(np.trace(M))
     619        Dt = -(Dt-1)/2
     620        Es = eleSym[Tr][Dt]
     621        if Dt:              #rotation-inversion
     622            I = np.eye(3)
     623            if Tr == 1:     #mirrors/glides
     624                if np.any(T):       #glide
     625                    M2 = np.inner(M,M)
     626                    MT = np.inner(M,T)+T
     627                    print 'glide',Es,MT
     628                    print M2
     629                else:               #mirror
     630                    print 'mirror',Es,T
     631                    print I-M
     632                X = [-1,-1,-1]
     633            elif Tr == -3:  # pure inversion
     634                X = np.inner(nl.inv(I-M),T)
     635                print 'inversion',Es,X
     636            else:           #other rotation-inversion
     637                M2 = np.inner(M,M)
     638                MT = np.inner(M,T)+T
     639                print 'rot-inv',Es,MT
     640                print M2
     641                X = [-1,-1,-1]
     642               
     643           
     644           
     645        else:               #rotations
     646            print 'rotation',Es
     647            X = [-1,-1,-1]
     648        #SymElements.append([Es,X])
     649       
     650    return #SymElements
     651       
     652       
     653       
     654   
     655   
    597656def U2Uij(U):
    598657    #returns the UIJ vector U11,U22,U33,U12,U13,U23 from tensor U
Note: See TracChangeset for help on using the changeset viewer.