Unverified Commit 1e739ef2 authored by Randy Heiland's avatar Randy Heiland Committed by GitHub
Browse files

Merge pull request #4 from pc4covid19/development

Development
parents 6a2f19ee 0a3d038a
# pc4covid19 - COVID19 (SARS-CoV-2) tissue simulator nanoHUB app # pc4covid19 - COVID19 (SARS-CoV-2) tissue simulator nanoHUB app
**Version:** 3.1 **Version:** 3.2
**Release date:** 3 July 2020 **Release date:** 21 July 2020
## Overview ## Overview
This repository contains code and data for the nanoHUB app https://nanohub.org/tools/pc4covid19. This repository contains code and data for the nanoHUB app https://nanohub.org/tools/pc4covid19.
...@@ -21,6 +21,9 @@ for a summary of changes to the model. ...@@ -21,6 +21,9 @@ for a summary of changes to the model.
**This model will be continually refined with input from the community, particularly experts in infectious diseases. The validation state will be updated as this progresses.** **This model will be continually refined with input from the community, particularly experts in infectious diseases. The validation state will be updated as this progresses.**
## Release summary: ## Release summary:
### 3.2:
Updates to the core model; nothing new in the GUI.
### 3.1: ### 3.1:
Minor updates to `About` text, e.g., explaining nature of stochastic results. Edits to `immune_submodels.cpp` (see details in the core model repository). Minor updates to `About` text, e.g., explaining nature of stochastic results. Edits to `immune_submodels.cpp` (see details in the core model repository).
......
This diff is collapsed.
...@@ -377,15 +377,21 @@ ...@@ -377,15 +377,21 @@
desription="max distance at which to form a cell-cell attachment">15</max_attachment_distance> desription="max distance at which to form a cell-cell attachment">15</max_attachment_distance>
<elastic_attachment_coefficient units="1/min" type="double" <elastic_attachment_coefficient units="1/min" type="double"
description="elastic coefficient for cell-cell attachment">0.01</elastic_attachment_coefficient> description="elastic coefficient for cell-cell attachment">0.01</elastic_attachment_coefficient>
<!-- <maximum_tolerated_ingested_debris units="micron^3">3000</maximum_tolerated_ingested_debris> -->
<!--
<relative_maximum_volume units="dimensionless" type="double" <relative_maximum_volume units="dimensionless" type="double"
description="max tolerated volume (relative to normal volume) before triggering apoptosis">1.8</relative_maximum_volume> description="max tolerated volume (relative to normal volume) before triggering apoptosis">1.8</relative_maximum_volume>
--> <!-- disable in v 3.2 -->
<!-- more immmune cell parameters --> <!-- more immmune cell parameters -->
<phagocytosis_rate units="1/min" type="double" <phagocytosis_rate units="1/min" type="double"
desription="rate of phagocytosing a nearby target">0.167</phagocytosis_rate> desription="rate of phagocytosing a nearby target">0.167</phagocytosis_rate>
<!--
<phagocytosis_relative_target_cutoff_size unit="dimensionless" type="double" <phagocytosis_relative_target_cutoff_size unit="dimensionless" type="double"
desription="do not phagocytose anything over this size (relative to cell's volume)">1.1</phagocytosis_relative_target_cutoff_size> desription="do not phagocytose anything over this size (relative to cell's volume)">1.1</phagocytosis_relative_target_cutoff_size>
--> <!-- disable in v 3.2 -->
<sensitivity_to_debris_chemotaxis units="dimensionless" type="double" <sensitivity_to_debris_chemotaxis units="dimensionless" type="double"
description="relative sensitivity to debris in chemotaxis">1.0</sensitivity_to_debris_chemotaxis> description="relative sensitivity to debris in chemotaxis">1.0</sensitivity_to_debris_chemotaxis>
<sensitivity_to_chemokine_chemotaxis units="dimensionless" type="double" <sensitivity_to_chemokine_chemotaxis units="dimensionless" type="double"
......
This diff is collapsed.
...@@ -112,15 +112,15 @@ class UserTab(object): ...@@ -112,15 +112,15 @@ class UserTab(object):
param_name11.style.button_color = 'lightgreen' param_name11.style.button_color = 'lightgreen'
self.CD8_Tcell_recruitment_min_signal = FloatText( self.CD8_Tcell_recruitment_min_signal = FloatText(
value=0.3, value=0.4,
step=0.01, step=0.1,
style=style, layout=widget_layout) style=style, layout=widget_layout)
param_name12 = Button(description='CD8_Tcell_recruitment_saturation_signal', disabled=True, layout=name_button_layout) param_name12 = Button(description='CD8_Tcell_recruitment_saturation_signal', disabled=True, layout=name_button_layout)
param_name12.style.button_color = 'tan' param_name12.style.button_color = 'tan'
self.CD8_Tcell_recruitment_saturation_signal = FloatText( self.CD8_Tcell_recruitment_saturation_signal = FloatText(
value=0.5, value=0.7,
step=0.1, step=0.1,
style=style, layout=widget_layout) style=style, layout=widget_layout)
......
...@@ -283,7 +283,7 @@ ...@@ -283,7 +283,7 @@
{ {
"data": { "data": {
"application/vnd.jupyter.widget-view+json": { "application/vnd.jupyter.widget-view+json": {
"model_id": "2c6f72341ac843f0a70e394d9ca07611", "model_id": "d86ceab8843040bca8bf0389228e5aa7",
"version_major": 2, "version_major": 2,
"version_minor": 0 "version_minor": 0
}, },
......
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
#include <fstream> #include <fstream>
#include <string> #include <string>
static std::string PhysiCell_Version = "1.7.1"; static std::string PhysiCell_Version = "1.7.2beta";
static std::string PhysiCell_URL = "http://PhysiCell.MathCancer.org"; static std::string PhysiCell_URL = "http://PhysiCell.MathCancer.org";
static std::string PhysiCell_DOI = "10.1371/journal.pcbi.1005991"; static std::string PhysiCell_DOI = "10.1371/journal.pcbi.1005991";
......
...@@ -851,8 +851,8 @@ void standard_elastic_contact_function( Cell* pC1, Phenotype& p1, Cell* pC2, Phe ...@@ -851,8 +851,8 @@ void standard_elastic_contact_function( Cell* pC1, Phenotype& p1, Cell* pC2, Phe
#pragma omp critical #pragma omp critical
{ {
std::cout << "what?! " << std::endl std::cout << "what?! " << std::endl
<< pC1 << " : " << pC1->type << " " << pC1->type_name << " " << pC1->position << std::endl << " : " << pC1->type << " " << pC1->type_name << " " << pC1->position << std::endl
<< pC2 << " : " << pC2->type << " " << pC2->type_name << " " << pC2->position << std::endl ; << " : " << pC2->type << " " << pC2->type_name << " " << pC2->position << std::endl ;
} }
return; return;
} }
...@@ -877,4 +877,4 @@ void evaluate_interactions( Cell* pCell, Phenotype& phenotype, double dt ) ...@@ -877,4 +877,4 @@ void evaluate_interactions( Cell* pCell, Phenotype& phenotype, double dt )
return; return;
} }
}; };
\ No newline at end of file
This diff is collapsed.
#include "../core/PhysiCell.h"
#include "../modules/PhysiCell_standard_modules.h"
using namespace BioFVM;
using namespace PhysiCell;
#include "./submodel_data_structures.h"
#ifndef __immune_submodels__
#define __immune_submodels__
/*
void immune_submodel_setup( void );
void immune_submodel_model( Cell* pCell, Phenotype& phenotype, double dt );
*/
/* functions for checking nearby cells */
Cell* check_for_live_neighbor_for_interaction( Cell* pAttacker , double dt );
Cell* check_for_dead_neighbor_for_interaction( Cell* pAttacker , double dt );
/* functions for cell-cell adhesion */
bool attempt_immune_cell_attachment( Cell* pAttacker, Cell* pTarget , double dt );
Cell* immune_cell_check_neighbors_for_attachment( Cell* pAttacker , double dt );
void add_elastic_velocity( Cell* pActingOn, Cell* pAttachedTo , double elastic_constant );
void extra_elastic_attachment_mechanics( Cell* pCell, Phenotype& phenotype, double dt );
void attach_cells( Cell* pCell_1, Cell* pCell_2 );
void detach_cells( Cell* pCell_1 , Cell* pCell_2 );
void remove_all_adhesions( Cell* pCell );
void CD8_Tcell_phenotype( Cell* pCell, Phenotype& phenotype, double dt );
void CD8_Tcell_mechanics( Cell* pCell, Phenotype& phenotype, double dt );
void macrophage_phenotype( Cell* pCell, Phenotype& phenotype, double dt );
void macrophage_mechanics( Cell* pCell, Phenotype& phenotype, double dt );
void neutrophil_phenotype( Cell* pCell, Phenotype& phenotype, double dt );
void neutrophil_mechanics( Cell* pCell, Phenotype& phenotype, double dt );
// this damage response will need to be added to the "infected cell response" model
// void TCell_induced_apoptosis( Cell* pCell, Phenotype& phenotype, double dt );
// immune cell recruitment
void create_infiltrating_immune_cell( Cell_Definition* pCD );
void create_infiltrating_immune_cell( std::string cell_name );
void create_infiltrating_Tcell( void );
void create_infiltrating_neutrophil( void );
void immune_cell_recruitment( double dt );
void initial_immune_cell_placement( void );
void immune_submodels_setup( void );
// this needs to be done on faster time scale;
// void receptor_dynamics_model( double dt );
void keep_immune_cells_off_edge(void);
void keep_immune_cells_in_bounds( double dt );
#endif
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
using namespace PhysiCell; using namespace PhysiCell;
std::string epithelium_submodel_version = "0.0.1"; std::string epithelium_submodel_version = "0.1.0";
Submodel_Information epithelium_submodel_info; Submodel_Information epithelium_submodel_info;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
using namespace PhysiCell; using namespace PhysiCell;
std::string immune_submodels_version = "0.1.1"; std::string immune_submodels_version = "0.1.2";
// Submodel_Information Immune_submodels_info; // not needed for now // Submodel_Information Immune_submodels_info; // not needed for now
Submodel_Information CD8_submodel_info; Submodel_Information CD8_submodel_info;
...@@ -523,7 +523,8 @@ void macrophage_phenotype( Cell* pCell, Phenotype& phenotype, double dt ) ...@@ -523,7 +523,8 @@ void macrophage_phenotype( Cell* pCell, Phenotype& phenotype, double dt )
// make changes to volume change rate?? // make changes to volume change rate??
// if too much debris, comit to apoptosis // if too much debris, comit to apoptosis
/* // remove in v 3.2
double relative_volume = ( phenotype.volume.total/pCD->phenotype.volume.total ); double relative_volume = ( phenotype.volume.total/pCD->phenotype.volume.total );
if( relative_volume > pCell->custom_data[ "relative_maximum_volume" ] ) if( relative_volume > pCell->custom_data[ "relative_maximum_volume" ] )
{ {
...@@ -533,6 +534,7 @@ void macrophage_phenotype( Cell* pCell, Phenotype& phenotype, double dt ) ...@@ -533,6 +534,7 @@ void macrophage_phenotype( Cell* pCell, Phenotype& phenotype, double dt )
return; return;
} }
*/
// check for cells to eat // check for cells to eat
std::vector<Cell*> neighbors = pCell->cells_in_my_container(); std::vector<Cell*> neighbors = pCell->cells_in_my_container();
...@@ -540,10 +542,12 @@ void macrophage_phenotype( Cell* pCell, Phenotype& phenotype, double dt ) ...@@ -540,10 +542,12 @@ void macrophage_phenotype( Cell* pCell, Phenotype& phenotype, double dt )
// at least one of the cells is pCell // at least one of the cells is pCell
if( neighbors.size() < 2 ) if( neighbors.size() < 2 )
{ return; } { return; }
double probability_of_phagocytosis = pCell->custom_data["phagocytosis_rate"] * dt; double probability_of_phagocytosis = pCell->custom_data["phagocytosis_rate"] * dt;
/* // remove in v 3.2
double max_phagocytosis_volume = pCell->custom_data["phagocytosis_relative_target_cutoff_size" ] * pCD->phenotype.volume.total; double max_phagocytosis_volume = pCell->custom_data["phagocytosis_relative_target_cutoff_size" ] * pCD->phenotype.volume.total;
*/
int n = 0; int n = 0;
Cell* pTestCell = neighbors[n]; Cell* pTestCell = neighbors[n];
while( n < neighbors.size() ) while( n < neighbors.size() )
...@@ -551,8 +555,8 @@ void macrophage_phenotype( Cell* pCell, Phenotype& phenotype, double dt ) ...@@ -551,8 +555,8 @@ void macrophage_phenotype( Cell* pCell, Phenotype& phenotype, double dt )
pTestCell = neighbors[n]; pTestCell = neighbors[n];
// if it is not me and not a macrophage // if it is not me and not a macrophage
if( pTestCell != pCell && pTestCell->phenotype.death.dead == true && if( pTestCell != pCell && pTestCell->phenotype.death.dead == true &&
UniformRandom() < probability_of_phagocytosis && UniformRandom() < probability_of_phagocytosis ) // && // remove in v 3.2
pTestCell->phenotype.volume.total < max_phagocytosis_volume ) // pTestCell->phenotype.volume.total < max_phagocytosis_volume ) / remove in v 3.2
{ {
{ {
pCell->ingest_cell( pTestCell ); pCell->ingest_cell( pTestCell );
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
using namespace PhysiCell; using namespace PhysiCell;
std::string internal_virus_replication_version = "0.2.0"; std::string internal_virus_replication_version = "0.3.0";
Submodel_Information internal_viral_dynamics_info; Submodel_Information internal_viral_dynamics_info;
......
...@@ -83,6 +83,8 @@ ...@@ -83,6 +83,8 @@
using namespace BioFVM; using namespace BioFVM;
using namespace PhysiCell; using namespace PhysiCell;
std::string COVID19_version = "0.3.2";
int main( int argc, char* argv[] ) int main( int argc, char* argv[] )
{ {
// load and parse settings file(s) // load and parse settings file(s)
...@@ -162,6 +164,8 @@ int main( int argc, char* argv[] ) ...@@ -162,6 +164,8 @@ int main( int argc, char* argv[] )
} }
// main loop // main loop
std::cout << std::endl << std::endl << "***** This is COVID19 integrated version " << COVID19_version << ". *****" << std::endl << std::endl;
try try
{ {
......
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