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

Generated at Wed Nov 5 20:29:56 2008 for ITK by doxygen 1.5.1 written by Dimitri van Heesch, © 1997-2000