00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkBioCellBase.h,v $ 00005 Language: C++ 00006 Date: $Date: 2004/11/10 19:22:11 $ 00007 Version: $Revision: 1.4 $ 00008 00009 Copyright (c) 2002 Insight Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 #ifndef __itk_Bio_Cell_Base_H 00018 #define __itk_Bio_Cell_Base_H 00019 00020 #include "itkRGBPixel.h" 00021 #include "itkVector.h" 00022 #include "itkPoint.h" 00023 #include "itkBioGenome.h" 00024 00025 namespace itk { 00026 00027 namespace bio { 00028 00029 00030 00035 class CellBase 00036 { 00037 public: 00038 typedef itk::RGBPixel<float> ColorType; 00039 typedef unsigned long int IdentifierType; 00040 typedef itk::bio::Genome GenomeType; 00041 typedef GenomeType::GeneIdType GeneIdType; 00042 00043 00044 virtual ColorType GetColor(void) const; 00045 00046 double GetRadius(void) const; 00047 00048 IdentifierType GetSelfIdentifier(void) const; 00049 IdentifierType GetParentIdentifier(void) const; 00050 00051 enum CellCycleState { 00052 M = 1UL, 00053 Gap1, 00054 S, 00055 Gap2, 00056 Gap0, 00057 Apop 00058 }; 00059 00060 00061 protected: 00062 CellBase(); 00063 virtual ~CellBase(); 00064 00065 virtual void Grow(void); 00066 virtual void DNAReplication(void); 00067 virtual void Apoptosis(void); 00068 00069 virtual void EnergyIntake(void); 00070 virtual void NutrientsIntake(void); 00071 virtual void ComputeGeneNetwork(void); 00072 virtual void SecreteProducts(void); 00073 00074 virtual bool CheckPointGrowth(void); 00075 virtual bool CheckPointDNAReplication(void); 00076 virtual bool CheckPointMitosis(void); 00077 virtual bool CheckPointApoptosis(void); 00078 00079 void MarkForRemoval(void); 00080 00081 // Static Members 00082 static double DefaultRadius; 00083 static ColorType DefaultColor; 00084 00085 static GeneIdType BlueGene; // Pigment genes 00086 static GeneIdType RedGene; 00087 static GeneIdType GreenGene; 00088 static GeneIdType Cdk2E; // cell cycle control genes 00089 static GeneIdType Caspase; // cleavage enzyme: apoptosis effector 00090 static GeneIdType Pressurin; // signal from micro-tubules subject to stress 00091 00092 static double GrowthRadiusLimit; 00093 static double GrowthRadiusIncrement; 00094 00095 static unsigned long MaximumGenerationLimit; 00096 static unsigned long GrowthMaximumLatencyTime; 00097 static unsigned long DivisionMaximumLatencyTime; 00098 00099 static double EnergySelfRepairLevel; 00100 static double NutrientSelfRepairLevel; 00101 00102 static double DefaultEnergyIntake; 00103 static double DefaultNutrientsIntake; 00104 00105 static unsigned long Counter; 00106 00107 static ColorType WellNourishedColor; 00108 static ColorType HopefullColor; 00109 static ColorType StarvingColor; 00110 00111 static double ChemoAttractantLowThreshold; 00112 static double ChemoAttractantHighThreshold; 00113 00114 GenomeType * m_Genome; 00115 GenomeType * m_GenomeCopy; 00116 00117 public: 00118 00119 virtual bool MarkedForRemoval(void) const; 00120 00121 static void SetGrowthRadiusLimit( double ); 00122 static void SetGrowthRadiusIncrement( double ); 00123 static void SetEnergySelfRepairLevel( double ); 00124 static void SetNutrientSelfRepairLevel( double ); 00125 static void SetDefaultColor( const ColorType & color ); 00126 00127 static void SetChemoAttractantHighThreshold( double ); 00128 static void SetChemoAttractantLowThreshold( double ); 00129 00130 static void SetGrowthMaximumLatencyTime( unsigned long latency ); 00131 static unsigned long GetGrowthMaximumLatencyTime( void ); 00132 00133 static double GetGrowthRadiusLimit( void ); 00134 static void SetMaximumGenerationLimit( unsigned long ); 00135 00136 static void SetDivisionMaximumLatencyTime( unsigned long ); 00137 static unsigned long GetDivisionMaximumLatencyTime(void); 00138 00139 static void ResetCounter(void); 00140 static void Initialize(void); // define values in static variables. 00141 00142 00143 protected: 00144 double m_Pressure; 00145 00146 ColorType m_Color; 00147 00148 double m_Radius; 00149 double m_EnergyReserveLevel; 00150 double m_NutrientsReserveLevel; 00151 00152 unsigned long m_GrowthLatencyTime; 00153 00154 IdentifierType m_ParentIdentifier; 00155 IdentifierType m_SelfIdentifier; 00156 00157 unsigned long m_Generation; 00158 00159 CellCycleState m_CycleState; 00160 00161 bool m_MarkedForRemoval; 00162 unsigned long m_DivisionLatencyTime; 00163 00164 bool m_ScheduleApoptosis; 00165 double m_ChemoAttractantLevel; 00166 00167 }; 00168 00169 } // end namespace bio 00170 00171 } // end namespace itk 00172 00173 00174 #endif 00175