void CellBetaCateninWriter<ELEMENT_DIM, SPACE_DIM>::VisitCell(CellPtr pCell, AbstractCellPopulation<ELEMENT_DIM, SPACE_DIM>* pCellPopulation) { assert(SPACE_DIM == 2); unsigned global_index = pCellPopulation->GetLocationIndexUsingCell(pCell); double x = pCellPopulation->GetLocationOfCellCentre(pCell)[0]; double y = pCellPopulation->GetLocationOfCellCentre(pCell)[1]; AbstractVanLeeuwen2009WntSwatCellCycleModel* p_model = dynamic_cast<AbstractVanLeeuwen2009WntSwatCellCycleModel*>(pCell->GetCellCycleModel()); double b_cat_membrane = p_model->GetMembraneBoundBetaCateninLevel(); double b_cat_cytoplasm = p_model->GetCytoplasmicBetaCateninLevel(); double b_cat_nuclear = p_model->GetNuclearBetaCateninLevel(); *this->mpOutStream << global_index << " " << x << " " << y << " " << b_cat_membrane << " " << b_cat_cytoplasm << " " << b_cat_nuclear << " "; }
double CellProliferativePhasesWriter<ELEMENT_DIM, SPACE_DIM>::GetCellDataForVtkOutput(CellPtr pCell, AbstractCellPopulation<ELEMENT_DIM, SPACE_DIM>* pCellPopulation) { double phase = pCell->GetCellCycleModel()->GetCurrentCellCyclePhase(); return phase; }
void CellProliferativePhasesWriter<ELEMENT_DIM, SPACE_DIM>::VisitCell(CellPtr pCell, AbstractCellPopulation<ELEMENT_DIM, SPACE_DIM>* pCellPopulation) { double phase = pCell->GetCellCycleModel()->GetCurrentCellCyclePhase(); *this->mpOutStream << phase << " "; }
void CellCycleModelProteinConcentrationsWriter<ELEMENT_DIM, SPACE_DIM>::VisitCell(CellPtr pCell, AbstractCellPopulation<ELEMENT_DIM, SPACE_DIM>* pCellPopulation) { AbstractOdeBasedCellCycleModel* p_model = dynamic_cast<AbstractOdeBasedCellCycleModel*>(pCell->GetCellCycleModel()); if (p_model) { // Write location index corresponding to cell *this->mpOutStream << pCellPopulation->GetLocationIndexUsingCell(pCell) << " "; // Write cell variables std::vector<double> proteins = p_model->GetProteinConcentrations(); for (unsigned i=0; i<proteins.size(); i++) { *this->mpOutStream << proteins[i] << " "; } } else { EXCEPTION("CellCycleModelProteinConcentrationsWriter cannot be used with a cell-cycle model that does not inherit from AbstractOdeBasedCellCycleModel"); } }
void SetReadyToDivide(CellPtr pCell, bool Ready){ AbstractCellCycleModel* model = pCell->GetCellCycleModel(); dynamic_cast<StatechartCellCycleModelSerializable*>(model)->SetReadyToDivide(Ready); };
//Setters for cell cycle model void SetCellCyclePhase(CellPtr pCell, CellCyclePhase_ phase){ AbstractCellCycleModel* model = pCell->GetCellCycleModel(); dynamic_cast<StatechartCellCycleModelSerializable*>(model)->SetCellCyclePhase(phase); }
double GetG2Duration(CellPtr pCell){ return pCell->GetCellCycleModel()->GetG2Duration(); };
void FoodDifferentialByLabelAreaModifier<DIM>::UpdateTargetAreaOfCell( CellPtr pCell) { // Get target area A of a healthy cell in S, G2 or M phase double cell_target_area = this->mReferenceTargetArea; //std::cout<<GetCellularFood()<<std::endl; if (!pCell->ReadyToDivide()) { if (pCell->HasCellProperty<ApoptoticCellProperty>()) { //std::cout<<"apoptotic!!"<<std::endl; cell_target_area = cell_target_area - 0.001 * cell_target_area; // Don't allow a negative target area if (cell_target_area < 0) { cell_target_area = 0; } } else { if (pCell->template HasCellProperty<CellLabel>()) { double cell_age = pCell->GetAge(); double growth_start_time = 5; AbstractCellCycleModel* p_model = pCell->GetCellCycleModel(); if (cell_age > growth_start_time) { if (GetCellularFood() > 1 && cell_target_area <= 2 * cAreaIdeal) { double g2_duration = p_model->GetG2Duration(); cell_target_area *= (1 + (cell_age - growth_start_time) / (g2_duration * 2)); DecreaseCellularFood(); DecreaseCellularFood(); if (pCell->template HasCellProperty<ApoptoticCellProperty>()) { pCell->template RemoveCellProperty<ApoptoticCellProperty>(); } } else { MAKE_PTR(ApoptoticCellProperty, apoptotic); pCell->AddCellProperty(apoptotic); } } } else { double cell_age = pCell->GetAge(); double growth_start_time = 7; AbstractCellCycleModel* p_model = pCell->GetCellCycleModel(); //std::cout<<"edad: "<< cell_age <<" "<< growth_start_time<<std::endl; // The target area of a proliferating cell increases linearly from A to 2A over the course of the G2 phase if (cell_age > growth_start_time && cell_target_area <= 2 * cAreaIdeal && pCell->GetCellData()->GetItem("Fitness") > 0) { double g2_duration = p_model->GetG2Duration(); cell_target_area *= (1 + ((cell_age-growth_start_time) * pCell->GetCellData()->GetItem("Fitness") / (g2_duration * 1))); } IncreaseCellularFood(); } } } if (cell_target_area > 2.2){ cell_target_area = 2.2; } // Set cell data pCell->GetCellData()->SetItem("target area", cell_target_area); }