Changeset 5081


Ignore:
Timestamp:
Nov 13, 2021 4:58:43 PM (7 months ago)
Author:
toby
Message:

mmCIF export: more atoms table tweaks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/exports/G2export_CIF.py

    r5080 r5081  
    734734                          RBparms={}):
    735735    'Write atom positions to CIF using mmCIF items'
     736    AA3letter = ['ALA','ARG','ASN','ASP','CYS','GLN','GLU','GLY','HIS','ILE',
     737                'LEU','LYS','MET','PHE','PRO','SER','THR','TRP','TYR','VAL','MSE']
    736738    # phasedict = self.Phases[phasenam] # pointer to current phase info
    737739    General = phasedict['General']
    738740    cx,ct,cs,cia = General['AtomPtrs']
    739     GS = G2lat.cell2GS(General['Cell'][1:7])
     741    #GS = G2lat.cell2GS(General['Cell'][1:7])
    740742    Amat = G2lat.cell2AB(General['Cell'][1:7])[0]
    741743    Atoms = phasedict['Atoms']
     
    752754    WriteCIFitem(fp, '\n# ATOMIC COORDINATES AND DISPLACEMENT PARAMETERS')
    753755    WriteCIFitem(fp, 'loop_ '+
     756                 '\n   _atom_site.group_PDB'+
    754757                 '\n   _atom_site.id'+
    755758                 '\n   _atom_site.type_symbol'+
     
    766769                 '\n   _atom_site.pdbx_PDB_ins_code'+
    767770                 '\n   _atom_site.pdbx_formal_charge'+
     771                 '\n   _atom_site.pdbx_PDB_model_num'
    768772                 '\n   _atom_site.fract_x'+
    769773                 '\n   _atom_site.fract_y'+
    770774                 '\n   _atom_site.fract_z'+
    771775                 '\n   _atom_site.occupancy'+
    772                  '\n   _atom_site.U_iso_or_equiv'
     776                 '\n   _atom_site.U_iso_or_equiv'+
     777                 '\n   _atom_site.Cartn_x'+
     778                 '\n   _atom_site.Cartn_y'+
     779                 '\n   _atom_site.Cartn_z'
    773780                 )
    774781
    775 # _atom_site.group_PDB
    776 # _atom_site.Cartn_x
    777 # _atom_site.Cartn_y
    778 # _atom_site.Cartn_z
    779782# _atom_site.Cartn_x_esd
    780783# _atom_site.Cartn_y_esd
    781784# _atom_site.Cartn_z_esd
    782785# _atom_site.occupancy_esd
    783 # _atom_site.pdbx_PDB_model_num
     786#
    784787
    785788    varnames = {cx:'Ax',cx+1:'Ay',cx+2:'Az',cx+3:'Afrac',
     
    789792    pfx = str(phasedict['pId'])+'::'
    790793    # loop over all atoms
    791     naniso = 0
     794#    naniso = 0
    792795    for i,at in enumerate(Atoms):
    793         s = ''
    794         s += PutInCol(str(i),5) # atom number
     796        if at[ct-3] in AA3letter:
     797            s = 'ATOM   '
     798        else:
     799            s = 'HETATM '
     800        s += PutInCol(str(i+1),5) # atom number
    795801        s += PutInCol(FmtAtomType(at[ct]),4) # type
    796802        s += PutInCol(at[ct-1],4) # _atom_id
     
    806812        s += PutInCol('?',2) # pdbx_PDB_ins_code
    807813        s += PutInCol('?',2) # pdbx_formal_charge
     814        s += PutInCol('1',2) # pdbx_PDB_model_num
     815           
    808816        fval = parmDict.get(fpfx+str(i),at[cfrac])
    809817        if fval == 0.0: continue # ignore any atoms that have a occupancy set to 0 (exact)
    810         if at[cia] == 'I':
    811             adp = 'Uiso '
    812         else:
    813             adp = 'Uani '
    814             naniso += 1
    815             t = G2lat.Uij2Ueqv(at[cia+2:cia+8],GS,Amat)[0]
    816             for j in (2,3,4):
    817                 var = pfx+varnames[cia+j]+":"+str(i)
     818#        if at[cia] == 'I':
     819#            adp = 'Uiso '
     820#        else:
     821#            adp = 'Uani '
     822#            naniso += 1
     823#            t = G2lat.Uij2Ueqv(at[cia+2:cia+8],GS,Amat)[0]
     824#            for j in (2,3,4):
     825#                var = pfx+varnames[cia+j]+":"+str(i)
    818826        for j in (cx,cx+1,cx+2,cx+3,cia+1):
    819827            if j in (cx,cx+1,cx+2):
     
    833841                sig = -abs(sig)
    834842            s += PutInCol(G2mth.ValEsd(val,sig),dig)
     843            # Cartesian coordinates
     844            for xyz in np.inner(Amat,at[cx:cx+3]):
     845                s += PutInCol(G2mth.ValEsd(xyz,-0.009),8)
    835846        WriteCIFitem(fp, s)
    836847    # save information about rigid bodies
     
    25382549            WriteCIFitem(self.fp, '\n# phase info for '+str(phasenam) + ' follows')
    25392550            phasedict = self.Phases[phasenam] # pointer to current phase info
    2540             WriteCIFitem(self.fp, '_pd_phase_name', phasenam)
     2551            WriteCIFitem(self.fp, '_cell.entry_id', phasenam)
    25412552            cellList,cellSig = self.GetCell(phasenam)
    25422553            if oneblock:
     
    26362647            # report cell contents                       
    26372648            WriteCompositionMM(self.fp, self.Phases[phasenam], phasenam, self.parmDict, self.quickmode, keV)
    2638             if not self.quickmode and phasedict['General']['Type'] == 'nuclear':      # report distances and angles
    2639                 WriteDistances(phasenam)
     2649            #if not self.quickmode and phasedict['General']['Type'] == 'nuclear':      # report distances and angles
     2650            #    WriteDistances(phasenam)
    26402651            if 'Map' in phasedict['General'] and 'minmax' in phasedict['General']['Map']:
    26412652                WriteCIFitem(self.fp, '\n# Difference density results')
    26422653                MinMax = phasedict['General']['Map']['minmax']
    2643                 WriteCIFitem(self.fp, '_refine_diff_density_max',G2mth.ValEsd(MinMax[0],-0.009))
    2644                 WriteCIFitem(self.fp, '_refine_diff_density_min',G2mth.ValEsd(MinMax[1],-0.009))
     2654                WriteCIFitem(self.fp, '_refine.diff_density_max',G2mth.ValEsd(MinMax[0],-0.009))
     2655                WriteCIFitem(self.fp, '_refine.diff_density_min',G2mth.ValEsd(MinMax[1],-0.009))
    26452656               
    26462657        def Yfmt(ndec,val):
Note: See TracChangeset for help on using the changeset viewer.