Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itkBioCellBase.h

Go to the documentation of this file.
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 

Generated at Wed May 24 22:51:07 2006 for ITK by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2000