Class Alignment

  • All Implemented Interfaces:
    chemaxon.license.Licensable

    @PublicAPI
    public class Alignment
    extends Object
    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();
     mols[0].clean(3, null);
     mols[1].clean(3, null);
     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
    • Method Detail

      • 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
      • getAlignedMoleculesAsFragments

        public Molecule getAlignedMoleculesAsFragments()
      • setConformerCount

        public void setConformerCount​(int conformerCount)
        The 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
      • 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
      • 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 chemaxon.marvin.alignment.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:
        chemaxon.marvin.alignment.AlignmentException
      • addUserConstraint

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

        public double tanimoto()
                        throws chemaxon.marvin.alignment.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:
        chemaxon.marvin.alignment.AlignmentException
      • getStatus

        public chemaxon.marvin.alignment.Status getStatus()
      • align

        public void align()
                   throws chemaxon.marvin.alignment.AlignmentException
        3D alignment on two or more molecules. WARNING! The new coordinates are written back to the input molecules.
        Throws:
        chemaxon.marvin.alignment.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 chemaxon.marvin.alignment.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:
        chemaxon.marvin.alignment.AlignmentException
      • setMinimumCommonSize

        @Deprecated
        public void setMinimumCommonSize​(int minimumCommonSize)
        Deprecated.
        No effect. Will be removed in a future release.
      • getMaxGradLimit

        public double getMaxGradLimit()
      • getNodeColor

        public chemaxon.marvin.alignment.NodeColor getNodeColor()
      • setAromatize

        @Deprecated
        public void setAromatize​(boolean arg0)
        Deprecated.
      • setDehidrogenize

        @Deprecated
        public void setDehidrogenize​(boolean arg0)
        Deprecated.
      • setFlexibleRingSize

        public void setFlexibleRingSize​(int arg0)
      • setFlexibleRingRotatableBondCount

        public void setFlexibleRingRotatableBondCount​(int arg0)
      • isLicensed

        public boolean isLicensed()
        Specified by:
        isLicensed in interface chemaxon.license.Licensable
      • setLicenseEnvironment

        public void setLicenseEnvironment​(String arg0)
        Specified by:
        setLicenseEnvironment in interface chemaxon.license.Licensable
      • getStepLimit

        public int getStepLimit()
      • setStepLimit

        public void setStepLimit​(int arg0)
      • getTimeLimit

        public int getTimeLimit()
      • setTimeLimit

        public void setTimeLimit​(int arg0)
      • setProgressMonitor

        public void setProgressMonitor​(MProgressMonitor arg0)
      • setProximity

        public void setProximity​(chemaxon.marvin.alignment.AlignmentProperties.ProximityPotentialType arg0)