00001
00002
00004
00005 #if !defined(AFX_SINGLENETWORKMINIMIZABLE_H__8F38BFB2_7B39_41DB_A979_3A20AD69180D__INCLUDED_)
00006 #define AFX_SINGLENETWORKMINIMIZABLE_H__8F38BFB2_7B39_41DB_A979_3A20AD69180D__INCLUDED_
00007
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif // _MSC_VER > 1000
00011
00012 #include <iomanip>
00013 #include <cmath>
00014 #include <assert.h>
00015 #include "SubjectObserver.h"
00016 #include "NLLSMinimizable.h"
00017 #include "Experiment.h"
00018 #include "ReactionMover.h"
00019 #include "CellAverageObserver.h"
00020 #include "ConversionFactor.h"
00021
00022 class SingleNetworkMinimizable : public NLLSMinimizable, public Subject
00023 {
00024 public:
00025
00026 SingleNetworkMinimizable();
00027 SingleNetworkMinimizable(Experiment *experiment,CReactionMover *reactionMover,bool rateConstantsOptimizable,bool initialChemConcOptimizable,bool logsInObjectiveFunction,double timeSeriesWeight,double rateConstantsWeight,double initialChemConcWeight,int nCells=1);
00028
00029 void Initialize(Experiment *experiment, CReactionMover *reactionMover, int nCells, bool rateConstantsOptimizable, bool initialChemConcOptimizable, bool logsInObjectiveFunction, double timeSeriesWeight, double rateConstantsWeight, double initialChemConcWeight);
00030 virtual ~SingleNetworkMinimizable();
00031
00032 Experiment *GetExperiment() {return experiment;}
00033 CellAverageObserver *GetCellObserver() {return cellObserver;}
00034 int GetNCells() {return nCells;}
00035 bool GetRateConstantsOptimizable() const {return rateConstantsOptimizable;}
00036 bool GetInitialChemConcOptimizable() const {return initialChemConcOptimizable;}
00037 bool GetLogsInObjectiveFunction() const {return logsInObjectiveFunction;}
00038 double GetTimeSeriesWeight() const {return timeSeriesWeight;}
00039 double GetRateConstantsWeight() const {return rateConstantsWeight;}
00040 double GetInitialChemConcWeight() const {return initialChemConcWeight;}
00041 void SetTimeSeriesWeight(double timeSeriesWeight) {this->timeSeriesWeight = timeSeriesWeight;}
00042 void SetRateConstantsWeight(double rateConstantsWeight) {this->rateConstantsWeight = rateConstantsWeight;}
00043 void SetInitialChemConcWeight(double initialChemConcWeight) {this->initialChemConcWeight = initialChemConcWeight;}
00044
00045 double GetParameter(int parIndex);
00046
00047 int GetNParameters();
00048 double ComputeResiduals(double *parameters);
00049 CConversionFactor *GetConversionFactor(int factorIndex) {return m_pConversionFactors[factorIndex];}
00050 virtual double ComputeES(double *parameters, double T);
00051 virtual double EntropyShift(double T);
00052 virtual double F(double *parameters, double T);
00053 virtual double F0(double *parameters, double T);
00054 int GetNBFactors() {return m_iNBFactors;}
00055 private:
00056 bool rateConstantsOptimizable;
00057 bool initialChemConcOptimizable;
00058 bool logsInObjectiveFunction;
00059 Experiment *experiment;
00060 CReactionMover *reactionMover;
00061 CellAverageObserver *cellObserver;
00062 int nCells;
00063 double timeSeriesWeight;
00064 double rateConstantsWeight;
00065 double initialChemConcWeight;
00066 double *initialNetworkData;
00067 double *currentNetworkData;
00068 std::vector<CConversionFactor *> m_pConversionFactors;
00069
00070 int m_iNBFactors;
00071 };
00072
00073 #endif // !defined(AFX_SINGLENETWORKMINIMIZABLE_H__8F38BFB2_7B39_41DB_A979_3A20AD69180D__INCLUDED_)