SBMStructuralModel Class Reference

This class describes a structural model.

Constructors and destructors

 SBMStructuralModel ()
 Builds a base model.
 
virtual ~SBMStructuralModel ()
 Deletes the model.
 

Serialization

bool isSerializable () const
 Returns true.
 
virtual void serialize (SBCSerializer *serializer, const SBNodeIndexer &nodeIndexer, const SBVersionNumber &sdkVersionNumber=SB_SDK_VERSION_NUMBER, const SBVersionNumber &classVersionNumber=SBVersionNumber(1, 0, 0)) const
 Serializes the node.
 
virtual void unserialize (SBCSerializer *serializer, const SBNodeIndexer &nodeIndexer, const SBVersionNumber &sdkVersionNumber=SB_SDK_VERSION_NUMBER, const SBVersionNumber &classVersionNumber=SBVersionNumber(1, 0, 0))
 Unserializes the node.
 

Rendering

virtual void expandBounds (SBIAPosition3 &bounds) const
 Expands the bounds to make sure the visual model fits inside them.
 
virtual void collectAmbientOcclusion (const SBPosition3 &boxOrigin, const SBPosition3 &boxSize, unsigned int nCellsX, unsigned int nCellsY, unsigned int nCellsZ, float *ambientOcclusionData)
 To collect ambient occlusion data.
 

Geometry

void centerTransform ()
 Centers the pivot of the transform on the center of mass of the particles contained in the structural model. More...
 
SBSpatialTransform const & getTransform () const
 Returns the spatial transform of the structural model.
 
void setTransform (const SBSpatialTransform &transform)
 Sets the spatial transform of the structural model.
 
void setTransform (const SBSpatialTransform &transform, bool transformParticles)
 Sets the spatial transform of the structural model.
 
void setTransform (SBSpatialTransform const &newTransform, SBSpatialTransform const &oldTransform, bool transformParticles=true)
 Sets the newTransform and the oldTransform of the structural model.
 
SBMatrix33 const & getOrientation () const
 Returns the orientation of the structural model.
 
void setOrientation (const SBMatrix33 &orientation)
 Sets the orientation of the structural model.
 
void setOrientation (const SBMatrix33 &orientation, bool transformParticles)
 Sets the orientation of the structural model.
 
void setOrientation (SBMatrix33 const &newOrientation, SBMatrix33 const &oldOrientation, bool transformParticles=true)
 Sets the newOrientation and the oldOrientation of the structural model.
 
SBPosition3 const & getPosition () const
 Returns the position of the structural model.
 
void setPosition (const SBPosition3 &position)
 Sets the position of the structural model.
 
void setPosition (const SBPosition3 &position, bool transformParticles)
 Sets the position of the structural model.
 
void setPosition (SBPosition3 const &newPosition, SBPosition3 const &oldPosition, bool transformParticles=true)
 Sets the newPosition and the oldPosition of the structural model.
 
void transform (const SBSpatialTransform &transform)
 Applies a spatial transform to the structural model.
 
void rotate (const SBVector3 &axis, const SBQuantity::dimensionless &angle)
 Rotates the structural model.
 
void translate (const SBLength3 &translation)
 Translates the structural model.
 

Topology

virtual bool canAddChild (SBNode *node, SBNode *nextNode=0) const
 Returns whether this node can add node as a child. More...
 
virtual bool canAddChildType (SBNode::Type nodeType) const
 Returns whether this node can add a node with type nodeType as a child. More...
 
virtual bool addChild (SBNode *node, SBNode *nextNode=0)
 Adds a child to the node. More...
 
virtual bool removeChild (SBNode *node)
 Removes a child from the node. More...
 
virtual SBPointerList< SBMStructuralModelNode > const * getChildren () const
 This function is a convenience function equivalent to getStructuralRoot()->getChildren
 
SBMStructuralModelNodeRootgetStructuralRoot () const
 
