opencobra / cobratoolbox

The COnstraint-Based Reconstruction and Analysis Toolbox. Documentation:
https://opencobra.github.io/cobratoolbox
Other
247 stars 311 forks source link

Error when running chrrSampler, "x0 not interior" #2069

Open Bastien-N opened 1 year ago

Bastien-N commented 1 year ago

Good afternoon,

I have run into a problem with the chrrSampler, more specifically the rounding part of it. The model I am using is the latest version of the Human1 model (https://github.com/SysBioChalmers/Human-GEM).

The exact error is: " Error using mve_solver_cobra (line 29) x0 not interior

Error in mve_run_cobra (line 32) [x,E2,converged] = mve_solver_cobra(A,b,x0,maxiter,tol2,reg); %Ben

Error in preprocess (line 255) [T_shift, Tmve,converged] = mve_run_cobra(P.A,P.b, x0,reg);

Error in chrrSampler(line 110) [roundedPolytope] = preprocess(P,options); "

From the tests I was able to do, it seems that somehow the getCCcenter function defined in preprocess does not return a point that is interior to the polytope, but it does not give an error either.

I also have:

I hereby confirm that I have:

rmtfleming commented 1 year ago

Hi Bastian, is exist('solveCobraLP') == 2 on your machine? It may not be finding an x0 in the polytope due to numerical issues. Are any of your bounds very close together? e.g. ub - lb < 1e-6 ?

Try 'RHMC' as the sampler, that is another option.

Regards,

Ronan

On Mon, 14 Nov 2022 at 12:03, Bastien-N @.***> wrote:

Good afternoon,

I have run into a problem with the chrrSampler, more specifically the rounding part of it. The model I am using is the latest version of the Human1 model ( https://github.com/SysBioChalmers/Human-GEM).

The exact error is: " Error using mve_solver_cobra (line 29) x0 not interior

Error in mve_run_cobra (line 32) [x,E2,converged] = mve_solver_cobra(A,b,x0,maxiter,tol2,reg); %Ben

Error in preprocess (line 255) [T_shift, Tmve,converged] = mve_run_cobra(P.A,P.b, x0,reg);

Error in chrrSampler(line 110) [roundedPolytope] = preprocess(P,options); "

From the tests I was able to do, it seems that somehow the getCCcenter function defined in preprocess does not return a point that is interior to the polytope, but it does not give an error either.

I also have:

  • Tried a fresh installation of matlab, gurobi, and cobraToolbox on different hardware. This did not work.
  • Tried sampling a different smaller model, which went fine.

I hereby confirm that I have:

  • Tried to solve the issue on my own
  • Retried to run my code with the latest version of The COBRA Toolbox
  • Checked that a similar issue has not already been opened

— Reply to this email directly, view it on GitHub https://github.com/opencobra/cobratoolbox/issues/2069, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAQMEOQEAU4IP74I4DK3NKLWIIS7LANCNFSM6AAAAAAR7X57AE . You are receiving this because you are subscribed to this thread.Message ID: @.***>

--

Mr. Ronan MT Fleming B.V.M.S. Dip. Math. Ph.D.

Associate Professor, School of Medicine, National University of Ireland, Galway. & Assistant Professor, Division of Systems Biomedicine and Pharmacology, Leiden Academic Centre for Drug Research, Faculty of Science, Leiden University. https://www.universiteitleiden.nl/en/staffmembers/ronan-fleming

Peer-reviewed publications: https://goo.gl/FZPG23 Mobile: +353 852 109 806 Skype: ronan.fleming

(This message is confidential and may contain privileged information. It is intended for the named recipient only. If you receive it in error please notify me and permanently delete the original message and any copies.)

Bastien-N commented 1 year ago

Hi Ronan,

Yes exist('solveCobraLP') == 2 is true. As for the numerical precision I suspect this is where the issue arise. However I struggle finding a solution as the input model does not have such small ranges. The smallest reaction range is 0.0039. From teh basic polytope of my model I can actually get an interior point.

However, after the first few transformations (restricting to the degenerate subspace, scaling by row_norms) most of P.A and P.b are populated by values in the order of 1e-16. After gmscale this is even worse.

As for RHMC, it seems from initial tests that it is much slower than CHRR, which becomes an issue due to the scale of the model.

Best, Bastien