[PATCH 1/2] gnu: Add python-pydicom.

OpenSubmitted by Antero Mejr.
Details
2 participants
  • Antero Mejr
  • Maxime Devos
Owner
unassigned
Severity
normal
A
A
Antero Mejr wrote on 15 Jun 03:27 +0200
(address . guix-patches@gnu.org)
20220615012714.1414-1-antero@mailbox.org
* gnu/packages/python-science.scm (python-pydicom): New variable.
---
gnu/packages/python-science.scm | 37 +++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)

Toggle diff (61 lines)
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 0684826a6c..08359515d5 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
 ;;; Copyright © 2022 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;; Copyright © 2022 Eric Bavier <bavier@posteo.net>
+;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,6 +47,7 @@ (define-module (gnu packages python-science)
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages image-processing)
   #:use-module (gnu packages machine-learning)
   #:use-module (gnu packages maths)
@@ -1367,3 +1369,38 @@ (define-public python-gpy
 Python, from the Sheffield machine learning group.  GPy implements a range of
 machine learning algorithms based on GPs.")
     (license license:bsd-3)))
+
+(define-public python-pydicom
+  (package
+    (name "python-pydicom")
+    (version "2.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pydicom/pydicom")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "18l26s53yf5j9yh2zwq83n74qq4f2iq0cfblamsw4y9k35l1c108"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      ;; 181 failed, 2235 pass. Pulls test datasets off the web, no-go for Guix
+      #:tests? #f
+      #:phases
+      #~(modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (chdir "pydicom/tests")
+               (invoke "python3" "-m" "pytest")))))))
+    (native-inputs (list python-pytest))
+    (inputs (list gdcm libjpeg-turbo))
+    (propagated-inputs (list python-numpy python-pillow))
+    (home-page "https://github.com/pydicom/pydicom")
+    (synopsis "Pure Python package for reading and writing DICOM data")
+    (description "pydicom provides a pure Python package for reading and
+writing DICOM medical imaging data. It lets developers read, modify and write
+DICOM data in a pythonic way.")
+    (license license:expat)))
-- 
2.36.1
M
M
Maxime Devos wrote on 15 Jun 09:59 +0200
791d27fa1be5e3c0c2410fbe823c63b73f85a19e.camel@telenet.be
Antero Mejr via Guix-patches via schreef op wo 15-06-2022 om 01:27
[+0000]:
Toggle quote (3 lines)
> +      ;; 181 failed, 2235 pass. Pulls test datasets off the web, no-go for Guix
> +      #:tests? #f

How about only disabling tests that download from the web?
Are all of these test failures due to downloading from the web or are
there some other tests too?

Toggle quote (2 lines)
> + (synopsis "Pure Python package for reading and writing DICOM data")

Unlike some language-specific package managers, Guix supports using dependents
from other languages without any complications, so no need to mention ‘Pure’
here.

Toggle quote (2 lines)
> + pydicom provides a pure Python package

It doesn't provide a Python package, it is a Python package, especially if pydicom
is replaced by @code{python-pydicom}.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYqmRfBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7jfGAP9r2DRPGnsjFnv9tH9Yf5RIkJ+3
LdcnB4aoNo8orcR6ugEAoisHhnq0HELfiNXAtjY0U6e/S3j2FrPgP3+bBshGNQE=
=sS0O
-----END PGP SIGNATURE-----


A
A
Antero Mejr wrote on 15 Jun 17:39 +0200
[PATCH 2/2] gnu: Add gdcm.
(address . 55989@debbugs.gnu.org)
20220615153953.32070-2-antero@mailbox.org
Here's the updated GDCM patch, which is a dependency.

* gnu/packages/bioinformatics.scm (gdcm): New variable.
---
gnu/packages/bioinformatics.scm | 37 +++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)

Toggle diff (54 lines)
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 87df6c3515..2c9f3b4a6f 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -23,6 +23,7 @@
 ;;; Copyright © 2021 Hong Li <hli@mdc-berlin.de>
 ;;; Copyright © 2021, 2022 Simon Tournier <zimon.toutoune@gmail.com>
 ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
+;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -15745,3 +15746,39 @@ (define-public wfmash
 module capable of computing base-level alignments for very large sequences.")
     (home-page "https://github.com/ekg/wfmash")
     (license license:expat)))
