Class Alignment

All Implemented Interfaces:
Licensable

@PublicApi public final class Alignment extends AlignmentBase
3D Alignment aligns two or more 3D molecules onto each other. The conformation of all molecules can be kept flexible so as to maximize the molecular overlap or also the input conformation of some of the molecules can be frozen. Alignment tries to maximize the overlap of atoms of the same type of different molecules.
Example source
 Molecule[] mols = new Molecule[2];
 mols[0] = MolImporter.importMol("CCCCC");
 mols[1] = MolImporter.importMol("CCCCCCC");
 mols[0].aromatize();
 mols[1].aromatize();
 Cleaner.clean(mols[0], 3);
 Cleaner.clean(mols[1], 3);
 Alignment aa = new Alignment();
 aa.addMolecule(mols[0], false, false); // adds a molecule no roatation / no
 // conformational flexibility
 aa.addMolecule(mols[1], true, true); // adds a molecule with roatation/ with
 // conformational flexibility
 aa.addUserConstraint(0, 3, 1, 4); // optional: add user constraint between atoms
 // of two different molecules. Any
 // constraint can be added
 aa.align();
 Molecule result = aa.getMoleculeWithAlignedCoordinates(1);
 double tanimoto = aa.tanimoto();
 
Since:
5.2
  • Constructor Details

  • Method Details

    • getMoleculeWithAlignedCoordinates

      public Molecule getMoleculeWithAlignedCoordinates(int molID)
      After the alignment result molecule can be obtained.
      Parameters:
      molID - input sequence / Which molecule to return.
      Returns:
      the result molecule
    • setMode

      public void setMode(AlignmentAccuracyMode mode)
    • getAlignedMoleculesAsFragments

      public Molecule getAlignedMoleculesAsFragments()
    • getOrientationType

      public AlignmentProperties.OrientationType getOrientationType()
    • setProperty

      public final void setProperty(AlignmentProperties props)
      Description copied from class: AlignmentBase
      Sets the properties for the alignment. The properties are used to configure the alignment algorithm. The properties are set to the factory and the factory is used to create the alignment molecules.
      Overrides:
      setProperty in class AlignmentBase
      Parameters:
      props - the properties to set
    • setConformerCount

      public void setConformerCount(int conformerCount)
      The dihedral angles of every flexible molecule should be randomized before alignment.
      Parameters:
      conformerCount - number of randomized conformations to try to align
    • randomizeRotatableDihedrals

      public static Molecule randomizeRotatableDihedrals(Molecule m, Random r)
      Rotates rotatable bonds by a random dihedral angle value. The resulting conformation is optimized, to avoid steric clashes.
      Parameters:
      m - this Molecule object will be cloned and the coordinates will remain intact.
      r - parameterized Random object
      Returns:
      the Molecule in changed conformation
    • setColoringScheme

      public void setColoringScheme(AlignmentProperties.ColoringScheme c)
    • addNodeColorWeight

      public void addNodeColorWeight(int t1, int t2, double w)
      User may define extra weights between colors defined at setColoringScheme. The default weights are 1 for the same and 0 for the dissimilar types.
      Parameters:
      t1 - color 1 (Atomtype)
      t2 - color 2 (Atomtype)
      w - weight
    • setDefaultNodeWeightBehavior

      public void setDefaultNodeWeightBehavior(AlignmentProperties.ColorNotSpecifiedCase n)
    • setOrientationType

      public void setOrientationType(AlignmentProperties.OrientationType orientationType)
    • removeAllConstraints

      public void removeAllConstraints()
    • removeAllMolecules

      public void removeAllMolecules()
      before every new alignment the molecules have to be removed.
    • addMolecule

      public void addMolecule(Molecule m, boolean flexible, boolean enableTranslateAndRotate) throws AlignmentException
      Add molecule to align
      Parameters:
      m - Molecule to align
      flexible - if "false" the molecule kept rigid. If "true" the rotatable bonds are rotated to achieve the best alignment.
      enableTranslateAndRotate - Turn translation and rotation on if true. If false molecule is frozen.
      Throws:
      AlignmentException
    • addUserConstraint

      public void addUserConstraint(int molSeq0, int atomSeq0, int molSeq1, int atomSeq1) throws AlignmentException
      Adds user constraint between two atoms of two different molecules The addMol method calls must precede this method.
      Throws:
      AlignmentException - if there is no such atom or molecule.
    • tanimoto

      public double tanimoto() throws AlignmentException
      Calculates the atomic colored volume Tanimoto similarity of two 3D molecules.
      Returns:
      the 3D volume Tanimoto between 0..1 If more than two molecules are added returns -1.
      Throws:
      AlignmentException
    • align

      public void align() throws AlignmentException
      3D alignment on two or more molecules. WARNING! The new coordinates are written back to the input molecules.
      Throws:
      AlignmentException - if there is an error with the molecule: not 3d or multi-fragment.
    • getVolumeScore

      public double getVolumeScore()
      Calculates the volume score between the current orientation and conformation of the two molecules.
      Returns:
      the volume intersection score.
    • getRmsd

      public double getRmsd()
    • addConstraintsFromUserMappedAtoms

      public void addConstraintsFromUserMappedAtoms() throws AlignmentException
      An atomMap can be added to some of the atoms in MarvinSketch using the single reaction arrow. These maps are imported as user pairs.
      Throws:
      AlignmentException
    • setMolecules

      public void setMolecules(AlignmentMolecule reference, AlignmentMolecule toAlign)