virtual SBMStructuralModelclone ()
 Returns a copy of the node and its descendants.
 
static bool extractStructuralNodes (SBNodeIndexer &structuralModelIndexer, const SBNodeIndexer &structuralNodeIndexer)
 Adds in structuralModelIndexer the structural models resulting from extracting the structural nodes in structuralNodeIndexer.
 
static bool cloneStructuralNodes (SBNodeIndexer &structuralModelIndexer, const SBNodeIndexer &structuralNodeIndexer)
 Adds in structuralModelIndexer the structural models resulting from cloning the structural nodes in structuralNodeIndexer.
 
static SBSpatialDomain computeDomain (const SBNodeIndexer &nodeIndexer)
 Computes the domain containing the atoms and bond atoms in the node indexer.
 

Identity

virtual SBDDataGraphNode::Type getType () const
 Returns the type of the data graph node.
 
virtual SBDDataGraphNode::Type getModelType () const
 Returns the model type.
 

Atoms

static void replaceAtom (SBMStructuralModelNodeAtom *oldAtom, SBMStructuralModelNodeAtom *newAtom, bool preserveOldAtomPosition=false)
 Replaces atom oldAtom with atom newAtom. All bonds from the old atom are transferred to the new atom.
 

Bonds

void createCovalentBonds ()
 Builds covalent bonds for the atoms belonging to the structural model according to the inter-atomic distances.
 
int createCovalentBondsByResidueType ()
 Builds covalent bonds for the atoms belonging to the structural model according to the residue types, regardless of inter-atomic distances. If the bonds are already present, it sets the order of covalent bonds for the atoms belonging to the structural model according to the residue types.
 
int createCovalentBondsByResidueType (const SBNodeIndexer &nodeIndexer)
 Builds covalent bonds for the atoms belonging to the given residues of the structural model according to the residue types, regardless of inter-atomic distances. If the bonds are already present, it sets the order of covalent bonds for the atoms belonging to the structural model according to the residue types.
 
static void replaceBond (SBMStructuralModelNodeBond *oldBond, SBMStructuralModelNodeBond *newBond, bool flipBond=false, bool preserveOldBondPosition=false)
 Replaces bond oldBond with bond newBond. All neighboring bonds from the old bond are transferred to the new bond.
 

Secondary structure

bool computeSecondaryStructure (bool &updated, bool forceUpdate=false)
 Computes the secondary structure for all residues in the structural model. More...
 

Messaging

void connectStructuralSignalToSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBStructuralEvent *), SBCReferenceTarget *nextReferenceTarget=0, void(SBCReferenceTarget::*nextFunctionPointer)(SBStructuralEvent *)=0)
 
bool structuralSignalIsConnectedToSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBStructuralEvent *)) const
 
void disconnectStructuralSignalFromSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBStructuralEvent *))
 

Selection functions

virtual void getNodes (SBNodeIndexer &nodeIndexer, const SBNodePredicate &selectionPredicate=SBDDataGraphNode::All(), const SBNodePredicate &visitPredicate=SBDDataGraphNode::All(), bool includeDependencies=false)
 Returns some nodes.
 

Visitor functions

virtual void forEachNodeDepthFirst (void(*action)(SBDDataGraphNode *node))
 Performs an action on each node.
 
virtual void forEachNodeDepthFirst (SBCClass *object, void(SBCClass::*action)(SBDDataGraphNode *node))
 Performs an action on each node.
 

Properties

bool hasTitleInformation () const
 Returns true when the model's title information is set.
 
std::string const & getTitleInformation () const
 Returns the model's title information.
 
void setTitleInformation (const std::string &info)
 Sets the model's title information.
 
void clearTitleInformation ()
 Clears the model's title information.
 
bool hasPrimaryStructureInformation () const
 Returns true when the model's primary structure information is set.
 
std::string const & getPrimaryStructureInformation () const
 Returns the model's primary structure information.
 
void setPrimaryStructureInformation (const std::string &info)
 Sets the model's primary structure information.
 
void clearPrimaryStructureInformation ()
 Clears the model's primary structure information.
 
bool hasHeterogenInformation () const
 Returns true when the model's heterogen information is set.
 
std::string const & getHeterogenInformation () const
 Returns the model's heterogen information.
 
void setHeterogenInformation (const std::string &info)
 Sets the model's heterogen information.
 
void clearHeterogenInformation ()
 Clears the model's heterogen information.
 
bool hasSecondaryStructureInformation () const
 Returns true when the model's secondary structure information is set.
 
std::string const & getSecondaryStructureInformation () const
 Returns the model's secondary structure information.
 
void setSecondaryStructureInformation (const std::string &info)
 Sets the model's secondary structure information.
 
void clearSecondaryStructureInformation ()
 Clears the model's secondary structure information.
 
bool hasConnectivityAnnotationInformation () const
 Returns true when the model's connectivity annotation information is set.
 
std::string const & getConnectivityAnnotationInformation () const
 Returns the model's connectivity annotation information.
 
void setConnectivityAnnotationInformation (const std::string &info)
 Sets the model's connectivity annotation information.
 
void clearConnectivityAnnotationInformation ()
 Clears the model's connectivity annotation information.
 
bool hasMiscellaneousInformation () const
 Returns true when the model's miscellaneous information is set.
 
std::string const & getMiscellaneousInformation () const
 Returns the model's miscellaneous information.
 
void setMiscellaneousInformation (const std::string &info)
 Sets the model's miscellaneous information.
 
void clearMiscellaneousInformation ()
 Clears the model's miscellaneous information.
 
bool hasCrystallographicAndTransformationInformation () const
 Returns true when the model's crystallographic and transformation information is set.
 
std::string const & getCrystallographicAndTransformationInformation () const
 Returns the model's crystallographic and transformation information.
 
void setCrystallographicAndTransformationInformation (const std::string &info)
 Sets the model's crystallographic and transformation information.
 
void clearCrystallographicAndTransformationInformation ()
 Clears the model's crystallographic and transformation information.
 

Debugging

virtual void print (unsigned int offset=0) const
 Prints debugging information.
 

Additional Inherited Members

- Public Types inherited from SBDDataGraphNode
enum  RenderingPass {
  RenderingPass::OpaqueGeometry,
  RenderingPass::SelectableGeometry,
  RenderingPass::ShadowingGeometry,
  RenderingPass::TransparentGeometry,
  RenderingPass::Interface,
  RenderingPass::Text
}
 The rendering pass. More...
 
enum  Type {
  Undefined,
  StructuralModel,
  StructuralModelNode,
  StructuralModelConformation,
  Conformation,
  StructuralModelPath,
  Path,
  StructuralModelNodeGroup,
  StructuralGroup,
  StructuralModelNodeRoot,
  Root,
  StructuralModelNodeParticle,
  StructuralParticle,
  StructuralModelNodeAtom,
  Atom,
  StructuralModelNodePseudoAtom,
  PseudoAtom,
  StructuralModelNodeBond,
  Bond,
  StructuralModelNodeResidue,
  Residue,
  StructuralModelNodeSegment,
  Segment,
  StructuralModelNodeProtein,
  Protein,
  StructuralModelNodeChain,
  Chain,
  StructuralModelNodeMolecule,
  Molecule,
  StructuralModelNodeBackbone,
  Backbone,
  StructuralModelNodeSideChain,
  SideChain,
  VisualModel,
  VisualModelMesh,
  Mesh,
  DynamicalModel,
  DynamicalModelParticleSystem,
  ParticleSystem,
  DynamicalModelRigidBodySystem,
  RigidBodySystem,
  DynamicalModelArticulatedBodySystem,
  ArticulatedBodySystem,
  DynamicalModelNode,
  DynamicalNode,
  DynamicalModelNodeGroup,
  DynamicalGroup,
  DynamicalModelNodeRoot,
  DynamicalRoot,
  DynamicalModelNodeParticle,
  DynamicalParticle,
  DynamicalModelNodeRigidBody,
  RigidBody,
  DynamicalModelNodeArticulatedBody,
  ArticulatedBody,
  InteractionModel,
  InteractionModelParticleSystem,
  InteractionModelRigidBodySystem,
  InteractionModelArticulatedBodySystem,
  PropertyModel,
  PropertyModelFunction,
  Simulator,
  SimulatorParticleSystem,
  SimulatorRigidBodySystem,
  SimulatorArticulatedBodySystem,
  StateUpdater,
  StateUpdaterParticleSystem,
  StateUpdaterRigidBodySystem,
  StateUpdaterArticulatedBodySystem,
  DocumentManager,
  Document,
  Folder,
  Camera,
  Label,
  DataGraphNodeGroup,
  NodeGroup,
  Controller,
  ControllerNode,
  Asset
}
 The type of the data graph node. More...
 
