Modernize Linear Program solver interface in dingo - GeomScale/gsoc24 GitHub Wiki

Overview

This project will improve Linear Program (LP) solver interface in GeomScale's Python package dingo. It will provide open-source efficient implementations for solving the Linear Programs required by dingo's preprocessing methods. The project is expected to highly improve the accessibility of the preprocessing methods for a metabolic network with dingo. Thus, that will be an important contribution that will allow researchers in Systems Biology to access those methods.

Related work

dingo needs to solve LPs to simplify the convex polytope that corresponds to a metabolic network and to run necessary subroutines needed in by the MCMC sampling methods. In particular, it solves LPs to find the redundant facets of a polytope, to compute the largest inscribed ball of a polytope and to implement FBA and FVA methods to analyze a metabolic network. Right now dingo uses the Python interface of gurobi to solve linear programs which requires a license at hand by the user.

Details of your coding project

The contributor will have to replace gurobi with optlang Python library to solve the LPs needed. The interface can be more modern and modular as many different solvers can be then used through optlang's interface (such as cplex, gurobipy, scipy).

Difficulty: Easy

Size

Medium (175 hours)

Skills

  • Required: Python, Linear programming theory
  • Preferred: Experience with mathematical software is a plus

Expected impact

This is fundamental for dingo, since it will enhance it with several LP solvers and more importantly it will liberate it from the use of proprietary software like gurobi.

Mentors

  • Vissarion Fisikopoulos <vissarion.fisikopoulos at gmail.com> is an international expert in mathematical software, computational geometry, and optimization, and has previous GSoC mentoring experience with Boost C++ libraries (2016-2017) and the R-project (2017).

  • Elias Tsigaridas <elias.tsigaridas at inria.fr> is an expert in computational nonlinear algebra and geometry with experience in mathematical software. He has contributed to the implementation, in C and C++, of several solving algorithms for various open-source computer algebra libraries and has previous GSoC mentoring experience with the R-project (2019).

Contributors, please contact the first and the third mentor after completing at least one of the tests below.

Tests

Contributors, please do one or more of the following tests before contacting the mentors.

  • Easy: compile and run dingo. Sample from the flux space of e_coli.
  • Medium: Compare the run-times of optlang with gurobi (or other open-source libraries like scipy if you d not have a gurobi license)
  • Hard: Write Python code to compute the largest ball of a polytope using any open source library of choice.

Solutions of tests

Students, please post a link to your test results here.

  • EXAMPLE STUDENT 1 NAME, LINK TO GITHUB PROFILE, LINK TO TEST RESULTS.