The basis of the BioCantor paradigm is that objects are linked by flexible parent/child relationships; flexible operations can be performed by jumping around the resulting hierarchy. In most cases, parent/child relationships are used to establish the parent as the frame of reference for the location of the child, though parent/child relationships are not required to define a coordinate system.
Three main object types populate this paradigm. Location
objects represent blocked features (which can represent, say, a multi-exon transcript). Sequence
objects hold sequence data. Parent
objects define parent/child relationships. The Parent
class is very flexible in order to accommodate different types of relationships. For example, a Parent
object can optionally hold a pointer to a Sequence
, meaning that sequence is the frame of reference for an object with that Parent
. A Parent
object can optionally hold a Location
, meaning that is the location of the child relative to that parent. Parent
has several optional parameters which enable different types of relationships and operations. See "Instantiating BioCantor objects" for concrete examples.
Objects hold pointers to their own (optional) parent. Parent
objects do not hold pointers to children and can be reused for multiple children. Location
objects, Sequence
objects, and Parent
objects can all have parents. Multi-level hierarchies are established when Parent
objects have their own parents.
See the remaining documentation for detailed explanations of how to instantiate and use these classes.