BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Classes | Private Member Functions | List of all members
BALL::Atom Class Reference

#include <BALL/KERNEL/atom.h>

Inheritance diagram for BALL::Atom:
BALL::Composite BALL::PropertyManager BALL::PersistentObject BALL::Selectable BALL::Object BALL::AutoDeletable BALL::PDBAtom BALL::SmilesParser::SPAtom

Classes

class  BondIteratorTraits
 

Public Types

Enumerations
enum  { UNKNOWN_TYPE = -1, ANY_TYPE = 0, MAX_NUMBER_OF_BONDS = 12 }
 
enum  Property { NUMBER_OF_PROPERTIES = 0 }
 
enum  FullNameType {
  NO_VARIANT_EXTENSIONS, ADD_VARIANT_EXTENSIONS, ADD_RESIDUE_ID, ADD_VARIANT_EXTENSIONS_AND_ID,
  ADD_CHAIN_RESIDUE_ID, ADD_VARIANT_EXTENSIONS_AND_CHAIN_RESIDUE_ID
}
 
Efficient handling of atom attributes
typedef std::list< Atom * > AtomPtrList
 
typedef std::list< PositionAtomIndexList
 
- Public Types inherited from BALL::Composite
typedef ForwardIterator
< Composite, Composite,
Composite
*, AncestorIteratorTraits
AncestorIterator
 
typedef ConstForwardIterator
< Composite, Composite,
Composite
*, AncestorIteratorTraits
AncestorConstIterator
 
typedef BidirectionalIterator
< Composite, Composite,
Composite
*, ChildCompositeIteratorTraits
ChildCompositeIterator
 
typedef
ConstBidirectionalIterator
< Composite, Composite,
Composite
*, ChildCompositeIteratorTraits
ChildCompositeConstIterator
 
typedef std::reverse_iterator
< ChildCompositeIterator
ChildCompositeReverseIterator
 
typedef std::reverse_iterator
< ChildCompositeConstIterator
ChildCompositeConstReverseIterator
 
typedef BidirectionalIterator
< Composite, Composite,
Composite
*, CompositeIteratorTraits
CompositeIterator
 
typedef
ConstBidirectionalIterator
< Composite, Composite,
Composite
*, CompositeIteratorTraits
CompositeConstIterator
 
typedef std::reverse_iterator
< CompositeIterator
CompositeReverseIterator
 
typedef std::reverse_iterator
< CompositeConstIterator
CompositeConstReverseIterator
 
enum  StampType { MODIFICATION = 1, SELECTION = 2, BOTH = 3 }
 
typedef UnaryPredicate< CompositeKernelPredicateType
 

Public Member Functions

Constructors
 Atom ()
 
 Atom (const Atom &atom, bool deep=true)
 
 Atom (Element &element, const String &name, const String &type_name=BALL_ATOM_DEFAULT_TYPE_NAME, Type atom_type=BALL_ATOM_DEFAULT_TYPE, const Vector3 &position=Vector3(BALL_ATOM_DEFAULT_POSITION), const Vector3 &velocity=Vector3(BALL_ATOM_DEFAULT_VELOCITY), const Vector3 &force=Vector3(BALL_ATOM_DEFAULT_FORCE), float charge=BALL_ATOM_DEFAULT_CHARGE, float radius=BALL_ATOM_DEFAULT_RADIUS, Index formal_charge=BALL_ATOM_DEFAULT_FORMAL_CHARGE)
 
Destructors
virtual ~Atom ()
 
virtual void clear ()
 
virtual void destroy ()
 
Persistence
virtual void persistentWrite (PersistenceManager &pm, const char *name=0) const
 
virtual void persistentRead (PersistenceManager &pm)
 
Assignment methods
void set (const Atom &atom, bool deep=true)
 
void get (Atom &atom, bool deep=true) const
 
Atomoperator= (const Atom &atom)
 
void swap (Atom &atom)
 
bool operator== (const Atom &atom) const
 
bool operator!= (const Atom &atom) const
 
Accessors
void setElement (const Element &element)
 Assign the atom's element. More...
 
const ElementgetElement () const
 Return the atom's element. More...
 
void setCharge (float charge)
 
float getCharge () const
 
void setFormalCharge (Index formal_charge)
 Set the atom's formal charge. More...
 
Index getFormalCharge () const
 Return the atom's formal charge. More...
 
const MoleculegetMolecule () const
 
MoleculegetMolecule ()
 Return the molecule the atom is contained in (mutable) More...
 
const FragmentgetFragment () const
 
FragmentgetFragment ()
 Return the fragment the atom is contained in (mutable) More...
 
const ResiduegetResidue () const
 
ResiduegetResidue ()
 Return the residue the atom is contained in (mutable) More...
 
const SecondaryStructuregetSecondaryStructure () const
 
SecondaryStructuregetSecondaryStructure ()
 Return the secondary structure the atom is contained in (mutable) More...
 
const ChaingetChain () const
 
ChaingetChain ()
 Return the chain the atom is contained in (mutable) More...
 
void setName (const String &name)
 Set the atom name. More...
 
const StringgetName () const
 Return the atom name. More...
 
String getFullName (FullNameType type=ADD_VARIANT_EXTENSIONS) const
 
void setPosition (const Vector3 &position)
 
Vector3getPosition ()
 Return the atom coordinates (mutable) More...
 
