Commit 9b25f0bb authored by Vincent Noël's avatar Vincent Noël
Browse files

Updated model

parent c020a55b
......@@ -4,7 +4,7 @@ discrete_time = 0;
use_physrandgen = FALSE;
seed_pseudorandom = 100;
max_time = 1;
time_tick = 0.1;
max_time = 10;
time_tick = 1;
Active.is_internal = FALSE;
......@@ -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;
}
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 = 10;
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;
......@@ -4,7 +4,7 @@ discrete_time = 0;
use_physrandgen = FALSE;
seed_pseudorandom = 100;
max_time = 1;
time_tick = 0.1;
max_time = 10;
time_tick = 1;
Active.is_internal = FALSE;
......@@ -4,7 +4,7 @@ discrete_time = 0;
use_physrandgen = FALSE;
seed_pseudorandom = 100;
max_time = 1;
time_tick = 0.1;
max_time = 10;
time_tick = 1;
Active.is_internal = FALSE;
......@@ -11,9 +11,9 @@
</software>
<citation />
<current_time units="min">0.000000</current_time>
<current_runtime units="sec">0.123792</current_runtime>
<created>2020-10-26T18:40:36Z</created>
<last_modified>2020-10-26T18:40:36Z</last_modified>
<current_runtime units="sec">2.590947</current_runtime>
<created>2020-11-06T14:23:26Z</created>
<last_modified>2020-11-06T14:23:26Z</last_modified>
</metadata>
<microenvironment>
<domain name="microenvironment">
......
......@@ -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
......
......@@ -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 );
}
......
......@@ -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;
}
......
......@@ -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" );
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment