Class AtomContainer

    • Field Detail

      • atomCount

        protected int atomCount
        Number of atoms contained by this object.
      • bondCount

        protected int bondCount
        Number of bonds contained by this object.
      • lonePairCount

        protected int lonePairCount
        Number of lone pairs contained by this object.
      • singleElectronCount

        protected int singleElectronCount
        Number of single electrons contained by this object.
      • growArraySize

        protected final int growArraySize
        Amount by which the bond and atom arrays grow when elements are added and the arrays are not large enough for that.
        See Also:
        Constant Field Values
      • atoms

        protected IAtom[] atoms
        Internal array of atoms.
      • bonds

        protected IBond[] bonds
        Internal array of bonds.
      • lonePairs

        protected ILonePair[] lonePairs
        Internal array of lone pairs.
      • singleElectrons

        protected ISingleElectron[] singleElectrons
        Internal array of single electrons.
      • stereoElements

        protected Set<IStereoElement> stereoElements
        Internal list of atom parities.
    • Constructor Detail

      • AtomContainer

        public AtomContainer()
        Constructs an empty AtomContainer.
      • AtomContainer

        public AtomContainer​(IAtomContainer container)
        Constructs an AtomContainer with a copy of the atoms and electronContainers of another AtomContainer (A shallow copy, i.e., with the same objects as in the original AtomContainer).
        Parameters:
        container - An AtomContainer to copy the atoms and electronContainers from
      • AtomContainer

        public AtomContainer​(int atomCount,
                             int bondCount,
                             int lpCount,
                             int seCount)
        Constructs an empty AtomContainer that will contain a certain number of atoms and electronContainers. It will set the starting array lengths to the defined values, but will not create any Atom or ElectronContainer's.
        Parameters:
        atomCount - Number of atoms to be in this container
        bondCount - Number of bonds to be in this container
        lpCount - Number of lone pairs to be in this container
        seCount - Number of single electrons to be in this container
    • Method Detail

      • setStereoElements

        public void setStereoElements​(List<IStereoElement> elements)
        Set the stereo elements - this will replace the existing instance with a new instance.
        Specified by:
        setStereoElements in interface IAtomContainer
        Parameters:
        elements - the new stereo elements
      • setAtoms

        public void setAtoms​(IAtom[] newAtoms)
        Sets the array of atoms of this AtomContainer.
        Specified by:
        setAtoms in interface IAtomContainer
        Parameters:
        newAtoms - The array of atoms to be assigned to this AtomContainer
        See Also:
        IAtomContainer.atoms()
      • setBonds

        public void setBonds​(IBond[] newBonds)
        Sets the array of bonds of this AtomContainer.
        Specified by:
        setBonds in interface IAtomContainer
        Parameters:
        newBonds - The array of bonds to be assigned to this AtomContainer
        See Also:
        IAtomContainer.bonds()
      • setAtom

        public void setAtom​(int idx,
                            IAtom atom)
        Set the atom at idx, the index must have an existing atom and therefore be in the range 0 ≤ idx < mol.getAtomCount().
        Specified by:
        setAtom in interface IAtomContainer
        Parameters:
        idx - The index of the atom to be set.
        atom - The atom to be stored at position idx
        See Also:
        IAtomContainer.getAtom(int)
      • getBond

        public IBond getBond​(int idx)
        Get the bond at the specified idx, the index should be in the range 0 ≤ idx < IAtomContainer.getBondCount().
        Specified by:
        getBond in interface IAtomContainer
        Parameters:
        idx - bond index
        Returns:
        the bond stored at the index
      • atoms

        public Iterable<IAtom> atoms()
        Returns an Iterable for looping over all atoms in this container.
        Specified by:
        atoms in interface IAtomContainer
        Returns:
        An Iterable with the atoms in this container
      • bonds

        public Iterable<IBond> bonds()
        Returns an Iterable for looping over all bonds in this container.
        Specified by:
        bonds in interface IAtomContainer
        Returns:
        An Iterable with the bonds in this container
      • lonePairs

        public Iterable<ILonePair> lonePairs()
        Returns an Iterable for looping over all lone pairs in this container.
        Specified by:
        lonePairs in interface IAtomContainer
        Returns:
        An Iterable with the lone pairs in this container
      • singleElectrons

        public Iterable<ISingleElectron> singleElectrons()
        Returns an Iterable for looping over all single electrons in this container.
        Specified by:
        singleElectrons in interface IAtomContainer
        Returns:
        An Iterable with the single electrons in this container
      • electronContainers

        public Iterable<IElectronContainer> electronContainers()
        Returns an Iterable for looping over all electron containers in this container.
        Specified by:
        electronContainers in interface IAtomContainer
        Returns:
        An Iterable with the electron containers in this container
      • getFirstAtom

        public IAtom getFirstAtom()
        Returns the atom at position 0 in the container.
        Specified by:
        getFirstAtom in interface IAtomContainer
        Returns:
        The atom at position 0 .
      • getLastAtom

        public IAtom getLastAtom()
        Returns the atom at the last position in the container.
        Specified by:
        getLastAtom in interface IAtomContainer
        Returns:
        The atom at the last position
      • getAtomNumber

        public int getAtomNumber​(IAtom atom)
        Returns the position of a given atom in the atoms array. It returns -1 if the atom atom does not exist.
        Specified by:
        getAtomNumber in interface IAtomContainer
        Parameters:
        atom - The atom to be sought
        Returns:
        The Position of the atom in the atoms array in [0,..].
      • getBondNumber

        public int getBondNumber​(IAtom atom1,
                                 IAtom atom2)
        Returns the position of the bond between two given atoms in the electronContainers array. It returns -1 if the bond does not exist.
        Specified by:
        getBondNumber in interface IAtomContainer
        Parameters:
        atom1 - The first atom
        atom2 - The second atom
        Returns:
        The Position of the bond between a1 and a2 in the electronContainers array.
      • getBondNumber

        public int getBondNumber​(IBond bond)
        Returns the position of a given bond in the electronContainers array. It returns -1 if the bond does not exist.
        Specified by:
        getBondNumber in interface IAtomContainer
        Parameters:
        bond - The bond to be sought
        Returns:
        The Position of the bond in the electronContainers array in [0,..].
      • getLonePairNumber

        public int getLonePairNumber​(ILonePair lonePair)
        Returns the position of a given lone pair in the lone pair array. It returns -1 if the lone pair does not exist.
        Specified by:
        getLonePairNumber in interface IAtomContainer
        Parameters:
        lonePair - The lone pair to be sought
        Returns:
        The Position of the lone pair in the array..
      • getSingleElectronNumber

        public int getSingleElectronNumber​(ISingleElectron singleElectron)
        Returns the position of a given single electron in the single electron array. It returns -1 if the single electron does not exist.
        Specified by:
        getSingleElectronNumber in interface IAtomContainer
        Parameters:
        singleElectron - The single electron to be sought
        Returns:
        The Position of the single electron in the array.
      • indexOf

        public int indexOf​(IAtom atom)
        Access the storage index of an atom.
        Specified by:
        indexOf in interface IAtomContainer
        Parameters:
        atom - atom instance to find
        Returns:
        the index, -1 if not found
      • indexOf

        public int indexOf​(IBond bond)
        Access the storage index of a bond.
        Specified by:
        indexOf in interface IAtomContainer
        Parameters:
        bond - bond instance to find
        Returns:
        the index, -1 if not found
      • indexOf

        public int indexOf​(ISingleElectron electron)
        Access the storage index of a single electron (radical).
        Specified by:
        indexOf in interface IAtomContainer
        Parameters:
        electron - the electron
        Returns:
        the index, -1 if not found
      • indexOf

        public int indexOf​(ILonePair pair)
        Access the storage index of a long pair.
        Specified by:
        indexOf in interface IAtomContainer
        Parameters:
        pair - the long pair
        Returns:
        the index, -1 if not found
      • getBond

        public IBond getBond​(IAtom atom1,
                             IAtom atom2)
        Returns the bond that connects the two given atoms.
        Specified by:
        getBond in interface IAtomContainer
        Parameters:
        atom1 - The first atom
        atom2 - The second atom
        Returns:
        The bond that connects the two atoms
      • getAtomCount

        public int getAtomCount()
        Returns the number of Atoms in this Container.
        Specified by:
        getAtomCount in interface IAtomContainer
        Returns:
        The number of Atoms in this Container
      • getBondCount

        public int getBondCount()
        Returns the number of Bonds in this Container.
        Specified by:
        getBondCount in interface IAtomContainer
        Returns:
        The number of Bonds in this Container
      • getLonePairCount

        public int getLonePairCount()
        Returns the number of LonePairs in this Container.
        Specified by:
        getLonePairCount in interface IAtomContainer
        Returns:
        The number of LonePairs in this Container
      • getSingleElectronCount

        public int getSingleElectronCount()
        Returns the number of the single electrons in this container.
        Specified by:
        getSingleElectronCount in interface IAtomContainer
        Returns:
        The number of SingleElectron objects of this AtomContainer
      • getElectronContainerCount

        public int getElectronContainerCount()
        Returns the number of ElectronContainers in this Container.
        Specified by:
        getElectronContainerCount in interface IAtomContainer
        Returns:
        The number of ElectronContainers in this Container
      • getConnectedAtomsList

        public List<IAtom> getConnectedAtomsList​(IAtom atom)
        Returns the atoms connected connected to the specified atom by a bond.
        Specified by:
        getConnectedAtomsList in interface IAtomContainer
        Parameters:
        atom - the atom
        Returns:
        connected atoms
      • getConnectedBondsList

        public List<IBond> getConnectedBondsList​(IAtom atom)
        Returns the bonds connected connected to the specified atom.
        Specified by:
        getConnectedBondsList in interface IAtomContainer
        Parameters:
        atom - the atom
        Returns:
        connected bonds
      • getConnectedLonePairsList

        public List<ILonePair> getConnectedLonePairsList​(IAtom atom)
        Returns the lone pairs connected connected to the specified atom.
        Specified by:
        getConnectedLonePairsList in interface IAtomContainer
        Parameters:
        atom - the atom
        Returns:
        connected lone pairs
      • getConnectedBondsCount

        public int getConnectedBondsCount​(IAtom atom)
        Returns the number of connected bonds (explicit degree) to the specified atom. This does not include bonds to implicit hydrogens.
        Specified by:
        getConnectedBondsCount in interface IAtomContainer
        Parameters:
        atom - the atom
        Returns:
        number of connected bonds
      • getConnectedAtomsCount

        public int getConnectedAtomsCount​(IAtom atom)
        Returns the number of connected atoms (explicit degree) to the specified atom. This does not include bonds to implicit hydrogens.
        Specified by:
        getConnectedAtomsCount in interface IAtomContainer
        Parameters:
        atom - the atom
        Returns:
        number of connected bonds
      • getConnectedBondsCount

        public int getConnectedBondsCount​(int idx)
        Returns the number of connected bonds (explicit degree) to atom at the specified index. This does not include bonds to implicit hydrogens.
        Specified by:
        getConnectedBondsCount in interface IAtomContainer
        Parameters:
        idx - the atom idx
        Returns:
        number of connected bonds
      • getConnectedLonePairsCount

        public int getConnectedLonePairsCount​(IAtom atom)
        Returns the number of lone pairs connected to the specified atom.
        Specified by:
        getConnectedLonePairsCount in interface IAtomContainer
        Parameters:
        atom - the atom
        Returns:
        number of connected bonds
      • getConnectedSingleElectronsCount

        public int getConnectedSingleElectronsCount​(IAtom atom)
        Returns the number of single electrons connected to the specified atom.
        Specified by:
        getConnectedSingleElectronsCount in interface IAtomContainer
        Parameters:
        atom - the atom
        Returns:
        number of connected bonds
      • getBondOrderSum

        public double getBondOrderSum​(IAtom atom)
        Returns the sum of the bond orders for a given Atom.
        Specified by:
        getBondOrderSum in interface IAtomContainer
        Parameters:
        atom - The atom
        Returns:
        The number of bondorders for this atom
      • getMaximumBondOrder

        public IBond.Order getMaximumBondOrder​(IAtom atom)
        Returns the maximum bond order that this atom currently has in the context of this AtomContainer. If the atom has no bonds but does have implicit hydrogens the minimum bond order is IBond.Order.SINGLE, otherwise the bond is unset IBond.Order.UNSET.
        Specified by:
        getMaximumBondOrder in interface IAtomContainer
        Parameters:
        atom - The atom
        Returns:
        The maximum bond order that this atom currently has
      • getMinimumBondOrder

        public IBond.Order getMinimumBondOrder​(IAtom atom)
        Returns the minimum bond order that this atom currently has in the context of this AtomContainer. If the atom has no bonds but does have implicit hydrogens the minimum bond order is IBond.Order.SINGLE, otherwise the bond is unset IBond.Order.UNSET.
        Specified by:
        getMinimumBondOrder in interface IAtomContainer
        Parameters:
        atom - The atom
        Returns:
        The minimum bond order that this atom currently has
      • add

        public void add​(IAtomContainer that)
        Adds all atoms and electronContainers of a given atomcontainer to this container.
        Specified by:
        add in interface IAtomContainer
        Parameters:
        that - The atomcontainer to be added
      • addAtom

        public void addAtom​(IAtom atom)
        Adds an atom to this container.
        Specified by:
        addAtom in interface IAtomContainer
        Parameters:
        atom - The atom to be added to this container
      • addBond

        public void addBond​(IBond bond)
        Adds a Bond to this AtomContainer.
        Specified by:
        addBond in interface IAtomContainer
        Parameters:
        bond - The bond to added to this container
      • addLonePair

        public void addLonePair​(ILonePair lonePair)
        Adds a lone pair to this AtomContainer.
        Specified by:
        addLonePair in interface IAtomContainer
        Parameters:
        lonePair - The LonePair to added to this container
      • addSingleElectron

        public void addSingleElectron​(ISingleElectron singleElectron)
        Adds a single electron to this AtomContainer.
        Specified by:
        addSingleElectron in interface IAtomContainer
        Parameters:
        singleElectron - The SingleElectron to added to this container
      • addElectronContainer

        public void addElectronContainer​(IElectronContainer electronContainer)
        Adds a ElectronContainer to this AtomContainer.
        Specified by:
        addElectronContainer in interface IAtomContainer
        Parameters:
        electronContainer - The ElectronContainer to added to this container
      • remove

        public void remove​(IAtomContainer atomContainer)
        Removes all atoms and electronContainers of a given atomcontainer from this container.
        Specified by:
        remove in interface IAtomContainer
        Parameters:
        atomContainer - The atomcontainer to be removed
      • removeAtomOnly

        public void removeAtomOnly​(int position)
        Unsafely remove atom at index.
        Removes the atom at the given position from the AtomContainer. Note that the electronContainers are unaffected: you also have to take care of removing all electronContainers to this atom from the container manually.
        Specified by:
        removeAtomOnly in interface IAtomContainer
        Parameters:
        position - The position of the atom to be removed.
      • removeAtomOnly

        public void removeAtomOnly​(IAtom atom)
        Unsafely remove atom.
        Removes the given atom from the AtomContainer. Note that the electronContainers are unaffected: you also have to take care of removeing all electronContainers to this atom from the container.
        Specified by:
        removeAtomOnly in interface IAtomContainer
        Parameters:
        atom - The atom to be removed
      • removeBond

        public IBond removeBond​(int position)
        Removes the bond at the given position from the AtomContainer.
        Specified by:
        removeBond in interface IAtomContainer
        Parameters:
        position - The position of the bond to be removed.
        Returns:
        the bond at the given position
      • removeBond

        public IBond removeBond​(IAtom atom1,
                                IAtom atom2)
        Removes the bond that connects the two given atoms.
        Specified by:
        removeBond in interface IAtomContainer
        Parameters:
        atom1 - The first atom
        atom2 - The second atom
        Returns:
        The bond that connects the two atoms
      • removeBond

        public void removeBond​(IBond bond)
        Removes the bond from this container.
        Specified by:
        removeBond in interface IAtomContainer
        Parameters:
        bond - The bond to be removed.
      • removeLonePair

        public ILonePair removeLonePair​(int position)
        Removes the lone pair at the given position from the AtomContainer.
        Specified by:
        removeLonePair in interface IAtomContainer
        Parameters:
        position - The position of the LonePair to be removed.
        Returns:
        The removed ILonePair.
      • removeLonePair

        public void removeLonePair​(ILonePair lonePair)
        Removes the lone pair from the AtomContainer.
        Specified by:
        removeLonePair in interface IAtomContainer
        Parameters:
        lonePair - The LonePair to be removed.
      • removeSingleElectron

        public ISingleElectron removeSingleElectron​(int position)
        Removes the single electron at the given position from the AtomContainer.
        Specified by:
        removeSingleElectron in interface IAtomContainer
        Parameters:
        position - The position of the SingleElectron to be removed.
        Returns:
        The removed ISingleElectron
      • removeSingleElectron

        public void removeSingleElectron​(ISingleElectron singleElectron)
        Removes the single electron from the AtomContainer.
        Specified by:
        removeSingleElectron in interface IAtomContainer
        Parameters:
        singleElectron - The SingleElectron to be removed.
      • removeElectronContainer

        public IElectronContainer removeElectronContainer​(int number)
        Removes the bond at the given position from this container.
        Specified by:
        removeElectronContainer in interface IAtomContainer
        Parameters:
        number - The position of the bond in the electronContainers array
        Returns:
        the IElectronContainer that was removed
      • removeElectronContainer

        public void removeElectronContainer​(IElectronContainer electronContainer)
        Removes this ElectronContainer from this container.
        Specified by:
        removeElectronContainer in interface IAtomContainer
        Parameters:
        electronContainer - The electronContainer to be removed
      • removeAtom

        public void removeAtom​(IAtom atom)
        Safely remove an atom from the container.
        Removes a single atom from the container updating all internal state to be consistent. All bonds connected to the atom will be deleted as well as all stereo elements. If multiple atoms/bonds are being deleted they should be gathered into a single transaction and removed with IAtomContainer.remove(IAtomContainer).
        If you are removing hydrogens one of the utility methods (e.g. AtomContainerManipulator.removeHydrogens(IAtomContainer)) is preferable.
        Specified by:
        removeAtom in interface IAtomContainer
        Parameters:
        atom - the atom to be removed
      • removeAtom

        public void removeAtom​(int pos)
        Safely remove an atom from the container.
        Removes a single atom from the container updating all internal state to be consistent. All bonds connected to the atom will be deleted as well as all stereo elements. If multiple atoms/bonds are being deleted they should be gathered into a single transaction and removed with IAtomContainer.remove(IAtomContainer).
        If you are removing hydrogens one of the utility methods (e.g. AtomContainerManipulator.removeHydrogens(IAtomContainer)) is preferable.
        Specified by:
        removeAtom in interface IAtomContainer
        Parameters:
        pos - the position of the atom to be removed
      • removeAllElements

        public void removeAllElements()
        Removes all atoms, bonds and stereo elements from this container.
        Specified by:
        removeAllElements in interface IAtomContainer
      • removeAllBonds

        public void removeAllBonds()
        Removes all Bonds from this container.
        Specified by:
        removeAllBonds in interface IAtomContainer
      • addBond

        public void addBond​(int atom1,
                            int atom2,
                            IBond.Order order,
                            IBond.Stereo stereo)
        Adds a bond to this container.
        Specified by:
        addBond in interface IAtomContainer
        Parameters:
        atom1 - Id of the first atom of the Bond in [0,..]
        atom2 - Id of the second atom of the Bond in [0,..]
        order - Bondorder
        stereo - Stereochemical orientation
      • addBond

        public void addBond​(int atom1,
                            int atom2,
                            IBond.Order order)
        Adds a bond to this container.
        Specified by:
        addBond in interface IAtomContainer
        Parameters:
        atom1 - Id of the first atom of the Bond in [0,..]
        atom2 - Id of the second atom of the Bond in [0,..]
        order - Bondorder
      • addLonePair

        public void addLonePair​(int atomID)
        Adds a LonePair to this Atom.
        Specified by:
        addLonePair in interface IAtomContainer
        Parameters:
        atomID - The atom number to which the LonePair is added in [0,..]
      • addSingleElectron

        public void addSingleElectron​(int atomID)
        Adds a SingleElectron to this Atom.
        Specified by:
        addSingleElectron in interface IAtomContainer
        Parameters:
        atomID - The atom number to which the SingleElectron is added in [0,..]
      • contains

        public boolean contains​(IAtom atom)
        True, if the AtomContainer contains the given atom object.
        Specified by:
        contains in interface IAtomContainer
        Parameters:
        atom - the atom this AtomContainer is searched for
        Returns:
        True, if the AtomContainer contains the given atom object
      • contains

        public boolean contains​(IBond bond)
        True, if the AtomContainer contains the given bond object.
        Specified by:
        contains in interface IAtomContainer
        Parameters:
        bond - the bond this AtomContainer is searched for
        Returns:
        True, if the AtomContainer contains the given bond object
      • contains

        public boolean contains​(ILonePair lonePair)
        True, if the AtomContainer contains the given LonePair object.
        Specified by:
        contains in interface IAtomContainer
        Parameters:
        lonePair - the LonePair this AtomContainer is searched for
        Returns:
        True, if the AtomContainer contains the given LonePair object
      • contains

        public boolean contains​(ISingleElectron singleElectron)
        True, if the AtomContainer contains the given SingleElectron object.
        Specified by:
        contains in interface IAtomContainer
        Parameters:
        singleElectron - the SingleElectron this AtomContainer is searched for
        Returns:
        True, if the AtomContainer contains the given SingleElectron object
      • contains

        public boolean contains​(IElectronContainer electronContainer)
        True, if the AtomContainer contains the given ElectronContainer object.
        Specified by:
        contains in interface IAtomContainer
        Parameters:
        electronContainer - ElectronContainer that is searched for
        Returns:
        True, if the AtomContainer contains the given bond object
      • toString

        public String toString()
        Returns a one line description of this IChemObject.
        Specified by:
        toString in interface IChemObject
        Overrides:
        toString in class Object
        Returns:
        a String representation of this object
      • stateChanged

        public void stateChanged​(IChemObjectChangeEvent event)
        Called by objects to notify objects that implemented this interface and registered with them as ChemObjectListeners.
        Specified by:
        stateChanged in interface IChemObjectListener
        Parameters:
        event - a ChemObjectChangeEvent object
      • isEmpty

        public boolean isEmpty()
        Indicates whether this container is empty. The container is considered empty if there are no atoms. Bonds are not checked as a graph with no vertexes can not have edges.
        Specified by:
        isEmpty in interface IAtomContainer
        Returns:
        whether the container is empty
      • getTitle

        public String getTitle()
        Access the title of the record.
        Specified by:
        getTitle in interface IAtomContainer
        Returns:
        the title
      • setTitle

        public void setTitle​(String title)
        Modify the title of the record.
        Specified by:
        setTitle in interface IAtomContainer
        Parameters:
        title - the title