const Vector3getPosition () const
 Return the atom coordinates (const) More...
 
void setRadius (float radius)
 
float getRadius () const
 Return the atom radius. More...
 
void setType (Type atom_type)
 Assign the numerical atom type. More...
 
Type getType () const
 Return the (numerical) atom type. More...
 
String getTypeName () const
 Return the atom type name. More...
 
void setTypeName (const String &name)
 Assign the atom type name. More...
 
void setVelocity (const Vector3 &velocity)
 
Vector3getVelocity ()
 
const Vector3getVelocity () const
 
void setForce (const Vector3 &force)
 
const Vector3getForce () const
 Return the atom's force vector (const) More...
 
Vector3getForce ()
 Return the atom's force vector (mutable) More...
 
Size countBonds () const
 Return the number of bonds. More...
 
BondgetBond (Position index)
 
const BondgetBond (Position index) const
 
BondgetBond (const Atom &atom)
 
const BondgetBond (const Atom &atom) const
 
Miscellaneous
BondcreateBond (Atom &atom)
 
BondcreateBond (Bond &bond, Atom &atom)
 
BondcloneBond (Bond &bond, Atom &atom)
 
bool destroyBond (const Atom &atom)
 
void destroyBonds ()
 
AtomgetPartnerAtom (Position i)
 
const AtomgetPartnerAtom (Position i) const
 
float getDistance (const Atom &a) const
 
Predicates
bool hasBond (const Bond &bond) const
 
bool isBoundTo (const Atom &atom) const
 
bool isBound () const
 
bool isGeminal (const Atom &atom) const
 
bool isVicinal (const Atom &atom) const
 
Debuggers and diagnostics
virtual bool isValid () const
 
virtual void dump (std::ostream &s=std::cout, Size depth=0) const
 
Internal iteration
bool applyBonds (UnaryProcessor< Bond > &processor)
 
- Public Member Functions inherited from BALL::Composite
AncestorIterator beginAncestor ()
 
AncestorIterator endAncestor ()
 
AncestorConstIterator beginAncestor () const
 
AncestorConstIterator endAncestor () const
 
ChildCompositeIterator beginChildComposite ()
 
ChildCompositeIterator endChildComposite ()
 
ChildCompositeConstIterator beginChildComposite () const
 
ChildCompositeConstIterator endChildComposite () const
 
ChildCompositeReverseIterator rbeginChildComposite ()
 
ChildCompositeReverseIterator rendChildComposite ()
 
ChildCompositeConstReverseIterator rbeginChildComposite () const
 
ChildCompositeConstReverseIterator rendChildComposite () const
 
CompositeIterator beginComposite ()
 
CompositeIterator endComposite ()
 
CompositeConstIterator beginComposite () const
 
CompositeConstIterator endComposite () const
 
CompositeReverseIterator rbeginComposite ()
 
CompositeReverseIterator rendComposite ()
 
CompositeConstReverseIterator rbeginComposite () const
 
CompositeConstReverseIterator rendComposite () const
 
void deleteChildrenList_ (std::list< Composite * > &composites)
 
template<typename T >
BALL_INLINE bool apply (UnaryProcessor< T > &processor)
 
template<typename T >
BALL_INLINE T * getAncestor (const T &)
 
template<typename T >
BALL_INLINE const T * getAncestor (const T &) const
 
template<typename T >
BALL_INLINE T * getPrevious (const T &)
 
template<typename T >
BALL_INLINE const T * getPrevious (const T &dummy) const
 
template<typename T >
BALL_INLINE T * getNext (const T &)
 
template<typename T >
BALL_INLINE const T * getNext (const T &dummy) const
 
template<typename T >
BALL_INLINE bool hasAncestor (const T &dummy) const
 
 Composite ()
 
 Composite (const Composite &composite, bool deep=true)
 
virtual ~Composite ()
 
void destroy (bool virtual_destroy)
 
void * clone (Composite &root) const
 
bool operator== (const Composite &composite) const
 
bool operator!= (const Composite &composite) const
 
bool isEmpty () const
 
bool isRoot () const
 
bool isRootOf (const Composite &composite) const
 
bool isInterior () const
 
bool hasChild () const
 
bool isChildOf (const Composite &composite) const
 
bool isFirstChild () const
 
bool isFirstChildOf (const Composite &composite) const
 
bool isLastChild () const
 
bool isLastChildOf (const Composite &composite) const
 
bool hasParent () const
 
bool isParentOf (const Composite &composite) const
 
bool hasSibling () const
 
bool isSiblingOf (const Composite &composite) const
 
bool hasPreviousSibling () const
 
bool isPreviousSiblingOf (const Composite &composite) const
 
bool hasNextSibling () const
 
bool isNextSiblingOf (const Composite &composite) const
 
bool isDescendantOf (const Composite &composite) const
 
template<typename T >
bool hasAncestor (const T &dummy) const
 
bool isAncestorOf (const Composite &composite) const
 
bool isRelatedWith (const Composite &composite) const
 
bool isHomomorph (const Composite &composite) const
 
bool containsSelection () const
 
void host (Visitor< Composite > &visitor)
 
template<typename T >
bool applyAncestor (UnaryProcessor< T > &processor)
 
template<typename T >
bool applyChild (UnaryProcessor< T > &processor)
 
template<typename T >
bool applyDescendantPreorder (UnaryProcessor< T > &processor)
 