+
+(define-public gdcm
+  (package
+    (name "gdcm")
+    (version "2.8.9")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/malaterre/gdcm")
+                    (commit (string-append "v" version))
+                    (recursive? #t)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0v8ggym2kz26rwyvsyy3mg7j5jbvd1pz5cwchh29iyclagf0l9ry"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      #~(list "-DGDCM_BUILD_TESTING=true"
+              (string-append "-DCMAKE_CTEST_ARGUMENTS=-E;"
+                             "'TestFileMetaInformation"
+                             "|TestElement2"
+                             "|TestSCUValidation"
+                             "|TestEcho"
+                             "|TestFind'"))))
+    (home-page "http://gdcm.sourceforge.net/wiki/index.php/Main_Page")
+    (synopsis "Grassroots DICOM library")
+    (description
+     "Grassroots DICOM (GDCM) is an implementation of the DICOM
+standard designed to be open source so that researchers may access clinical
+data directly. GDCM includes a file format definition and a network
+communications protocol, both of which should be extended to provide a full set
+of tools for a researcher or small medical imaging vendor to interface with an
+existing medical database.")
+    (license license:bsd-2)))
-- 
2.36.1
A
A
Antero Mejr wrote on 15 Jun 17:39 +0200
[PATCH 1/2] gnu: Add python-pydicom.
(address . 55989@debbugs.gnu.org)
20220615153953.32070-1-antero@mailbox.org
Updated to add tests that don't use web resources.
Tested using the example code, reading/writing a dicom file and accessing
the pixel_array using numpy.

* gnu/packages/python-science.scm (python-pydicom): New variable.
---
gnu/packages/python-science.scm | 51 +++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)

Toggle diff (75 lines)
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 0684826a6c..d26d3bc9b4 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
 ;;; Copyright © 2022 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;; Copyright © 2022 Eric Bavier <bavier@posteo.net>
+;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,6 +47,7 @@ (define-module (gnu packages python-science)
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages image-processing)
   #:use-module (gnu packages machine-learning)
   #:use-module (gnu packages maths)
@@ -1367,3 +1369,52 @@ (define-public python-gpy
 Python, from the Sheffield machine learning group.  GPy implements a range of
 machine learning algorithms based on GPs.")
     (license license:bsd-3)))
+
+(define-public python-pydicom
+  (package
+    (name "python-pydicom")
+    (version "2.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pydicom/pydicom")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "18l26s53yf5j9yh2zwq83n74qq4f2iq0cfblamsw4y9k35l1c108"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (chdir "pydicom/tests")
+               (invoke "python3" "-m" "pytest" "-k" ;skip tests using web data
+                       (string-append
+                        "not test_jpeg_ls_pixel_data.py"
+                        " and not test_gdcm_pixel_data.py"
+                        " and not test_pillow_pixel_data.py"
+                        " and not test_rle_pixel_data.py"
+                        " and not Test_JPEG_LS_Lossless_transfer_syntax"
+                        " and not test_numpy_pixel_data.py"
+                        " and not test_data_manager.py"
+                        " and not test_handler_util.py"
+                        " and not test_overlay_np.py"
+                        " and not test_encoders_pydicom.py"
+                        " and not test_encaps.py"
+                        " and not test_reading_ds_with_known_tags_with_UN_VR"
+                        " and not TestDatasetOverlayArray"
+                        " and not TestReader"
+                        " and not test_filewriter.py"))))))))
+    (native-inputs (list python-pytest))
+    (inputs (list gdcm libjpeg-turbo))
+    (propagated-inputs (list python-numpy python-pillow))
+    (home-page "https://github.com/pydicom/pydicom")
+    (synopsis "Python library for reading and writing DICOM data")
+    (description "@code{python-pydicom} is a Python library for reading
+and writing DICOM medical imaging data. It lets developers read, modify and
+write DICOM data in a pythonic way.")
+    (license license:expat)))
-- 
2.36.1
A
A
Antero Mejr wrote on 15 Jun 17:40 +0200
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 55989@debbugs.gnu.org)
87bkuuc4n3.fsf@mailbox.org
Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (4 lines)
> How about only disabling tests that download from the web?
> Are all of these test failures due to downloading from the web or are
> there some other tests too?

Sure, see updated patch. I looked through the error log to confirm
that the tests were failing due to missing data. I also did an
end-to-end test of pydicom by importing it, then reading/writing
a DICOM file.

Toggle quote (8 lines)
>
>> + (synopsis "Pure Python package for reading and writing DICOM data")
>
> Unlike some language-specific package managers, Guix supports using dependents
> from other languages without any complications, so no need to mention ‘Pure’
> here.
>

OK, updated.

Toggle quote (6 lines)
>> + pydicom provides a pure Python package
>
> It doesn't provide a Python package, it is a Python package, especially if pydicom
> is replaced by @code{python-pydicom}.
>

Updated.
?