Changeset 3956 for trunk/GSASIIphsGUI.py


Ignore:
Timestamp:
May 4, 2019 1:47:59 PM (3 years ago)
Author:
vondreele
Message:

fix bug in refPlotUpdate - missing phase colors
put progress bars in FillUnitCell?, FillCoordSphere? & AddSphere?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r3953 r3956  
    57535753            if dlg.ShowModal() == wx.ID_OK:
    57545754                centers,radius,targets = dlg.GetSelection()
    5755                 for orig in centers:
     5755                ncent = len(centers)
     5756                pgbar = wx.ProgressDialog('Sphere of enclosure for %d atoms'%ncent,'Centers done=',ncent+1,
     5757                    style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_CAN_ABORT)
     5758                screenSize = wx.ClientDisplayRect()
     5759                Size = pgbar.GetSize()
     5760                if 50 < Size[0] < 500: # sanity check on size, since this fails w/Win & wx3.0
     5761                    pgbar.SetSize((int(Size[0]*1.2),Size[1])) # increase size a bit along x
     5762                    pgbar.SetPosition(wx.Point(screenSize[2]-Size[0]-305,screenSize[1]+5))
     5763                for ic,orig in enumerate(centers):
    57565764                    xyzA = np.array(orig)
    57575765                    for atomB in atomData[:numAtoms]:
     
    57845792                                        newAtom[cs-1] += str(int(round(C[0])))+','+str(int(round(C[1])))+','+str(int(round(C[2])))
    57855793                                        atomData.append(newAtom)
     5794                    GoOn = pgbar.Update(ic,newmsg='Centers done=%d'%(ic))
     5795                    if not GoOn[0]:
     5796                        break
     5797                pgbar.Destroy()
    57865798        finally:
    57875799            dlg.Destroy()
     
    58665878            SGData = generalData['SGData']
    58675879            cellArray = G2lat.CellBlock(1)
    5868             wx.BeginBusyCursor()
    5869             try:
    5870                 for ind in indx:
    5871                     atomA = atomData[ind]
    5872                     xyzA = np.array(atomA[cx:cx+3])
    5873                     indA = atomTypes.index(atomA[ct])
    5874                     for atomB in atomData[:numAtoms]:
    5875                         indB = atomTypes.index(atomB[ct])
    5876                         sumR = radii[indA]+radii[indB]
    5877                         xyzB = np.array(atomB[cx:cx+3])
    5878                         for xyz in cellArray+xyzB:
    5879                             dist = np.sqrt(np.sum(np.inner(Amat,xyz-xyzA)**2))
    5880                             if 0 < dist <= data['Drawing']['radiusFactor']*sumR:
    5881                                 if noDuplicate(xyz,atomData):
    5882                                     oprB = atomB[cs-1]
    5883                                     C = xyz-xyzB
    5884                                     newOp = '1+'+str(int(round(C[0])))+','+str(int(round(C[1])))+','+str(int(round(C[2])))
    5885                                     newAtom = atomB[:]
    5886                                     newAtom[cx:cx+3] = xyz
    5887                                     newAtom[cs-1] = G2spc.StringOpsProd(oprB,newOp,SGData)
    5888                                     atomData.append(newAtom[:cij+9])  #not SS stuff
    5889             finally:
    5890                 wx.EndBusyCursor()
     5880            nind = len(indx)
     5881            pgbar = wx.ProgressDialog('Fill CN sphere for %d atoms'%nind,'Atoms done=',nind+1,
     5882                style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_CAN_ABORT)
     5883            screenSize = wx.ClientDisplayRect()
     5884            Size = pgbar.GetSize()
     5885            if 50 < Size[0] < 500: # sanity check on size, since this fails w/Win & wx3.0
     5886                pgbar.SetSize((int(Size[0]*1.2),Size[1])) # increase size a bit along x
     5887                pgbar.SetPosition(wx.Point(screenSize[2]-Size[0]-305,screenSize[1]+5))
     5888            for Ind,ind in enumerate(indx):
     5889                atomA = atomData[ind]
     5890                xyzA = np.array(atomA[cx:cx+3])
     5891                indA = atomTypes.index(atomA[ct])
     5892                for atomB in atomData[:numAtoms]:
     5893                    indB = atomTypes.index(atomB[ct])
     5894                    sumR = radii[indA]+radii[indB]
     5895                    xyzB = np.array(atomB[cx:cx+3])
     5896                    for xyz in cellArray+xyzB:
     5897                        dist = np.sqrt(np.sum(np.inner(Amat,xyz-xyzA)**2))
     5898                        if 0 < dist <= data['Drawing']['radiusFactor']*sumR:
     5899                            if noDuplicate(xyz,atomData):
     5900                                oprB = atomB[cs-1]
     5901                                C = xyz-xyzB
     5902                                newOp = '1+'+str(int(round(C[0])))+','+str(int(round(C[1])))+','+str(int(round(C[2])))
     5903                                newAtom = atomB[:]
     5904                                newAtom[cx:cx+3] = xyz
     5905                                newAtom[cs-1] = G2spc.StringOpsProd(oprB,newOp,SGData)
     5906                                atomData.append(newAtom[:cij+9])  #not SS stuff
     5907                GoOn = pgbar.Update(Ind,newmsg='Atoms done=%d'%(Ind))
     5908                if not GoOn[0]:
     5909                    break
     5910            pgbar.Destroy()   
    58915911            data['Drawing']['Atoms'] = atomData
    58925912            UpdateDrawAtoms()
     
    59105930            SGData = generalData['SGData']
    59115931            SpnFlp = SGData.get('SpnFlp',[])
    5912             wx.BeginBusyCursor()
    5913             try:
    5914                 for ind in indx:
    5915                     atom = atomData[ind]
    5916                     XYZ = np.array(atom[cx:cx+3])
    5917                     Uij = atom[cuij:cuij+6]
    5918                     result = G2spc.GenAtom(XYZ,SGData,False,Uij,True)
    5919                     for item in result:
    5920                         atom = copy.copy(atomData[ind])
    5921                         atom[cx:cx+3] = item[0]
    5922                         if cmx:
    5923                             Opr = abs(item[2])%100
    5924                             M = SGData['SGOps'][Opr-1][0]
    5925                             opNum = G2spc.GetOpNum(item[2],SGData)
    5926                             mom = np.array(atom[cmx:cmx+3])
    5927                             if SGData['SGGray']:
    5928                                 atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)
    5929                             else:   
    5930                                 atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)*SpnFlp[opNum-1]
    5931                         atom[cs-1] = str(item[2])+'+' \
    5932                             +str(item[3][0])+','+str(item[3][1])+','+str(item[3][2])
    5933                         atom[cuij:cuij+6] = item[1]
    5934                         Opp = G2spc.Opposite(item[0])
    5935                         for key in Opp:
    5936                             if noDuplicate(Opp[key],atomData):
    5937                                 unit = item[3]+np.array(eval(key))*1.
    5938                                 cell = '%d+%d,%d,%d'%(item[2],unit[0],unit[1],unit[2])
    5939                                 atom[cx:cx+3] = Opp[key]
    5940                                 atom[cs-1] = cell
    5941                                 atomData.append(atom[:cuij+9])  #not SS stuff
    5942                     data['Drawing']['Atoms'] = atomData
    5943             finally:
    5944                 wx.EndBusyCursor()
     5932            nind = len(indx)
     5933            pgbar = wx.ProgressDialog('Fill unit cell for %d atoms'%nind,'Atoms done=',nind+1,
     5934                style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_CAN_ABORT)
     5935            screenSize = wx.ClientDisplayRect()
     5936            Size = pgbar.GetSize()
     5937            if 50 < Size[0] < 500: # sanity check on size, since this fails w/Win & wx3.0
     5938                pgbar.SetSize((int(Size[0]*1.2),Size[1])) # increase size a bit along x
     5939                pgbar.SetPosition(wx.Point(screenSize[2]-Size[0]-305,screenSize[1]+5))
     5940            for Ind,ind in enumerate(indx):
     5941                atom = atomData[ind]
     5942                XYZ = np.array(atom[cx:cx+3])
     5943                Uij = atom[cuij:cuij+6]
     5944                result = G2spc.GenAtom(XYZ,SGData,False,Uij,True)
     5945                for item in result:
     5946                    atom = copy.copy(atomData[ind])
     5947                    atom[cx:cx+3] = item[0]
     5948                    if cmx:
     5949                        Opr = abs(item[2])%100
     5950                        M = SGData['SGOps'][Opr-1][0]
     5951                        opNum = G2spc.GetOpNum(item[2],SGData)
     5952                        mom = np.array(atom[cmx:cmx+3])
     5953                        if SGData['SGGray']:
     5954                            atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)
     5955                        else:   
     5956                            atom[cmx:cmx+3] = np.inner(mom,M)*nl.det(M)*SpnFlp[opNum-1]
     5957                    atom[cs-1] = str(item[2])+'+' \
     5958                        +str(item[3][0])+','+str(item[3][1])+','+str(item[3][2])
     5959                    atom[cuij:cuij+6] = item[1]
     5960                    Opp = G2spc.Opposite(item[0])
     5961                    for key in Opp:
     5962                        if noDuplicate(Opp[key],atomData):
     5963                            unit = item[3]+np.array(eval(key))*1.
     5964                            cell = '%d+%d,%d,%d'%(item[2],unit[0],unit[1],unit[2])
     5965                            atom[cx:cx+3] = Opp[key]
     5966                            atom[cs-1] = cell
     5967                            atomData.append(atom[:cuij+9])  #not SS stuff
     5968                data['Drawing']['Atoms'] = atomData
     5969                GoOn = pgbar.Update(Ind,newmsg='Atoms done=%d'%(Ind))
     5970                if not GoOn[0]:
     5971                    break
     5972            pgbar.Destroy()   
    59455973            UpdateDrawAtoms()
    59465974            drawAtoms.ClearSelection()
     
    76247652                    if Id in Ids:   #duplicate - 2 atoms on same site; invalidate & look again
    76257653                        dist[pid] = 100.
    7626                         id =  np.argmin(dist)
    76277654                        Id = atomData[pid][-1]
    76287655                    Ids.append(Id)
     
    91889215            dim = '3D '
    91899216            pgbar = wx.ProgressDialog('Omit map','Blocks done',65,
    9190             style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE)
     9217                style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE)
    91919218            mapData.update(G2mth.OmitMap(data,ReflData,pgbar))
    91929219            pgbar.Destroy()
Note: See TracChangeset for help on using the changeset viewer.