00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkBioCellBase.h,v $ 00005 Language: C++ 00006 Date: $Date: 2007/07/15 18:24:28 $ 00007 Version: $Revision: 1.6 $ 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 __itkBioCellBase_h 00018 #define __itkBioCellBase_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 protected: 00061 CellBase(); 00062 virtual ~CellBase(); 00063 00064 virtual void Grow(void); 00065 virtual void DNAReplication(void); 00066 virtual void Apoptosis(void); 00067 00068 virtual void EnergyIntake(void); 00069 virtual void NutrientsIntake(void); 00070 virtual void ComputeGeneNetwork(void); 00071 virtual void SecreteProducts(void); 00072 00073 virtual bool CheckPointGrowth(void); 00074 virtual bool CheckPointDNAReplication(void); 00075 virtual bool CheckPointMitosis(void); 00076 virtual bool CheckPointApoptosis(void); 00077 00078 void MarkForRemoval(void); 00079 00080 // Static Members 00081 static ColorType DefaultColor; 00082 00083 static GeneIdType BlueGene; // Pigment genes 00084 static GeneIdType RedGene; 00085 static GeneIdType GreenGene; 00086 static GeneIdType Cdk2E; // cell cycle control genes 00087 static GeneIdType Caspase; // cleavage enzyme: apoptosis effector 00088 static GeneIdType Pressurin; // signal from micro-tubules subject to stress 00089 00090 00091 static unsigned long MaximumGenerationLimit; 00092 static unsigned long GrowthMaximumLatencyTime; 00093 static unsigned long DivisionMaximumLatencyTime; 00094 00095 static double EnergySelfRepairLevel; 00096 static double NutrientSelfRepairLevel; 00097 00098 static double DefaultEnergyIntake; 00099 static double DefaultNutrientsIntake; 00100 00101 static unsigned long Counter; 00102 00103 static ColorType WellNourishedColor; 00104 static ColorType HopefullColor; 00105 static ColorType StarvingColor; 00106 00107 static double ChemoAttractantLowThreshold; 00108 static double ChemoAttractantHighThreshold; 00109 00110 GenomeType * m_Genome; 00111 GenomeType * m_GenomeCopy; 00112 00113 static double DefaultRadius; 00114 static double GrowthRadiusLimit; 00115 static double GrowthRadiusIncrement; 00116 00117 public: 00118 00119 virtual bool MarkedForRemoval(void) const; 00120 00121 00122 static void SetDefaultRadius( double ); 00123 static void SetGrowthRadiusLimit( double ); 00124 static void SetGrowthRadiusIncrement( double ); 00125 static void SetEnergySelfRepairLevel( double ); 00126 static void SetNutrientSelfRepairLevel( double ); 00127 static void SetDefaultColor( const ColorType & color ); 00128 00129 static void SetChemoAttractantHighThreshold( double ); 00130 static void SetChemoAttractantLowThreshold( double ); 00131 00132 static void SetGrowthMaximumLatencyTime( unsigned long latency ); 00133 static unsigned long GetGrowthMaximumLatencyTime( void ); 00134 00135 static double GetGrowthRadiusLimit( void ); 00136 static void SetMaximumGenerationLimit( unsigned long ); 00137 00138 static void SetDivisionMaximumLatencyTime( unsigned long ); 00139 static unsigned long GetDivisionMaximumLatencyTime(void); 00140 00141 static void ResetCounter(void); 00142 static void Initialize(void); // define values in static variables. 00143 00144 00145 protected: 00146 double m_Pressure; 00147 00148 ColorType m_Color; 00149 00150 double m_Radius; 00151 double m_EnergyReserveLevel; 00152 double m_NutrientsReserveLevel; 00153 00154 unsigned long m_GrowthLatencyTime; 00155 00156 IdentifierType m_ParentIdentifier; 00157 IdentifierType m_SelfIdentifier; 00158 00159 unsigned long m_Generation; 00160 00161 CellCycleState m_CycleState; 00162 00163 bool m_MarkedForRemoval; 00164 unsigned long m_DivisionLatencyTime; 00165 00166 bool m_ScheduleApoptosis; 00167 double m_ChemoAttractantLevel; 00168 00169 }; 00170 00171 } // end namespace bio 00172 00173 } // end namespace itk 00174 00175 00176 #endif 00177 00178