Class Sgroup

    • Field Detail

      • SGROUP_TYPE_COUNT

        public static final int SGROUP_TYPE_COUNT
        Number of S-group types. @see #getType()
        See Also:
        Constant Field Values
      • ST_SUPERATOM

        public static final int ST_SUPERATOM
        Superatom S-group type. @see #getType()
        See Also:
        Constant Field Values
      • ST_MULTIPLE

        public static final int ST_MULTIPLE
        Multiple group S-group type. @see #getType()
        See Also:
        Constant Field Values
      • ST_SRU

        public static final int ST_SRU
        SRU (Structural Repeating Unit: polymers and repeating units with repetition ranges) S-group type.
        See Also:
        getType(), Constant Field Values
      • ST_MONOMER

        public static final int ST_MONOMER
        Monomer S-group type. @see #getType()
        See Also:
        Constant Field Values
      • ST_MER

        public static final int ST_MER
        Mer S-group type. @see #getType()
        See Also:
        Constant Field Values
      • ST_COPOLYMER

        public static final int ST_COPOLYMER
        Copolymer S-group type. @see #getType()
        See Also:
        Constant Field Values
      • ST_CROSSLINK

        public static final int ST_CROSSLINK
        Crosslink S-group type. @see #getType()
        See Also:
        Constant Field Values
      • ST_MODIFICATION

        public static final int ST_MODIFICATION
        Modification S-group type. @see #getType()
        See Also:
        Constant Field Values
      • ST_DATA

        public static final int ST_DATA
        Data S-group type. @see #getType()
        See Also:
        Constant Field Values
      • ST_ANY

        public static final int ST_ANY
        Any polymer S-group type. @see #getType()
        See Also:
        Constant Field Values
      • ST_GENERIC

        public static final int ST_GENERIC
        Generic S-group type. @see #getType()
        See Also:
        Constant Field Values
      • ST_COMPONENT

        public static final int ST_COMPONENT
        Component S-group type. A component here is a set of atoms contained by a component bracket. There are two kind of component S-group: ordered and unordered. The subscript of an unordered S-group contains a simple "c". The subscript of an ordered component S-group contains an additional integer e.g.: "c1" where "1" is the order of the ordered component S-group. Ordered component S-groups can be embedded into formulation S-groups. Unordered component S-groups can be embedded into mixture S-groups.
        See Also:
        ST_FORMULATION, ST_MIXTURE, getSubscript(), getType(), Constant Field Values
      • ST_MULTICENTER

        public static final int ST_MULTICENTER
        Multicenter S-group type. @see #getSubType()
        See Also:
        Constant Field Values
      • ST_GRAFT

        public static final int ST_GRAFT
        Graft S-group type. @see #getType()
        See Also:
        Constant Field Values
      • ST_AMINOACID

        public static final int ST_AMINOACID
        Amino acid s-group type. @see #getType()
        See Also:
        Constant Field Values
      • SST_ALTERNATING

        public static final int SST_ALTERNATING
        Alternating polymer S-group subtype. @see #getSubType()
        See Also:
        Constant Field Values
      • SST_RANDOM

        public static final int SST_RANDOM
        Random polymer S-group subtype. @see #getSubType()
        See Also:
        Constant Field Values
      • SST_BLOCK

        public static final int SST_BLOCK
        Block polymer S-group subtype. @see #getSubType()
        See Also:
        Constant Field Values
      • SCN_EITHER_UNKNOWN

        public static final int SCN_EITHER_UNKNOWN
        Either unknown S-group connectivity. @see #getConnectivity()
        See Also:
        Constant Field Values
      • SCN_HEAD_TO_HEAD

        public static final int SCN_HEAD_TO_HEAD
        Head-to-head S-group connectivity. @see #getConnectivity()
        See Also:
        Constant Field Values
      • SCN_HEAD_TO_TAIL

        public static final int SCN_HEAD_TO_TAIL
        Head-to-tail S-group connectivity. @see #getConnectivity()
        See Also:
        Constant Field Values
      • XSTATE_XC

        public static final int XSTATE_XC
        S-group is expanded but its atoms have the same coordinates as in contracted state.
        Since:
        Marvin 3.4, 05/04/2004
        See Also:
        setXState(int), Constant Field Values
      • PR_ATSYMS

        public static final int PR_ATSYMS
        Print atom symbols.
        Since:
        Marvin 4.1, 07/26/2006
        See Also:
        Constant Field Values
      • parentSgroup

        protected transient Sgroup parentSgroup
      • sgroupType

        protected transient int sgroupType
        The S-group type.
      • sgroupGraph

        protected transient SelectionMolecule sgroupGraph
        The S-group's internal structure.
      • atomSet

        protected Set<MolAtom> atomSet
        Set for storing the atoms of the s-group's graph.
    • Constructor Detail

      • Sgroup

        @Deprecated
        public Sgroup​(Molecule parent,
                      int t)
        Deprecated.
        As of Marvin 5.12, replaced by SgroupFactory.createSgroup(Molecule, SgroupType).
        Creates an S-group with the specified parent and type.
        Parameters:
        parent - the parent molecule
        t - S-group type
      • Sgroup

        @Deprecated
        public Sgroup​(Molecule parent,
                      int t,
                      int xstate)
        Deprecated.
        As of Marvin 5.12, replaced by SgroupFactory.createSgroup(Molecule, SgroupType) and setXState(int).
        Creates an S-group with the specified parent and type.
        Parameters:
        parent - the parent molecule
        t - S-group type
        xstate - the expanded state
        Since:
        Marvin 3.4, 05/04/2004
        See Also:
        setXState(int)
      • Sgroup

        protected Sgroup​(Sgroup sg,
                         Molecule m,
                         Sgroup psg)
        Copy constructor.
        Parameters:
        sg - the S-group to copy
        m - the new parent molecule
        psg - the new parent S-group or null
        Since:
        Marvin 3.4
      • Sgroup

        protected Sgroup​(Sgroup sg,
                         Molecule m,
                         Sgroup psg,
                         int[] iatoms)
        Copy constructor.
        Parameters:
        sg - the S-group to copy
        m - the new parent molecule
        psg - the new parent S-group or null
        iatoms - indices of cloned atoms in the original molecule or null* @since Marvin 3.4
    • Method Detail

      • getId

        public String getId()
      • setId

        public void setId​(String id)
      • setSgroupGraph

        public void setSgroupGraph​(SelectionMolecule smol)
        Sets the molecule graph.
        Parameters:
        smol - the molecule graph
        Since:
        Marvin 3.3, 11/03/2003
      • getSgroupGraph

        public SelectionMolecule getSgroupGraph()
        Gets a COPY of the molecule graph. WARNING! If the returned selection molecule is changed then the graph of the S-group remains unchanged!
        Returns:
        the molecule graph
        Since:
        Marvin 3.3, 11/03/2003
      • setParentMolecule

        protected final void setParentMolecule​(Molecule p)
        Sets the parent molecule.
        Parameters:
        p - the parent molecule
      • getParentMolecule

        public final Molecule getParentMolecule()
        Gets the parent molecule.
        Returns:
        the parent molecule
      • getChildSgroupCount

        public final int getChildSgroupCount()
        Gets the number of child S-groups.
        Returns:
        the number of children
        Since:
        Marvin 3.4
      • getChildSgroup

        public final Sgroup getChildSgroup​(int i)
        Gets a child S-group.
        Parameters:
        i - the child index
        Returns:
        the child
        Since:
        Marvin 3.4
      • addChildSgroup

        public final void addChildSgroup​(Sgroup sg)
        Adds a child S-group.
        Parameters:
        sg - the child
        Since:
        Marvin 3.4
      • removeChildSgroup

        public final void removeChildSgroup​(Sgroup sg)
        Removes an S-group from the children list.
        Parameters:
        sg - the child to remove
        Since:
        Marvin 4.0.4, 01/04/2006
      • findSmallestSgroupContaining

        public final Sgroup findSmallestSgroupContaining​(MolAtom a)
        Finds the smallest S-group containing the specified node. If this parent contains the node, then it searches the children recursively.
        Parameters:
        a - the node
        Returns:
        the S-group or null if not found
        Since:
        Marvin 3.4, 05/05/2004
      • contains

        public boolean contains​(MolAtom atom)
        Is this atom contained by the s-group?
        Parameters:
        atom - the atom that's may be part of this s-group
        Returns:
        true it the referenced atom is contained by this s-group, false otherwise
      • findSmallestSgroupOf

        public final Sgroup findSmallestSgroupOf​(MolAtom a)
        Finds the smallest S-group that has the specified node. If this parent has the node, then it searches the children recursively.
        Parameters:
        a - the node
        Returns:
        the S-group or null if not found
        Since:
        Marvin 3.4, 05/05/2004
      • getParentSgroup

        public final Sgroup getParentSgroup()
        Gets the parent S-group.
        Returns:
        the parent S-group
        Since:
        Marvin 3.4
      • getXState

        public final int getXState()
        Gets the expanded/contracted state.
        Returns:
        the expanded/contracted state
        Since:
        Marvin 3.4, 05/04/2004
        See Also:
        XSTATE_X, XSTATE_C, XSTATE_XC
      • setXState

        public final void setXState​(int state)
        Sets the expanded/contracted state.
        Parameters:
        state - the expanded/contracted state
        Throws:
        IllegalArgumentException - if the group is invisible (it has a non-expanded parent)
        Since:
        Marvin 3.4, 05/04/2004
        See Also:
        XSTATE_X, XSTATE_C, XSTATE_XC
      • setXState0

        protected void setXState0​(int state)
      • getSuperscript

        public String getSuperscript()
        Gets the superscript for non-superatom S-groups.
        Returns:
        the superscript
      • isOrderedComponentSgroup

        public boolean isOrderedComponentSgroup()
        Returns if the Sgroup is ordered component Sgroup.
        Since:
        Marvin 4.1.1, 08/30/2006
      • getSubscript

        public String getSubscript()
        Gets the subscript for non-superatom S-groups.
        Returns:
        the subscript
      • setSubscript

        public void setSubscript​(String s)
        Sets the subscript for non-superatom S-groups.
        Parameters:
        s - the subscript
      • getSgroupType

        public SgroupType getSgroupType()
        Gets the S-group type.
        Returns:
        the type of the S-group
        See Also:
        SgroupType
      • setSubType

        public void setSubType​(int t)
        Sets polymer S-group subtype.
        Parameters:
        t - the type
        See Also:
        getSubType()
      • setConnectivity

        public void setConnectivity​(int c)
        Sets S-group connectivity.
        Parameters:
        c - the connectivity
        See Also:
        getConnectivity()
      • hasBrackets

        public boolean hasBrackets()
        Checks if brackets should be painted or not.
        Returns:
        always true in the default implementation
        Since:
        Marvin 3.3
      • cloneStructure

        public final SelectionMolecule cloneStructure()
        Gets the clone of the structure stored.
        Returns:
        the clone
      • createMolecule

        public Molecule createMolecule()
        Creates a molecule object that contains only this group.
        Returns:
        the molecule
      • createMolecule

        public Sgroup createMolecule​(Molecule m)
        Creates a cloned sgroup instance and a molecule object that contains only this sgroup.
        Parameters:
        m - the molecule object
        Returns:
        the cloned sgroup
        Since:
        Marvin 5.0, 09/01/2008
      • getAtomArray

        public final MolAtom[] getAtomArray()
        Gets the array of atoms in the S-group.
        Returns:
        the atom array
      • getAtom

        public final MolAtom getAtom​(int i)
        Gets an atom in the S-group.
        Parameters:
        i - the atom index
        Returns:
        the atom
      • countAllAtoms

        public final int countAllAtoms()
        Counts the total number of atoms recursively.
        Returns:
        the number of atoms
      • isEmpty

        public final boolean isEmpty()
        Is it an empty S-group?
        Returns:
        true if the S-group does not contain any atoms, false otherwise
      • cloneSgroup

        public final Sgroup cloneSgroup​(Molecule m,
                                        Sgroup psg)
        Gets a new Sgroup instance.
        Parameters:
        m - the new parent molecule
        psg - the new parent S-group
        Returns:
        the new object
        Since:
        Marvin 3.4
      • cloneSgroup

        protected Sgroup cloneSgroup​(Molecule m,
                                     Sgroup psg,
                                     int[] atomIndexMap)
        Gets a new Sgroup instance.
        Parameters:
        m - the new parent molecule
        psg - the new parent S-group
        atomIndexMap - indices of cloned atoms in the original molecule or null
        Returns:
        the new object
        Since:
        Marvin 5.0.2, 03/07/2008
      • getAtomCount

        public final int getAtomCount()
        Gets the number of atoms in the S-group.
        Returns:
        the number of atoms
      • indexOf

        public int indexOf​(MolAtom a)
        Gets the atom index in the S-group graph.
        Parameters:
        a - the atom
        Returns:
        the index or -1 if not found
      • indexOf

        public int indexOf​(MolBond b)
        Gets the bond index in the S-group graph.
        Parameters:
        b - the bond
        Returns:
        the index or -1 if not found
        Since:
        Marvin 5.3.2
      • hasAtom

        public boolean hasAtom​(MolAtom a)
        Is the specified atom an element of this group?
        Parameters:
        a - the atom
        Returns:
        true if it contains the atom, false otherwise
        Since:
        Marvin 3.4
      • containsAllAtomsOf

        public boolean containsAllAtomsOf​(Sgroup sg)
        Checks if the S-group contains the atoms of another S-group.
        Returns:
        true if this S-group contains the specified one
        Since:
        Marvin 3.4
      • add

        public void add​(MolAtom a)
        Adds a new atom to the S-group.
        Parameters:
        a - the atom
      • setAtom

        public void setAtom​(int i,
                            MolAtom a)
        Sets the specified atom in the S-group graph.
        Parameters:
        i - the index
        a - the atom
      • removeBonds

        public void removeBonds()
        Removes the edge references.
      • removeAtom

        public final void removeAtom​(MolAtom a)
        Removes an atom and its bonds from the S-group.
        Parameters:
        a - the atom
      • removeAtom

        protected void removeAtom​(MolAtom a,
                                  int opts)
        Removes an atom and its bonds from the S-group.
        Parameters:
        a - the atom
        opts - 0 or RA_IN_EXPAND
        Since:
        Marvin 4.1, 07/27/2006
      • removeBond

        protected void removeBond​(MolBond b)
        Removes a bond from the S-group.
        Parameters:
        b - the bond
      • replaceAtom

        public final void replaceAtom​(MolAtom olda,
                                      MolAtom newa)
        Replace an existing atom by a new one in this S-group and its parent (recursively).
        Parameters:
        olda - the original atom
        newa - the new atom
        Since:
        3.5.2, 12/15/2004
      • replaceAtom

        public void replaceAtom​(MolAtom olda,
                                MolAtom newa,
                                int opts)
        Replace an existing atom by a new one in this S-group and its parent (recursively).
        Parameters:
        olda - the original atom
        newa - the new atom
        opts - options
        Since:
        4.1, 07/25/2006
        See Also:
        RA_REMOVE_EXCEPT_RU
      • findCrossingBonds

        public MolBond[] findCrossingBonds()
        Finds the crossing bonds. Use only when the S-group is expanded.
        Returns:
        the attachment bonds
        Since:
        Marvin 3.3
      • isBracketCrossingBond

        public boolean isBracketCrossingBond​(MolBond bond)
      • getCrossingAtoms

        public MolAtom[] getCrossingAtoms​(MolBond[] xbonds)
                                   throws IllegalArgumentException
        Gets the atoms that have crossing bonds.
        Parameters:
        xbonds - the crossing bonds
        Returns:
        the attachment atoms
        Throws:
        IllegalArgumentException - if a bond in the specified array is not a crossing bond
        Since:
        Marvin 3.3
      • areChildSgroupsVisible

        public boolean areChildSgroupsVisible()
        Checks whether the child S-groups are visible.
        Returns:
        true if children are visible, false otherwise
        Since:
        Marvin 3.4
      • isVisible

        public final boolean isVisible()
        Checks whether this group is 'visible' (all parents are expanded in case of superatom S-groups) or not.
        Returns:
        true if the group is visible, false otherwise
        Since:
        Marvin 3.4
      • isBracketVisible

        public boolean isBracketVisible()
        Tests whether the bracket is visible.
        Returns:
        true if visible, false otherwise
        Since:
        Marvin 3.5.1, 11/12/2004
      • transformByParent

        protected void transformByParent​(CTransform3D t,
                                         boolean incg)
        Applies a transformation matrix to the coordinates. This method is called by the parent molecule's Molecule.transform(CTransform3D, boolean) method, thus only those atom coordinates are transformed here that are not handled in MoleculeGraph.transform(CTransform3D, boolean).
        Parameters:
        t - the transformation matrix
        incg - graph invariants are changed (true) or not (false)
        Since:
        Marvin 4.0.2, 10/26/2005
      • sort

        public static void sort​(Sgroup[] sgroups,
                                int o)
        Sorts S-groups in parent-child or child-parent order.
        Parameters:
        sgroups - the array to sort
        o - the sort order
        Since:
        Marvin 3.4
        See Also:
        SORT_PARENT_CHILD, SORT_CHILD_PARENT
      • toString

        public final String toString()
        Overrides Object.toString() to ease debugging. Returns a string consisting of the classname (without the package name!), the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object.
        Overrides:
        toString in class Object
        Returns:
        a string representation of the object
        Since:
        Marvin 3.4
      • toString

        public String toString​(int opts)
        Gets a string representation of the S-group. Returns a string consisting of the classname (without the package name!), the at-sign character ` @', and the unsigned hexadecimal representation of the hash code of the object.
        Parameters:
        opts - options or 0
        Returns:
        a string representation of the object
        Since:
        Marvin 4.1, 07/26/2006
        See Also:
        PR_ATSYMS
      • getAtomSymbolListAsString

        protected static String getAtomSymbolListAsString​(MolAtom[] atoms)
      • isDescendantOf

        public boolean isDescendantOf​(Sgroup psg)
        Decides whether this is a descendant of another sgroup.
        Parameters:
        psg - the other sgroup
        Returns:
        true if this is a descendant of the other sgroup, false otherwise.
        Since:
        Marvin 5.0
      • isRemovable

        public boolean isRemovable()
        Decides whether an S-group should be ungrouped if its structure changes.
        Returns:
        is true if the S-group is removable, false otherwise.
        See Also:
        ST_MULTIPLE, ST_SUPERATOM
      • isSelected

        public boolean isSelected​(MoleculeGraph sel)
        Is the sgroup or part of the sgroup selected?
        Parameters:
        sel - the molecule that contains the selected atoms
        Returns:
        true if the sgroup contains at least one selected atom false otherwise.
        Since:
        Marvin 5.0, 04/02/2007
      • isTotalSelected

        public boolean isTotalSelected​(MoleculeGraph sel)
        Decides if the whole sgroup is selected or not.
        Parameters:
        sel - molecule graph that contains the selection
        Returns:
        true if the whole sgroup is selected
        Since:
        Marvin 5.3.2, 10/01/2010
      • isPartSelected

        public boolean isPartSelected​(MoleculeGraph sel)
        Decides if part of the sgroup is selected or not.
        Parameters:
        sel - molecule graph that contains the selection
        Returns:
        true if at least one of the sgroup atoms is selected, but the whole group is not
        Since:
        Marvin 5.3.2, 10/01/2010
      • clearObjects

        public void clearObjects()
        Clears all MObject-s that belong to this S-groups.
        Since:
        Marvin 5.3, 11/30/2009
      • removeObject

        public void removeObject​(MObject mo)
        Removes the specified MObject from this Sgroup.
        Parameters:
        mo - the MObject to remove.
        Since:
        Marvin 5.3, 11/30/2009
      • selectAllObjects

        public void selectAllObjects​(boolean s)
        Sets the selection state of the MObject-s that belong to this Sgroup.
        Parameters:
        s - the state value to set
        Since:
        Marvin 5.3, 11/30/2009
      • addBracket

        public void addBracket​(MBracket bracket)
        Adds a bracket to this S-group.
        Parameters:
        bracket - the bracket to add
        Since:
        Marvin 5.3, 11/30/2009
        See Also:
        MBracket
      • initBrackets

        public void initBrackets()
        Initializes the list of brackets in this S-group. Creates an empty list of brackets if no brackets were added previously to the S-group, otherwise deletes the brackets from the existing list.
        Since:
        Marvin 5.3, 11/30/2009
        See Also:
        MBracket
      • getBracketCount

        public int getBracketCount()
        Gets the number of brackets in this S-group.
        Returns:
        the number of brackets in this S-group.
        Since:
        Marvin 5.3, 11/30/2009
        See Also:
        MBracket
      • getBrackets

        public ArrayList<MBracket> getBrackets()
        Gets all graphic brackets from this Sgroup
        Returns:
        the list of brackets
        Since:
        Marvin 5.3, 11/30/2009
        See Also:
        MBracket
      • getChargeLocation

        public int getChargeLocation()
        Returns the charge location attribute of the S-group.
        Returns:
        charge location type: CHARGE_ON_ATOMS or CHARGE_ON_GROUP.
        Since:
        Marvin 5.2, 01/22/2009
        See Also:
        CHARGE_ON_ATOMS, CHARGE_ON_GROUP
      • setChargeLocation

        public void setChargeLocation​(int location)
        Sets the charge location attribute of the S-group. Possible charge location types: CHARGE_ON_ATOMS or CHARGE_ON_GROUP.
        Parameters:
        location - the charge location type to set
        Since:
        Marvin 5.2, 01/22/2009
        See Also:
        CHARGE_ON_ATOMS, CHARGE_ON_GROUP
      • getTotalCharge

        public int getTotalCharge()
        Calculates the sum of the charge values on the atoms in this S-group.
        Returns:
        the sum charge
        Since:
        Marvin 5.2, 01/22/2009
        See Also:
        MolAtom.getCharge()
      • checkBonds

        protected void checkBonds​(MolAtom atom)
        Add the bonds of the given atom to the sgroup if the given atom and the other atom of the selected bond is in the sgroup.
        Parameters:
        atom - the given atom
      • getAttach

        protected static int getAttach​(MolAtom atom)
        Gets the attachment point information from the ExtraAtomProperties
        Parameters:
        atom - that attachment point is question.
        Returns:
        the attachment point information from ExtraAtomProperties
        Since:
        Marvin 6.0, Dec 12, 2012
      • getBondArray

        public MolBond[] getBondArray()
        Gets all bonds connecting two atoms that are both in the Sgroup
        Returns:
        sgroup's MolBond object array
        Since:
        Marvin 6.1, 04/29/2013
      • checkConsistencyInEmbeddings

        public boolean checkConsistencyInEmbeddings()
        Checks if the sgroup contains all of the child sgroup's atoms and checks consistency between atom and bond references.
        Returns:
        true if the sgroup is consistent
      • checkBondConsistency

        protected void checkBondConsistency()
      • checkSgroupGraphConsistency

        protected boolean checkSgroupGraphConsistency​(Sgroup parentSgroup)
        Checks whether the parameter s-group contains the atoms of this s-group. It checks also that the parent molecule (if exists) contains these atoms as well.
        Parameters:
        parentSgroup - parent of Sgroup
        Returns:
        true if the s-group is consistent
      • getChildSgroups

        protected Sgroup[] getChildSgroups()
        Gets the children of this S-group.
        Returns:
        Child S-groups as an array.