[PATCH] gnu: Add python-graph-tool.

  • Done
  • quality assurance status badge
Details
2 participants
  • Alexandre Hannud Abdo
  • Marius Bakke
Owner
unassigned
Submitted by
Alexandre Hannud Abdo
Severity
normal
A
A
Alexandre Hannud Abdo wrote on 23 Apr 2021 08:17
(address . guix-patches@gnu.org)
dd1dccc9c61eb6612af35544b53eb4bdda6b52c3.camel@member.fsf.org
* gnu/packages/graph.scm (python-graph-tool): New variable.
---
gnu/packages/graph.scm | 62 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)

Toggle diff (91 lines)
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index d2e4c875a1..94125ebdba 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2020 Alexander Krotov <krotov@iitp.ru>
;;; Copyright © 2020 Pierre Langlois <pierre.langlos@gmx.com>
+;;; Copyright © 2021 Alexandre Hannud Abdo <abdo@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -37,13 +38,18 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages bioconductor)
#:use-module (gnu packages bioinformatics)
+ #:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages cran)
+ #:use-module (gnu packages datastructures)
#:use-module (gnu packages gd)
+ #:use-module (gnu packages graphics)
#:use-module (gnu packages graphviz)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages maths)
#:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages ncurses)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-science)
@@ -510,3 +516,59 @@ MSCs need not be complicated to create or use. Mscgen aims to provide a simple
text language that is clear to create, edit and understand, which can also be
transformed into common image formats for display or printing.")
(license license:gpl2+)))
+
+(define-public python-graph-tool
+ (package
+ (name "python-graph-tool")
+ (version "2.37")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://downloads.skewed.de/graph-tool/graph-tool-"
+ version
+ ".tar.bz2"))
+ (sha256
+ (base32
+ "0w2i4d4zyk051zkykcg0ksngspajznwmp523hbsx50xnxc6jliyz"))))
+ (build-system gnu-build-system)
+ ;; (arguments '(#:configure-flags '("--disable-openmp")))
+ (arguments
+ `(#:configure-flags
+ (list (string-append "--with-boost="
+ (assoc-ref %build-inputs "boost"))
+ (string-append "--with-python-module-path="
+ (assoc-ref %outputs "out")
+ "/lib/python"
+ ((lambda (version)
+ (substring version 0 (string-rindex version #\.)))
+ ,(package-version
+ (car (assoc-ref
+ (package-propagated-inputs this-package)
+ "python"))))
+ "/site-packages/"))))
+ (native-inputs `(("pkg-config" ,pkg-config)
+ ("gcc-10" ,gcc-10)
+ ("ncurses" ,ncurses)))
+ (inputs `(("boost" ,boost)
+ ("expat" ,expat)
+ ("gmp" ,gmp)
+ ("cgal" ,cgal)
+ ("sparsehash" ,sparsehash)
+ ("gtk+" ,gtk+)
+ ("cairomm" ,cairomm)))
+ (propagated-inputs `(("python" ,python-wrapper)
+ ("python-scipy" ,python-scipy)
+ ("python-numpy" ,python-numpy)
+ ("python-pycairo" ,python-pycairo)
+ ("python-matplotlib" ,python-matplotlib)))
+ (synopsis "Efficient python module for analysis of graphs")
+ (description "Graph-tool is an efficient Python module for
+manipulation and statistical analysis of graphs (a.k.a. networks).
+Contrary to most other Python modules with similar functionality, the
+core data structures and algorithms are implemented in C++, making
+extensive use of template metaprogramming, based heavily on the Boost
+Graph Library. This confers it a level of performance that is
+comparable (both in memory usage and computation time) to that of a
+pure C/C++ library.")
+ (home-page "https://graph-tool.skewed.de/")
+ (license license:lgpl3+)))
M
M
Marius Bakke wrote on 13 May 2021 19:04
878s4iimzq.fsf@gnu.org
Hi Alexandre,

Alexandre Hannud Abdo <abdo@member.fsf.org> skriver:

Toggle quote (2 lines)
> * gnu/packages/graph.scm (python-graph-tool): New variable.

Thanks for the patch.

[...]

