32 mSteadyStateResolution(1.0e-9),
43 mSteadyStateResolution(src.mSteadyStateResolution),
138 size_t numReacs = reacs.
size();
145 const CMetab * pMetabolite;
146 C_FLOAT64 balance_i, balance_j, BContrib;
164 for (k = 0; k < numReacs; k++)
167 reacs[k]->getChemEq().getBalances();
173 for (itRow = Balances.
begin(); itRow != itEnd; ++itRow)
175 pMetabolite = (*itRow)->getMetabolite();
180 balance_i = (*itRow)->getMultiplicity();
185 for (itColumn = Balances.
begin(); itColumn != itEnd; ++itColumn)
187 pMetabolite = (*itColumn)->getMetabolite();
192 balance_j = (*itColumn)->getMultiplicity();
197 BContrib = ParticleFlux[k] * balance_i * balance_j;
222 for (; pA != pAEnd; ++pA, ++pMatrix)
226 if (!finite(*pA) && !isnan(*pA))
238 C_INT lda = n > 1 ? n : 1;
246 vs_A.
resize((
size_t)ldvs_A, (
size_t)ldvs_A);
276 lwork = (
C_INT) work[0];
277 work.
resize((
size_t)lwork);
313 if (!finite(At[j][i]) && !isnan(At[j][i]))
334 vs_At.
resize((
size_t)ldvs_At, (
size_t)ldvs_At);
364 lwork = (
C_INT) work[0];
365 work.
resize((
size_t)lwork);
398 D.
resize((
size_t)n, (
size_t)n);
416 C_INT BMatrixReduced_transformed_d = n;
417 BMatrixReduced_transformed.
resize((
size_t)n, (
size_t)n);
430 BMatrixReduced_transformed.
array(),
431 &BMatrixReduced_transformed_d);
458 BMatrixReduced_transformed.
array(),
476 D.
resize((
size_t)n, (
size_t)n);
486 BMatrixReduced_transformed.
array(),
528 C_INT numDependentMetabs = numReactionMetabs - numIndependentMetabs;
532 mL.
resize((
size_t)numReactionMetabs, (
size_t)numIndependentMetabs);
535 for (i = 0; i < numIndependentMetabs; i++)
mL[(
size_t)i][(size_t)i] = 1.0;
537 for (i = 0; i < numDependentMetabs; i++)
538 for (j = 0; j < numIndependentMetabs; j++)
539 mL[(
size_t)i + (size_t)numIndependentMetabs][(
size_t)j] = mL0[(size_t)i][(
size_t)j];
542 D.
resize((
size_t)numIndependentMetabs, (
size_t)numReactionMetabs);
554 &numIndependentMetabs,
555 &numIndependentMetabs,
558 &numIndependentMetabs,
560 &numIndependentMetabs,
577 &numIndependentMetabs,
582 &numIndependentMetabs,
705 for (; it != end; ++it)
713 size_t numReacs = reacs.
size();
716 for (i = 0; i < numReacs; i++)
719 if (reacs[i]->isReversible() != 0)
721 CCopasiMessage(
CCopasiMessage::ERROR,
"At least one reaction is reversible. That means it is not possible to calculate the LNA. \nYou can use \"Tools|Convert to irreversible\" which will split the reversible reactions \n into two irreversible reactions. However you should check the kinetics afterwards.");
CArrayAnnotation * mCovarianceMatrixReducedAnn
void calculateCovarianceMatrixFull()
CMatrix< C_FLOAT64 > mCovarianceMatrix
C_FLOAT64 mSteadyStateResolution
CLNAMethod(const CCopasiContainer *pParent=NULL)
int dtrsyl_(char *trana, char *tranb, integer *isgn, integer *m, integer *n, doublereal *a, integer *lda, doublereal *b, integer *ldb, doublereal *c__, integer *ldc, doublereal *scale, integer *info)
virtual bool elevateChildren()
virtual size_t size() const
C_INT32 load(CReadConfig &configBuffer)
const CVector< C_FLOAT64 > & getParticleFlux() const
virtual size_t numRows() const
virtual void resizeAllMatrices()
void calculateJacobianX(CMatrix< C_FLOAT64 > &jacobianX, const C_FLOAT64 &derivationFactor, const C_FLOAT64 &resolution)
CLNAMethod::EVStatus mEVStatus
void resize(size_t size, const bool ©=false)
static CLNAMethod * createMethod(CCopasiMethod::SubType subType=CCopasiMethod::linearNoiseApproximation)
void setDescription(const std::string &s)
size_t getNumODEMetabs() const
void setEigenValueStatus(CLNAMethod::EVStatus status)
virtual bool isValidProblem(const CCopasiProblem *pProblem)
const CModel * getModel() const
std::vector< CType * >::const_iterator const_iterator
size_t getNumDependentReactionMetabs() const
CMatrix< C_FLOAT64 > mCovarianceMatrixReduced
void setCopasiVector(size_t d, const CCopasiContainer *v)
int dgemm_(char *transa, char *transb, integer *m, integer *n, integer *k, doublereal *alpha, doublereal *a, integer *lda, doublereal *b, integer *ldb, doublereal *beta, doublereal *c, integer *ldc)
CMatrix< C_FLOAT64 > mBMatrixReduced
virtual bool isValidProblem(const CCopasiProblem *pProblem)
virtual void resize(size_t rows, size_t cols, const bool ©=false)
size_t getNumIndependentReactionMetabs() const
CMatrix< C_FLOAT64 > mJacobianReduced
void setMode(size_t d, Mode m)
CCopasiVectorNS< CCompartment > & getCompartments()
void setDimensionDescription(size_t d, const std::string &s)
virtual size_t getIndex(const CCopasiObject *pObject) const
void setModel(CModel *model)
size_t getNumAssignmentMetabs() const
void initializeParameter()
int calculateCovarianceMatrixReduced()
void setSteadyStateStatus(CSteadyStateMethod::ReturnCode SSStatus)
virtual size_t size() const
CCopasiVectorNS< CReaction > & getReactions()
CSteadyStateMethod::ReturnCode mSSStatus
int dgees_(char *jobvs, char *sort, L_fp select, integer *n, doublereal *a, integer *lda, integer *sdim, doublereal *wr, doublereal *wi, doublereal *vs, integer *ldvs, doublereal *work, integer *lwork, logical *bwork, integer *info)
void setSteadyStateResolution(C_FLOAT64 factor)
const CLinkMatrix & getL0() const
const CModelEntity::Status & getStatus() const
const CCopasiVector< CMetab > & getMetabolitesX() const
virtual size_t numCols() const
CArrayAnnotation * mCovarianceMatrixAnn
CArrayAnnotation * mBMatrixReducedAnn
CModel * getModel() const