Class QueryBond

java.lang.Object
org.openscience.cdk.isomorphism.matchers.QueryChemObject
org.openscience.cdk.isomorphism.matchers.QueryBond
All Implemented Interfaces:
Cloneable, IBond, ICDKObject, IChemObject, IElectronContainer, IQueryBond
Direct Known Subclasses:
CTFileQueryBond, OrderQueryBond, OrderQueryBondOrderOnly, SMARTSBond

public class QueryBond extends QueryChemObject implements IQueryBond
Implements the concept of a "query bond" between two or more atoms. Query bonds can be used to capture types such as "Single or Double" or "Any".
Source code:
main
Belongs to CDK module:
isomorphism
Created on:
2010-12-16
  • Field Details

    • order

      protected IBond.Order order
      The bond order of this query bond.
    • atomCount

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

      protected IAtom[] atoms
      A list of atoms participating in this query bond.
    • stereo

      protected IBond.Stereo stereo
      A descriptor the stereochemical orientation of this query bond.
    • electronCount

      protected Integer electronCount
      Number of electrons in the ElectronContainer.
  • Constructor Details

    • QueryBond

      public QueryBond(IAtom beg, IAtom end, Expr expr)
      Constructs an query bond from an expression.
      
       // pi-bond in a ring
       Expr e = new Expr(IS_IN_RING);
       e.and(new Expr(ALIPHATIC_ORDER, 2));
       new QueryBond(beg, end, e);
       
      Parameters:
      expr - the expression
    • QueryBond

      public QueryBond(IAtom beg, IAtom end, Expr.Type type)
      Constructs an query bond from an expression type.
      
       new QueryBond(beg, end, IS_IN_RING);
       
      Parameters:
      type - the expression type
    • QueryBond

      public QueryBond(IAtom beg, IAtom end, Expr.Type type, int val)
      Constructs an query bond from an expression type and value.
      
       new QueryBond(beg, end, ALIPHATIC_ORDER, 8);
       
      Parameters:
      type - the expression type
      val - the expression value
    • QueryBond

      public QueryBond(IChemObjectBuilder builder)
      Constructs an empty query bond.
    • QueryBond

      public QueryBond(IAtom atom1, IAtom atom2, IChemObjectBuilder builder)
      Constructs a query bond with a single query bond order..
      Parameters:
      atom1 - the first Atom in the query bond
      atom2 - the second Atom in the query bond
    • QueryBond

      public QueryBond(IAtom atom1, IAtom atom2, IBond.Order order, IChemObjectBuilder builder)
      Constructs a query bond with a given order.
      Parameters:
      atom1 - the first Atom in the query bond
      atom2 - the second Atom in the query bond
      order - the query bond order
    • QueryBond

      public QueryBond(IAtom[] atoms, IChemObjectBuilder builder)
      Constructs a multi-center query bond, with undefined order and no stereo information.
      Parameters:
      atoms - An array of IAtom containing the atoms constituting the query bond
    • QueryBond

      public QueryBond(IAtom[] atoms, IBond.Order order, IChemObjectBuilder builder)
      Constructs a multi-center query bond, with a specified order and no stereo information.
      Parameters:
      atoms - An array of IAtom containing the atoms constituting the query bond
      order - The order of the query bond
    • QueryBond

      public QueryBond(IAtom atom1, IAtom atom2, IBond.Order order, IBond.Stereo stereo, IChemObjectBuilder builder)
      Constructs a query bond with a given order and stereo orientation from an array of atoms.
      Parameters:
      atom1 - the first Atom in the query bond
      atom2 - the second Atom in the query bond
      order - the query bond order
      stereo - a descriptor the stereochemical orientation of this query bond
  • Method Details

    • atoms

      public Iterable<IAtom> atoms()
      Returns the Iterator to atoms making up this query bond. Iterator.remove() is not implemented.
      Specified by:
      atoms in interface IBond
      Returns:
      An Iterator to atoms participating in this query bond
      See Also:
    • getIndex

      public int getIndex()
      Specified by:
      getIndex in interface IBond
    • getContainer

      public IAtomContainer getContainer()
      Specified by:
      getContainer in interface IBond
    • setAtoms

      public void setAtoms(IAtom[] atoms)
      Sets the array of atoms making up this query bond.
      Specified by:
      setAtoms in interface IBond
      Parameters:
      atoms - An array of atoms that forms this query bond
      See Also:
    • getAtomCount

      public int getAtomCount()
      Returns the number of Atoms in this Bond.
      Specified by:
      getAtomCount in interface IBond
      Returns:
      The number of Atoms in this Bond
    • getAtom

      public IAtom getAtom(int position)
      Returns an Atom from this query bond.
      Specified by:
      getAtom in interface IBond
      Parameters:
      position - The position in this query bond where the atom is
      Returns:
      The atom at the specified position, null if there are no atoms in the query bond
      See Also:
    • getBegin

      public IAtom getBegin()
      Access the begin (or first) atom of the bond.
      Specified by:
      getBegin in interface IBond
      Returns:
      the begin atom
    • getEnd

      public IAtom getEnd()
      Access the end (or second) atom of the bond.
      Specified by:
      getEnd in interface IBond
      Returns:
      the end atom
    • getOther

      public IAtom getOther(IAtom atom)
      Returns the other atom in the bond, the atom is connected to the given atom.This method is only correct for two-centre bonds, for n-centre bonds the behaviour is undefined and the more correct IBond.getConnectedAtoms(IAtom) should be used.

      
       IAtom beg = bond.getBegin();
       IAtom end = bond.getEnd();
       // bond.getOther(beg) == end
       // bond.getOther(end) == beg
       
      Specified by:
      getOther in interface IBond
      Parameters:
      atom - The atom the bond partner is searched of
      Returns:
      the connected atom or null if the given atom is not part of the bond
    • getConnectedAtom

      public IAtom getConnectedAtom(IAtom atom)
      Returns the other atom in the bond, the atom is connected to the given atom. This method is only correct for two-centre bonds, for n-centre bonds the behaviour is undefined and the more correct IBond.getConnectedAtoms(IAtom) should be used.

      
       IAtom beg = bond.getBegin();
       IAtom end = bond.getEnd();
       // bond.getConnectedAtom(beg) == end
       // bond.getConnectedAtom(end) == beg
       
      Specified by:
      getConnectedAtom in interface IBond
      Parameters:
      atom - The atom the bond partner is searched of
      Returns:
      the connected atom or null if the given atom is not part of the bond
    • getConnectedAtoms

      public IAtom[] getConnectedAtoms(IAtom atom)
      Returns all the atoms in the bond connected to the given atom.
      Specified by:
      getConnectedAtoms in interface IBond
      Parameters:
      atom - The atoms the bond partner is searched of
      Returns:
      the connected atoms or null if the given atom is not part of the bond
    • contains

      public boolean contains(IAtom atom)
      Returns true if the given atom participates in this query bond.
      Specified by:
      contains in interface IBond
      Parameters:
      atom - The atom to be tested if it participates in this query bond
      Returns:
      true if the atom participates in this query bond
    • setAtom

      public void setAtom(IAtom atom, int position)
      Sets an atom in this query bond.
      Specified by:
      setAtom in interface IBond
      Parameters:
      atom - The atom to be set
      position - The position in this query bond where the atom is to be inserted
      See Also:
    • getOrder

      public IBond.Order getOrder()
      Returns the query bond order of this query bond.
      Specified by:
      getOrder in interface IBond
      Returns:
      The query bond order of this query bond
      See Also:
    • setOrder

      public void setOrder(IBond.Order order)
      Sets the bond order of this query bond.
      Specified by:
      setOrder in interface IBond
      Parameters:
      order - The query bond order to be assigned to this query bond
      See Also:
    • getStereo

      public IBond.Stereo getStereo()
      Returns the stereo descriptor for this query bond.
      Specified by:
      getStereo in interface IBond
      Returns:
      The stereo descriptor for this query bond
      See Also:
    • setStereo

      public void setStereo(IBond.Stereo stereo)
      Sets the stereo descriptor for this query bond.
      Specified by:
      setStereo in interface IBond
      Parameters:
      stereo - The stereo descriptor to be assigned to this query bond.
      See Also:
    • getDisplay

      public IBond.Display getDisplay()
      Not used for query bonds. Access the bond display style.
      Specified by:
      getDisplay in interface IBond
      Returns:
      the bond display
    • setDisplay

      public void setDisplay(IBond.Display display)
      Not used for query bonds. Set the bond display style.
      Specified by:
      setDisplay in interface IBond
      Parameters:
      display - the display
    • get2DCenter

      public javax.vecmath.Point2d get2DCenter()
      Returns the geometric 2D center of the query bond.
      Specified by:
      get2DCenter in interface IBond
      Returns:
      The geometric 2D center of the query bond
    • get3DCenter

      public javax.vecmath.Point3d get3DCenter()
      Returns the geometric 3D center of the query bond.
      Specified by:
      get3DCenter in interface IBond
      Returns:
      The geometric 3D center of the query bond
    • compare

      public boolean compare(Object object)
      Compares a query bond with this query bond.
      Specified by:
      compare in interface IBond
      Parameters:
      object - Object of type Bond
      Returns:
      true if the query bond is equal to this query bond
    • isConnectedTo

      public boolean isConnectedTo(IBond bond)
      Checks whether a query bond is connected to another one. This can only be true if the query bonds have an Atom in common.
      Specified by:
      isConnectedTo in interface IBond
      Parameters:
      bond - bond The query bond which is checked to be connect with this one
      Returns:
      true if the query bonds share an atom, otherwise false
    • clone

      public IQueryBond clone() throws CloneNotSupportedException
      Clones this query bond object, including clones of the atoms between which the query bond is defined.
      Specified by:
      clone in interface IBond
      Specified by:
      clone in interface IChemObject
      Overrides:
      clone in class QueryChemObject
      Returns:
      The cloned object
      Throws:
      CloneNotSupportedException - if the IChemObject cannot be cloned
    • toString

      public String toString()
      Returns a one line string representation of this query bond.
      Specified by:
      toString in interface IChemObject
      Overrides:
      toString in class Object
      Returns:
      The string representation of this query bond
    • getElectronCount

      public Integer getElectronCount()
      Returns the number of electrons in this bond
      Specified by:
      getElectronCount in interface IElectronContainer
      Returns:
      The number of electrons in this electron container.
      See Also:
    • isAromatic

      public boolean isAromatic()
      Access whether this bond has been marked as aromatic. The default value is false and you must explicitly perceive aromaticity with one of the available models.
      Specified by:
      isAromatic in interface IBond
      Returns:
      aromatic status
      See Also:
    • setIsAromatic

      public void setIsAromatic(boolean arom)
      Mark this bond as being aromatic.
      Specified by:
      setIsAromatic in interface IBond
      Parameters:
      arom - aromatic status
      See Also:
    • isInRing

      public boolean isInRing()
      Access whether this bond has been flagged as in a ring. The default value is false and you must explicitly find rings first.
      Specified by:
      isInRing in interface IBond
      Returns:
      ring status
      See Also:
    • setIsInRing

      public void setIsInRing(boolean ring)
      Mark this bond as being in a ring.
      Specified by:
      setIsInRing in interface IBond
      Parameters:
      ring - ring status
      See Also:
    • setElectronCount

      public void setElectronCount(Integer electronCount)
      Sets the number of electrons in this bond
      Specified by:
      setElectronCount in interface IElectronContainer
      Parameters:
      electronCount - The number of electrons in this electron container.
      See Also:
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • getExpression

      public Expr getExpression()
      Access the bond expression predicate associated with this query bond.
      Returns:
      the bond expression
    • setExpression

      public void setExpression(Expr expr)
      Set the bond expression for this query bond.
      Parameters:
      expr - the new bond expression
    • matches

      public boolean matches(IBond bond)
      Returns true of the given bond matches this IQueryBond.
      Specified by:
      matches in interface IQueryBond
      Parameters:
      bond - IBond to match against
      Returns:
      true, if this IQueryBond matches the given IBond