00001 /* 00002 00003 Copyright (C) University of Oxford, 2005-2009 00004 00005 University of Oxford means the Chancellor, Masters and Scholars of the 00006 University of Oxford, having an administrative office at Wellington 00007 Square, Oxford OX1 2JD, UK. 00008 00009 This file is part of Chaste. 00010 00011 Chaste is free software: you can redistribute it and/or modify it 00012 under the terms of the GNU Lesser General Public License as published 00013 by the Free Software Foundation, either version 2.1 of the License, or 00014 (at your option) any later version. 00015 00016 Chaste is distributed in the hope that it will be useful, but WITHOUT 00017 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00018 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 00019 License for more details. The offer of Chaste under the terms of the 00020 License is subject to the License being interpreted in accordance with 00021 English Law and subject to any action against the University of Oxford 00022 being under the jurisdiction of the English Courts. 00023 00024 You should have received a copy of the GNU Lesser General Public License 00025 along with Chaste. If not, see <http://www.gnu.org/licenses/>. 00026 00027 */ 00028 #include "CancerParameters.hpp" 00029 00030 CancerParameters* CancerParameters::mpInstance = NULL; 00031 00032 CancerParameters* CancerParameters::Instance() 00033 { 00034 if (mpInstance == NULL) 00035 { 00036 mpInstance = new CancerParameters; 00037 } 00038 return mpInstance; 00039 } 00040 00041 CancerParameters::CancerParameters() 00042 { 00043 // Make sure there's only one instance - enforces correct serialization 00044 assert(mpInstance == NULL); 00045 00046 Reset(); 00047 } 00048 00086 void CancerParameters::Reset() 00087 { 00088 // Default parameter values 00089 mStemCellG1Duration = 14.0; 00090 mTransitCellG1Duration = 2.0; 00091 mHepaOneCellG1Duration = 8.0; // taken from Owen et al (2004) 00092 mMinimumGapDuration = 0.01; // educated guess 00093 mSDuration = 5.0; // apparently between 5-6 hours normally 00094 mG2Duration = 4.0; // apparently 3-4 hours normally 00095 mMDuration = 1.0; // this is Meineke's approximation for cell division time 00096 mMaxTransitGenerations = 3u; 00097 mCryptWidth = 10.0; 00098 mCryptLength = 22.0; // this is MOUSE (small intestine) 00099 mSpringStiffness = 15.0; // this is mu in Meineke 00100 mDampingConstantNormal = 1.0; // this is nu in Meineke 00101 mDampingConstantMutant = 2.0; 00102 mBetaCatSpringScaler = 18.14 / 6.0; // this scales the spring constant with the amount of beta-catenin 00103 // (divided by 6 as a cell normally is a hexagon) 00104 mApoptosisTime = 0.25; // cell takes 15 min to fully undergo apoptosis 00105 mDivisionRestingSpringLength = 0.5; 00106 mDivisionSeparation = 0.3; 00107 mHepaOneCellHypoxicConcentration = 0.4; 00108 mHepaOneCellQuiescentConcentration = 1.0; 00109 mWntStemThreshold = 0.8; 00110 mWntTransitThreshold = 0.65; 00111 mTopOfLinearWntConcentration = 1.0; 00112 mCriticalHypoxicDuration = 2.0; 00113 mCryptProjectionParameterA = 0.5; 00114 mCryptProjectionParameterB = 2.0; 00115 00116 mApoptoticSpringTensionStiffness = 0.25*mSpringStiffness; 00117 mApoptoticSpringCompressionStiffness = 0.75*mSpringStiffness; 00118 00119 mWntChemotaxisStrength = 100.0; 00120 mSymmetricDivisionProbability = 0.0; 00121 00122 mAreaBasedDampingConstantParameter = 0.1; 00123 00124 mMatureCellTargetArea = 1.0; 00125 mDeformationEnergyParameter = 1.0; 00126 mMembraneSurfaceEnergyParameter = 0.1; 00127 mCellCellAdhesionEnergyParameter = 0.01; 00128 mCellBoundaryAdhesionEnergyParameter = 0.01; 00129 } 00130 00132 // Getter methods 00134 00135 double CancerParameters::GetStemCellG1Duration() 00136 { 00137 return mStemCellG1Duration; 00138 } 00139 double CancerParameters::GetTransitCellG1Duration() 00140 { 00141 return mTransitCellG1Duration; 00142 } 00143 double CancerParameters::GetHepaOneCellG1Duration() 00144 { 00145 return mHepaOneCellG1Duration; 00146 } 00147 double CancerParameters::GetMinimumGapDuration() 00148 { 00149 return mMinimumGapDuration; 00150 } 00151 double CancerParameters::GetSG2MDuration() 00152 { 00153 return mSDuration + mG2Duration + mMDuration; 00154 } 00155 double CancerParameters::GetSDuration() 00156 { 00157 return mSDuration; 00158 } 00159 double CancerParameters::GetG2Duration() 00160 { 00161 return mG2Duration; 00162 } 00163 double CancerParameters::GetMDuration() 00164 { 00165 return mMDuration; 00166 } 00167 unsigned CancerParameters::GetMaxTransitGenerations() 00168 { 00169 return mMaxTransitGenerations; 00170 } 00171 double CancerParameters::GetCryptLength() 00172 { 00173 return mCryptLength; 00174 } 00175 double CancerParameters::GetCryptWidth() 00176 { 00177 return mCryptWidth; 00178 } 00179 double CancerParameters::GetSpringStiffness() 00180 { 00181 return mSpringStiffness; 00182 } 00183 double CancerParameters::GetDampingConstantNormal() 00184 { 00185 return mDampingConstantNormal; 00186 } 00187 double CancerParameters::GetDampingConstantMutant() 00188 { 00189 return mDampingConstantMutant; 00190 } 00191 double CancerParameters::GetBetaCatSpringScaler() 00192 { 00193 return mBetaCatSpringScaler; 00194 } 00195 double CancerParameters::GetApoptosisTime() 00196 { 00197 return mApoptosisTime; 00198 } 00199 double CancerParameters::GetDivisionRestingSpringLength() 00200 { 00201 return mDivisionRestingSpringLength; 00202 } 00203 double CancerParameters::GetDivisionSeparation() 00204 { 00205 return mDivisionSeparation; 00206 } 00207 double CancerParameters::GetHepaOneCellHypoxicConcentration() 00208 { 00209 return mHepaOneCellHypoxicConcentration; 00210 } 00211 double CancerParameters::GetHepaOneCellQuiescentConcentration() 00212 { 00213 return mHepaOneCellQuiescentConcentration; 00214 } 00215 double CancerParameters::GetWntTransitThreshold() 00216 { 00217 return mWntTransitThreshold; 00218 } 00219 double CancerParameters::GetWntStemThreshold() 00220 { 00221 return mWntStemThreshold; 00222 } 00223 double CancerParameters::GetTopOfLinearWntConcentration() 00224 { 00225 return mTopOfLinearWntConcentration; 00226 } 00227 double CancerParameters::GetCriticalHypoxicDuration() 00228 { 00229 return mCriticalHypoxicDuration; 00230 } 00231 double CancerParameters::GetCryptProjectionParameterA() 00232 { 00233 return mCryptProjectionParameterA; 00234 } 00235 double CancerParameters::GetCryptProjectionParameterB() 00236 { 00237 return mCryptProjectionParameterB; 00238 } 00239 double CancerParameters::GetApoptoticSpringTensionStiffness() 00240 { 00241 return mApoptoticSpringTensionStiffness; 00242 } 00243 double CancerParameters::GetApoptoticSpringCompressionStiffness() 00244 { 00245 return mApoptoticSpringCompressionStiffness; 00246 } 00247 double CancerParameters::GetWntChemotaxisStrength() 00248 { 00249 return mWntChemotaxisStrength; 00250 } 00251 double CancerParameters::GetSymmetricDivisionProbability() 00252 { 00253 return mSymmetricDivisionProbability; 00254 } 00255 double CancerParameters::GetAreaBasedDampingConstantParameter() 00256 { 00257 return mAreaBasedDampingConstantParameter; 00258 } 00259 double CancerParameters::GetMatureCellTargetArea() 00260 { 00261 return mMatureCellTargetArea; 00262 } 00263 double CancerParameters::GetDeformationEnergyParameter() 00264 { 00265 return mDeformationEnergyParameter; 00266 } 00267 double CancerParameters::GetMembraneSurfaceEnergyParameter() 00268 { 00269 return mMembraneSurfaceEnergyParameter; 00270 } 00271 double CancerParameters::GetCellCellAdhesionEnergyParameter() 00272 { 00273 return mCellCellAdhesionEnergyParameter; 00274 } 00275 double CancerParameters::GetCellBoundaryAdhesionEnergyParameter() 00276 { 00277 return mCellBoundaryAdhesionEnergyParameter; 00278 } 00279 00281 // Setter methods 00283 00284 void CancerParameters::SetStemCellG1Duration(double stemCellG1Duration) 00285 { 00286 assert(stemCellG1Duration > 0.0); 00287 mStemCellG1Duration = stemCellG1Duration; 00288 } 00289 void CancerParameters::SetTransitCellG1Duration(double transitCellG1Duration) 00290 { 00291 assert(transitCellG1Duration > 0.0); 00292 mTransitCellG1Duration = transitCellG1Duration; 00293 } 00294 void CancerParameters::SetHepaOneCellG1Duration(double hepaOneCellG1Duration) 00295 { 00296 assert(hepaOneCellG1Duration > 0.0); 00297 mHepaOneCellG1Duration = hepaOneCellG1Duration; 00298 } 00299 void CancerParameters::SetMinimumGapDuration(double minimumGapDuration) 00300 { 00301 assert(minimumGapDuration > 0.0); 00302 mMinimumGapDuration = minimumGapDuration; 00303 } 00304 void CancerParameters::SetSDuration(double SDuration) 00305 { 00306 assert(SDuration > 0.0); 00307 mSDuration = SDuration; 00308 } 00309 void CancerParameters::SetG2Duration(double G2Duration) 00310 { 00311 assert(G2Duration > 0.0); 00312 mG2Duration = G2Duration; 00313 } 00314 void CancerParameters::SetMDuration(double MDuration) 00315 { 00316 assert(MDuration > 0.0); 00317 mMDuration = MDuration; 00318 } 00319 void CancerParameters::SetMaxTransitGenerations(unsigned maxTransitGens) 00320 { 00321 mMaxTransitGenerations = maxTransitGens; 00322 } 00323 void CancerParameters::SetCryptLength(double cryptLength) 00324 { 00325 assert(cryptLength > 0.0); 00326 mCryptLength = cryptLength; 00327 } 00328 void CancerParameters::SetCryptWidth(double cryptWidth) 00329 { 00330 assert(cryptWidth > 0.0); 00331 mCryptWidth = cryptWidth; 00332 } 00333 void CancerParameters::SetSpringStiffness(double springStiffness) 00334 { 00335 assert(springStiffness > 0.0); 00336 mSpringStiffness = springStiffness; 00337 } 00338 void CancerParameters::SetDampingConstantNormal(double dampingConstantNormal) 00339 { 00340 assert(dampingConstantNormal > 0.0); 00341 mDampingConstantNormal = dampingConstantNormal; 00342 } 00343 void CancerParameters::SetDampingConstantMutant(double dampingConstantMutant) 00344 { 00345 assert(dampingConstantMutant > 0.0); 00346 mDampingConstantMutant = dampingConstantMutant; 00347 } 00348 void CancerParameters::SetBetaCatSpringScaler(double betaCatSpringScaler) 00349 { 00350 assert(betaCatSpringScaler > 0.0); 00351 mBetaCatSpringScaler = betaCatSpringScaler; 00352 } 00353 void CancerParameters::SetApoptosisTime(double apoptosisTime) 00354 { 00355 assert(apoptosisTime > 0.0); 00356 mApoptosisTime = apoptosisTime; 00357 } 00358 void CancerParameters::SetDivisionRestingSpringLength(double divisionRestingSpringLength) 00359 { 00360 assert(divisionRestingSpringLength<=1.0); 00361 assert(divisionRestingSpringLength>=0.0); 00362 00363 mDivisionRestingSpringLength = divisionRestingSpringLength; 00364 } 00365 void CancerParameters::SetDivisionSeparation(double divisionSeparation) 00366 { 00367 assert(divisionSeparation<=1.0); 00368 assert(divisionSeparation>=0.0); 00369 mDivisionSeparation = divisionSeparation; 00370 } 00371 void CancerParameters::SetHepaOneCellHypoxicConcentration(double hepaOneCellHypoxicConcentration) 00372 { 00373 assert(hepaOneCellHypoxicConcentration<=1.0); 00374 assert(hepaOneCellHypoxicConcentration>=0.0); 00375 mHepaOneCellHypoxicConcentration = hepaOneCellHypoxicConcentration; 00376 } 00377 void CancerParameters::SetHepaOneCellQuiescentConcentration(double hepaOneCellQuiescentConcentration) 00378 { 00379 assert(hepaOneCellQuiescentConcentration<=1.0); 00380 assert(hepaOneCellQuiescentConcentration>=0.0); 00381 mHepaOneCellQuiescentConcentration = hepaOneCellQuiescentConcentration; 00382 } 00383 void CancerParameters::SetWntTransitThreshold(double wntThreshold) 00384 { 00385 assert(wntThreshold<=1.0); 00386 assert(wntThreshold>=0.0); 00387 mWntTransitThreshold = wntThreshold; 00388 } 00389 void CancerParameters::SetWntStemThreshold(double wntThreshold) 00390 { 00391 assert(wntThreshold<=1.0); 00392 assert(wntThreshold>=0.0); 00393 mWntStemThreshold = wntThreshold; 00394 } 00395 void CancerParameters::SetTopOfLinearWntConcentration(double top) 00396 { 00397 assert(top > 0.0); 00398 assert(top <= 1.0); 00399 mTopOfLinearWntConcentration = top; 00400 } 00401 void CancerParameters::SetCriticalHypoxicDuration(double criticalHypoxicDuration) 00402 { 00403 assert(criticalHypoxicDuration>=0.0); 00404 mCriticalHypoxicDuration = criticalHypoxicDuration; 00405 } 00406 void CancerParameters::SetHepaOneParameters() 00407 { 00408 mStemCellG1Duration = mHepaOneCellG1Duration; 00409 } 00410 void CancerParameters::SetCryptProjectionParameterA(double cryptProjectionParameterA) 00411 { 00412 assert(cryptProjectionParameterA>=0.0); 00413 mCryptProjectionParameterA = cryptProjectionParameterA; 00414 } 00415 void CancerParameters::SetCryptProjectionParameterB(double cryptProjectionParameterB) 00416 { 00417 assert(cryptProjectionParameterB>=0.0); 00418 mCryptProjectionParameterB = cryptProjectionParameterB; 00419 } 00420 void CancerParameters::SetApoptoticSpringTensionStiffness(double apoptoticSpringTensionStiffness) 00421 { 00422 assert(apoptoticSpringTensionStiffness>=0.0); 00423 mApoptoticSpringTensionStiffness = apoptoticSpringTensionStiffness; 00424 } 00425 void CancerParameters::SetApoptoticSpringCompressionStiffness(double apoptoticSpringCompressionStiffness) 00426 { 00427 assert(apoptoticSpringCompressionStiffness>=0.0); 00428 mApoptoticSpringCompressionStiffness = apoptoticSpringCompressionStiffness; 00429 } 00430 void CancerParameters::SetWntChemotaxisStrength(double wntChemotaxisStrength) 00431 { 00432 assert(wntChemotaxisStrength>=0.0); 00433 mWntChemotaxisStrength = wntChemotaxisStrength; 00434 } 00435 void CancerParameters::SetSymmetricDivisionProbability(double symmetricDivisionProbability) 00436 { 00437 assert(symmetricDivisionProbability<=1.0); 00438 assert(symmetricDivisionProbability>=0.0); 00439 mSymmetricDivisionProbability = symmetricDivisionProbability; 00440 } 00441 void CancerParameters::SetAreaBasedDampingConstantParameter(double areaBasedDampingConstantParameter) 00442 { 00443 assert(areaBasedDampingConstantParameter>=0.0); 00444 mAreaBasedDampingConstantParameter = areaBasedDampingConstantParameter; 00445 } 00446 void CancerParameters::SetMatureCellTargetArea(double matureCellTargetArea) 00447 { 00448 assert(matureCellTargetArea>=0.0); 00449 mMatureCellTargetArea = matureCellTargetArea; 00450 } 00451 void CancerParameters::SetDeformationEnergyParameter(double deformationEnergyParameter) 00452 { 00453 mDeformationEnergyParameter = deformationEnergyParameter; 00454 } 00455 void CancerParameters::SetMembraneSurfaceEnergyParameter(double membraneSurfaceEnergyParameter) 00456 { 00457 mMembraneSurfaceEnergyParameter = membraneSurfaceEnergyParameter; 00458 } 00459 void CancerParameters::SetCellCellAdhesionEnergyParameter(double cellCellAdhesionEnergyParameter) 00460 { 00461 mCellCellAdhesionEnergyParameter = cellCellAdhesionEnergyParameter; 00462 } 00463 void CancerParameters::SetCellBoundaryAdhesionEnergyParameter(double cellBoundaryAdhesionEnergyParameter) 00464 { 00465 mCellBoundaryAdhesionEnergyParameter = cellBoundaryAdhesionEnergyParameter; 00466 }