template<typename T >
bool applyDescendantPostorder (UnaryProcessor< T > &processor)
 
template<typename T >
bool applyDescendant (UnaryProcessor< T > &processor)
 
template<typename T >
bool applyPreorder (UnaryProcessor< T > &processor)
 
template<typename T >
bool applyPostorder (UnaryProcessor< T > &processor)
 
template<typename T >
bool apply (UnaryProcessor< T > &processor)
 
template<typename T >
bool applyLevel (UnaryProcessor< T > &processor, long level)
 
void set (const Composite &composite, bool deep=true)
 
Compositeoperator= (const Composite &composite)
 
void get (Composite &composite, bool deep=true) const
 
Size getDegree () const
 
Size count (const KernelPredicateType &predicate) const
 
Size countDescendants () const
 
Size getPathLength (const Composite &composite) const
 
Size getDepth () const
 
Size getHeight () const
 
CompositegetRoot ()
 
const CompositegetRoot () const
 
CompositegetLowestCommonAncestor (const Composite &composite)
 
const CompositegetLowestCommonAncestor (const Composite &composite) const
 
template<typename T >
T * getAncestor (const T &)
 
template<typename T >
const T * getAncestor (const T &) const
 
template<typename T >
T * getPrevious (const T &)
 
template<typename T >
const T * getPrevious (const T &dummy) const
 
template<typename T >
T * getNext (const T &)
 
template<typename T >
const T * getNext (const T &dummy) const
 
CompositegetParent ()
 
const CompositegetParent () const
 
CompositegetChild (Index index)
 
const CompositegetChild (Index index) const
 
CompositegetSibling (Index index)
 
const CompositegetSibling (Index index) const
 
CompositegetFirstChild ()
 
const CompositegetFirstChild () const
 
CompositegetLastChild ()
 
const CompositegetLastChild () const
 
const PreciseTimegetModificationTime () const
 
const PreciseTimegetSelectionTime () const
 
void stamp (StampType stamp=BOTH)
 
void prependChild (Composite &composite)
 
void appendChild (Composite &composite)
 
void insertBefore (Composite &composite)
 
void insertAfter (Composite &composite)
 
void spliceBefore (Composite &composite)
 
void spliceAfter (Composite &composite)
 
void splice (Composite &composite)
 
bool removeChild (Composite &child)
 
Size removeSelected ()
 
Size removeUnselected ()
 
void replace (Composite &composite)
 
void swap (Composite &composite)
 
virtual void select ()
 
virtual void deselect ()
 
- Public Member Functions inherited from BALL::PersistentObject
 PersistentObject ()
 
virtual ~PersistentObject ()
 
PersistenceManageroperator>> (PersistenceManager &pm) const
 
virtual void finalize ()
 
- Public Member Functions inherited from BALL::Object
 Object ()
 Default constructor. More...
 
 Object (const Object &object)
 Copy constructor. More...
 
virtual ~Object ()
 Destructor. More...
 
const Objectoperator= (const Object &)
 
bool operator== (const Object &object) const
 
bool operator!= (const Object &object) const
 
bool operator< (const Object &object) const
 
bool operator<= (const Object &object) const
 
bool operator>= (const Object &object) const
 
bool operator> (const Object &object) const
 
int compare (const Object &object) const
 
virtual void dump (::std::ostream &s=std::cout, Size depth=0) const
 
Handle getHandle () const
 
- Public Member Functions inherited from BALL::AutoDeletable
virtual ~AutoDeletable ()
 
void * operator new (size_t size)
 
void operator delete (void *ptr)
 
void * operator new (size_t size, void *ptr)
 
void operator delete (void *ptr, void *)
 
bool isAutoDeletable () const
 
void setAutoDeletable (bool enable)
 
- Public Member Functions inherited from BALL::Selectable
 Selectable ()
 
 Selectable (const Selectable &selectable, bool deep=true)
 
virtual ~Selectable ()
 
void set (const Selectable &selectable, bool deep=true)
 
const Selectableoperator= (const Selectable &selectable)
 
void get (Selectable &selectable, bool deep=true) const
 
void swap (Selectable &selectable)
 
virtual void setSelected (bool selected)
 
bool isSelected () const
 
bool operator== (const Selectable &selectable) const
 
bool operator!= (const Selectable &selectable) const
 
void write (PersistenceManager &pm) const
 
bool read (PersistenceManager &pm)
 
virtual void dump (::std::ostream &s=std::cout, Size depth=0) const
 
- Public Member Functions inherited from BALL::PropertyManager
BALL_INLINE PropertyManager ()
 Default constructor. More...
 
BALL_INLINE PropertyManager (const PropertyManager &property_manager)
 Copy constructor. More...
 
virtual ~PropertyManager ()
 Destructor. More...
 
void set (const PropertyManager &property_manager)
 
const PropertyManageroperator= (const PropertyManager &property_manager)
 
void get (PropertyManager &property_manager) const
 
void swap (PropertyManager &property_manager)
 
BitVectorgetBitVector ()
 
const BitVectorgetBitVector () const
 
 operator BitVector & ()
 
void setProperty (Property property)
 
void clearProperty (Property property)
 
void toggleProperty (Property property)
 
Size countProperties () const
 
const NamedPropertygetNamedProperty (Position index) const
 
NamedPropertygetNamedProperty (Position index)
 
void setProperty (const NamedProperty &property)
 