Toggle quote (16 lines)
> +(define-public python-graph-tool
> + (package
> + (name "python-graph-tool")
> + (version "2.37")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append
> + "https://downloads.skewed.de/graph-tool/graph-tool-"
> + version
> + ".tar.bz2"))
> + (sha256
> + (base32
> + "0w2i4d4zyk051zkykcg0ksngspajznwmp523hbsx50xnxc6jliyz"))))
> + (build-system gnu-build-system)
> + ;; (arguments '(#:configure-flags '("--disable-openmp")))

This comment can probably be removed?

Toggle quote (15 lines)
> + (arguments
> + `(#:configure-flags
> + (list (string-append "--with-boost="
> + (assoc-ref %build-inputs "boost"))
> + (string-append "--with-python-module-path="
> + (assoc-ref %outputs "out")
> + "/lib/python"
> + ((lambda (version)
> + (substring version 0 (string-rindex version #\.)))
> + ,(package-version
> + (car (assoc-ref
> + (package-propagated-inputs this-package)
> + "python"))))
> + "/site-packages/"))))

That's clever. :-)

(guix utils) has a handy (version-major+minor ...) procedure that can be
accessed in the unquoted context. Thus the expression above can be
simplified to:

(string-append "--with-python-module-path="
(assoc-ref %outputs "out")
"/lib/python"
,(version-major+minor
(package-version
(car (assoc-ref
(package-propagated-inputs this-package)
"python"))))
"/site-packages/")


Toggle quote (4 lines)
> + (native-inputs `(("pkg-config" ,pkg-config)
> + ("gcc-10" ,gcc-10)
> + ("ncurses" ,ncurses)))

The indentation here and below is unusual. :-)

Toggle quote (9 lines)
> + (inputs `(("boost" ,boost)
> + ("expat" ,expat)
> + ("gmp" ,gmp)
> + ("cgal" ,cgal)
> + ("sparsehash" ,sparsehash)
> + ("gtk+" ,gtk+)
> + ("cairomm" ,cairomm)))
> + (propagated-inputs `(("python" ,python-wrapper)

Python should be a regular input. It will be available in just about
any context where this package is used, and propagating it can cause
conflicts if users have custom variants in their
profile/manifests/packages.

Toggle quote (6 lines)
> + ("python-scipy" ,python-scipy)
> + ("python-numpy" ,python-numpy)
> + ("python-pycairo" ,python-pycairo)
> + ("python-matplotlib" ,python-matplotlib)))
> + (synopsis "Efficient python module for analysis of graphs")

Perhaps just 'Analyze graphs with Python' to avoid overlapping with the
description which has more detail?

Toggle quote (11 lines)
> + (description "Graph-tool is an efficient Python module for
> +manipulation and statistical analysis of graphs (a.k.a. networks).
> +Contrary to most other Python modules with similar functionality, the
> +core data structures and algorithms are implemented in C++, making
> +extensive use of template metaprogramming, based heavily on the Boost
> +Graph Library. This confers it a level of performance that is
> +comparable (both in memory usage and computation time) to that of a
> +pure C/C++ library.")
> + (home-page "https://graph-tool.skewed.de/")
> + (license license:lgpl3+)))

Otherwise LGTM. Can you send an updated patch?

TIA,
Marius
-----BEGIN PGP SIGNATURE-----

iIUEARYKAC0WIQRNTknu3zbaMQ2ddzTocYulkRQQdwUCYJ1cGQ8cbWFyaXVzQGdu
dS5vcmcACgkQ6HGLpZEUEHed7AD/cTpxTCnZQFAtynxAsowWGTxI/pgdRFDZwlab
TmWR0S0A/1XJEew7mZYu3H09xL92GvaJzUN+92JzNYzaJcoE6J0I
=D5i/
-----END PGP SIGNATURE-----

A
A
Alexandre Hannud Abdo wrote on 14 May 2021 22:47
[PATCH] gnu: Add python-graph-tool.
(address . 47966@debbugs.gnu.org)
df86ec49efaa0e5fac39b65c20ac6bf04a69b31e.camel@member.fsf.org
* gnu/packages/graph.scm (python-graph-tool): New variable.
---
gnu/packages/graph.scm | 62 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)

