Class AtropIsomerDetector

  • All Implemented Interfaces:
    chemaxon.license.Licensable

    @PublicAPI
    public class AtropIsomerDetector
    extends Object
    implements chemaxon.license.Licensable
    Molecular mechanics based atropisomer detection. If the full rotation around a rotatable bond is blocked a steric proximity usually two isomers occurs. The algorithm rotates all rotatable bonds stepwise and optimizes the conformation id the domain of the remaining dihedrals. The energy values are obtained from MMFF dihedral potential and MMFF long range. If the conformational energy barrier is higher than a user defined limit that bond defined as atrop bond by the current implementation.

    Usage:

     Molecule m = MolImporter
                    .importMol("CC(C)[[email protected]@](C)(N(C(=O)C=C)C1=C(I)C=CC=C1)C(O)=O");
     AtropIsomerDetector atp = new AtropIsomerDetector();
     atp.calculate(m);
     int[] found = atp.getAtropBonds();
     

    Limitations:

    • The presence of a single rotational barrier is recognized as an atrop bond. This can result false positives for simpler hindered rotatable bonds.
    • Symmetries of the rotated parts are not examined. This can result in false positives for symmetric structures showing rotation barriers without differentiable conformers.
    See Also:
    Atropisomer on wiki
    • Field Detail

      • DEFAULT_SAMPLING_ACCURACY

        public static final int DEFAULT_SAMPLING_ACCURACY
        Default for parameter setSamplingAccuracy(int).
    • Constructor Detail

      • AtropIsomerDetector

        public AtropIsomerDetector()
                            throws chemaxon.marvin.alignment.AlignmentException
        Throws:
        chemaxon.marvin.alignment.AlignmentException
    • Method Detail

      • isLicensed

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

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

        public void setMethylsRotatable​(boolean methylsRotatable)
        This is a speedup heuristics. Rotating the three hydrogens of a methyl group rarely results in atrop bonds.
        Parameters:
        methylsRotatable - if true rotate methyl groups too. Default is false.
      • setNumberOfAtomsAcceptToRotate

        public void setNumberOfAtomsAcceptToRotate​(int numberOfAtomsAcceptToRotate)
        If only a given number of atoms (or less) can be found at one of the side of the dihedral skip this.
        Parameters:
        numberOfAtomsAcceptToRotate - default is 1.
      • setBarrierLimit

        public void setBarrierLimit​(double barrierLimit)
        Set the energy barrier limit.
        Parameters:
        barrierLimit - New energy barrier limit in kcal/mol. default is 200
      • setSamplingAccuracy

        public void setSamplingAccuracy​(int accuracy)
        Set sampling accuracy.
        Parameters:
        accuracy - Sample count for a full rotation to use
      • setTimeoutInSeconds

        public void setTimeoutInSeconds​(int timeoutInSeconds)
        Set time out.
        Parameters:
        timeoutInSeconds - Timeout to use or 0 for no timeout.
      • setSamplingAccuracy

        public void setSamplingAccuracy​(AtropIsomerDetector.Accuracy accuracy)
        Set sampling accuracy.
        Parameters:
        accuracy - Preset value representing sample count for a full rotation to use
      • setFlexibleRingRotatableBondCount

        public void setFlexibleRingRotatableBondCount​(int i)
      • setFlexibleRingSize

        public void setFlexibleRingSize​(int size)
      • calculate

        public void calculate​(Molecule input)
                       throws chemaxon.marvin.alignment.AlignmentException
        Run the atropisomer calculation.
        Parameters:
        input - the input molecule
        Throws:
        chemaxon.marvin.alignment.AlignmentException - Propagated
      • calculate

        public void calculate​(Molecule input,
                              SubProgressObserver progressObserver)
                       throws chemaxon.marvin.alignment.AlignmentException
        Run the atropisomer calculation.
        Parameters:
        input - the input molecule
        progressObserver - Observer to track progress of dihedral scans. Total work unit count is set to the visited rotatable bond counts. Note that dihedral scan for a rotatable bond can be skipped depending on the settings. Note that ProgressObserver.done() is invoked when execution finished.
        Throws:
        chemaxon.marvin.alignment.AlignmentException - Propagated
      • calculate

        @Beta
        public void calculate​(Molecule input,
                              SubProgressObserver progressObserver,
                              DihedralScanListener dihedralScanListener)
                       throws chemaxon.marvin.alignment.AlignmentException
        Run the atropisomer calculation.
        Parameters:
        input - the input molecule
        progressObserver - Observer to track progress of dihedral scans. Total work unit count is set to the visited rotatable bond counts. Note that dihedral scan for a rotatable bond can be skipped depending on the settings. Note that ProgressObserver.done() is invoked when execution finished.
        dihedralScanListener - Listener to use or null Please note that this method is marked with Beta annotation, so it can be subject of incompatible changes or removal in any of the later releases.
        Throws:
        chemaxon.marvin.alignment.AlignmentException - Propagated
        CancellationException - When a specified progressObserver is cancelled by returning true from CancelObserver.isCancelled() or when timeout occurred
      • getAtropBonds

        public int[] getAtropBonds()
        After the calculate method finished.
        Returns:
        the indices of the detected atrop bonds.
      • getDihedralScanResults

        @Beta
        public List<DihedralScanResult> getDihedralScanResults()
        Get results of executed dihedral scans. Please note that this method is marked with Beta annotation, so it can be subject of incompatible changes or removal in any of the later releases.
        Returns:
        Executed dihedral scan results
      • getRealRotatableBondCount

        public int getRealRotatableBondCount()
        Rotatable bond count (atrop bonds excluded)
        Returns:
        Rotatable bond count
      • getPossibleRotatableBondCount

        public int getPossibleRotatableBondCount()
        Rotatable bond count before the atrop isomer calculation.
        Returns:
        All rotatable bond count
      • getResultMolecule

        public Molecule getResultMolecule()
        The result molecule will be 3D and aromatized version of the input molecules. Hydrogens are also added.
        Returns:
        the result molecule.