void setProperty (const string &name)
 
void setProperty (const string &name, bool value)
 
void setProperty (const string &name, int value)
 
void setProperty (const string &name, unsigned int value)
 
void setProperty (const string &name, float value)
 
void setProperty (const string &name, double value)
 
void setProperty (const string &name, const string &value)
 
void setProperty (const string &name, const PersistentObject &value)
 
const NamedPropertygetProperty (const string &name) const
 
NamedPropertyIterator beginNamedProperty ()
 
NamedPropertyIterator endNamedProperty ()
 
void clearProperty (const string &name)
 
Size countNamedProperties () const
 
bool hasProperty (Property property) const
 Query for an unnamed property. More...
 
bool hasProperty (const string &name) const
 Query for a named property. More...
 
bool operator== (const PropertyManager &pm) const
 
bool operator!= (const PropertyManager &pm) const
 Inequality operator. More...
 
void write (PersistenceManager &pm) const
 Persistent stream writing. More...
 
bool read (PersistenceManager &pm)
 Persistent stream reading. More...
 
bool isValid () const
 
void dump (std::ostream &s=std::cout, Size depth=0) const
 

Private Member Functions

void clear_ ()
 
void swapLastBond_ (const Atom *atom)
 

Class friends

- class Bond

typedef short Type
 
class Bond
 

External iteration

typedef Index BondIteratorPosition
 
typedef RandomAccessIterator
< Atom, Bond,
BondIteratorPosition,
BondIteratorTraits
BondIterator
 
typedef
ConstRandomAccessIterator
< Atom, Bond,
BondIteratorPosition,
BondIteratorTraits
BondConstIterator
 Constant random access iterator for bonds. More...
 
typedef std::reverse_iterator
< BondIterator
BondReverseIterator
 Reverse random access iterator for bonds. More...
 
typedef std::reverse_iterator
< BondConstIterator
BondConstReverseIterator
 Constant reverse random access iterator for bonds. More...
 
class BondIteratorTraits
 
BondIterator beginBond ()
 Return a bond iterator pointing to the first bond of the atom. More...
 
BondIterator endBond ()
 Return a past-the-end bond iterator. More...
 
BondConstIterator beginBond () const
 Return a constant bond iterator pointing to the first bond. More...
 
BondConstIterator endBond () const
 Return a constant past-the-end bond iterator. More...
 
BondReverseIterator rbeginBond ()
 Return a reverse bond iterator pointing to the last bond. More...
 
BondReverseIterator rendBond ()
 Return a past-the-end bond iterator for reverse traversal. More...
 
BondConstReverseIterator rbeginBond () const
 Return a constant reverse bond iterator pointing to the first atom. More...
 
BondConstReverseIterator rendBond () const
 Return a constant past-the-end bond iterator for reverse traversal. More...
 

Attributes

static AtomIndexList free_list_
 
String name_
 
String type_name_
 
const Elementelement_
 
float radius_
 
Type type_
 
unsigned char number_of_bonds_
 
Bondbond_ [MAX_NUMBER_OF_BONDS]
 
Index formal_charge_
 
Vector3 position_
 
float charge_
 
Vector3 velocity_
 
Vector3 force_
 

Additional Inherited Members

- Static Public Member Functions inherited from BALL::Composite
static bool insertParent (Composite &parent, Composite &first, Composite &last, bool destroy_parent=true)
 
- Static Public Member Functions inherited from BALL::Object
static Handle getNextHandle ()
 
static Handle getNewHandle ()
 
- Static Public Member Functions inherited from BALL::AutoDeletable
static void clearLastPtr ()
 
- Static Public Attributes inherited from BALL::Composite
static UnaryProcessor< CompositeDEFAULT_PROCESSOR
 
static KernelPredicateType DEFAULT_UNARY_PREDICATE
 
- Protected Member Functions inherited from BALL::AutoDeletable
 AutoDeletable ()
 
 AutoDeletable (const AutoDeletable &auto_deletable, bool deep=false)
 
- Protected Attributes inherited from BALL::Selectable
bool selected_
 

Detailed Description

Atom class. A class representing atoms. During each runtime instance of a program an atom is unique and identified by a Object::Handle . Atom equality is defined as atom identity, so there cannot be any two identical atoms. A linear ordering of atoms is defined as the linear order of the Object::Handle s.

Two atoms can be connected via a Bond . There can be only one bond between any two atoms (double bonds etc. are expressed via the bond order attribute of the bond) and the total number of bonds of an atom is limited to eight (can be changed at compile time, see MAX_NUMBER_OF_BONDS ).
Since Atom is derived from ProperyManager , it may contain arbitrary, user-defined properties. An atom may be inserted in a Fragment instance ("parent fragment"). The "state" of an atom is defined by its attributes:

Definition at line 86 of file atom.h.

Member Typedef Documentation

typedef std::list<Position> BALL::Atom::AtomIndexList

Definition at line 938 of file atom.h.

typedef std::list<Atom*> BALL::Atom::AtomPtrList

Definition at line 935 of file atom.h.

Constant random access iterator for bonds.

Definition at line 885 of file atom.h.

Constant reverse random access iterator for bonds.

Definition at line 915 of file atom.h.

Random access iterator for bonds.

Definition at line 868 of file atom.h.

Definition at line 707 of file atom.h.

typedef std::reverse_iterator<BondIterator> BALL::Atom::BondReverseIterator

