 
 
 
 
 
 
 
 
 
 
This command calculates and writes out the selected type(s) of data (from the list below) about the model. If file is specified and is non-empty, each property is written out to a file using file as the root of the file name. The last such property is also assigned to the Bfield of each atom of the model (in the case of residue properties, each atom in the residue gets the value of the property). This can be accessed as Atom.biso, or written out with model.write() to a PDB file, where it appears as the temperature factor.
The data to be calculated are specified by concatenating the corresponding keywords in the output variable:
 are assigned to B
 are assigned to B ,
otherwise residue accessibility of type accessibility_type (from 1
to 10, for the columns in the .psa file) is assigned. (In either case,
atomic accessibilities in Atom.accessibility are updated.)
If surftyp is 1, contact accessibility is calculated; if 2, surface
accessibility is returned. Atoms with undefined coordinates are assigned
zero accessibility.
,
otherwise residue accessibility of type accessibility_type (from 1
to 10, for the columns in the .psa file) is assigned. (In either case,
atomic accessibilities in Atom.accessibility are updated.)
If surftyp is 1, contact accessibility is calculated; if 2, surface
accessibility is returned. Atoms with undefined coordinates are assigned
zero accessibility.
 .
.
 atoms, starting with the previous residue) are
written to a .dih file. One column from this file, as selected by
accessibility_type, is also assigned to B
 atoms, starting with the previous residue) are
written to a .dih file. One column from this file, as selected by
accessibility_type, is also assigned to B .
.
 (0 for unknown, 1 for strand, 2 for helix, and -2 for
kink). The algorithm for secondary structure assignment depends on the
 (0 for unknown, 1 for strand, 2 for helix, and -2 for
kink). The algorithm for secondary structure assignment depends on the
 positions only and is based on the distance matrix idea
described in [Richards & Kundrot, 1988]. For each secondary structure type, a `library'
 positions only and is based on the distance matrix idea
described in [Richards & Kundrot, 1988]. For each secondary structure type, a `library' 
 distance matrix was calculated by averaging distance matrices for 
several secondary structure segments from a few high resolution protein 
structures. Program DSSP was used to assign these secondary structure 
segments [Kabsch & Sander, 1983]. Outlier distances were omitted from the averaging. Currently, there
are only two matrices: one for the
 distance matrix was calculated by averaging distance matrices for 
several secondary structure segments from a few high resolution protein 
structures. Program DSSP was used to assign these secondary structure 
segments [Kabsch & Sander, 1983]. Outlier distances were omitted from the averaging. Currently, there
are only two matrices: one for the  -helix
and one for the
-helix
and one for the  -strand. The algorithm for
secondary structure assignment is as follows:
-strand. The algorithm for
secondary structure assignment is as follows:
 atom by DRMS deviation (
 atom by DRMS deviation ( ) and maximal distance 
         difference 
         (
) and maximal distance 
         difference 
         ( ) obtained by comparing the library distance matrix with
         the distance matrix for a segment starting at the given
) obtained by comparing the library distance matrix with
         the distance matrix for a segment starting at the given 
 position;
 
         position;
 's
         in all segments whose DRMS deviation and maximal distance 
         difference are 
         less than some cutoffs (
's
         in all segments whose DRMS deviation and maximal distance 
         difference are 
         less than some cutoffs ( ,
,  ) and are not 
         already assigned to `earlier' secondary structure types;
) and are not 
         already assigned to `earlier' secondary structure types;
   
Kinking residues have both DRMS and maximal distance difference beyond
      their respective cutoffs ( ,
,  ). The actual single 
      kink residue separating the two new segments of the same type is the 
      central kinking residue. Note: we are assuming that there are no multiple 
      kinks within one contiguous segment of residues of the same secondary 
      structure type.
). The actual single 
      kink residue separating the two new segments of the same type is the 
      central kinking residue. Note: we are assuming that there are no multiple 
      kinks within one contiguous segment of residues of the same secondary 
      structure type.
 -strand: Eliminate 
      those runs of strand residues that are not close enough to other
      strand residues separated by at least two other residues:
-strand: Eliminate 
      those runs of strand residues that are not close enough to other
      strand residues separated by at least two other residues:  is 
      minimal distance to a non-neighboring residue of the strand type 
      (
 is 
      minimal distance to a non-neighboring residue of the strand type 
      (
 ). Currently, only one pass of this elimination is done,
      but could be repeated until self-consistency.
). Currently, only one pass of this elimination is done,
      but could be repeated until self-consistency.
 )
      length (e.g., 5 or 6).
)
      length (e.g., 5 or 6).
 field.
Local mainchain curvature at residue
 field.
Local mainchain curvature at residue  is defined as
the angle (expressed in degrees, between 0 and 180) between the least-squares
lines through
 is defined as
the angle (expressed in degrees, between 0 and 180) between the least-squares
lines through 
 atoms
 atoms  to
 to  and
 and  to
 to  .
. 
 field is not changed by this property.
 field is not changed by this property.
# Example for: model.write_data()
# This will calculate solvent accessibility, dihedral angles,
# residue-residue neighbors, secondary structure, and local mainchain
# curvature for a structure in the PDB file.
from modeller import *
log.verbose()
# Get topology library for radii and the model without waters and HETATMs:
env = environ()
env.io.atom_files_directory = ['../atom_files']
env.io.hetatm = False
env.io.water = False
env.libs.topology.read(file='$(LIB)/top_heav.lib')
mdl = model(env, file='1fas')
# Calculate residue solvent accessibilities, dihedral angles,
# residue neighbors, and secondary structure, and write to files:
myedat = energy_data()
myedat.radii_factor = 1.0 # The default is 0.82 (for soft-sphere restraints)
mdl.write_data(file='1fas', edat=myedat, output='PSA DIH NGH SSM')
# Calculate local mainchain curvature
mdl.write_data(output='CRV')
# Use the calculated curvature data (in Biso)
print("The following residues have local mainchain curvature")
print("greater than 90 degrees:")
print([r for r in mdl.residues if r.atoms[0].biso * 10 > 90.0])
 
 
 
 
 
 
 
 
