summaryrefslogtreecommitdiff
path: root/gnu/packages/python-science.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python-science.scm')
-rw-r--r--gnu/packages/python-science.scm53
1 files changed, 53 insertions, 0 deletions
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 376ae67570..f01a71f2d0 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -29,6 +29,7 @@
;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;; Copyright © 2024 Rick Huijzer <ikbenrickhuyzer@gmail.com>
;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
+;;; Copyright © 2025 Mark Walker <mark.damon.walker@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -553,6 +554,58 @@ allows arithmetic operations between them and conversions from and to
different units.")
(license license:bsd-3)))
+(define-public python-pyzx
+ (package
+ (name "python-pyzx")
+ (version "0.9.0")
+ (source
+ (origin
+ (method git-fetch) ; no tests in PyPI
+ (uri (git-reference
+ (url "https://github.com/zxcalc/pyzx")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1bnmz08w1bmipir1wnn1k3fw64rply7891xns22qfj6yh0j1n6rj"))))
+ (build-system pyproject-build-system)
+ (arguments (list #:test-flags
+ #~(list
+ ;; Ignore long running tests
+ "--ignore=tests/long_test.py"
+ "--ignore=tests/long_scalar_test.py")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'check 'pre-check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (setenv "HOME" "/tmp")
+ ;; Matplotlib needs to be able to write its
+ ;; configuration file somewhere.
+ (setenv "MPLCONFIGDIR" "/tmp"))))))
+ (native-inputs (list python-pytest
+ python-setuptools
+ python-wheel))
+ (propagated-inputs (list python-ipywidgets
+ python-lark
+ python-numpy
+ python-pyperclip
+ python-tqdm))
+ (home-page "https://github.com/zxcalc/pyzx")
+ (synopsis "Quantum circuit rewriting and optimisation using the ZX-calculus")
+ (description
+ "PyZX is a Python tool implementing the theory of ZX-calculus for the
+creation, visualisation, and automated rewriting of large-scale quantum
+circuits. PyZX currently allows you to:
+
+@itemize
+@item Read in quantum circuits in the file format of QASM, Quipper or Quantomatic;
+@item Rewrite circuits into a pseudo-normal form using the ZX-calculus;
+@item Extract new simplified circuits from these reduced graphs;
+@item Visualise the ZX-graphs and rewrites using either Matplotlib, Quantomatic
+or as a TikZ file for use in LaTeX documents;
+@item Output the optimised circuits in QASM, QC or QUIPPER format.
+@end itemize")
+ (license license:asl2.0)))
+
(define-public python-qdldl
(package
(name "python-qdldl")