org.jmol.modelsetbio
Class AlphaPolymer

java.lang.Object
  extended by org.jmol.modelset.Polymer
      extended by org.jmol.modelsetbio.BioPolymer
          extended by org.jmol.modelsetbio.AlphaPolymer
Direct Known Subclasses:
AminoPolymer

public class AlphaPolymer
extends BioPolymer


Nested Class Summary
private static class AlphaPolymer.Code
           
 
Field Summary
 
Fields inherited from class org.jmol.modelsetbio.BioPolymer
bsSelectedMonomers, hasWingPoints, haveParameters, invalidControl, monomers, sheetSmoothing
 
Fields inherited from class org.jmol.modelset.Polymer
bioPolymerIndexInModel, controlPoints, leadAtomIndices, leadMidpoints, leadPoints, model, monomerCount, type, TYPE_AMINO, TYPE_CARBOHYDRATE, TYPE_NOBONDING, TYPE_NUCLEIC, wingVectors
 
Constructor Summary
AlphaPolymer(Monomer[] monomers)
           
 
Method Summary
 void addSecondaryStructure(EnumStructure type, java.lang.String structureID, int serialID, int strandCount, char startChainID, int startSeqcode, char endChainID, int endSeqcode)
           
protected  void addSecondaryStructure(EnumStructure type, java.lang.String structureID, int serialID, int strandCount, int indexStart, int indexEnd)
           
private  void addStructuresFromTags(EnumStructure[] tags)
           
private  float[] calculateAnglesInDegrees()
           
private  AlphaPolymer.Code[] calculateCodes(float[] angles)
           
private  EnumStructure[] calculateRunsFourOrMore(AlphaPolymer.Code[] codes)
           
 void calculateStructures(boolean alphaOnly)
          Uses Levitt & Greer algorithm to calculate protein secondary structures using only alpha-carbon atoms.
 java.util.List<Atom[]> calculateStruts(ModelSet modelSet, java.util.BitSet bs1, java.util.BitSet bs2, java.util.List<Atom> vCA, float thresh, int delta, boolean allowMultiple)
          Algorithm of George Phillips phillips@biochem.wisc.edu originally a contribution to pyMol as struts.py; adapted here by Bob Hanson for Jmol 1/2010 Return a vector of support posts for rapid prototyping models along the lines of George Phillips for Pymol except on actual molecular segments (biopolymers), not PDB chains (which may or may not be continuous).
private  java.util.List<Atom[]> calculateStrutsStatic(ModelSet modelSet, java.util.BitSet bs1, java.util.BitSet bs2, java.util.List<Atom> vCA, float thresh, int delta, boolean allowMultiple)
           
private  void checkBetaSheetAlphaHelixOverlap(AlphaPolymer.Code[] codes, float[] angles)
           
private  void extendRuns(EnumStructure[] tags)
           
protected  javax.vecmath.Point3f getControlPoint(int i, javax.vecmath.Vector3f v)
           
 void getPdbData(Viewer viewer, char ctype, char qtype, int mStep, int derivType, java.util.BitSet bsAtoms, java.util.BitSet bsSelected, boolean bothEnds, boolean isDraw, boolean addHeader, LabelToken[] tokens, OutputStringBuffer pdbATOM, java.lang.StringBuffer pdbCONECT, java.util.BitSet bsWritten)
           
private  void searchForTurns(AlphaPolymer.Code[] codes, float[] angles, EnumStructure[] tags)
           
private static void setStrut(int i, int j, int n, java.util.List<Atom> vCA, java.util.BitSet bs1, java.util.BitSet bs2, java.util.List<Atom[]> vStruts, java.util.BitSet bsStruts, java.util.BitSet bsNotAvailable, java.util.BitSet bsNearbyResidues, int delta)
           
private static int strutPoint(int i, int j, int n)
           
 
Methods inherited from class org.jmol.modelsetbio.BioPolymer
allocateBioPolymer, calcEtaThetaAngles, calcParameters, calcPhiPsiAngles, calcSelectedMonomersCount, calculateRamachandranHelixAngle, calculateStructures, clearStructures, findNearestAtomIndex, getConformation, getControlPoints, getControlPoints, getGroups, getIndex, getInitiatorPoint, getLeadAtomIndices, getLeadMidPoint, getLeadMidpoints, getLeadPoint, getLeadPoint, getLeadPoints, getPdbData, getPolymerInfo, getPolymerPointsAndVectors, getPolymerSequenceAtoms, getProteinStructure, getRange, getRangeGroups, getSelectedMonomerCount, getSequence, getTerminatorPoint, getWingPoint, getWingVectors, isDna, isMonomerSelected, isRna, recalculateLeadMidpointsAndWingVectors, removeProteinStructure, resetHydrogenPoints, setConformation
 
Methods inherited from class org.jmol.modelset.Polymer
calcRasmolHydrogenBonds, getType, setStructureList
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AlphaPolymer

AlphaPolymer(Monomer[] monomers)
Method Detail

getControlPoint

protected javax.vecmath.Point3f getControlPoint(int i,
                                                javax.vecmath.Vector3f v)
Overrides:
getControlPoint in class BioPolymer
Returns:
the leadPoint unless a protein sheet residue (see AlphaPolymer)

getPdbData

public void getPdbData(Viewer viewer,
                       char ctype,
                       char qtype,
                       int mStep,
                       int derivType,
                       java.util.BitSet bsAtoms,
                       java.util.BitSet bsSelected,
                       boolean bothEnds,
                       boolean isDraw,
                       boolean addHeader,
                       LabelToken[] tokens,
                       OutputStringBuffer pdbATOM,
                       java.lang.StringBuffer pdbCONECT,
                       java.util.BitSet bsWritten)
Overrides:
getPdbData in class Polymer

addSecondaryStructure

public void addSecondaryStructure(EnumStructure type,
                                  java.lang.String structureID,
                                  int serialID,
                                  int strandCount,
                                  char startChainID,
                                  int startSeqcode,
                                  char endChainID,
                                  int endSeqcode)
Overrides:
addSecondaryStructure in class Polymer

addSecondaryStructure

protected void addSecondaryStructure(EnumStructure type,
                                     java.lang.String structureID,
                                     int serialID,
                                     int strandCount,
                                     int indexStart,
                                     int indexEnd)

calculateStruts

public java.util.List<Atom[]> calculateStruts(ModelSet modelSet,
                                              java.util.BitSet bs1,
                                              java.util.BitSet bs2,
                                              java.util.List<Atom> vCA,
                                              float thresh,
                                              int delta,
                                              boolean allowMultiple)
Algorithm of George Phillips phillips@biochem.wisc.edu originally a contribution to pyMol as struts.py; adapted here by Bob Hanson for Jmol 1/2010 Return a vector of support posts for rapid prototyping models along the lines of George Phillips for Pymol except on actual molecular segments (biopolymers), not PDB chains (which may or may not be continuous). Like George, we go from thresh-4 to thresh in units of 1 Angstrom, but we do not require this threshold to be an integer. In addition, we prevent double-creation of struts by tracking where struts are, and we do not look for any addtional end struts if there is a strut already to an atom at a particular biopolymer end. The three parameters are: set strutDefaultRadius 0.3 set strutSpacingMinimum 6 set strutLengthMaximum 7.0 Struts will be introduced by: calculate struts {atom set A} {atom set B} where the two atom sets are optional and default to the currently selected set. They can be manipulated using the STRUTS command much like any "bond" struts 0.3 color struts opaque pink connect {atomno=3} {atomno=4} strut struts only command

Overrides:
calculateStruts in class Polymer
Parameters:
modelSet -
bs1 -
bs2 -
vCA -
thresh -
delta -
allowMultiple -
Returns:
vector of pairs of atoms

calculateStrutsStatic

private java.util.List<Atom[]> calculateStrutsStatic(ModelSet modelSet,
                                                     java.util.BitSet bs1,
                                                     java.util.BitSet bs2,
                                                     java.util.List<Atom> vCA,
                                                     float thresh,
                                                     int delta,
                                                     boolean allowMultiple)

strutPoint

private static int strutPoint(int i,
                              int j,
                              int n)

setStrut

private static void setStrut(int i,
                             int j,
                             int n,
                             java.util.List<Atom> vCA,
                             java.util.BitSet bs1,
                             java.util.BitSet bs2,
                             java.util.List<Atom[]> vStruts,
                             java.util.BitSet bsStruts,
                             java.util.BitSet bsNotAvailable,
                             java.util.BitSet bsNearbyResidues,
                             int delta)

calculateStructures

public void calculateStructures(boolean alphaOnly)
Uses Levitt & Greer algorithm to calculate protein secondary structures using only alpha-carbon atoms.

Levitt and Greer
Automatic Identification of Secondary Structure in Globular Proteins
J.Mol.Biol.(1977) 114, 181-293

http://csb.stanford.edu/levitt/Levitt_JMB77_Secondary_structure.pdf

Overrides:
calculateStructures in class Polymer

calculateAnglesInDegrees

private float[] calculateAnglesInDegrees()

calculateCodes

private AlphaPolymer.Code[] calculateCodes(float[] angles)

checkBetaSheetAlphaHelixOverlap

private void checkBetaSheetAlphaHelixOverlap(AlphaPolymer.Code[] codes,
                                             float[] angles)

calculateRunsFourOrMore

private EnumStructure[] calculateRunsFourOrMore(AlphaPolymer.Code[] codes)

extendRuns

private void extendRuns(EnumStructure[] tags)

searchForTurns

private void searchForTurns(AlphaPolymer.Code[] codes,
                            float[] angles,
                            EnumStructure[] tags)

addStructuresFromTags

private void addStructuresFromTags(EnumStructure[] tags)