Class Octahedral

java.lang.Object
org.openscience.cdk.stereo.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:
  • Field Details

  • Constructor Details

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

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

      protected Octahedral create(IAtom focus, List<IAtom> carriers, int cfg)
    • numCarriers

      protected static int numCarriers(int cfg)
    • getFocus

      public IAtom 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
    • getCarriers

      public List<IAtom> getCarriers()
      The carriers of the stereochemistry
      Specified by:
      getCarriers in interface IStereoElement<F extends IChemObject,C extends IChemObject>
      Returns:
      the carriers
    • getConfigClass

      public int getConfigClass()
      The configuration class of the stereochemistry.
      Specified by:
      getConfigClass in interface IStereoElement<F extends IChemObject,C extends IChemObject>
      Returns:
      configuration class
    • getConfigOrder

      public int getConfigOrder()
      The configuration order of the stereochemistry.
      Specified by:
      getConfigOrder in interface IStereoElement<F extends IChemObject,C extends IChemObject>
      Returns:
      configuration
    • 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
    • getGroupInfo

      public int getGroupInfo()
      Access the stereo group information - see class doc.
      Specified by:
      getGroupInfo in interface IStereoElement<F extends IChemObject,C extends IChemObject>
      Returns:
      the group info
    • 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<IAtom,IAtom> 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.
    • map

      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 the existing atom/bond it is left intact. If you want to remove stereo in such cases please use IStereoElement.mapStrict(java.util.Map<org.openscience.cdk.interfaces.IChemObject, org.openscience.cdk.interfaces.IChemObject>).
      Specified by:
      map 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.
    • mapStrict

      public final IStereoElement<IAtom,IAtom> 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.
    • getBuilder

      public IChemObjectBuilder getBuilder()
      Returns a IChemObjectBuilder for the data classes that extend this class.
      Specified by:
      getBuilder in interface ICDKObject
      Returns:
      The IChemObjectBuilder matching this ICDKObject
    • setBuilder

      protected void setBuilder(IChemObjectBuilder builder)
    • invapply

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