![]() |
PixCells
This project is a Cellular Potts Model (CPM) simulator. It was developped during a Master's degree in Physics as a master project.
|
#include <eigen3/Eigen/Eigenvalues>
#include <fstream>
#include <vector>
#include <iostream>
#include "math.hpp"
Functions | |
std::pair< float, float > | calculate_center_of_mass_cell (const std::vector< std::pair< int, int > > &m_position) |
std::array< float, 3 > | calculate_inertia_tensor_cell (const std::vector< std::pair< int, int > > &m_position) |
Calculate the inertia tensor of a cell. | |
std::array< std::array< float, 2 >, 2 > | calculate_eigenvectors_inertia_tensor_cell (const std::vector< std::pair< int, int > > &m_position) |
Calculate the eigenvectors of the inertia tensor of a cell. | |
std::pair< float, float > | calculate_projection_on_principal_axis (const std::vector< std::pair< int, int > > &m_position) |
Calculate the projection of a cell on its principal axis. | |
std::pair< float, float > | calculate_projection_std_on_principal_axis (const std::vector< std::pair< int, int > > &m_position) |
Calculate the standard deviation of the projection of a cell on its principal axis. This way, we can have an idea of the cell length and not the absolute length. | |
float | get_length_cell (const std::vector< std::pair< int, int > > &m_position) |
Calculate the length of a cell. | |
void | testGrid () |
Function to test the grid. | |
void | initializeGrid (std::vector< std::vector< double > > &grid, double initConc) |
Function to initialize the grid with a given initial concentration. | |
void | applyBoundaryConditions (std::vector< std::vector< double > > &grid, double boundaryConc) |
Function to apply the boundary conditions to the grid. | |
double | secretionTerm (double secretionRate, int id_cell) |
Function to define the secretion term S(x, y, t) | |
double | decayTerm (double decayRate, int id_cell) |
Function to define the decay term D(x, y, t) | |
void | solve_aStepOfDiffusionSecretionDecay (std::vector< std::vector< double > > &grid, double dx, double dy, double dt, double D, double boundaryConc, double secretionRate, double decayRate, std::vector< std::vector< int > > lattice) |
Solve a step of the diffusion-secretion-decay PDE. | |
Math functions
void applyBoundaryConditions | ( | std::vector< std::vector< double > > & | grid, |
double | boundaryConc | ||
) |
Function to apply the boundary conditions to the grid.
grid | the grid to apply the boundary conditions |
boundaryConc | the boundary concentration value |
std::array< std::array< float, 2 >, 2 > calculate_eigenvectors_inertia_tensor_cell | ( | const std::vector< std::pair< int, int > > & | m_position | ) |
Calculate the eigenvectors of the inertia tensor of a cell.
m_position | All the positions of the cell |
std::array< float, 3 > calculate_inertia_tensor_cell | ( | const std::vector< std::pair< int, int > > & | m_position | ) |
Calculate the inertia tensor of a cell.
m_position | All the positions of the cell |
std::pair< float, float > calculate_projection_on_principal_axis | ( | const std::vector< std::pair< int, int > > & | m_position | ) |
Calculate the projection of a cell on its principal axis.
m_position | All the positions of the cell |
std::pair< float, float > calculate_projection_std_on_principal_axis | ( | const std::vector< std::pair< int, int > > & | m_position | ) |
Calculate the standard deviation of the projection of a cell on its principal axis. This way, we can have an idea of the cell length and not the absolute length.
m_position | All the positions of the cell |
double decayTerm | ( | double | decayRate, |
int | id_cell | ||
) |
Function to define the decay term D(x, y, t)
decayRate | the decay rate |
id_cell | the id of the cell |
float get_length_cell | ( | const std::vector< std::pair< int, int > > & | m_position | ) |
Calculate the length of a cell.
m_position | All the positions of the cell |
void initializeGrid | ( | std::vector< std::vector< double > > & | grid, |
double | initConc | ||
) |
Function to initialize the grid with a given initial concentration.
grid | the grid to initialize |
initConc | the initial concentration value |
double secretionTerm | ( | double | secretionRate, |
int | id_cell | ||
) |
Function to define the secretion term S(x, y, t)
secretionRate | the secretion rate |
id_cell | the id of the cell |
void solve_aStepOfDiffusionSecretionDecay | ( | std::vector< std::vector< double > > & | grid, |
double | dx, | ||
double | dy, | ||
double | dt, | ||
double | D, | ||
double | boundaryConc, | ||
double | secretionRate, | ||
double | decayRate, | ||
std::vector< std::vector< int > > | lattice | ||
) |
Solve a step of the diffusion-secretion-decay PDE.
grid | the grid to solve |
dx | the x step |
dy | the y step (usually equal to dx) |
dt | the time step |
D | the diffusion coefficient |
boundaryConc | the boundary concentration value |
secretionRate | the secretion rate |
decayRate | the decay rate |
lattice | the lattice of the cells |