- Public Member Functions inherited from SBMModel
virtual ~SBMModel ()
 Delete the model.
 
bool isSerializable () const
 Returns true.
 
SBMModelgetNextModel () const
 Returns the next model in the parent.
 
SBMModelgetPreviousModel () const
 Returns the previous model in the parent.
 
- Public Member Functions inherited from SBDDataGraphNode
SBDDataGraphNodegetParent () const
 Returns the parent of the node. More...
 
SBDDataGraphNodegetThisNode () const
 Returns the pointer to this node. More...
 
SBDDataGraphNodegetNextNode () const
 Returns the pointer to the next node in the children of the node's parent. More...
 
SBDDataGraphNodegetPreviousNode () const
 Returns the pointer to the previous node in the children of the node's parent. More...
 
SBDDataGraphNodegetNextNode (SBDDataGraphNode::Type nodeType) const
 Returns the pointer to the next node with type nodeType in the children of the node's parent. More...
 
SBDDataGraphNodegetPreviousNode (SBDDataGraphNode::Type nodeType) const
 Returns the pointer to the previous node with type nodeType in the children of the node's parent. More...
 
SBDDocumentgetDocument () const
 Returns the document the node belongs to. More...
 
virtual bool canAddChild (SBDDataGraphNode *node, SBDDataGraphNode *nextNode=0) const
 Returns whether this node can add node as a child. More...
 
virtual bool addChild (SBDDataGraphNode *node, SBDDataGraphNode *nextNode=0)
 Adds a child to the node. More...
 
virtual bool removeChild (SBDDataGraphNode *node)
 Removes a child from the node. More...
 
bool hasOneOf (const SBNodeIndexer &nodeIndexer) const
 Returns true if and only if this node is one of the nodes of the nodeIndexer, or is the ancestor of one of them. More...
 
bool isIn (SBDDataGraphNode *node) const
 Returns true if and only if this node is node, or descends from it. More...
 
bool isIn (const SBNodeIndexer &nodeIndexer) const
 Returns true if and only if this node is one of the nodes of the nodeIndexer, or descends from one of them. More...
 
bool isIn (SBPointerIndexer< SBDDataGraphNode > *nodePointerIndexer) const
 Returns true if and only if this node is one of the nodes of the nodePointerIndexer, or descends from one of them. More...
 
bool isOneOf (const SBNodeIndexer &nodeIndexer) const
 Returns true if and only if this node is one of the nodes of the nodeIndexer. More...
 
bool isOneOf (SBPointerIndexer< SBDDataGraphNode > *nodePointerIndexer) const
 Returns true if and only if this node is one of the nodes of the nodePointerIndexer. More...
 
SBDDataGraphNodegetRoot () const
 Returns the root of the hierarchy the node belongs to. More...
 