Toggle diff (91 lines)
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index 95506c69a9..10b1b91e41 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2020 Alexander Krotov <krotov@iitp.ru>
;;; Copyright © 2020 Pierre Langlois <pierre.langlos@gmx.com>
;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2021 Alexandre Hannud Abdo <abdo@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -38,13 +39,18 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages bioconductor)
#:use-module (gnu packages bioinformatics)
+ #:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages cran)
+ #:use-module (gnu packages datastructures)
#:use-module (gnu packages gd)
+ #:use-module (gnu packages graphics)
#:use-module (gnu packages graphviz)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages maths)
#:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages ncurses)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-science)
@@ -532,3 +538,59 @@ MSCs need not be complicated to create or use. Mscgen aims to provide a simple
text language that is clear to create, edit and understand, which can also be
transformed into common image formats for display or printing.")
(license license:gpl2+)))
+
+(define-public python-graph-tool
+ (package
+ (name "python-graph-tool")
+ (version "2.37")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://downloads.skewed.de/graph-tool/graph-tool-"
+ version
+ ".tar.bz2"))
+ (sha256
+ (base32
+ "0w2i4d4zyk051zkykcg0ksngspajznwmp523hbsx50xnxc6jliyz"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list (string-append "--with-boost="
+ (assoc-ref %build-inputs "boost"))
+ (string-append "--with-python-module-path="
+ (assoc-ref %outputs "out")
+ "/lib/python"
+ ,(version-major+minor
+ (package-version
+ (car (assoc-ref
+ (package-inputs this-package)
+ "python"))))
+ "/site-packages/"))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("gcc-10" ,gcc-10)
+ ("ncurses" ,ncurses)))
+ (inputs
+ `(("python" ,python-wrapper)
+ ("boost" ,boost)
+ ("expat" ,expat)
+ ("gmp" ,gmp)
+ ("cgal" ,cgal)
+ ("sparsehash" ,sparsehash)
+ ("gtk+" ,gtk+)
+ ("cairomm" ,cairomm)))
+ (propagated-inputs
+ `(("python-scipy" ,python-scipy)
+ ("python-numpy" ,python-numpy)
+ ("python-pycairo" ,python-pycairo)
+ ("python-matplotlib" ,python-matplotlib)))
+ (synopsis "Manipulate and analyze graphs with Python efficiently")
+ (description "Graph-tool is an efficient Python module for manipulation
+and statistical analysis of graphs (a.k.a. networks). Contrary to most other
+Python modules with similar functionality, the core data structures and
+algorithms are implemented in C++, making extensive use of template
+metaprogramming, based heavily on the Boost Graph Library. This confers it a
+level of performance that is comparable (both in memory usage and computation
+time) to that of a pure C/C++ library.")
+ (home-page "https://graph-tool.skewed.de/")
+ (license license:lgpl3+)))
A
A
Alexandre Hannud Abdo wrote on 14 May 2021 22:53
(address . 47966@debbugs.gnu.org)
63463aa70b12909df6739f2f55ee3217e4b64b77.camel@member.fsf.org
Ni! Thanks for the tips, Marius.
The new patch should have those issues fixed.
Let me know if there's anything else!
Cheers,
ale .~´
M
M
Marius Bakke wrote on 15 May 2021 19:26
8735unj4cw.fsf@gnu.org
Alexandre Hannud Abdo <abdo@member.fsf.org> skriver:

Toggle quote (2 lines)
> * gnu/packages/graph.scm (python-graph-tool): New variable.

Pushed as 5b359e4ba58daee0e08857cfe3a2296a2ac6fca6, thank you!
-----BEGIN PGP SIGNATURE-----

iIUEARYKAC0WIQRNTknu3zbaMQ2ddzTocYulkRQQdwUCYKAELw8cbWFyaXVzQGdu
dS5vcmcACgkQ6HGLpZEUEHfe6gEA1z+0osezGBuiqq7VRtdsFRSWcPfo2zxBWua0
YelFA68A/1er0/BcsnPI4D4CHrNHOPfBOluz6zArcWmOYoCo5r4B
=yzhL
-----END PGP SIGNATURE-----

Closed
?