Reverse random access iterator for bonds.

Definition at line 900 of file atom.h.

typedef short BALL::Atom::Type

Atom type.

Definition at line 102 of file atom.h.

Member Enumeration Documentation

anonymous enum

Unnamed enumeration of all non-categorized constants.

Enumerator
UNKNOWN_TYPE 

Unknown atom type. The type assigned for default-constructed atoms.

ANY_TYPE 

Any atom type. Used as a wild card in the context of forcefields mainly

MAX_NUMBER_OF_BONDS 

Maximum number of bonds of an atom.

Definition at line 110 of file atom.h.

The type of name used for getFullName.

See Also
getFullName
Enumerator
NO_VARIANT_EXTENSIONS 
ADD_VARIANT_EXTENSIONS 
ADD_RESIDUE_ID 
ADD_VARIANT_EXTENSIONS_AND_ID 
ADD_CHAIN_RESIDUE_ID 
ADD_VARIANT_EXTENSIONS_AND_CHAIN_RESIDUE_ID 

Definition at line 137 of file atom.h.

Predefined properties. Enumeration of all properties that are used by the BALL kernel.

Enumerator
NUMBER_OF_PROPERTIES 

Definition at line 129 of file atom.h.

Constructor & Destructor Documentation

BALL::Atom::Atom ( )

Default constructor. The state of this instance is:

BALL::Atom::Atom ( const Atom atom,
bool  deep = true 
)

Copy constructor. The copy is either deep (default) or shallow.

Note: Deep copying of atoms does not include bond cloning.
Parameters
atomthe atom to be copied (cloned)
deepmake a deep (=true) or shallow (=false) copy of atom
Returns
Atom - new constructed atom cloned from atom
See Also
Composite::Composite
PropertyManager::PropertyManager
BALL::Atom::Atom ( Element element,
const String name,
const String type_name = BALL_ATOM_DEFAULT_TYPE_NAME,
Type  atom_type = BALL_ATOM_DEFAULT_TYPE,
const Vector3 position = Vector3(BALL_ATOM_DEFAULT_POSITION),
const Vector3 velocity = Vector3(BALL_ATOM_DEFAULT_VELOCITY),
const Vector3 force = Vector3(BALL_ATOM_DEFAULT_FORCE),
float  charge = BALL_ATOM_DEFAULT_CHARGE,
float  radius = BALL_ATOM_DEFAULT_RADIUS,
Index  formal_charge = BALL_ATOM_DEFAULT_FORMAL_CHARGE 
)

Detailed state initializing constructor. The item bond table is empty (atom has no bonds).

Parameters
elementelement type of the constructed atom
namename of the constructed atom
type_nametype name name of the constructed atom
atom_typetype of the constructed atom
positionposition of the constructed atom
velocityvelocity of the constructed atom
forceforce acting upon the constructed atom
chargecharge of the constructed atom
formal_chargeformal charge of the constructed atom
radiusradius of the constructed atom
Returns
Atom - new constructed atom
See Also
Composite::Composite
PropertyManager::PropertyManager
virtual BALL::Atom::~Atom ( )
virtual

Destructor. If the atom has bonds in common with an other atom that atom is disconnected and the associated Bond instance is destroyed. Calls Atom::destroy .

See Also
Atom::destroy

Member Function Documentation

bool BALL::Atom::applyBonds ( UnaryProcessor< Bond > &  processor)

Application of an unary processor on every contained bond.

Parameters
processora typed unary processor for Bond instances
Returns
bool - true if application has been terminated successfully, false otherwise
BondIterator BALL::Atom::beginBond ( )
inline

Return a bond iterator pointing to the first bond of the atom.

Definition at line 871 of file atom.h.

BondConstIterator BALL::Atom::beginBond ( ) const
inline

Return a constant bond iterator pointing to the first bond.

Definition at line 888 of file atom.h.

virtual void BALL::Atom::clear ( )
virtual

Explicit default initialization. Calls Composite::clear and resets the attributes to the default values. In contrast to destroy , the atom is not removed from any composite structure, i.e. its parent fragment pointer remains unchanged.

See Also
Composite::clear
destroy

Reimplemented from BALL::Composite.

Reimplemented in BALL::PDBAtom.

void BALL::Atom::clear_ ( )
private
Bond* BALL::Atom::cloneBond ( Bond bond,
Atom atom 
)

Create a copy of a bond. This is mostly for internal use and should not be required by most users.

Size BALL::Atom::countBonds ( ) const

Return the number of bonds.

Bond* BALL::Atom::createBond ( Atom atom)

Create a new bond to an atom. Create a new instance of Bond connecting this instance to atom . Calls Bond::createBond . The state of the bond is initialized to the default values.

Returns
Bond* - default initialized Bond instance that connects this instance to atom
Exceptions
Exception::TooManyBondsif one of the atom already possesses Atom::MAX_NUMBER_OF_BONDS bonds.
See Also
Bond::createBond
Bond* BALL::Atom::createBond ( Bond bond,
Atom atom 
)

Create a new bond from an already existing instance of Bond. Initialize the bond bond to connect this instance to atom . Calls Bond::createBond . The state of the bond is initialzed to the default values.

