BioDynaMo
v1.05.120-25dc9790
|
#include <neurite_element.h>
Classes | |
struct | MechanicalForcesFunctor |
Public Member Functions | |
NeuriteElement () | |
void | Initialize (const NewAgentEvent &event) override |
void | Update (const NewAgentEvent &event) override |
const AgentUid & | GetUid () const override |
Spinlock * | GetLock () override |
void | CriticalRegion (std::vector< AgentPointer<>> *aptrs) override |
Shape | GetShape () const override |
std::set< std::string > | GetRequiredVisDataMembers () const override |
void | SetDiameter (real_t diameter) override |
void | SetDensity (real_t density) |
const Real3 & | GetPosition () const override |
void | SetPosition (const Real3 &position) override |
void | UpdatePosition () |
const Real3 & | GetMassLocation () const |
return end of neurite element position More... | |
void | SetMassLocation (const Real3 &mass_location) |
real_t | GetAdherence () const |
void | SetAdherence (real_t adherence) |
const Real3 & | GetXAxis () const |
const Real3 & | GetYAxis () const |
const Real3 & | GetZAxis () const |
real_t | GetVolume () const |
real_t | GetDiameter () const override |
real_t | GetDensity () const |
real_t | GetMass () const |
Real3 | OriginOf (const AgentUid &daughter_uid) const override |
StructureIdentifierSWC | GetIdentifierSWC () const override |
void | RetractTerminalEnd (real_t speed) |
void | ElongateTerminalEnd (real_t speed, const Real3 &direction) |
bool | BranchPermitted () const |
NeuriteElement * | Branch (real_t new_branch_diameter, const Real3 &direction, real_t length=1.0) |
Create a branch for this neurite element. More... | |
NeuriteElement * | Branch (const Real3 &direction) |
Create a branch for this neurite element. More... | |
NeuriteElement * | Branch (real_t diameter) |
Create a branch for this neurite element. More... | |
NeuriteElement * | Branch () |
Create a branch for this neurite element. More... | |
bool | BifurcationPermitted () const |
std::array< NeuriteElement *, 2 > | Bifurcate (real_t length, real_t diameter_1, real_t diameter_2, const Real3 &direction_1, const Real3 &direction_2) |
Growth cone bifurcation. More... | |
std::array< NeuriteElement *, 2 > | Bifurcate (real_t diameter_1, real_t diameter_2, const Real3 &direction_1, const Real3 &direction_2) |
Growth cone bifurcation. More... | |
std::array< NeuriteElement *, 2 > | Bifurcate (const Real3 &direction_1, const Real3 &direction_2) |
Growth cone bifurcation. More... | |
std::array< NeuriteElement *, 2 > | Bifurcate () |
Growth cone bifurcation. More... | |
void | RemoveDaughter (const AgentPointer< NeuriteElement > &daughter) override |
void | UpdateRelative (const NeuronOrNeurite &old_relative, const NeuronOrNeurite &new_relative) override |
Real3 | ForceTransmittedFromDaugtherToMother (const NeuronOrNeurite &mother) |
void | RunDiscretization () override |
void | MovePointMass (real_t speed, const Real3 &direction) |
void | SetRestingLengthForDesiredTension (real_t tension) |
void | ChangeVolume (real_t speed) |
void | ChangeDiameter (real_t speed) |
Real3 | CalculateDisplacement (const InteractionForce *force, real_t squared_radius, real_t dt) override |
void | ApplyDisplacement (const Real3 &displacement) override |
void | UpdateLocalCoordinateAxis () |
void | UpdateDiameter () |
Recomputes diameter after volume has changed. More... | |
void | UpdateVolume () |
Recomputes volume, after diameter has been changed. More... | |
Real3 | TransformCoordinatesGlobalToLocal (const Real3 &position) const |
Real3 | TransformCoordinatesLocalToGlobal (const Real3 &position) const |
Real3 | TransformCoordinatesLocalToPolar (const Real3 &position) const |
Real3 | TransformCoordinatesPolarToLocal (const Real3 &position) const |
Real3 | TransformCoordinatesPolarToGlobal (const std::array< real_t, 2 > &position) const |
P -> G : P -> L, then L -> G. More... | |
Real3 | TransformCoordinatesGlobalToPolar (const Real3 &position) const |
G -> L : G -> L, then L -> P. More... | |
bool | IsAxon () const |
void | SetAxon (bool is_axon) |
AgentPointer< NeuronOrNeurite > & | GetMother () |
const AgentPointer< NeuronOrNeurite > & | GetMother () const |
void | SetMother (const AgentPointer< NeuronOrNeurite > &mother) |
const AgentPointer< NeuriteElement > & | GetDaughterLeft () const |
void | SetDaughterLeft (const AgentPointer< NeuriteElement > &daughter) |
const AgentPointer< NeuriteElement > & | GetDaughterRight () const |
void | SetDaughterRight (const AgentPointer< NeuriteElement > &daughter) |
int | GetBranchOrder () const |
void | SetBranchOrder (int branch_order) |
real_t | GetActualLength () const |
void | SetActualLength (real_t actual_length) |
Should not be used, since the actual length depends on the geometry. More... | |
real_t | GetRestingLength () const |
void | SetRestingLength (real_t resting_length) |
const Real3 & | GetSpringAxis () const |
void | SetSpringAxis (const Real3 &axis) |
real_t | GetSpringConstant () const |
void | SetSpringConstant (real_t spring_constant) |
real_t | GetTension () const |
void | SetTension (real_t tension) |
Real3 | GetUnitaryAxisDirectionVector () const |
bool | IsTerminal () const |
Real3 | ProximalEnd () const |
const Real3 & | DistalEnd () const |
Returns the position of the distal end == position_. More... | |
real_t | LengthToProximalBranchingPoint () const |
real_t | GetLength () const |
const Real3 & | GetAxis () const |
Returns the axis direction of a neurite element. More... | |
void | UpdateDependentPhysicalVariables () override |
Public Member Functions inherited from bdm::Agent | |
Agent () | |
Agent (TRootIOCtor *io_ctor) | |
Agent (const Agent &other) | |
virtual | ~Agent () |
virtual Agent * | New () const =0 |
Create a new instance of this object using the default constructor. More... | |
virtual Agent * | NewCopy () const =0 |
Create a copy of this object. More... | |
void | CreateNewAgents (const NewAgentEvent &event, const std::initializer_list< Agent * > &prototypes) |
virtual const char * | GetTypeName () const |
void | AssignNewUid () |
const AgentUid & | GetUid () const |
Spinlock * | GetLock () |
uint32_t | GetBoxIdx () const |
void | SetBoxIdx (uint32_t idx) |
void | SetStaticnessNextTimestep (bool value) const |
bool | GetPropagateStaticness () const |
void | SetPropagateStaticness (bool value=true) |
void | PropagateStaticness (bool beginning=false) |
void | UpdateStaticness () |
bool | IsStatic () const |
template<typename TAgent = Agent> | |
AgentPointer< TAgent > | GetAgentPtr () const |
Return agent pointer. More... | |
void | AddBehavior (Behavior *behavior) |
Add a behavior to this agent. More... | |
void | RemoveBehavior (const Behavior *behavior) |
void | RunBehaviors () |
Execute all behaviorsq. More... | |
const InlineVector< Behavior *, 2 > & | GetAllBehaviors () const |
Return all behaviors. More... | |
virtual void | RemoveFromSimulation () |
void * | operator new (size_t size) |
void | operator delete (void *p) |
Public Member Functions inherited from bdm::neuroscience::NeuronOrNeurite | |
virtual | ~NeuronOrNeurite () |
AgentPointer< NeuronOrNeurite > | GetNeuronOrNeuriteAgentPtr () const |
bool | IsNeuronSoma () const |
bool | IsNeuriteElement () const |
Protected Member Functions | |
void | Copy (const NeuriteElement &rhs) |
Protected Member Functions inherited from bdm::Agent | |
template<typename TFrom , typename TTo > | |
std::enable_if< std::is_base_of< TFrom, TTo >::value, TTo * >::type | Cast (TFrom *agent) const |
template<typename TFrom , typename TTo > | |
std::enable_if<!std::is_base_of< TFrom, TTo >::value, TTo * >::type | Cast (TFrom *agent) const |
Private Member Functions | |
BDM_AGENT_HEADER (NeuriteElement, Agent, 1) | |
NeuriteElement * | SplitNeuriteElement (real_t distal_portion=0.5) |
Split this neurite element into two segments. More... | |
void | RemoveProximalNeuriteElement () |
NeuriteElement * | ExtendSideNeuriteElement (real_t length, real_t diameter, const Real3 &direction) |
Extend a side neurite element and assign it to daughter right. More... | |
void | InitializeNewNeuriteExtension (NeuronSoma *soma, real_t diameter, real_t phi, real_t theta) |
TODO. More... | |
void | InitializeNeuriteBifurcation (NeuriteElement *mother, real_t length, real_t diameter, const Real3 &direction) |
TODO. More... | |
void | InitializeSplitOrBranching (NeuriteElement *other, real_t distal_portion) |
void | InitializeSideExtensionOrBranching (NeuriteElement *mother, real_t length, real_t diameter, const Real3 &direction) |
Private Attributes | |
Real3 | mass_location_ = {{0.0, 0.0, 0.0}} |
Real3 | position_ = {{0.0, 0.0, 0.0}} |
position_ is the middle point of cylinder More... | |
real_t | volume_ |
real_t | diameter_ = 1 |
NB: Use setter and don't assign values directly. More... | |
real_t | density_ |
NB: Use setter and don't assign values directly. More... | |
real_t | adherence_ |
NB: Use setter and don't assign values directly. More... | |
Real3 | x_axis_ = {{1.0, 0.0, 0.0}} |
First axis of the local coordinate system equal to cylinder axis. More... | |
Real3 | y_axis_ = {{0.0, 1.0, 0.0}} |
Second axis of the local coordinate system. More... | |
Real3 | z_axis_ = {{0.0, 0.0, 1.0}} |
Third axis of the local coordinate system. More... | |
bool | is_axon_ = false |
AgentPointer< NeuronOrNeurite > | mother_ |
AgentPointer< NeuriteElement > | daughter_left_ |
AgentPointer< NeuriteElement > | daughter_right_ |
int | branch_order_ = 0 |
Real3 | force_to_transmit_to_proximal_mass_ = {{0, 0, 0}} |
The part of the inter-object force transmitted to the mother (parent node) More... | |
Real3 | spring_axis_ = {{0, 0, 0}} |
real_t | actual_length_ = 1 |
real_t | tension_ |
real_t | spring_constant_ |
real_t | resting_length_ |
bool | has_neurite_neighbor_ = false |
Helper variable needed in CalculateDisplacement. More... | |
Friends | |
std::ostream & | operator<< (std::ostream &str, const NeuriteElement &n) |
Additional Inherited Members | |
Protected Attributes inherited from bdm::Agent | |
AgentUid | uid_ |
unique id More... | |
uint32_t | box_idx_ = std::numeric_limits<uint32_t>::max() |
Grid box index. More... | |
InlineVector< Behavior *, 2 > | behaviors_ |
collection of behaviors which define the internal behavior More... | |
Class defining a neurite element with cylindrical geometry. A cylinder can be seen as a normal cylinder, with two end points and a diameter. It is oriented; the two points are called proximal and distal. The neurite element is be part of a tree-like structure with (one and only) one object at its proximal point and (up to) two neurite elements at its distal end. The proximal end can be a Neurite or Neuron cell body. If there is only one daughter, it is the left one. If daughter_left_ == nullptr
, there is no distal neurite element. (it is a terminal neurite element). The presence of a daughter_left_
means that this branch has a bifurcation at its distal end.
All the mass of the neurite element is concentrated at the distal point. Only the distal end is moved. All the forces that are applied to the proximal node are transmitted to the mother element
Definition at line 56 of file neurite_element.h.
bdm::neuroscience::NeuriteElement::NeuriteElement | ( | ) |
Definition at line 21 of file neurite_element.cc.
|
overridevirtual |
Implements bdm::Agent.
Definition at line 624 of file neurite_element.cc.
|
private |
std::array< NeuriteElement *, 2 > bdm::neuroscience::NeuriteElement::Bifurcate | ( | ) |
Growth cone bifurcation.
Definition at line 317 of file neurite_element.cc.
std::array< NeuriteElement *, 2 > bdm::neuroscience::NeuriteElement::Bifurcate | ( | const Real3 & | direction_1, |
const Real3 & | direction_2 | ||
) |
Growth cone bifurcation.
Definition at line 307 of file neurite_element.cc.
std::array< NeuriteElement *, 2 > bdm::neuroscience::NeuriteElement::Bifurcate | ( | real_t | diameter_1, |
real_t | diameter_2, | ||
const Real3 & | direction_1, | ||
const Real3 & | direction_2 | ||
) |
Growth cone bifurcation.
Definition at line 299 of file neurite_element.cc.
std::array< NeuriteElement *, 2 > bdm::neuroscience::NeuriteElement::Bifurcate | ( | real_t | length, |
real_t | diameter_1, | ||
real_t | diameter_2, | ||
const Real3 & | direction_1, | ||
const Real3 & | direction_2 | ||
) |
Growth cone bifurcation.
Definition at line 282 of file neurite_element.cc.
bool bdm::neuroscience::NeuriteElement::BifurcationPermitted | ( | ) | const |
Returns true if a bifurcation is physically possible. That is if the neurite element has no daughter and the actual length is bigger than the minimum required.
Definition at line 276 of file neurite_element.cc.
NeuriteElement * bdm::neuroscience::NeuriteElement::Branch | ( | ) |
Create a branch for this neurite element.
Use a random growth direction for the side branch. Diameter of new side branch will be equal to this neurites diameter.
Definition at line 267 of file neurite_element.cc.
NeuriteElement * bdm::neuroscience::NeuriteElement::Branch | ( | const Real3 & | direction | ) |
Create a branch for this neurite element.
Diameter of new side branch will be equal to this neurites diameter.
Definition at line 254 of file neurite_element.cc.
NeuriteElement * bdm::neuroscience::NeuriteElement::Branch | ( | real_t | diameter | ) |
Create a branch for this neurite element.
Use a random growth direction for the side branch.
Definition at line 258 of file neurite_element.cc.
NeuriteElement * bdm::neuroscience::NeuriteElement::Branch | ( | real_t | new_branch_diameter, |
const Real3 & | direction, | ||
real_t | length = 1.0 |
||
) |
Create a branch for this neurite element.
Definition at line 244 of file neurite_element.cc.
bool bdm::neuroscience::NeuriteElement::BranchPermitted | ( | ) | const |
Returns true if a side branch is physically possible. That is if this is not a terminal branch and if there is not already a second daughter.
Definition at line 240 of file neurite_element.cc.
|
overridevirtual |
Implements bdm::Agent.
Definition at line 533 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::ChangeDiameter | ( | real_t | speed | ) |
Progressive modification of the diameter. Updates the volume.
speed | micron/ h |
Definition at line 467 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::ChangeVolume | ( | real_t | speed | ) |
Progressive modification of the volume. Updates the diameter.
speed | cubic micron/ h |
Definition at line 454 of file neurite_element.cc.
|
protected |
Definition at line 849 of file neurite_element.cc.
|
overridevirtual |
If the thread-safety mechanism is set to user-specified this function will be called before the operations are executed for this agent.
Subclasses define the critical region by adding the AgentPointers of all agents that must not be processed in parallel.
Don't forget to add the current agent.
Here an example from NeuronSoma.
void NeuronSoma::CriticalRegion(std::vector<AgentPointer<>>* aptrs) { aptrs->reserve(daughters_.size() + 1); aptrs->push_back(Agent::GetAgentPtr<>()); for (auto& daughter : daughters_) { aptrs->push_back(daughter); } }
Reimplemented from bdm::Agent.
Definition at line 122 of file neurite_element.cc.
|
inline |
Returns the position of the distal end == position_.
Definition at line 432 of file neurite_element.h.
void bdm::neuroscience::NeuriteElement::ElongateTerminalEnd | ( | real_t | speed, |
const Real3 & | direction | ||
) |
Method used for active extension of a terminal branch, representing the steering of a growth cone. The movement should always be forward, otherwise no movement is performed. If direction
points in an opposite direction than the axis, i.e. if the dot product is negative, there is no movement (only elongation is possible).
speed | |
direction |
Definition at line 233 of file neurite_element.cc.
|
private |
Extend a side neurite element and assign it to daughter right.
Definition at line 903 of file neurite_element.cc.
Real3 bdm::neuroscience::NeuriteElement::ForceTransmittedFromDaugtherToMother | ( | const NeuronOrNeurite & | mother | ) |
Returns the total force that this NeuriteElement
exerts on it's mother. It is the sum of the spring force and the part of the inter-object force computed earlier in CalculateDisplacement
Definition at line 369 of file neurite_element.cc.
|
inline |
Definition at line 396 of file neurite_element.h.
|
inline |
Definition at line 93 of file neurite_element.h.
const Real3 & bdm::neuroscience::NeuriteElement::GetAxis | ( | ) | const |
Returns the axis direction of a neurite element.
Definition at line 789 of file neurite_element.cc.
|
inline |
Definition at line 392 of file neurite_element.h.
const AgentPointer< NeuriteElement > & bdm::neuroscience::NeuriteElement::GetDaughterLeft | ( | ) | const |
Definition at line 728 of file neurite_element.cc.
const AgentPointer< NeuriteElement > & bdm::neuroscience::NeuriteElement::GetDaughterRight | ( | ) | const |
Definition at line 737 of file neurite_element.cc.
|
inline |
Definition at line 105 of file neurite_element.h.
|
inlineoverridevirtual |
Implements bdm::Agent.
Definition at line 103 of file neurite_element.h.
|
overridevirtual |
Returns StructureIdentifierSWC:kAxon if NeuriteElement is an Axon and StructureIdentifierSWC::kApicalDendrite for all other cases.
Reimplemented from bdm::neuroscience::NeuronOrNeurite.
Definition at line 179 of file neurite_element.cc.
|
inline |
Definition at line 441 of file neurite_element.h.
|
inlineoverridevirtual |
Implements bdm::neuroscience::NeuronOrNeurite.
Definition at line 68 of file neurite_element.h.
|
inline |
Definition at line 107 of file neurite_element.h.
|
inline |
return end of neurite element position
Definition at line 89 of file neurite_element.h.
|
inline |
Definition at line 371 of file neurite_element.h.
|
inline |
Definition at line 373 of file neurite_element.h.
|
inlineoverridevirtual |
Implements bdm::Agent.
Definition at line 82 of file neurite_element.h.
|
overridevirtual |
Returns the data members that are required to visualize this simulation object.
Reimplemented from bdm::Agent.
Definition at line 134 of file neurite_element.cc.
|
inline |
Definition at line 401 of file neurite_element.h.
|
inlineoverridevirtual |
Implements bdm::Agent.
Definition at line 72 of file neurite_element.h.
|
inline |
Definition at line 405 of file neurite_element.h.
|
inline |
Definition at line 409 of file neurite_element.h.
|
inline |
Definition at line 413 of file neurite_element.h.
|
inlineoverridevirtual |
Implements bdm::neuroscience::NeuronOrNeurite.
Definition at line 66 of file neurite_element.h.
Real3 bdm::neuroscience::NeuriteElement::GetUnitaryAxisDirectionVector | ( | ) | const |
NOT A "REAL" GETTER Gets a vector of length 1, with the same direction as the SpringAxis.
Definition at line 773 of file neurite_element.cc.
|
inline |
Definition at line 101 of file neurite_element.h.
|
inline |
Definition at line 97 of file neurite_element.h.
|
inline |
Definition at line 98 of file neurite_element.h.
|
inline |
Definition at line 99 of file neurite_element.h.
|
overridevirtual |
This method is called to initialize new agents that are created during a NewAgentEvent. Override this method to initialize attributes of your own Agent subclasses. NB: Don't forget to call the implementation of the base class first. Base::Initialize(event);
Failing to do so will result in errors.
Reimplemented from bdm::Agent.
Definition at line 34 of file neurite_element.cc.
|
private |
TODO.
Definition at line 954 of file neurite_element.cc.
|
private |
TODO.
Definition at line 915 of file neurite_element.cc.
|
private |
Neurite branching is composed of neurite splitting and side neurite extension. To avoid code duplication in constructors, logic has been moved here.
Definition at line 1016 of file neurite_element.cc.
|
private |
Neurite branching is composed of neurite splitting and side neurite extension. To avoid code duplication in constructors, logic has been moved here.
Definition at line 995 of file neurite_element.cc.
|
inline |
Definition at line 367 of file neurite_element.h.
|
inline |
Should return yes if the PhysicalCylinder is considered a terminal branch.
Definition at line 424 of file neurite_element.h.
real_t bdm::neuroscience::NeuriteElement::LengthToProximalBranchingPoint | ( | ) | const |
Returns the total (actual) length of all the neurite elements (including the one in which this method is called) before the previous branching point. Used to decide if long enough to bifurcate or branch, independently of the discretization.
Definition at line 778 of file neurite_element.cc.
Method used for active extension of a terminal branch, representing the steering of a growth cone. There is no check for real extension (unlike in ExtendCylinder()
` ).
speed | of the growth rate (microns/hours). |
direction | the 3D direction of movement. |
Definition at line 418 of file neurite_element.cc.
|
overridevirtual |
Returns the absolute coordinates of the location where the daughter is attached.
daughter_element_idx | element_idx of the daughter |
Implements bdm::neuroscience::NeuronOrNeurite.
Definition at line 175 of file neurite_element.cc.
|
inline |
returns the position of the proximal end, ie the position minus the spring axis. Is mainly used for paint
Definition at line 429 of file neurite_element.h.
|
overridevirtual |
Implements bdm::neuroscience::NeuronOrNeurite.
Definition at line 336 of file neurite_element.cc.
|
private |
Merges two neurite elements together. The one in which the method is called phagocytes it's mother.
Definition at line 870 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::RetractTerminalEnd | ( | real_t | speed | ) |
Retracts the neurite element, if it is a terminal one. Branch retraction by moving the distal end toward the proximal end (the mother), maintaining the same tension in the neurite element. The method shortens the actual and the resting length so that the result is a shorter neurite element with the same tension.
speed | the retraction speed in microns / h |
Definition at line 187 of file neurite_element.cc.
|
overridevirtual |
Checks if this NeuriteElement is either too long or too short.
Only executed for terminal neurite elements.
Reimplemented from bdm::Agent.
Definition at line 387 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::SetActualLength | ( | real_t | actual_length | ) |
Should not be used, since the actual length depends on the geometry.
Definition at line 746 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::SetAdherence | ( | real_t | adherence | ) |
Definition at line 168 of file neurite_element.cc.
|
inline |
Definition at line 369 of file neurite_element.h.
|
inline |
Definition at line 394 of file neurite_element.h.
void bdm::neuroscience::NeuriteElement::SetDaughterLeft | ( | const AgentPointer< NeuriteElement > & | daughter | ) |
Definition at line 732 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::SetDaughterRight | ( | const AgentPointer< NeuriteElement > & | daughter | ) |
Definition at line 741 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::SetDensity | ( | real_t | density | ) |
Definition at line 146 of file neurite_element.cc.
|
overridevirtual |
Implements bdm::Agent.
Definition at line 138 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::SetMassLocation | ( | const Real3 & | mass_location | ) |
Definition at line 163 of file neurite_element.cc.
|
inline |
Definition at line 375 of file neurite_element.h.
|
overridevirtual |
Implements bdm::Agent.
Definition at line 153 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::SetRestingLength | ( | real_t | resting_length | ) |
Definition at line 753 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::SetRestingLengthForDesiredTension | ( | real_t | tension | ) |
Definition at line 443 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::SetSpringAxis | ( | const Real3 & | axis | ) |
Definition at line 757 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::SetSpringConstant | ( | real_t | spring_constant | ) |
Definition at line 762 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::SetTension | ( | real_t | tension | ) |
Definition at line 766 of file neurite_element.cc.
|
private |
Split this neurite element into two segments.
Definition at line 864 of file neurite_element.cc.
Real3 bdm::neuroscience::NeuriteElement::TransformCoordinatesGlobalToLocal | ( | const Real3 & | position | ) | const |
3 systems of coordinates :
Global : cartesian coord, defined by orthogonal axis (1,0,0), (0,1,0) and (0,0,1) with origin at (0,0,0). Local : defined by orthogonal axis xAxis (=vect proximal to distal end), yAxis and zAxis, with origin at proximal end Polar : cylindrical coordinates [h,theta,r] with h = first local coord (along xAxis), theta = angle from yAxis, r euclidean distance from xAxis; with origin at proximal end
Note: The methods below transform POSITIONS and not DIRECTIONS !!!
G -> L L -> G
L -> P P -> L
G -> P = G -> L, then L -> P P -> P = P -> L, then L -> G G -> L Returns the position in the local coordinate system (xAxis, yXis, zAxis) of a point expressed in global cartesian coordinates ([1,0,0],[0,1,0],[0,0,1]).
position | in global coordinates |
Definition at line 681 of file neurite_element.cc.
Real3 bdm::neuroscience::NeuriteElement::TransformCoordinatesGlobalToPolar | ( | const Real3 & | position | ) | const |
G -> L : G -> L, then L -> P.
Definition at line 722 of file neurite_element.cc.
Real3 bdm::neuroscience::NeuriteElement::TransformCoordinatesLocalToGlobal | ( | const Real3 & | position | ) | const |
L -> G Returns the position in global cartesian coordinates ([1,0,0],[0,1,0],[0,0,1]) of a point expressed in the local coordinate system (xAxis, yXis, zAxis).
position | in local coordinates |
Definition at line 687 of file neurite_element.cc.
Real3 bdm::neuroscience::NeuriteElement::TransformCoordinatesLocalToPolar | ( | const Real3 & | position | ) | const |
L -> P Returns the position in cylindrical coordinates (h,theta,r) of a point expressed in the local coordinate system (xAxis, yXis, zAxis).
position | in local coordinates |
Definition at line 699 of file neurite_element.cc.
Real3 bdm::neuroscience::NeuriteElement::TransformCoordinatesPolarToGlobal | ( | const std::array< real_t, 2 > & | position | ) | const |
P -> G : P -> L, then L -> G.
Definition at line 711 of file neurite_element.cc.
Real3 bdm::neuroscience::NeuriteElement::TransformCoordinatesPolarToLocal | ( | const Real3 & | position | ) | const |
P -> L Returns the position in the local coordinate system (xAxis, yXis, zAxis) of a point expressed in cylindrical coordinates (h,theta,r).
position | in local coordinates |
Definition at line 705 of file neurite_element.cc.
|
overridevirtual |
This method is called to update the existing agent at the end of a NewAgentEvent. Override this method to update attributes of your own Agent subclasses. NB: Don't forget to call the implementation of the base class first. Base::Update(event);
Failing to do so will result in errors.
Reimplemented from bdm::Agent.
Definition at line 77 of file neurite_element.cc.
|
overridevirtual |
Updates the spring axis, the actual length, the tension and the volume.
For tension, T = k * (aL - rL) / rL
. k = spring constant, rL = resting length, aL = actual length. (Note the division by rL. Otherwise we could have cylinders with big aL and rL = 0).
Implements bdm::neuroscience::NeuronOrNeurite.
Definition at line 794 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::UpdateDiameter | ( | ) |
Recomputes diameter after volume has changed.
Definition at line 669 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::UpdateLocalCoordinateAxis | ( | ) |
Defines the three orthonormal local axis so that a cylindrical coordinate system can be used. The x_axis_
is aligned with the spring_axis_
. The two other are in the plane perpendicular to spring_axis_
. This method to update the axis was suggested by Matt Coock. Although not perfectly exact, it is accurate enough for us to use.
Definition at line 650 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::UpdatePosition | ( | ) |
Definition at line 158 of file neurite_element.cc.
|
overridevirtual |
Implements bdm::neuroscience::NeuronOrNeurite.
Definition at line 353 of file neurite_element.cc.
void bdm::neuroscience::NeuriteElement::UpdateVolume | ( | ) |
Recomputes volume, after diameter has been changed.
Definition at line 677 of file neurite_element.cc.
|
friend |
Definition at line 809 of file neurite_element.cc.
|
private |
Real length of the PhysicalCylinder (norm of the springAxis). NB: Use setter and don't assign values directly
Definition at line 509 of file neurite_element.h.
|
private |
NB: Use setter and don't assign values directly.
Definition at line 474 of file neurite_element.h.
|
private |
number of branching points from here to the soma (root of the neuron tree-structure).
Definition at line 497 of file neurite_element.h.
|
private |
First child node in the neuron tree structure (can only be a Neurite element)
Definition at line 490 of file neurite_element.h.
|
private |
Second child node in the neuron tree structure. (can only be a Neurite element)
Definition at line 493 of file neurite_element.h.
|
private |
NB: Use setter and don't assign values directly.
Definition at line 472 of file neurite_element.h.
|
private |
NB: Use setter and don't assign values directly.
Definition at line 470 of file neurite_element.h.
|
private |
The part of the inter-object force transmitted to the mother (parent node)
Definition at line 500 of file neurite_element.h.
|
private |
Helper variable needed in CalculateDisplacement.
Definition at line 524 of file neurite_element.h.
|
private |
Definition at line 482 of file neurite_element.h.
|
private |
mass_location_ is distal end of the cylinder NB: Use setter and don't assign values directly
Definition at line 463 of file neurite_element.h.
|
private |
Parent node in the neuron tree structure can be a Neurite element or cell body
Definition at line 486 of file neurite_element.h.
|
private |
position_ is the middle point of cylinder
Definition at line 466 of file neurite_element.h.
|
private |
The length of the internal spring where tension would be zero. T = k*(A-R)/R --> R = k*A/(T+K)
Definition at line 521 of file neurite_element.h.
|
private |
from the attachment point to the mass location (proximal -> distal). NB: Use setter and don't assign values directly
Definition at line 505 of file neurite_element.h.
|
private |
Spring constant per distance unit (springConstant restingLength = "real" spring constant).
Definition at line 517 of file neurite_element.h.
|
private |
Tension in the cylinder spring. NB: Use setter and don't assign values directly
Definition at line 513 of file neurite_element.h.
|
private |
Definition at line 468 of file neurite_element.h.
|
private |
First axis of the local coordinate system equal to cylinder axis.
Definition at line 476 of file neurite_element.h.
|
private |
Second axis of the local coordinate system.
Definition at line 478 of file neurite_element.h.
|
private |
Third axis of the local coordinate system.
Definition at line 480 of file neurite_element.h.