00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkBioCellBase.h,v $ 00005 Language: C++ 00006 Date: $Date: 2008-10-20 21:28:20 $ 00007 Version: $Revision: 1.7 $ 00008 00009 Copyright (c) Insight Software 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 00033 class CellBase 00034 { 00035 public: 00036 typedef itk::RGBPixel<float> ColorType; 00037 typedef unsigned long int IdentifierType; 00038 typedef itk::bio::Genome GenomeType; 00039 typedef GenomeType::GeneIdType GeneIdType; 00040 00041 00042 virtual ColorType GetColor(void) const; 00043 00044 double GetRadius(void) const; 00045 00046 IdentifierType GetSelfIdentifier(void) const; 00047 IdentifierType GetParentIdentifier(void) const; 00048 00049 enum CellCycleState { 00050 M = 1UL, 00051 Gap1, 00052 S, 00053 Gap2, 00054 Gap0, 00055 Apop 00056 }; 00057 00058 protected: 00059 CellBase(); 00060 virtual ~CellBase(); 00061 00062 virtual void Grow(void); 00063 virtual void DNAReplication(void); 00064 virtual void Apoptosis(void); 00065 00066 virtual void EnergyIntake(void); 00067 virtual void NutrientsIntake(void); 00068 virtual void ComputeGeneNetwork(void); 00069 virtual void SecreteProducts(void); 00070 00071 virtual bool CheckPointGrowth(void); 00072 virtual bool CheckPointDNAReplication(void); 00073 virtual bool CheckPointMitosis(void); 00074 virtual bool CheckPointApoptosis(void); 00075 00076 void MarkForRemoval(void); 00077 00078 // Static Members 00079 static ColorType DefaultColor; 00080 00081 static GeneIdType BlueGene; // Pigment genes 00082 static GeneIdType RedGene; 00083 static GeneIdType GreenGene; 00084 static GeneIdType Cdk2E; // cell cycle control genes 00085 static GeneIdType Caspase; // cleavage enzyme: apoptosis effector 00086 static GeneIdType Pressurin; // signal from micro-tubules subject to stress 00087 00088 00089 static unsigned long MaximumGenerationLimit; 00090 static unsigned long GrowthMaximumLatencyTime; 00091 static unsigned long DivisionMaximumLatencyTime; 00092 00093 static double EnergySelfRepairLevel; 00094 static double NutrientSelfRepairLevel; 00095 00096 static double DefaultEnergyIntake; 00097 static double DefaultNutrientsIntake; 00098 00099 static unsigned long Counter; 00100 00101 static ColorType WellNourishedColor; 00102 static ColorType HopefullColor; 00103 static ColorType StarvingColor; 00104 00105 static double ChemoAttractantLowThreshold; 00106 static double ChemoAttractantHighThreshold; 00107 00108 GenomeType * m_Genome; 00109 GenomeType * m_GenomeCopy; 00110 00111 static double DefaultRadius; 00112 static double GrowthRadiusLimit; 00113 static double GrowthRadiusIncrement; 00114 00115 public: 00116 00117 virtual bool MarkedForRemoval(void) const; 00118 00119 00120 static void SetDefaultRadius( double ); 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