Note: This method is recommended for use if a subclass of the Bond is to be used as the new bond. This permits extensibility of bonds to the framework client.
Returns
Bond* - default initialized bond bond that connects this instance to atom
Exceptions
Exception::TooManyBondsif one of the atom already possesses Atom::MAX_NUMBER_OF_BONDS bonds.
See Also
Bond::createBond
virtual void BALL::Atom::destroy ( )
virtual

Explicit destructor. Destroy this instance explicitly and reset its attributes to the default values.

See Also
Composite::clear

Reimplemented from BALL::Composite.

Reimplemented in BALL::PDBAtom.

bool BALL::Atom::destroyBond ( const Atom atom)

Explicit bond destruction. Destroy the bond connecting {*this atom} and atom explicitly. If the bond is auto-deletable the default destructor is called otherwise Bond::destroy .

Note: This method is recommended to destroy a bond of an atom explicitly instead of using the keyword delete. This is due to erroneous explicit destruction of statically allocated bonds.
Parameters
atomthe atom that should be disconnected from this instance
See Also
AutoDeletable
Bond::destroy
void BALL::Atom::destroyBonds ( )

Explicit bond table destruction. Destroy all the bonds connecting {*this atom} with another atom explicitly. If the bonds are auto-deletable the default destructors are called otherwise Bond::destroy .

Note: This method is recommended to destroy all bonds of an atom explicitly instead of using the keyword delete. This is due to erroneous explicit destruction of statically allocated bonds.
Parameters
atomthe atom that should be disconnected from this instance
See Also
AutoDeletable
Bond::destroy
virtual void BALL::Atom::dump ( std::ostream &  s = std::cout,
Size  depth = 0 
) const
virtual

Internal state dump. Dump the current internal state of this instance to the output ostream s with dumping depth depth . For debugging purposes only.

Parameters
s- output stream where to output the internal state
depth- the dumping depth

Reimplemented from BALL::Composite.

Reimplemented in BALL::PDBAtom.

BondIterator BALL::Atom::endBond ( )
inline

Return a past-the-end bond iterator.

Definition at line 877 of file atom.h.

BondConstIterator BALL::Atom::endBond ( ) const
inline

Return a constant past-the-end bond iterator.

Definition at line 894 of file atom.h.

void BALL::Atom::get ( Atom atom,
bool  deep = true 
) const

Deep/shallow assignment. The inverse operation to set , behaves identically.

Parameters
atomthe atom to be assigned to
See Also
Atom::set
Bond* BALL::Atom::getBond ( Position  index)

Return a bond by its index (mutable). The reference is 0 if this instance does not have a bond with index index .

Note: No corresponding mutator Atom::setBond exists to consider design of contract - an atom may not insert a bond in its bond table at a given index. The atom's bond table is an implementation detail that is not relevant to and should not be relied on by the client programmer. A bond must always be created via Bond::Bond or Atom::createBond .
Parameters
indexthe index of the bond to be accessed to
Returns
Bond* - mutable pointer to the bond that is indexed in this instance's bond table, 0 if this instance does not have a bond with index index
Exceptions
IndexOverflowif index >= MAX_NUMBER_OF_BONDS
const Bond* BALL::Atom::getBond ( Position  index) const

Return a bond by its index (const).

Exceptions
IndexOverflowif index >= MAX_NUMBER_OF_BONDS
Bond* BALL::Atom::getBond ( const Atom atom)

Return a bond by its partner atom (const). The reference is 0 if this instance does not have a bond with atom .

Parameters
atomthe atom that is considered to have a bond with this instance
Returns
Bond* - mutable pointer to the bond that connects atom with this instance, 0 if this instance does not have a bond with atom
See Also
Atom::createBond
const Bond* BALL::Atom::getBond ( const Atom atom) const

Return a bond by its partner atom (mutable) The reference is 0 if this instance does not have a bond with atom .

Parameters
atomthe atom that is considered to have a bond with this instance
Returns
Bond* - constant pointer to the bond that connects atom with this instance, 0 if this instance does not have a bond with atom
See Also
Atom::createBond
const Chain* BALL::Atom::getChain ( ) const

Return the chain the atom is contained in (const). A NULL pointer is returned if this atom is not part of a chain.

Returns
Chain* - constant pointer to the chain
Chain* BALL::Atom::getChain ( )

Return the chain the atom is contained in (mutable)

float BALL::Atom::getCharge ( ) const

Return the atom's (partial) charge. Charges should be assigned in multiples of the proton charge (elementary charge).

float BALL::Atom::getDistance ( const Atom a) const

A convenience function for computing the distance between two atoms. This is equivalent to calling this->getPosition().getDistance(a.getPosition())

Parameters
athe atom to which to compute the distance
const Element& BALL::Atom::getElement ( ) const

Return the atom's element.

const Vector3& BALL::Atom::getForce ( ) const

Return the atom's force vector (const)

Vector3& BALL::Atom::getForce ( )

Return the atom's force vector (mutable)

Index BALL::Atom::getFormalCharge ( ) const

Return the atom's formal charge.

const Fragment* BALL::Atom::getFragment ( ) const

Return the fragment the atom is contained in (const). A NULL pointer is returned if this atom is not part of a fragment.

Use Fragment::insert to insert an atom into a fragment and Fragment::remove to remove it.
Returns
Fragment* - constant pointer to the fragment
Fragment* BALL::Atom::getFragment ( )

Return the fragment the atom is contained in (mutable)

String BALL::Atom::getFullName ( FullNameType  type = ADD_VARIANT_EXTENSIONS) const