unsigned int getNodeIndex () const
 Returns the node index (unique in the whole data graph, but non-persistent) More...
 
std::string getTypeString (bool humanReadable=false) const
 Returns a string describing the type of the data graph node. More...
 
virtual std::string const & getName () const
 Returns the name of the node.
 
virtual void setName (const std::string &name)
 Sets the name of the node. More...
 
bool isType (Type type) const
 Returns true when the type of the node corresponds to type.
 
bool isModel () const
 Returns true when the node is a model.
 
bool isStructuralNode () const
 Returns true when the node is a structural node.
 
bool isStructuralModel () const
 Returns true when the node is a structural model.
 
bool isVisualModel () const
 Returns true when the node is a visual model.
 
bool isDynamicalModel () const
 Returns true when the node is a dynamical model.
 
bool isInteractionModel () const
 Returns true when the node is a interaction model.
 
bool isPropertyModel () const
 Returns true when the node is a property model.
 
bool isMesh () const
 Returns true when the node is a mesh.
 
bool isSimulator () const
 Returns true when the node is a simulator.
 
bool isStructuralParticle () const
 Returns true when the node is a structural particle (an atom or a pseudo-atom)
 
bool isCreated () const
 Returns true if and only if the node is created. More...
 
void create ()
 Creates the node. More...
 
bool isErased () const
 Returns true if and only if the node is erased. More...
 
void erase ()
 Erases the node. More...
 
unsigned int getFlags () const
 Returns the flags. More...
 
unsigned int getInheritedFlags () const
 Returns the inherited flags. More...
 
bool isSelected () const
 Returns whether the node is selected. More...
 
bool getSelected () const
 Returns whether the node is visible.
 
bool getSelectionFlag () const
 Returns the selection flag. More...
 
void setSelectionFlag (bool flag)
 Sets the selection flag. More...
 
bool isVisible () const
 Returns whether the node is visible. More...
 
bool getVisible () const
 Returns whether the node is visible.
 
bool getVisibilityFlag () const
 Returns the visibility flag. More...
 
void setVisibilityFlag (bool flag)
 Sets the visibility flag. More...
 
bool isHighlighted () const
 Returns whether the node is highlighted. More...
 
bool getHighlightingFlag () const
 Returns the highlighting flag. More...
 
void setHighlightingFlag (bool flag)
 Sets the highlighting flag. More...
 
virtual void display (RenderingPass renderingPass)
 Displays the node. More...
 
virtual void display ()
 Displays the node (deprecated) More...
 
virtual void displayForShadow ()
 Displays the node for shadowing purposes (deprecated) More...
 
virtual void displayForSelection ()
 Displays the node for selection purposes (deprecated) More...
 
bool addMaterial (SBDDataGraphNodeMaterial *material)
 Adds a material. More...
 
bool removeMaterial ()
 Removes the material. More...
 
SBDDataGraphNodeMaterialgetMaterial () const
 Returns the material. More...
 
SBDDataGraphNodegetMaterialOwner () const
 Returns the node whose material is inherited. More...
 
void connectBaseSignalToSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBBaseEvent *), SBCReferenceTarget *nextReferenceTarget=0, void(SBCReferenceTarget::*nextFunctionPointer)(SBBaseEvent *)=0)
 Connects the base signal to a slot. More...
 
bool baseSignalIsConnectedToSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBBaseEvent *)) const
 Returns true when the base signal is connected to a slot.
 
void disconnectBaseSignalFromSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBBaseEvent *))
 Disconnects the base signal from a slot.
 
unsigned int countNodes (const SBNodePredicate &selectionPredicate=SBDDataGraphNode::All(), const SBNodePredicate &visitPredicate=SBDDataGraphNode::All(), bool includeDependencies=false)
 Collects nodes into nodeIndexer, based on a selectionPredicate and a visitPredicate, with our without dependencies. More...
 
