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: 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 

Generated at Tue Jul 29 19:15:23 2008 for ITK by doxygen 1.5.1 written by Dimitri van Heesch, © 1997-2000