Assemble a fully specified atom name. This method returns at fully specified atom name as used for charge and type assignments. The name consists of the name of the residue the atom is contained in, a colon, and the atom name. Blanks are removed from both names. For example, for the alpha carbon atom of isoleucine getFullName will return the name ILE:CA. For N terminal residues, -N is appended to the residue name, for C terminal residues -C. If the residue is a CYS involved in a disulphide bridge, an additional -S or S (for terminal residue) is appended. For single amino acids (C and N terminal) -M is added.

If the atom is not contained in a residue, the name of the parent fragment is taken instead of the residue name. If there is no parent fragment, the name of the parent molecule is taken. If the atom is not contained in any superstructure, getFullname returns getName.
Overview of the returned strings:
  • <residue>:<atom> – if contained in a residue
  • <residue>-C:<atom> – for C terminal residues
  • <residue>-N:<atom> – for N terminal residues
  • CYS-S:<atom> – for CYS residues involved in a SS bond
  • CYS-NS:<atom> – for N terminal CYS residues involved in a SS bond
  • CYS-CS:<atom> – for C terminal CYS residues involved in a SS bond
  • <fragment>:atom – for atoms contained in a fragment, but not in a residue
  • <molecule>:atom – for atoms contained in a molecule, but not in a fragment
Parameters
typeif type is set to Atom::NO_VARIANT_EXTENSIONS, the variant extension (-XX) is omitted
Returns
String the full name
const Molecule* BALL::Atom::getMolecule ( ) const

Return the molecule the atom is contained in (const). A NULL pointer is returned if this atom is not part of a molecule.

Use Molecule::insert to insert an atom into a molecule and Molecule::remove to remove it.
Returns
Molecule* - constant pointer to the parent molecule
Molecule* BALL::Atom::getMolecule ( )

Return the molecule the atom is contained in (mutable)

const String& BALL::Atom::getName ( ) const

Return the atom name.

Atom* BALL::Atom::getPartnerAtom ( Position  i)

Returns the Atom bound at the i-th bond. This is a convenience function for: getBond(i)->getBoundAtom(*this)

Parameters
iThe index of the partner atom
Exceptions
Exception::IndexOverflowis thrown if i >= countBonds(). This exception originates from getBond(i)
const Atom* BALL::Atom::getPartnerAtom ( Position  i) const

Returns the Atom bound at the i-th bond. This is a convenience function for: getBond(i)->getBoundAtom(*this)

Parameters
iThe index of the partner atom
Exceptions
Exception::IndexOverflowis thrown if i >= countBonds(). This exception originates from getBond(i)
Vector3& BALL::Atom::getPosition ( )

Return the atom coordinates (mutable)

const Vector3& BALL::Atom::getPosition ( ) const

Return the atom coordinates (const)

float BALL::Atom::getRadius ( ) const

Return the atom radius.

const Residue* BALL::Atom::getResidue ( ) const

Return the residue the atom is contained in (const). A NULL pointer is returned if this atom is not part of a residue.

Use Residue::insert to insert an atom into a residue and Residue::remove to remove it.
Returns
Residue* - constant pointer to the residue
Residue* BALL::Atom::getResidue ( )

Return the residue the atom is contained in (mutable)

const SecondaryStructure* BALL::Atom::getSecondaryStructure ( ) const

Return the secondary structure the atom is contained in (const). A NULL pointer is returned if this atom is not part of a secondary structure.

Returns
SecondaryStructure* - constant pointer to the secondary structure
SecondaryStructure* BALL::Atom::getSecondaryStructure ( )

Return the secondary structure the atom is contained in (mutable)

Type BALL::Atom::getType ( ) const

Return the (numerical) atom type.

String BALL::Atom::getTypeName ( ) const

Return the atom type name.

Vector3& BALL::Atom::getVelocity ( )

Return the atom velocity. BALL uses units of $ {\AA}/ps $ for the velocity.

const Vector3& BALL::Atom::getVelocity ( ) const

Return the atom velocity. BALL uses units of $ {\AA}/ps $ for the velocity.

bool BALL::Atom::hasBond ( const Bond bond) const

Determine whether the atom takes part in a certain bond.

Parameters
bondthe bond in question
Returns
bool true if the bond bond connects this instance with another atom, false otherwise
See Also
Atom::hasBond
bool BALL::Atom::isBound ( ) const

Determine whether the atom has any bond.

Returns
bool - true if an atom is bound to this instance, false otherwise
See Also
Atom::hasBond
bool BALL::Atom::isBoundTo ( const Atom atom) const

Determine whether there exists a bond to another atom. Calls Atom::getBond . Hydrogen bonds (type = Bond::TYPE__HYDROGEN) are ignored.

Parameters
atomthe atom in question
Returns
bool - true if bond connects atom with {*this atom}, false otherwise
See Also
Atom::getBond
bool BALL::Atom::isGeminal ( const Atom atom) const

True if the two atoms are geminal. Two atoms are geminal if they do not share a common bond but both have a bond to a third atom. For example the two hydrogen atoms in water are geminal. Hydrogen bonds (type = Bond::TYPE__HYDROGEN) are ignored.

Parameters
atomthe second atom
Returns
bool - true if atom is geminal to this instance
virtual bool BALL::Atom::isValid ( ) const
virtual

Internal state and consistency self-validation.

