Class Octahedral

  • All Implemented Interfaces:
    Cloneable, ICDKObject, IStereoElement<IAtom,​IAtom>

    public final class Octahedral
    extends Object
    Represents an octahedral configuration of an atom six neighbors. The configuration order is defined as between 1 and 30 using the same permutation tables as SMILES (e.g. @OH1 .. @OH30). This allows the 720 permutations of atom ordering to be described.
    Normalizing the representation (with normalize() returns a configuration reordered such that the configuration order is 1. For example
    C[Co@OH8](F)(Br)(Cl)(I)S
    is the same as
    C[Co@OH1](F)(Cl)(Br)(I)S
    . The normalised form is easy to work with as the first and last carriers form an axis, the middle four equatorial carriers are arranged anti-clockwise looking from the first carrier.
          c
          | a
          |/
      d---x---b = OH1
         /|       where a: first carrier, b: second carried, etc
        f |             x: focus
          e             'a' is in front of the focus 'x', 'f' is behind
     
    See Also:
    Octahedral Centers, OpenSMILES, TrigonalBipyramidal, SquarePlanar
    • Constructor Detail

      • Octahedral

        public Octahedral​(IAtom focus,
                          IAtom[] carriers,
                          int order)
        Create a new octahedral configuration.
        Parameters:
        focus - the focus
        carriers - the carriers
        order - the order of the configuration 0-30.
    • Method Detail

      • normalize

        public Octahedral normalize()
        Normalize the configuration to the lowest order (1). For example
        C[Co@OH8](F)(Br)(Cl)(I)S
        is the same as
        C[Co@OH1](F)(Cl)(Br)(I)S
        . The normalised form is easy to work with as the first and last carriers form an axis, the middle four equatorial carriers are arranged anti-clockwise looking from the first carrier.
        Returns:
        the normalized form
      • numCarriers

        protected static int numCarriers​(int cfg)
      • getFocus

        public F getFocus()
        The focus atom or bond at the 'centre' of the stereo-configuration.
        Specified by:
        getFocus in interface IStereoElement<F extends IChemObject,​C extends IChemObject>
        Returns:
        the focus
      • getConfig

        public int getConfig()
        Access the configuration order and class of the stereochemistry.
        Specified by:
        getConfig in interface IStereoElement<F extends IChemObject,​C extends IChemObject>
        Returns:
        the configuration
      • setConfigOrder

        public void setConfigOrder​(int cfg)
        Set the configuration order of the stereochemistry.
        Specified by:
        setConfigOrder in interface IStereoElement<F extends IChemObject,​C extends IChemObject>
        Parameters:
        cfg - the new configuration
      • setGroupInfo

        public void setGroupInfo​(int grp)
        Set the stereo group information - see class doc.
        Specified by:
        setGroupInfo in interface IStereoElement<F extends IChemObject,​C extends IChemObject>
        Parameters:
        grp - the group info
      • contains

        public boolean contains​(IAtom atom)
        Does the stereo element contain the provided atom.
        Specified by:
        contains in interface IStereoElement<F extends IChemObject,​C extends IChemObject>
        Parameters:
        atom - an atom to test membership
        Returns:
        whether the atom is present
      • map

        public IStereoElement<F,​C> map​(Map<IAtom,​IAtom> atoms,
                                             Map<IBond,​IBond> bonds)
        Map the atoms/bonds in this instance to a new stereo element using the provided atom/bond mapping. This allows the stereo element to be transferred between a cloned or aligned (i.e. isomorphic) chemical graph. If no mapping is found for a given atom or bond it is left intact. However the provided atom and bonds maps must not be null.
        Specified by:
        map in interface IStereoElement<F extends IChemObject,​C extends IChemObject>
        Parameters:
        atoms - used to convert the original atoms to their mapped counterparts
        bonds - used to convert the original bonds to their mapped counterparts
        Returns:
        a new stereo element in the same configuration but with atoms/bonds replaced with their mapped equivalence.
      • mapStrict

        public final IStereoElement<F,​C> mapStrict​(Map<IChemObject,​IChemObject> chemobjs)
        Description copied from interface: IStereoElement
        Update the stereo using the remapping of atoms/bonds in this instance to a new stereo element using the provided atom/bond mapping. This allows the stereo element to be transferred between a cloned or aligned (i.e. isomorphic) chemical graph. If no mapping is found for a given atom or bond a new element is NOT created.
        Specified by:
        mapStrict in interface IStereoElement<F extends IChemObject,​C extends IChemObject>
        Parameters:
        chemobjs - chem object mapping
        Returns:
        a new stereo element in the same configuration but with atoms/bonds replaced with their mapped equivalence.
      • invapply

        protected static <T> T[] invapply​(T[] src,
                                          int[] perm)