Changeset 4450


Ignore:
Timestamp:
May 31, 2020 12:06:22 PM (16 months ago)
Author:
vondreele
Message:

Add Histogram bonds & angles to Atoms/Compute? menu - makes histogram plots of bonds & angles about selected atoms

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIdataGUI.py

    r4448 r4450  
    59895989            'wxID_RELOADDRAWATOMS', 'wxID_ATOMSDISAGL', 'wxID_ATOMMOVE', 'wxID_MAKEMOLECULE',
    59905990            'wxID_ATOMSPDISAGL', 'wxID_ISODISP', 'wxID_ADDHATOM', 'wxID_UPDATEHATOM',
    5991             'wxID_ATOMSROTATE', 'wxID_ATOMSDENSITY',
     5991            'wxID_ATOMSROTATE', 'wxID_ATOMSDENSITY','wxID_ATOMSBNDANGLHIST',
    59925992            'wxID_ATOMSSETALL', 'wxID_ATOMSSETSEL',)
    59935993        self.AtomsMenu = wx.MenuBar()
     
    60266026        self.AtomCompute.Append(G2G.wxID_ATOMSDISAGL,'Show Distances && Angles','Compute distances & angles for selected atoms')
    60276027        self.AtomCompute.Append(G2G.wxID_ATOMSPDISAGL,'Save Distances && Angles','Compute distances & angles for selected atoms')
     6028        self.AtomCompute.Append(G2G.wxID_ATOMSBNDANGLHIST,'Histogram Bonds && Angles','Histogram bonds & angles for selected atoms')
    60286029        self.AtomCompute.Append(G2G.wxID_ATOMSDENSITY,'Density','Compute density for current phase')
    60296030        self.AtomCompute.ISOcalc = self.AtomCompute.Append(G2G.wxID_ISODISP,'ISODISTORT mode values',
  • trunk/GSASIIphsGUI.py

    r4448 r4450  
    41024102        fp.close()
    41034103   
    4104     def OnDistAngle(event,fp=None):
     4104    def OnDistAngleHist(event):
     4105        OnDistAngle(event,hist=True)
     4106       
     4107    def OnDistAngle(event,fp=None,hist=False):
    41054108        'Compute distances and angles'   
    41064109        indx = getAtomSelections(Atoms)
     
    41264129            cx = colLabels.index('x')
    41274130            cn = colLabels.index('Name')
     4131            ct = colLabels.index('Type')
     4132            Atypes = []
    41284133            for i,atom in enumerate(atomData):
    41294134                xyz.append([i,]+atom[cn:cn+2]+atom[cx:cx+3])
    41304135                if i in indx:
    41314136                    Oxyz.append([i,]+atom[cn:cn+2]+atom[cx:cx+3])
     4137                    Atypes.append(atom[ct])
     4138            Atypes = set(Atypes)
     4139            Atypes = ', '.join(Atypes)
    41324140            DisAglData['OrigAtoms'] = Oxyz
    41334141            DisAglData['TargAtoms'] = xyz
     
    41394147                DisAglData['covData'] = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,G2frame.root, 'Covariance'))
    41404148            try:
    4141                 if fp:
     4149                if hist:
     4150                    AtomLabels,DistArray,AngArray = G2stMn.RetDistAngle(DisAglCtls,DisAglData)
     4151                    Bonds = []
     4152                    for dists in DistArray:
     4153                        Bonds += [item[3] for item in DistArray[dists]]
     4154                    G2plt.PlotBarGraph(G2frame,Bonds,Xname=r'$\mathsf{Bonds,\AA}$',
     4155                        Title='Bond distances for %s'%Atypes,PlotName='%s Bonds'%Atypes)
     4156                    Angles = []
     4157                    for angles in AngArray:
     4158                        Angles += [item[2][0] for item in AngArray[angles]]
     4159                    G2plt.PlotBarGraph(G2frame,Angles,Xname='$\mathsf{Angles,{^o}}$',
     4160                        Title='Bond angles about %s'%Atypes,PlotName='%s Angles'%Atypes)
     4161                   
     4162                elif fp:
    41424163                    G2stMn.PrintDistAngle(DisAglCtls,DisAglData,fp)
    41434164                else:   
     
    56915712                                        impangles = 180.*item.get_constraint_value()['angles']/np.pi
    56925713                                        impangleList = item.anglesList[:4]
     5714                                        print(' Dihedral angle chi^2 =  %2f'%item.standardError)
    56935715                                        atoms = ENGINE.get_original_data("allElements",frame)
    56945716                                        impangleNames = ['%s-%s-%s-%s'%(atoms[impangleList[0][iat]],atoms[impangleList[1][iat]],
     
    1179611818        G2frame.Bind(wx.EVT_MENU, OnDistAngle, id=G2G.wxID_ATOMSDISAGL)
    1179711819        G2frame.Bind(wx.EVT_MENU, OnDistAnglePrt, id=G2G.wxID_ATOMSPDISAGL)
     11820        G2frame.Bind(wx.EVT_MENU, OnDistAngleHist, id=G2G.wxID_ATOMSBNDANGLHIST)
    1179811821        G2frame.Bind(wx.EVT_MENU, OnDensity, id=G2G.wxID_ATOMSDENSITY)
    1179911822        G2frame.Bind(wx.EVT_MENU, OnIsoDistortCalc, id=G2G.wxID_ISODISP)
  • trunk/GSASIIplot.py

    r4449 r4450  
    52975297        wid = Dbins[1]-Dbins[0]
    52985298    else:
    5299         nBins= max(10,len(Xarray)//10)
     5299        nBins= min(40,max(10,len(Xarray)//10))
    53005300        if maxBins is not None:
    53015301            nBins = min(nBins,maxBins)
  • trunk/GSASIIstrMain.py

    r4441 r4450  
    666666                                unit = Units[indb][i]
    667667                                tunit = (unit[0]+Tunit[0],unit[1]+Tunit[1],unit[2]+Tunit[2])
    668                                 pdpx = G2mth.getDistDerv(Oatom[3:6],Tatom[3:6],Amat,unit,Top,SGData)
    669668                                sig = 0.0
    670669                                if len(Xvcov):
     670                                    pdpx = G2mth.getDistDerv(Oatom[3:6],Tatom[3:6],Amat,unit,Top,SGData)
    671671                                    sig = np.sqrt(np.inner(pdpx,np.inner(pdpx,Xvcov)))
    672672                                Dist.append([Oatom[0],Tatom[0],tunit,Top,ma.getdata(dist[indb])[i],sig])
Note: See TracChangeset for help on using the changeset viewer.