Returns
bool - true if the internal state of this instance is correct (self-validated) and consistent, false otherwise

Reimplemented from BALL::Composite.

bool BALL::Atom::isVicinal ( const Atom atom) const

True if the two atoms are vicinal. Two atoms are vicinal if they are separated by three bonds (1-4 position). Hydrogen bonds (type = Bond::TYPE__HYDROGEN) are ignored.

Parameters
atomthe second atom
Returns
bool - true if atom is vicinal to this instance
bool BALL::Atom::operator!= ( const Atom atom) const

Inequality operator

See Also
operator ==
Atom& BALL::Atom::operator= ( const Atom atom)

Assignment operator. The assignment is always deep. Calls Atom::set .

Note: Bonds are not copied
Parameters
atomthe atom to be copied
Returns
Atom& - this instance
See Also
Atom::set
bool BALL::Atom::operator== ( const Atom atom) const

PredicatesEquality operator. Two atoms are equal if they have the same handle.

See Also
Object::operator ==
virtual void BALL::Atom::persistentRead ( PersistenceManager pm)
virtual

Read an Atom from a persistent stream.

Parameters
pmthe persistence manager

Reimplemented from BALL::Composite.

Reimplemented in BALL::PDBAtom.

virtual void BALL::Atom::persistentWrite ( PersistenceManager pm,
const char *  name = 0 
) const
virtual

Write an Atom to a persistent stream.

Parameters
pmthe persistence manager

Reimplemented from BALL::Composite.

Reimplemented in BALL::PDBAtom.

BondReverseIterator BALL::Atom::rbeginBond ( )
inline

Return a reverse bond iterator pointing to the last bond.

Definition at line 903 of file atom.h.

BondConstReverseIterator BALL::Atom::rbeginBond ( ) const
inline

Return a constant reverse bond iterator pointing to the first atom.

Definition at line 918 of file atom.h.

BondReverseIterator BALL::Atom::rendBond ( )
inline

Return a past-the-end bond iterator for reverse traversal.

Definition at line 909 of file atom.h.

BondConstReverseIterator BALL::Atom::rendBond ( ) const
inline

Return a constant past-the-end bond iterator for reverse traversal.

Definition at line 924 of file atom.h.

void BALL::Atom::set ( const Atom atom,
bool  deep = true 
)

Deep/shallow assignment. The assignment is either deep or shallow (default is deep). In the case of a deep assignment, all composites contained in atom are copied as well.

Caveat: Bonds are not copied!
Parameters
atomthe atom to be copied
deepmake a deep (=true) or shallow (=false) copy of atom
void BALL::Atom::setCharge ( float  charge)

Set the atom's (partial) charge. Charges should be assigned in multiples of the proton charge (elementary charge).

void BALL::Atom::setElement ( const Element element)

Assign the atom's element.

void BALL::Atom::setForce ( const Vector3 force)

Assign the atom's force vevtor. BALL uses units of Newton (1 N = 1 J/m) as the unit of force.

void BALL::Atom::setFormalCharge ( Index  formal_charge)

Set the atom's formal charge.

void BALL::Atom::setName ( const String name)

Set the atom name.

void BALL::Atom::setPosition ( const Vector3 position)

Assign the atom coordinates. BALL uses units of Angstrom for atom coordinates.

void BALL::Atom::setRadius ( float  radius)

Set the atom radius. BALL uses units of Angstrom for the atom radii.

void BALL::Atom::setType ( Type  atom_type)

Assign the numerical atom type.

void BALL::Atom::setTypeName ( const String name)

Assign the atom type name.

void BALL::Atom::setVelocity ( const Vector3 velocity)

Set the atom velocity BALL uses units of $ {\AA}/ps $ for the velocity.

void BALL::Atom::swap ( Atom atom)

Swap the contents of two atoms. The static attributes are swapped by exchanging the indices of the two atoms!

Parameters
atomthe atom being swapped with this instance
void BALL::Atom::swapLastBond_ ( const Atom atom)
private

Friends And Related Function Documentation

friend class Bond
friend

Definition at line 96 of file atom.h.

friend class BondIteratorTraits
friend

Definition at line 862 of file atom.h.

Member Data Documentation

Bond* BALL::Atom::bond_[MAX_NUMBER_OF_BONDS]
protected

Definition at line 963 of file atom.h.

float BALL::Atom::charge_
protected

Definition at line 969 of file atom.h.

const Element* BALL::Atom::element_
protected

Definition at line 955 of file atom.h.

Vector3 BALL::Atom::force_
protected

Definition at line 973 of file atom.h.

Index BALL::Atom::formal_charge_
protected

Definition at line 965 of file atom.h.

AtomIndexList BALL::Atom::free_list_
staticprotected

Definition at line 948 of file atom.h.

String BALL::Atom::name_
protected

Definition at line 951 of file atom.h.

unsigned char BALL::Atom::number_of_bonds_
protected

Definition at line 961 of file atom.h.

Vector3 BALL::Atom::position_
protected

Definition at line 967 of file atom.h.

float BALL::Atom::radius_
protected

Definition at line 957 of file atom.h.

Type BALL::Atom::type_
protected

Definition at line 959 of file atom.h.

String BALL::Atom::type_name_
protected

Definition at line 953 of file atom.h.

Vector3 BALL::Atom::velocity_
protected

Definition at line 971 of file atom.h.