Models structure¶
DeNSE offers the chance to set different models for neuronal outgrowth. Models are structured in order to allow the user to enable or discard some specific properties and then set the relevant biological parameters or use the defaults. The table of parameters can be found at the end of this page, under the Parameters subsection.
What are models in DeNSE?¶
For now, models are mostly associated to growth cones. There are also branching models, but these are not yet covered in the documentation.
A full growth model is composed by a combination of three modules:
an extension component, modeling the
Making a new growth model¶
To add a new model to DeNSE, you need to decide on two things:
a name, for instance “great model”
the type of feature it implements among:
deciding how much the growth cone will grow (extension)
setting the probability of going into each of the filopodial direction (steering)
selecting the actual direction in which the growth cone will go next (direction selection).
For this example, our “great model” will implement a new way of steering the growth cone.
Create the files¶
The C++ files containing the code for the new model must be placed in
src/models
.
Since we’re creating a steering model, we will name them
steering_great_model.hpp
and steering_great_model.cpp
(replace of
course steering
with extension
or direction_select
if your model
deals with those instead).
Create the class¶
Inside these files, we will create the class GreatSteeringModel
following
the same structure as visible in the other files containing existing models.
This means that our class:
inherits from
SteeringModel
defines all the functions mentioned in
steering_interface.hpp
Tell the simulator about the new model¶
Full growth models are automatically generated by combining all possible modules into a extention/steering/direction-selection triplets.
This is performed by the python file src/models/models_generator.py
.
To add a new model the, you must:
include it in the associated methods list (here
steering_methods
) asModelComponent(method="great-model", filename="steering_great_model.hpp", classname="GreatSteeringModel")
add an associated abbreviation in
abbrev
, for instance"great-model": "gm"
add
steering_great_model.hpp
andsteering_great_model.cpp
to the list of files insrc/models/CMakeLists.txt
And that’s it, you’re done!
Your new model is now available in DeNSE and should appear in the list returned
by get_models()
.
Creating neurons and setting parameters¶
In order to simulate a system we need to initialize it, and, likely, we would like to set our own parameters to override the default described in previous section. Let’s assume we have 1 only neuron, how to manage many neurons and sets of parameters is described in another section.
Each neuron can be created with a different growth cone model, and in every
moment these parameters can be overwritten, but it’s impossible to change the
model, while is possible to turn off/on the neurite branching model (uniform,
actin wave, van pelt)
It’s possible to set the same parameters for dendrites and axon or to specify
them, passing a dictionary with the respective name “axon_params” or
“dendrite_params” to the create_neurons()
function.
This can also be done during the simulation with
set_object_properties()
Parameters are set when kernel is initiated and the process is recursive.
Each neuron is created with a StatusMap
, which is a dictionary with all the
non-default parameters, each neuron then set the parameters all its neurites,
which set the parameters for all its growth cone. A similar process happen when
status is set during the simulation.
The models of DeNSE are implemented in C++
-
class Neuron : public std::enable_shared_from_this<Neuron>¶
Implementation of the main container
Neuron
for the creation of neuronal networks.
-
class growth::ActinWave : public std::enable_shared_from_this<ActinWave>¶
Public Functions
-
class growth::Node : public growth::TopologicalNode¶
Public Functions
-
virtual void set_position(const BPoint&) final override¶
Set the position of the node.
- Parameters
Point – xy: x and y of the node.
-
virtual void set_position(const BPoint&) final override¶
-
class growth::GrowthCone : public growth::TopologicalNode, public std::enable_shared_from_this<GrowthCone>¶
Subclassed by growth::GrowthConeModel< ElType, SteerMethod, DirSelMethod >
Public Functions
-
GrowthCone(const GrowthCone ©)¶
Copy constructor for GrowthCone.
-
virtual void set_position(const BPoint &pos) final override¶
Set the position of the node.
- Parameters
Point – xy: x and y of the node.
-
GrowthCone(const GrowthCone ©)¶
-
class growth::Branch¶
The Branch class is responsible for storing the spatial points representing the neurite in space. Each Branch instance is associated to a unique TopologicalNode and thus stores the continuous set of points that defines its trajectory over time.
Public Functions
-
Branch(const BPoint &origin)¶
Create a branch with initial position and if necesary an initial length.
-
Branch()¶
default constructor
-
double module_from_points(const BPoint&)¶
Get the module of length between the point and the last in the array.
- Parameters
BPoint& –
-
void set_first_point(const BPoint &xy, double distanceToSoma)¶
set first element of Branch container
- Parameters
xy – the points where the branch starts
distanceToSoma – the distance from soma at branch start.
-
void resize_tail(stype new_size)¶
resize the head of the branch: first point invariate
- Parameters
id_x – the length of the new branch container
-
BranchPtr resize_head(stype id_x) const¶
Create a new branch from tail of this Branch: tail invariate.
- Parameters
id_x – the number of elements to delete from the begin of the container
- Returns
-
void retract()¶
Remove one point from the container.
-
BPoint get_last_xy() const¶
return the last xy
-
Branch(const BPoint &origin)¶
Parameters¶
Defines
-
BRANCHING_PROBA_DEFAULT¶
-
NEURITE_DIAMETER¶
-
SOMA_RADIUS¶
-
THINNING_RATIO¶
-
MIN_DIAMETER¶
-
DIAMETER_RATIO_AVG¶
-
DIAM_RATIO_STD¶
-
DIAMETER_ETA_EXP¶
-
POLA_STRENGTH¶
-
AXON_POLA_WEIGHT¶
-
MAX_GC_NUM¶
-
MAX_ARBOR_LENGTH¶
-
DURATION_RETRACTION¶
-
FILOPODIA_MIN_NUM¶
-
FILOPODIA_FINGER_LENGTH¶
-
FILOPODIA_SUBSTRATE_AFINITY¶
-
FILOPODIA_WALL_AFFINITY¶
-
MAX_SENSING_ANGLE¶
-
ONE_DEGREE¶
-
PROBA_RETRACTION¶
-
PROBA_DOWN_MOVE¶
-
PERSISTENCE_LENGTH¶
-
SCALE_UP_MOVE¶
-
SENSING_ANGLE¶
-
SPEED_RATIO_RETRACTION¶
-
SPEED_GROWTH_CONE¶
-
WALL_AFNTY_DECAY_CST¶
-
DEFAULT_POINTS_PER_CIRCLE¶
-
MIN_FILOPODIA_FINGER_LENGTH¶
-
SRF_AVOIDANCE_FACTOR¶
-
SRF_AVOIDANCE_SCALE¶
-
SRF_RIGIDITY_FACTOR¶
-
SRF_SOMATROPIC_FACTOR¶
-
SRF_SOMATROPIC_SCALE¶
-
USE_CRITICAL¶
-
CRITICAL_USE_RATIO¶
-
CRITICAL_LEAKAGE¶
-
CRITICAL_CORRELATION¶
-
CRITICAL_VARIANCE¶
-
CRITICAL_WEIGHT_DIAMETER¶
-
CRITICAL_WEIGHT_CENTRIFUGAL¶
-
CRITICAL_ELONGATION_FACTOR¶
-
CRITICAL_ELONGATION_TH¶
-
CRITICAL_RETRACTION_FACTOR¶
-
CRITICAL_RETRACTION_TH¶
-
CRITICAL_BRANCHING_TH¶
-
CRITICAL_BRANCHING_PROBA¶
-
CRITICAL_AVAILABLE¶
-
CRITICAL_GEN_VAR¶
-
CRITICAL_GENERATED¶
-
CRITICAL_GEN_TAU¶
-
CRITICAL_DEL_TAU¶
-
CRITICAL_GEN_CORR¶
-
CRITICAL_SLOPE¶
-
CRITICAL_GC_SUPPORT¶
-
GC_SPLIT_ANGLE_MEAN¶
-
GC_SPLIT_ANGLE_STD¶
-
USE_VAN_PELT¶
-
VP_B¶
-
VP_E¶
-
VP_S¶
-
VP_T¶
-
DIAM_FRAC_LB¶
-
LATERAL_BRANCHING_ANGLE_MEAN¶
-
LATERAL_BRANCHING_ANGLE_STD¶
-
UNIFORM_BRANCHING_RATE¶
-
USE_ACTIN_WAVES¶
-
ACTIN_CONTENT¶
-
ACTIN_CONTENT_TAU¶
-
ACTIN_WAVE_SPEED¶
-
AW_GENERATION_STEP¶
-
DEFAULT_MAX_RESOL¶
-
MAX_MAX_SYN_DIST¶
-
namespace growth¶
-
namespace names¶
Variables
-
const std::string description¶
-
const std::string growth_cone_model¶
-
const std::string num_neurites¶
-
const std::string soma_radius¶
-
const std::string has_axon¶
-
const std::string axon_polarization_weight¶
-
const std::string neurite_angles¶
-
const std::string polarization_strength¶
-
const std::string random_rotation_angles¶
-
const std::string neurite_names¶
-
const std::string max_gc_number¶
-
const std::string max_arbor_length¶
-
const std::string active¶
-
const std::string initial_diameter¶
-
const std::string axon_angle¶
-
const std::string initial_branch_lenght¶
-
const std::string branching_proba_default¶
-
const std::string neurite_type¶
-
const std::string taper_rate¶
-
const std::string diameter_ratio_avg¶
-
const std::string diameter_ratio_std¶
-
const std::string diameter_eta_exp¶
-
const std::string affinity_axon_self¶
-
const std::string affinity_axon_dendrite_same_neuron¶
-
const std::string affinity_axon_soma_same_neuron¶
-
const std::string affinity_axon_axon_other_neuron¶
-
const std::string affinity_axon_dendrite_other_neuron¶
-
const std::string affinity_axon_soma_other_neuron¶
-
const std::string affinity_dendrite_self¶
-
const std::string affinity_dendrite_axon_same_neuron¶
-
const std::string affinity_dendrite_dendrite_same_neuron¶
-
const std::string affinity_dendrite_soma_same_neuron¶
-
const std::string affinity_dendrite_axon_other_neuron¶
-
const std::string affinity_dendrite_dendrite_other_neuron¶
-
const std::string affinity_dendrite_soma_other_neuron¶
-
const std::string duration_retraction¶
-
const std::string filopodia_min_number¶
-
const std::string filopodia_finger_length¶
-
const std::string filopodia_wall_affinity¶
-
const std::string max_sensing_angle¶
-
const std::string proba_down_move¶
-
const std::string proba_retraction¶
-
const std::string scale_up_move¶
-
const std::string sensing_angle¶
-
const std::string speed_ratio_retraction¶
-
const std::string substrate_affinity¶
-
const std::string points_per_circle¶
-
const std::string persistence_length¶
-
const std::string rigidity_factor¶
-
const std::string speed_decay_factor¶
-
const std::string speed_growth_cone¶
-
const std::string speed_variance¶
-
const std::string memory_dist_cut¶
-
const std::string memory_dist_exp¶
-
const std::string memory_influence¶
-
const std::string somatropic_factor¶
-
const std::string somatropic_scale¶
-
const std::string somatropic_mode¶
-
const std::string self_avoidance_factor¶
-
const std::string self_avoidance_scale¶
-
const std::string noise_amplitude¶
-
const std::string critical_pull¶
-
const std::string resource¶
-
const std::string use_critical_resource¶
-
const std::string res_use_ratio¶
-
const std::string res_leakage¶
-
const std::string res_correlation¶
-
const std::string res_variance¶
-
const std::string res_weight_diameter¶
-
const std::string res_weight_centrifugal¶
-
const std::string res_elongation_factor¶
-
const std::string res_elongation_threshold¶
-
const std::string res_retraction_factor¶
-
const std::string res_retraction_threshold¶
-
const std::string res_branching_threshold¶
-
const std::string res_branching_proba¶
-
const std::string res_neurite_available¶
-
const std::string res_neurite_variance¶
-
const std::string res_neurite_generated¶
-
const std::string res_neurite_generated_tau¶
-
const std::string res_neurite_delivery_tau¶
-
const std::string res_increase_slope¶
-
const std::string res_typical_gc_support¶
-
const std::string gc_split_angle_mean¶
-
const std::string gc_split_angle_std¶
-
const std::string use_van_pelt¶
-
const std::string B¶
-
const std::string E¶
-
const std::string S¶
-
const std::string T¶
-
const std::string diameter_fraction_lb¶
-
const std::string flpl_branching_rate¶
-
const std::string lateral_branching_angle_mean¶
-
const std::string lateral_branching_angle_std¶
-
const std::string min_branching_distance¶
-
const std::string use_flpl_branching¶
-
const std::string use_uniform_branching¶
-
const std::string uniform_branching_rate¶
-
const std::string use_uniform_split¶
-
const std::string uniform_split_rate¶
-
const std::string use_actin_waves¶
-
const std::string actin_content¶
-
const std::string actin_content_tau¶
-
const std::string actin_wave_speed¶
-
const std::string actin_freq¶
-
const std::string event_type¶
-
const std::string interval¶
-
const std::string level¶
-
const std::string observable¶
-
const std::string observables¶
-
const std::string record_to¶
-
const std::string restrict_to¶
-
const std::string targets¶
-
const signed char lateral_branching¶
-
const signed char gc_splitting¶
-
const signed char gc_deletion¶
-
const std::string num_growth_cones¶
-
const std::string interactions¶
-
const std::string max_allowed_resolution¶
-
const std::string max_synaptic_distance¶
-
const std::string print_time¶
-
const std::string resolution¶
-
const std::string description¶
-
namespace names¶