virtual std::string getHierarchyString (const std::string &separator="/", bool includeNodeType=false) const
 Returns a string with hierarchical information on the node and its parents names. More...
 
- Public Member Functions inherited from SBCReferenceTarget
 SBCReferenceTarget ()
 
virtual ~SBCReferenceTarget ()
 
unsigned int getMemoryFootprint () const
 
void printReferencesToOwners () const
 
- Static Public Member Functions inherited from SBDDataGraphNode
static void clone (const SBNodeIndexer &sourceNodeIndexer, SBNodeIndexer &destinationNodeIndexer)
 Clones the nodes in sourceNodeIndexer (treated as a whole) and places the clones in destinationNodeIndexer. More...
 
static SBDDataGraphNodegetNode (unsigned int nodeIndex)
 Returns the unique node corresponding to the node index nodeIndex. More...
 
static std::string getTypeString (Type type, bool humanReadable=false)
 Returns a string describing the type of the data graph node. More...
 
static void forEachNodeInSelection (SBNodeIndexer &nodeIndexer, void(*action)(SBDDataGraphNode *node))
 Performs an action for each node in a selection.
 
static void forEachNodeInSelection (SBNodeIndexer &nodeIndexer, SBCClass *object, void(SBCClass::*action)(SBDDataGraphNode *node))
 Performs an action for each node in a selection.
 
- Protected Member Functions inherited from SBMModel
 SBMModel ()
 Builds a model.
 
 SBMModel (SBMModelData *dataPointer)
 Builds a model.
 
- Protected Member Functions inherited from SBDDataGraphNode
 SBDDataGraphNode ()
 Builds a data graph node. More...
 
 SBDDataGraphNode (SBDDataGraphNodeData *dataPointer)
 Builds a data graph node.
 
virtual ~SBDDataGraphNode ()
 Destroys the node. More...
 

Member Function Documentation

◆ addChild()

bool SBMStructuralModel::addChild ( SBNode node,
SBNode nextNode = 0 
)
virtual

This function is a convenience function equivalent to getStructuralRoot()->addChild(node, nextNode)

◆ canAddChild()

bool SBMStructuralModel::canAddChild ( SBNode node,
SBNode nextNode = 0 
) const
virtual

This function is a convenience function equivalent to getStructuralRoot()->canAddChild(node, nextNode)

◆ canAddChildType()

bool SBMStructuralModel::canAddChildType ( SBNode::Type  nodeType) const
virtual

This function is a convenience function equivalent to getStructuralRoot()->canAddChildType(nodeType)

Reimplemented from SBDDataGraphNode.

◆ centerTransform()

void SBMStructuralModel::centerTransform ( )

Centers the pivot of the transform on the center of mass of the particles contained in the structural model. This changes the transform only, and does not move particles (atoms or pseudo-atoms) belonging to the structural model.

◆ computeSecondaryStructure()

bool SBMStructuralModel::computeSecondaryStructure ( bool &  secondaryStructureChanged,
bool  forceUpdate = false 
)

This functions incrementally computes the secondary structure of the structural model, i.e. both the secondary structure types of residues and geometric descriptors. The function returns true if and only if everything went well. The boolean secondaryStructureChanged is modified by the function and is true if and only if the secondary structure was changed compared to the previous call. Since several objects may call this function, a SecondaryStructureChanged event is also sent when this is the case, so that all objects may be warned.

◆ getStructuralRoot()

SBMStructuralModelNodeRoot * SBMStructuralModel::getStructuralRoot ( ) const

This function returns a pointer to the structural root of the structural model. This root is a structural node, and can be used as a convenience root for e.g. recursive algorithms that operate on structural nodes (such algorithms could not work on the structural model itself, since the SBMStructuralModel class does not derive from SBMStructuralModelNode).

◆ removeChild()

bool SBMStructuralModel::removeChild ( SBNode node)
virtual

This function is a convenience function equivalent to getStructuralRoot()->removeChild(node)