Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Computational modelling and simulation
pb4covid19
Commits
9b25f0bb
Commit
9b25f0bb
authored
Nov 06, 2020
by
Vincent Noël
Browse files
Updated model
parent
c020a55b
Changes
10
Hide whitespace changes
Inline
Side-by-side
data/boolean_network/cd8t_cell.cfg
View file @
9b25f0bb
...
...
@@ -4,7 +4,7 @@ discrete_time = 0;
use_physrandgen = FALSE;
seed_pseudorandom = 100;
max_time = 1;
time_tick =
0.
1;
max_time = 1
0
;
time_tick = 1;
Active.is_internal = FALSE;
data/boolean_network/epithelial_cell.bnd
View file @
9b25f0bb
...
...
@@ -8,4 +8,228 @@ Node Virus_replication {
Node Chemokin_secretion {
logic = Virus_inside;
}
\ No newline at end of file
}
Node Virus_damage {
logic = Virus_damage;
}
Node TCell_attached {
logic = TCell_attached;
}
Node FAS_FASL_complex {
logic = (TCell_attached);
rate_up = @logic ? $u_FAS_FASL_complex : 0;
rate_down = @logic ? 0 : $d_FAS_FASL_complex;
}
Node BAD_BBC3_BCL2L11_complex {
logic = (BCL2_MCL1_BCL2L1_complex);
rate_up = @logic ? $u_BAD_BBC3_BCL2L11_complex : 0;
rate_down = @logic ? 0 : $d_BAD_BBC3_BCL2L11_complex;
}
Node Apoptosome_complex {
logic = (CYCS & APAF1 & !AKT1 & CASP9_Cytoplasm_input);
rate_up = @logic ? $u_Apoptosome_complex : 0;
rate_down = @logic ? 0 : $d_Apoptosome_complex;
}
Node TNF_TNFRSF1A_complex {
logic = (TNF_TNFRSF1A_complex);
rate_up = @logic ? $u_TNF_TNFRSF1A_complex : 0;
rate_down = @logic ? 0 : $d_TNF_TNFRSF1A_complex;
}
Node TRADD_FADD_complex {
logic = (TNF_TNFRSF1A_complex & FADD & TRADD);
rate_up = @logic ? $u_TRADD_FADD_complex : 0;
rate_down = @logic ? 0 : $d_TRADD_FADD_complex;
}
Node BCL2_MCL1_BCL2L1_complex {
logic = (!Orf7a & E & !BAD) | (Orf7a & !BAD);
rate_up = @logic ? $u_BCL2_MCL1_BCL2L1_complex : 0;
rate_down = @logic ? 0 : $d_BCL2_MCL1_BCL2L1_complex;
}
Node FADD {
logic = (FAS_FASL_complex);
rate_up = @logic ? $u_FADD : 0;
rate_down = @logic ? 0 : $d_FADD;
}
Node CASP8 {
logic = (!TRADD_FADD_complex & FADD) | (TRADD_FADD_complex);
rate_up = @logic ? $u_CASP8 : 0;
rate_down = @logic ? 0 : $d_CASP8;
}
Node CASP3 {
logic = ( CASP9_Cytoplasm | CASP8);
rate_up = @logic ? $u_CASP3 : 0;
rate_down = @logic ? 0 : $d_CASP3;
}
Node CASP9_Cytoplasm_input {
logic = (CASP9_Cytoplasm_input);
rate_up = @logic ? $u_CASP9_Cytoplasm_input : 0;
rate_down = @logic ? 0 : $d_CASP9_Cytoplasm_input;
}
Node CASP9_Cytoplasm {
logic = (Apoptosome_complex & !AKT1);
rate_up = @logic ? $u_CASP9_Cytoplasm : 0;
rate_down = @logic ? 0 : $d_CASP9_Cytoplasm;
}
Node BID {
logic = (CASP8);
rate_up = @logic ? $u_BID : 0;
rate_down = @logic ? 0 : $d_BID;
}
Node CYCS {
logic = (MAPK14);
rate_up = @logic ? $u_CYCS : 0;
rate_down = @logic ? 0 : $d_CYCS;
}
Node APAF1 {
logic = (BAX);
rate_up = @logic ? $u_APAF1 : 0;
rate_down = @logic ? 0 : $d_APAF1;
}
Node AKT1 {
logic = (!M);
rate_up = @logic ? $u_AKT1 : 0;
rate_down = @logic ? 0 : $d_AKT1;
}
Node BAX {
logic = (!BAD_BBC3_BCL2L11_complex & !BCL2_MCL1_BCL2L1_complex & BID) | (BAD_BBC3_BCL2L11_complex & !BCL2_MCL1_BCL2L1_complex);
rate_up = @logic ? $u_BAX : 0;
rate_down = @logic ? 0 : $d_BAX;
}
Node CASP7 {
logic = (!CASP8 & CASP9_Cytoplasm) | (CASP8);
rate_up = @logic ? $u_CASP7 : 0;
rate_down = @logic ? 0 : $d_CASP7;
}
Node Apoptosis_phenotype {
logic = (!CASP3 & !CASP7 & !Orf3b & !Orf8a & !N & !Orf6 & !S & Orf9b) | (!CASP3 & !CASP7 & !Orf3b & !Orf8a & !N & !Orf6 & S) | (!CASP3 & !CASP7 & !Orf3b & !Orf8a & !N & Orf6) | (!CASP3 & !CASP7 & !Orf3b & !Orf8a & N) | (!CASP3 & !CASP7 & !Orf3b & Orf8a) | (!CASP3 & !CASP7 & Orf3b) | (!CASP3 & CASP7) | (CASP3);
rate_up = @logic ? $u_Apoptosis_phenotype : 0;
rate_down = @logic ? 0 : $d_Apoptosis_phenotype;
}
Node M {
logic = (Virus_damage);
rate_up = @logic ? $u_M : 0;
rate_down = @logic ? 0 : $d_M;
}
Node Orf7a {
logic = (Virus_damage);
rate_up = @logic ? $u_Orf7a : 0;
rate_down = @logic ? 0 : $d_Orf7a;
}
Node TRADD {
logic = (TRADD);
rate_up = @logic ? $u_TRADD : 0;
rate_down = @logic ? 0 : $d_TRADD;
}
Node Orf3a {
logic = (Virus_damage);
rate_up = @logic ? $u_Orf3a : 0;
rate_down = @logic ? 0 : $d_Orf3a;
}
Node MAPK14 {
logic = (Orf3a);
rate_up = @logic ? $u_MAPK14 : 0;
rate_down = @logic ? 0 : $d_MAPK14;
}
Node E {
logic = (Virus_damage);
rate_up = @logic ? $u_E : 0;
rate_down = @logic ? 0 : $d_E;
}
Node Orf3b {
logic = (Virus_damage);
rate_up = @logic ? $u_Orf3b : 0;
rate_down = @logic ? 0 : $d_Orf3b;
}
Node Orf8a {
logic = (Virus_damage);
rate_up = @logic ? $u_Orf8a : 0;
rate_down = @logic ? 0 : $d_Orf8a;
}
Node N {
logic = (Virus_damage);
rate_up = @logic ? $u_N : 0;
rate_down = @logic ? 0 : $d_N;
}
Node Orf6 {
logic = (Virus_damage);
rate_up = @logic ? $u_Orf6 : 0;
rate_down = @logic ? 0 : $d_Orf6;
}
Node S {
logic = (Virus_damage);
rate_up = @logic ? $u_S : 0;
rate_down = @logic ? 0 : $d_S;
}
Node Orf9b {
logic = (Virus_damage);
rate_up = @logic ? $u_Orf9b : 0;
rate_down = @logic ? 0 : $d_Orf9b;
}
Node BAD {
logic = (!AKT1);
rate_up = @logic ? $u_BAD : 0;
rate_down = @logic ? 0 : $d_BAD;
}
data/boolean_network/epithelial_cell.cfg
View file @
9b25f0bb
Virus_inside.istate = FALSE;
Virus_damage.istate = FALSE;
Virus_replication.istate = FALSE;
Chemokin_secretion.istate = FALSE;
TCell_attached.istate = FALSE;
$nb_mutable = 0;
$u_FAS_FASL_complex = 1;
$d_FAS_FASL_complex = 1;
$u_BAD_BBC3_BCL2L11_complex = 1;
$d_BAD_BBC3_BCL2L11_complex = 1;
$u_Apoptosome_complex = 1;
$d_Apoptosome_complex = 1;
$u_TNF_TNFRSF1A_complex = 1;
$d_TNF_TNFRSF1A_complex = 1;
$u_TRADD_FADD_complex = 1;
$d_TRADD_FADD_complex = 1;
$u_BCL2_MCL1_BCL2L1_complex = 1;
$d_BCL2_MCL1_BCL2L1_complex = 1;
$u_FADD = 1;
$d_FADD = 1;
$u_CASP8 = 1;
$d_CASP8 = 1;
$u_CASP3 = 1;
$d_CASP3 = 1;
$u_CASP9_Cytoplasm = 1;
$d_CASP9_Cytoplasm = 1;
$u_BID = 1;
$d_BID = 1;
$u_CYCS = 1;
$d_CYCS = 1;
$u_APAF1 = 1;
$d_APAF1 = 1;
$u_AKT1 = 1;
$d_AKT1 = 1;
$u_BAX = 1;
$d_BAX = 1;
$u_CASP7 = 1;
$d_CASP7 = 1;
$u_Apoptosis_phenotype = 1;
$d_Apoptosis_phenotype = 1;
$u_M = 1;
$d_M = 1;
$u_Orf7a = 1;
$d_Orf7a = 1;
$u_TRADD = 1;
$d_TRADD = 1;
$u_Orf3a = 1;
$d_Orf3a = 1;
$u_MAPK14 = 1;
$d_MAPK14 = 1;
$u_E = 1;
$d_E = 1;
$u_Orf3b = 1;
$d_Orf3b = 1;
$u_Orf8a = 1;
$d_Orf8a = 1;
$u_N = 1;
$d_N = 1;
$u_Orf6 = 1;
$d_Orf6 = 1;
$u_S = 1;
$d_S = 1;
$u_Orf9b = 1;
$d_Orf9b = 1;
$u_BAD = 1;
$d_BAD = 1;
FAS_FASL_complex.istate = FALSE;
BAD_BBC3_BCL2L11_complex.istate = FALSE;
Apoptosome_complex.istate = FALSE;
TNF_TNFRSF1A_complex.istate = FALSE;
TRADD_FADD_complex.istate = FALSE;
BCL2_MCL1_BCL2L1_complex.istate = FALSE;
FADD.istate = FALSE;
CASP8.istate = FALSE;
CASP3.istate = FALSE;
CASP9_Cytoplasm.istate = FALSE;
BID.istate = FALSE;
CYCS.istate = FALSE;
APAF1.istate = FALSE;
AKT1.istate = FALSE;
BAX.istate = FALSE;
CASP7.istate = FALSE;
Apoptosis_phenotype.istate = FALSE;
M.istate = FALSE;
Orf7a.istate = FALSE;
TRADD.istate = FALSE;
CASP9_Cytoplasm_input.istate = FALSE;
Orf3a.istate = FALSE;
MAPK14.istate = FALSE;
E.istate = FALSE;
Orf3b.istate = FALSE;
Orf8a.istate = FALSE;
N.istate = FALSE;
Orf6.istate = FALSE;
S.istate = FALSE;
Orf9b.istate = FALSE;
BAD.istate = FALSE;
discrete_time = 0;
use_physrandgen = FALSE;
seed_pseudorandom = 100;
max_time = 1;
time_tick =
0.
1;
max_time = 1
0
;
time_tick = 1;
Virus_inside.is_internal = FALSE;
Virus_damage.is_internal = FALSE;
Virus_replication.is_internal = FALSE;
Chemokin_secretion.is_internal = FALSE;
\ No newline at end of file
Chemokin_secretion.is_internal = FALSE;
TCell_attached.is_internal = FALSE;
FAS_FASL_complex.is_internal = False;
BAD_BBC3_BCL2L11_complex.is_internal = False;
Apoptosome_complex.is_internal = False;
TNF_TNFRSF1A_complex.is_internal = False;
TRADD_FADD_complex.is_internal = False;
BCL2_MCL1_BCL2L1_complex.is_internal = False;
FADD.is_internal = TRUE;
CASP8.is_internal = TRUE;
CASP3.is_internal = TRUE;
CASP9_Cytoplasm.is_internal = False;
BID.is_internal = TRUE;
CYCS.is_internal = TRUE;
APAF1.is_internal = TRUE;
AKT1.is_internal = TRUE;
BAX.is_internal = TRUE;
CASP7.is_internal = TRUE;
Apoptosis_phenotype.is_internal = False;
M.is_internal = TRUE;
Orf7a.is_internal = TRUE;
TRADD.is_internal = TRUE;
CASP9_Cytoplasm_input.is_internal = False;
Orf3a.is_internal = TRUE;
MAPK14.is_internal = TRUE;
E.is_internal = TRUE;
Orf3b.is_internal = TRUE;
Orf8a.is_internal = TRUE;
N.is_internal = TRUE;
Orf6.is_internal = TRUE;
S.is_internal = TRUE;
Orf9b.is_internal = TRUE;
BAD.is_internal = TRUE;
data/boolean_network/macrophage.cfg
View file @
9b25f0bb
...
...
@@ -4,7 +4,7 @@ discrete_time = 0;
use_physrandgen = FALSE;
seed_pseudorandom = 100;
max_time = 1;
time_tick =
0.
1;
max_time = 1
0
;
time_tick = 1;
Active.is_internal = FALSE;
data/boolean_network/neutrophil.cfg
View file @
9b25f0bb
...
...
@@ -4,7 +4,7 @@ discrete_time = 0;
use_physrandgen = FALSE;
seed_pseudorandom = 100;
max_time = 1;
time_tick =
0.
1;
max_time = 1
0
;
time_tick = 1;
Active.is_internal = FALSE;
data/initial.xml
View file @
9b25f0bb
...
...
@@ -11,9 +11,9 @@
</software>
<citation
/>
<current_time
units=
"min"
>
0.000000
</current_time>
<current_runtime
units=
"sec"
>
0.123792
</current_runtime>
<created>
2020-1
0-26T18:40:3
6Z
</created>
<last_modified>
2020-1
0-26T18:40:3
6Z
</last_modified>
<current_runtime
units=
"sec"
>
2.590947
</current_runtime>
<created>
2020-1
1-06T14:23:2
6Z
</created>
<last_modified>
2020-1
1-06T14:23:2
6Z
</last_modified>
</metadata>
<microenvironment>
<domain
name=
"microenvironment"
>
...
...
src/custom_modules/epithelium_submodel.cpp
View file @
9b25f0bb
...
...
@@ -16,6 +16,11 @@ void epithelium_contact_function( Cell* pC1, Phenotype& p1, Cell* pC2, Phenotype
void
epithelium_phenotype
(
Cell
*
pCell
,
Phenotype
&
phenotype
,
double
dt
)
{
if
(
pCell
->
phenotype
.
intracellular
->
need_update
())
{
pCell
->
phenotype
.
intracellular
->
update
();
}
static
int
debris_index
=
microenvironment
.
find_density_index
(
"debris"
);
// receptor dynamics
...
...
@@ -163,7 +168,13 @@ void TCell_induced_apoptosis( Cell* pCell, Phenotype& phenotype, double dt )
static
int
debris_index
=
microenvironment
.
find_density_index
(
"debris"
);
static
int
proinflammatory_cytokine_index
=
microenvironment
.
find_density_index
(
"pro-inflammatory cytokine"
);
if
(
pCell
->
custom_data
[
"TCell_contact_time"
]
>
pCell
->
custom_data
[
"TCell_contact_death_threshold"
]
)
pCell
->
phenotype
.
intracellular
->
set_boolean_node_value
(
"TCell_attached"
,
pCell
->
custom_data
[
"TCell_contact_time"
]
>
pCell
->
custom_data
[
"TCell_contact_death_threshold"
]
);
if
(
pCell
->
phenotype
.
intracellular
->
get_boolean_node_value
(
"Apoptosis_phenotype"
)
&&
pCell
->
phenotype
.
intracellular
->
get_boolean_node_value
(
"TCell_attached"
))
// if( pCell->custom_data["TCell_contact_time"] > pCell->custom_data["TCell_contact_death_threshold"] )
{
// make sure to get rid of all adhesions!
// detach all attached cells
...
...
src/custom_modules/immune_submodels.cpp
View file @
9b25f0bb
...
...
@@ -378,6 +378,11 @@ void CD8_Tcell_contact_function( Cell* pC1, Phenotype& p1, Cell* pC2, Phenotype&
void
CD8_Tcell_phenotype
(
Cell
*
pCell
,
Phenotype
&
phenotype
,
double
dt
)
{
if
(
pCell
->
phenotype
.
intracellular
->
need_update
())
{
pCell
->
phenotype
.
intracellular
->
update
();
}
static
int
debris_index
=
microenvironment
.
find_density_index
(
"debris"
);
if
(
phenotype
.
death
.
dead
==
true
)
...
...
@@ -500,6 +505,11 @@ void immune_cell_motility_direction( Cell* pCell, Phenotype& phenotype , double
void
macrophage_phenotype
(
Cell
*
pCell
,
Phenotype
&
phenotype
,
double
dt
)
{
if
(
pCell
->
phenotype
.
intracellular
->
need_update
())
{
pCell
->
phenotype
.
intracellular
->
update
();
}
static
int
apoptosis_index
=
phenotype
.
death
.
find_death_model_index
(
"Apoptosis"
);
static
Cell_Definition
*
pCD
=
find_cell_definition
(
"macrophage"
);
static
int
proinflammatory_cytokine_index
=
microenvironment
.
find_density_index
(
"pro-inflammatory cytokine"
);
...
...
@@ -616,6 +626,11 @@ void macrophage_mechanics( Cell* pCell, Phenotype& phenotype, double dt )
void
neutrophil_phenotype
(
Cell
*
pCell
,
Phenotype
&
phenotype
,
double
dt
)
{
if
(
pCell
->
phenotype
.
intracellular
->
need_update
())
{
pCell
->
phenotype
.
intracellular
->
update
();
}
// std::cout << __FUNCTION__ << " " << __LINE__ << std::endl;
static
int
apoptosis_index
=
phenotype
.
death
.
find_death_model_index
(
"apoptosis"
);
static
Cell_Definition
*
pCD
=
find_cell_definition
(
"neutrophil"
);
...
...
@@ -654,8 +669,10 @@ void neutrophil_phenotype( Cell* pCell, Phenotype& phenotype, double dt )
UniformRandom
()
<
probability_of_phagocytosis
&&
pTestCell
->
phenotype
.
volume
.
total
<
max_phagocytosis_volume
)
{
//
#pragma omp critical(neutrophil_eat)
#pragma omp critical(neutrophil_eat)
{
std
::
cout
<<
"Neutrophil is eating, and being activated"
<<
std
::
endl
;
}{
// remove_all_adhesions( pTestCell ); // debug
pCell
->
ingest_cell
(
pTestCell
);
}
...
...
src/custom_modules/internal_viral_dynamics.cpp
View file @
9b25f0bb
...
...
@@ -124,15 +124,10 @@ void internal_virus_model( Cell* pCell, Phenotype& phenotype, double dt )
phenotype
.
molecular
.
internalized_total_substrates
[
nA_external
]
=
pCell
->
custom_data
[
nA_internal
];
if
(
pCell
->
phenotype
.
intracellular
->
need_update
())
{
pCell
->
phenotype
.
intracellular
->
set_boolean_node_value
(
"Virus_inside"
,
pCell
->
custom_data
[
nV_internal
]
>
1
);
pCell
->
phenotype
.
intracellular
->
update
();
}
pCell
->
phenotype
.
intracellular
->
set_boolean_node_value
(
"Virus_inside"
,
pCell
->
custom_data
[
nV_internal
]
>
1
);
return
;
}
...
...
src/custom_modules/internal_viral_response.cpp
View file @
9b25f0bb
...
...
@@ -34,6 +34,10 @@ void internal_virus_response_model_setup( void )
return
;
}
// bool fuzzy_heavyside_normal(double value, double average, double stddev) {
// return value > PhysiCell::NormalRandom(average, stddev);
// }
void
internal_virus_response_model
(
Cell
*
pCell
,
Phenotype
&
phenotype
,
double
dt
)
{
static
Cell_Definition
*
pCD
=
find_cell_definition
(
"lung epithelium"
);
...
...
@@ -48,26 +52,40 @@ void internal_virus_response_model( Cell* pCell, Phenotype& phenotype, double dt
// actual model goes here
//
now, set
apoptosis
rate
//
boolean-controlled
apoptosis
static
int
apoptosis_model_index
=
cell_defaults
.
phenotype
.
death
.
find_death_model_index
(
"apoptosis"
);
// phenotype.death.rates[apoptosis_model_index] =
pCell
->
phenotype
.
intracellular
->
set_boolean_node_value
(
"Virus_damage"
,
// fuzzy_heavyside_normal(pCell->custom_data[nA_internal], 50, 10)
pCell
->
custom_data
[
nA_internal
]
>
10.0
);
if
(
pCell
->
phenotype
.
intracellular
->
get_boolean_node_value
(
"Apoptosis_phenotype"
)
&&
!
pCell
->
phenotype
.
intracellular
->
get_boolean_node_value
(
"TCell_attached"
))
{
// std::cout << "Triggering apoptosis based on boolean model" << std::endl;
pCell
->
start_death
(
apoptosis_model_index
);
}
// // now, set apoptosis rate
// static int apoptosis_model_index = cell_defaults.phenotype.death.find_death_model_index( "apoptosis" );
// // phenotype.death.rates[apoptosis_model_index] =
// base death rate (from cell line)
double
base_death_rate
=
pCD
->
phenotype
.
death
.
rates
[
apoptosis_model_index
];
//
//
base death rate (from cell line)
//
double base_death_rate =
//
pCD->phenotype.death.rates[apoptosis_model_index];
// additional death rate from infectoin
double
additional_death_rate
=
pCell
->
custom_data
[
"max_infected_apoptosis_rate"
]
;
//
//
additional death rate from infectoin
//
double additional_death_rate = pCell->custom_data["max_infected_apoptosis_rate"] ;
double
v
=
pCell
->
custom_data
[
nA_internal
]
/
pCell
->
custom_data
[
"max_apoptosis_half_max"
]
;
v
=
pow
(
v
,
pCell
->
custom_data
[
"apoptosis_hill_power"
]
);
//
double v = pCell->custom_data[nA_internal] /
//
pCell->custom_data["max_apoptosis_half_max"] ;
//
v = pow( v, pCell->custom_data["apoptosis_hill_power"] );
double
effect
=
v
/
(
1.0
+
v
);
additional_death_rate
*=
effect
;
phenotype
.
death
.
rates
[
apoptosis_model_index
]
=
base_death_rate
+
additional_death_rate
;
//
double effect = v / (1.0+v);
//
additional_death_rate *= effect;
//
phenotype.death.rates[apoptosis_model_index] = base_death_rate + additional_death_rate;
// if we're infected, secrete a chemokine for the immune model
static
int
nAV
=
pCell
->
custom_data
.
find_variable_index
(
"assembled_virion"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment