Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problems gapfilling with CPLEX and Gurobi #185

Closed
Brunokemon opened this issue Jun 27, 2023 · 4 comments
Closed

Problems gapfilling with CPLEX and Gurobi #185

Brunokemon opened this issue Jun 27, 2023 · 4 comments

Comments

@Brunokemon
Copy link

Hi! Wonderful tool you guys created. Really nice!

I just had this recent problem when I tried gapfilling the AGORA2 sbml models for the medium M9.

I tried running the following command

$ carve  bacteria.faa --gapfill M9 --mediadb media.tsv --universe-file bacteria.xml

Traceback (most recent call last):
File ".local/bin/carve", line 8, in
sys.exit(main())
File ".local/bin/carveme/cli/carve.py", line 357, in main
maincall(
File ".local/bin/carveme/cli/carve.py", line 204, in maincall
model = carve_model(universe_model, scores, inplace=(not gapfill), default_score=default_score,
File ".local/bin/carveme/reconstruction/carving.py", line 231, in carve_model
sol = minmax_reduction(model, scores, default_score=default_score, uptake_score=uptake_score, soft_score=soft_score,
File ".local/bin/carveme/reconstruction/carving.py", line 121, in minmax_reduction
solver.update()
File ".local/bin/reframed/solvers/cplex_solver.py", line 216, in update
self.add_constraints(constr_ids, lhs, senses, rhs)
File ".local/bin/reframed/solvers/cplex_solver.py", line 141, in add_constraints
self.problem.linear_constraints.add(lin_expr=exprs,
File "/CPLEX/cplex/python/3.10/x86-64_linux/cplex/_internal/_subinterfaces.py", line 1273, in add
return self._add_iter(self.get_num, self._add,
File "/CPLEX/cplex/python/3.10/x86-64_linux/cplex/_internal/_baseinterface.py", line 41, in _add_iter
addfun(*args, **kwargs)
File "/CPLEX/cplex/python/3.10/x86-64_linux/cplex/_internal/_subinterfaces.py", line 1199, in _add
with CPX_PROC.chbmatrix(lin_expr, self._cplex._env_lp_ptr,
File "/usr/lib64/python3.10/contextlib.py", line 135, in enter
return next(self.gen)
File "/CPLEX/cplex/python/3.10/x86-64_linux/cplex/_internal/_procedural.py", line 168, in chbmatrix
mat = Pylolmat_to_CHBmat(lolmat, env_lp_ptr, r_c)
File "/CPLEX/cplex/python/3.10/x86-64_linux/cplex/_internal/_procedural.py", line 177, in Pylolmat_to_CHBmat
return CR.Pylolmat_to_CHBmat(lolmat, env_lp_ptr, r_c)
File "/CPLEX/cplex/python/3.10/x86-64_linux/cplex/_internal/_pycplex.py", line 1632, in Pylolmat_to_CHBmat
return _pycplex_platform.Pylolmat_to_CHBmat(lolmat, env_lp_ptr, py_row_col)
ValueError: 1210: Invalid name -- 'R_ATPM'

This error seems to be this one in CPLEX but I'm not sure how to solve it.

So I tried switching from CPLEX to Gurobi adding --solver gurobi to see if works.

$ carve  bacteria.faa --solver gurobi --gapfill M9 --mediadb media.tsv --universe-file bacteria.xml

Traceback (most recent call last):
File ".local/bin/carve", line 8, in
sys.exit(main())
File ".local/bin/carveme/cli/carve.py", line 349, in main
set_default_solver(args.solver)
File ".local/bin/reframed/solvers/init.py", line 82, in set_default_solver
raise RuntimeError(f"Solver {solvername} not available.")
RuntimeError: Solver gurobi not available.

I tried doing as suggested in issue 181 to no avail, then I tried updating the reframed solvers folder from the github repo but to no avail too.
I checked and Gurobi and gurobipy are working fine.

So I'm not sure what to try now, which is the reason for me to be seeking your help now with this.
Thanks in advance.

@cdanielmachado
Copy link
Owner

Why are you adding this option: --universe-file bacteria.xml ?

@Brunokemon
Copy link
Author

Brunokemon commented Jun 28, 2023

That is the AGORA2 sbml model. I thought that would set the model as basis for the gapfilling.
Is it wrong? Should it be done in another way?

@cdanielmachado
Copy link
Owner

Yep. For gapfilling you should use the gapfill command instead 🙂

@Brunokemon
Copy link
Author

Strangely enough the first time I tried using gapfill it didn't work, but now I tried again and it worked. Must've been something I did wrong the first time 😓. Thank you for your help! 😁

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants