00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
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 ITK_EXPORT 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
00079 static ColorType DefaultColor;
00080
00081 static GeneIdType BlueGene;
00082 static GeneIdType RedGene;
00083 static GeneIdType GreenGene;
00084 static GeneIdType Cdk2E;
00085 static GeneIdType Caspase;
00086 static GeneIdType Pressurin;
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);
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 }
00170
00171 }
00172
00173
00174 #endif
00175