[PATCH 0/2] Add python-slycot and python-control

  • Open
  • quality assurance status badge
Details
One participant
  • Vinicius Monego
Owner
unassigned
Submitted by
Vinicius Monego
Severity
normal
V
V
Vinicius Monego wrote on 27 Jul 14:18 +0200
(address . guix-patches@gnu.org)(name . Vinicius Monego)(address . monego@posteo.net)
cover.1722081824.git.monego@posteo.net
SLICOT is a Fortran 77 library for control computations. It was free software prior to version ~5.1 after which it became non-commercial, but seems to have been relicensed to bsd-3 in version ~5.8. It's in Debian main repo now and is the base for most Octave packages.

The build system for the fortran library is a little weird and the package would need some work. But I'm sending a package for Slycot (a Python wrapper) which forks it for a seamless integration, and then for python-control which is the main consumer of that wrapper.

Vinicius Monego (2):
gnu: Add python-slycot.
gnu: Add python-control.

gnu/packages/engineering.scm | 66 ++++++++++++++++++++++++++++++++++++
1 file changed, 66 insertions(+)


base-commit: 81904c16aed72bb8ea1449587418d2a218d0b103
--
2.39.2
V
V
Vinicius Monego wrote on 27 Jul 14:21 +0200
[PATCH 1/2] gnu: Add python-slycot.
(address . 72320@debbugs.gnu.org)(name . Vinicius Monego)(address . monego@posteo.net)
c8cf4751f884d62e86f3fa159920f1522d8729d4.1722082592.git.monego@posteo.net
* gnu/packages/engineering.scm (python-slycot): New variable.

Change-Id: If2fa334e2f9c73001570aa7eefd2e683313f1a54
---
gnu/packages/engineering.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 4e465ddb7d..688465b233 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -912,6 +912,32 @@ (define-public translate2geda
fonts to gEDA.")
(license license:gpl2+))))
+(define-public python-slycot
+ (package
+ (name "python-slycot")
+ (version "0.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "slycot" version))
+ (sha256
+ (base32 "08rwvawrcnyal66lljn2b8l9my0lzjg1d5fvykbf0v0cmnfg3v4q"))))
+ (build-system pyproject-build-system)
+ ;; Slycot uses a custom fork of slicot and does not allow to use a system
+ ;; package. We add gfortran, lapack and openblas to build it.
+ (native-inputs (list gfortran
+ python-pytest
+ python-scikit-build
+ python-scipy ; for tests
+ python-setuptools-scm))
+ (inputs (list lapack openblas))
+ (propagated-inputs (list python-numpy))
+ (home-page "https://github.com/python-control/Slycot")
+ (synopsis "Wrapper for the SLICOT control and systems library")
+ (description "This package provides a Python wrapper for the SLICOT
+control and systems library.")
+ (license license:gpl2+)))
+
(define-public libfive
(let ((commit "b1ea998d8adb3884ab52798f7388f4354145f452")
(revision "5"))

base-commit: 81904c16aed72bb8ea1449587418d2a218d0b103
--
2.39.2
V
V
Vinicius Monego wrote on 27 Jul 14:21 +0200
[PATCH 2/2] gnu: Add python-control.
(address . 72320@debbugs.gnu.org)(name . Vinicius Monego)(address . monego@posteo.net)
8c9e8078d8eb8a711229f1bece82534a6e58cdf3.1722082592.git.monego@posteo.net
* gnu/packages/engineering.scm (python-control): New variable.

Change-Id: Idc73713360c28b5e5570baedbaf4d3cde4b59b87
---
gnu/packages/engineering.scm | 40 ++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 688465b233..b082af532f 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -938,6 +938,46 @@ (define-public python-slycot
control and systems library.")
(license license:gpl2+)))
+(define-public python-control
+ (package
+ (name "python-control")
+ (version "0.10.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "control" version))
+ (sha256
+ (base32 "0lxb1dbdidgdi3w54pwv94cl15p5zglazr5j0zywfibzadkvf61c"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-matplotlib
+ python-numpy
+ python-scipy
+ python-slycot))
+ (native-inputs (list python-pytest python-pytest-timeout))
+ (home-page "https://github.com/python-control/python-control")
+ (synopsis "Python Control Systems Library")
+ (description "The Python Control Systems Library is a Python module that
+implements basic operations for analysis and design of feedback control
+systems.
+
+Features:
+
+@itemize
+@item Linear input/output systems in state-space and frequency domain
+@item Block diagram algebra: serial, parallel, feedback, and other
+interconnections
+@item Time response: initial, step, impulse
+@item Frequency response: Bode, Nyquist, and Nichols plots
+@item Control analysis: stability, reachability, observability, stability
+margins, root locus
+@item Control design: eigenvalue placement, linear quadratic regulator,
+sisotool, hinfsyn, rootlocus_pid_designer
+@item Estimator design: linear quadratic estimator (Kalman filter)
+@item Nonlinear systems: optimization-based control, describing functions,
+differential flatness
+@end itemize")
+ (license license:bsd-3)))
+
(define-public libfive
(let ((commit "b1ea998d8adb3884ab52798f7388f4354145f452")
(revision "5"))
--
2.39.2
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 72320@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 72320
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch