genssi-developer / GenSSI

GenSSI 2.0 - Generating Series for testing Structural Identifiability
14 stars 3 forks source link

An error in genssiOrderTableau.m #19

Open X-M-YUAN opened 1 year ago

X-M-YUAN commented 1 year ago

I am performing the structural identifiability of a model and it gives me errors. Through debugging, I found that it is related to the Mat_index in genssiOrderTableau.m:

image

It can be noticed that Mat_index contains zero. When this matrix is called by (line 291 in genssiOrderTableau.m)

image

It will return the error:

image

because in MATLAB there is not a definition of ''the 0th element of a matrix''.

Is it expected that this situation should never happen or is it an event that was not considered before?

X-M-YUAN commented 1 year ago

Note that I am using GenSSI 2.0 (not 2.0.1) on Matlab R2016b.

thomassligon commented 1 year ago

Hello X-M-YUAN, This is not expected; if the software uses an index of 0, then something is wrong. I would like to have the model so that I can use it to try to debug the code. If you don't want to put it on GitHub, you can send it to my email address tom@thomassligon.info.

thomassligon commented 1 year ago

At this point, I would like to document all changes and tests that I have made for this issue. However, I haven't published them to GitHub yet, because I hope to see a full test of the model (QMOM) that led to this issue. I have now tested all of the old models (on MATLAB R2020a) with these changes.

1) QMOM issue. This required 4 changes in Auxiliary/genssiOrderTableau.m. This looks like a bug in the original version of GenSSI that was never provoked until now. I made a second version of the changes and tested up to the place where the change was made, but then this leads to some calculations that exhaust the memory of my desktop PC (16GB). I am still looking for an opportunity to fully test this on a bigger machine. I expect to get access to a very large machine soon, but don't know if I can install MATLAB on it.

2) Polynomial models (ArabidopsisPoly, DegradationPoly, GoodwinPoly, PharmacokinteticsPoly) provoked a very small error in the use of varargin in Auxiliary/genssiPolySys.m line 23. This looks like MATLAB is doing stricter code checking in the current version. The fix is very small.

3) SBMLimporter (models BIOMD0000000003 and BIOMD0000000010). MATLAB has deprecated use of sym() for strings and character vectors, so it was necessary to replace sym() by str2sym() in SBMLimporter.m, lines 254, 261, 688. This affects all MATLAB versions after R2017. It has been fixed in ICB-DCM/importSBML, which is cloned by genSSI.

4) Problem in Transfection_4State_Transformation in genssiTransformation.m lines 131, 176 and 180. MATLAB intersect() and setdiff() require arrays, not column vectors. This was probably caused by a change in GenSSI where arrays were changed to column vectors. This is a small fix.