I'm considering rewriting some of the routines in python-control so that it will no longer depend on SLICOT. The main reasons for this are that 1) because SLICOT is written in Fortran, installation can be a pain (see several other comments in this forum); 2) SLICOT has apparently now gone closed-source; 3) most of the key functionality SLICOT provides (e.g., solving Lyapunov equations and Riccati equations) is now included in scipy.linalg, so I'm thinking this might not be too much of a pain.
Does anybody have thoughts or opinions on this?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It would be great to get some input here from Rene van Paassen, James Goppert and Roberto Bucher, since they have all been making contributions to the toolbox and working with SLICOT/slycot in various ways.
My feeling matches yours: the SLICOT interface is clunky and if we can do things in another way (especially using standard functionality in scipy) that would be preferred. The way we have things configured now, it should be possible to install python-control without using SLICOT, in which case you just lose the ability to call those functions that currently require SLICOT. So one way to approach this would be to simply start to replace functions that require SLICOT with python versions until we end up implementing everything in python. And if there is some advanced function that really requires SLICOT, we just leave that in as something that requires an optional package.
One things we should be careful about is that we don't require super recent versions of SciPy in order to run tulip-control. Do you know what versions of python and scipy are required to get the functions we will need. I think we want to maintain compatibility with python2.7 (widely used) and probably scipy0.13 or scipy0.14.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The routines I was thinking of using from scipy.linalg (specifically, solve_lyapunov, solve_continuous_are, etc) appeared in SciPy version 0.11, which was released in Sep 2012. I think it would be reasonable to require at least this version of SciPy.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm considering rewriting some of the routines in python-control so that it will no longer depend on SLICOT. The main reasons for this are that 1) because SLICOT is written in Fortran, installation can be a pain (see several other comments in this forum); 2) SLICOT has apparently now gone closed-source; 3) most of the key functionality SLICOT provides (e.g., solving Lyapunov equations and Riccati equations) is now included in scipy.linalg, so I'm thinking this might not be too much of a pain.
Does anybody have thoughts or opinions on this?
It would be great to get some input here from Rene van Paassen, James Goppert and Roberto Bucher, since they have all been making contributions to the toolbox and working with SLICOT/slycot in various ways.
My feeling matches yours: the SLICOT interface is clunky and if we can do things in another way (especially using standard functionality in scipy) that would be preferred. The way we have things configured now, it should be possible to install python-control without using SLICOT, in which case you just lose the ability to call those functions that currently require SLICOT. So one way to approach this would be to simply start to replace functions that require SLICOT with python versions until we end up implementing everything in python. And if there is some advanced function that really requires SLICOT, we just leave that in as something that requires an optional package.
One things we should be careful about is that we don't require super recent versions of SciPy in order to run tulip-control. Do you know what versions of python and scipy are required to get the functions we will need. I think we want to maintain compatibility with python2.7 (widely used) and probably scipy0.13 or scipy0.14.
The routines I was thinking of using from
scipy.linalg
(specifically,solve_lyapunov
,solve_continuous_are
, etc) appeared in SciPy version 0.11, which was released in Sep 2012. I think it would be reasonable to require at least this version of SciPy.This discussion has been moved to GitHub, since it is more of a developer's issue: https://github.com/python-control/python-control/issues/27