{ "diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/tmp.e71yeUaV75/b1/nibabel_2.4.1-1_i386.changes", "source2": "/srv/reproducible-results/rbuild-debian/tmp.e71yeUaV75/b2/nibabel_2.4.1-1_i386.changes", "unified_diff": null, "details": [ { "source1": "Files", "source2": "Files", "unified_diff": "@@ -1,4 +1,4 @@\n \n- 40668438b58ec309a132967ec9908366 1501100 doc extra python-nibabel-doc_2.4.1-1_all.deb\n+ 86d2b92d8040aaf42d03d1b11cce7063 1500816 doc extra python-nibabel-doc_2.4.1-1_all.deb\n 42b22a6877bfa91c2d4b7ddbb680b06f 2661764 python extra python-nibabel_2.4.1-1_all.deb\n 97821bb40ca1e7529198568d94fd6f8c 2657764 python extra python3-nibabel_2.4.1-1_all.deb\n" }, { "source1": "python-nibabel-doc_2.4.1-1_all.deb", "source2": "python-nibabel-doc_2.4.1-1_all.deb", "unified_diff": null, "details": [ { "source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2019-05-28 13:35:14.000000 debian-binary\n--rw-r--r-- 0 0 0 6220 2019-05-28 13:35:14.000000 control.tar.xz\n--rw-r--r-- 0 0 0 1494688 2019-05-28 13:35:14.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 6232 2019-05-28 13:35:14.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 1494392 2019-05-28 13:35:14.000000 data.tar.xz\n" }, { "source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [ { "source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [ { "source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [ { "source1": "./md5sums", "source2": "./md5sums", "comments": [ "Files differ" ], "unified_diff": null }, { "source1": "line order", "source2": "line order", "unified_diff": "@@ -1,17 +1,17 @@\n usr/share/doc/python-nibabel-doc/changelog.Debian.gz\n usr/share/doc/python-nibabel-doc/changelog.gz\n usr/share/doc/python-nibabel-doc/copyright\n usr/share/doc/python-nibabel-doc/html/.buildinfo\n-usr/share/doc/python-nibabel-doc/html/_downloads/01c0ddb5a01b1855aa9ab2a257e0e71b/cross_product_error.ipynb\n-usr/share/doc/python-nibabel-doc/html/_downloads/039dcaa62222d1acc2e10e4c531009f9/ata_error.ipynb.gz\n-usr/share/doc/python-nibabel-doc/html/_downloads/8e417f4c1773ba9890736796b1bc25d8/someones_epi.nii.gz\n-usr/share/doc/python-nibabel-doc/html/_downloads/91f627dc0e05cfed2c760badc0d68b0b/spm_dicom_orient.py\n-usr/share/doc/python-nibabel-doc/html/_downloads/e7e029cef54a06cf60644ab5a2646f6e/register_me.py\n-usr/share/doc/python-nibabel-doc/html/_downloads/f698b213dbfaca2fd9126e6691ac06f9/someones_anatomy.nii.gz\n+usr/share/doc/python-nibabel-doc/html/_downloads/38974bbb5af6107bf7448530b9559da2/someones_anatomy.nii.gz\n+usr/share/doc/python-nibabel-doc/html/_downloads/600038078c8a32c330fa09f5f4c66d15/spm_dicom_orient.py\n+usr/share/doc/python-nibabel-doc/html/_downloads/952c6388e9e163bd814e7d6e4ccbfdf7/register_me.py\n+usr/share/doc/python-nibabel-doc/html/_downloads/b52f0e2f73c7a60fd7fecc1c2288834b/ata_error.ipynb.gz\n+usr/share/doc/python-nibabel-doc/html/_downloads/bebbb638f579dd26e7deaead08854ab4/someones_epi.nii.gz\n+usr/share/doc/python-nibabel-doc/html/_downloads/c926129d93645beba3b0111671b34176/cross_product_error.ipynb\n usr/share/doc/python-nibabel-doc/html/_images/branch_dropdown.png\n usr/share/doc/python-nibabel-doc/html/_images/coordinate_systems-2.png\n usr/share/doc/python-nibabel-doc/html/_images/coordinate_systems-3_00.png\n usr/share/doc/python-nibabel-doc/html/_images/coordinate_systems-3_01.png\n usr/share/doc/python-nibabel-doc/html/_images/forking_button.png\n usr/share/doc/python-nibabel-doc/html/_images/illustrating_affine.png\n usr/share/doc/python-nibabel-doc/html/_images/localizer.png\n" } ] } ] } ] }, { "source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [ { "source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [ { "source1": "file list", "source2": "file list", "unified_diff": "@@ -5,26 +5,26 @@\n drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/\n -rw-r--r-- 0 root (0) root (0) 2529 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 14629 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/changelog.gz\n -rw-r--r-- 0 root (0) root (0) 3559 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/\n -rw-r--r-- 0 root (0) root (0) 230 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/.buildinfo\n drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/\n-drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/01c0ddb5a01b1855aa9ab2a257e0e71b/\n--rw-r--r-- 0 root (0) root (0) 3248 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/01c0ddb5a01b1855aa9ab2a257e0e71b/cross_product_error.ipynb\n-drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/039dcaa62222d1acc2e10e4c531009f9/\n--rw-r--r-- 0 root (0) root (0) 1965 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/039dcaa62222d1acc2e10e4c531009f9/ata_error.ipynb.gz\n-drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/8e417f4c1773ba9890736796b1bc25d8/\n--rw-r--r-- 0 root (0) root (0) 93749 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/8e417f4c1773ba9890736796b1bc25d8/someones_epi.nii.gz\n-drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/91f627dc0e05cfed2c760badc0d68b0b/\n--rw-r--r-- 0 root (0) root (0) 4378 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/91f627dc0e05cfed2c760badc0d68b0b/spm_dicom_orient.py\n-drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/e7e029cef54a06cf60644ab5a2646f6e/\n--rw-r--r-- 0 root (0) root (0) 1427 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/e7e029cef54a06cf60644ab5a2646f6e/register_me.py\n-drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/f698b213dbfaca2fd9126e6691ac06f9/\n--rw-r--r-- 0 root (0) root (0) 191428 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/f698b213dbfaca2fd9126e6691ac06f9/someones_anatomy.nii.gz\n+drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/38974bbb5af6107bf7448530b9559da2/\n+-rw-r--r-- 0 root (0) root (0) 191428 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/38974bbb5af6107bf7448530b9559da2/someones_anatomy.nii.gz\n+drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/600038078c8a32c330fa09f5f4c66d15/\n+-rw-r--r-- 0 root (0) root (0) 4378 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/600038078c8a32c330fa09f5f4c66d15/spm_dicom_orient.py\n+drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/952c6388e9e163bd814e7d6e4ccbfdf7/\n+-rw-r--r-- 0 root (0) root (0) 1427 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/952c6388e9e163bd814e7d6e4ccbfdf7/register_me.py\n+drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/b52f0e2f73c7a60fd7fecc1c2288834b/\n+-rw-r--r-- 0 root (0) root (0) 1965 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/b52f0e2f73c7a60fd7fecc1c2288834b/ata_error.ipynb.gz\n+drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/bebbb638f579dd26e7deaead08854ab4/\n+-rw-r--r-- 0 root (0) root (0) 93749 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/bebbb638f579dd26e7deaead08854ab4/someones_epi.nii.gz\n+drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/c926129d93645beba3b0111671b34176/\n+-rw-r--r-- 0 root (0) root (0) 3248 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/html/_downloads/c926129d93645beba3b0111671b34176/cross_product_error.ipynb\n drwxr-xr-x 0 root (0) root (0) 0 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_images/\n -rw-r--r-- 0 root (0) root (0) 16311 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/html/_images/branch_dropdown.png\n -rw-r--r-- 0 root (0) root (0) 23943 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_images/coordinate_systems-2.png\n -rw-r--r-- 0 root (0) root (0) 23943 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_images/coordinate_systems-3_00.png\n -rw-r--r-- 0 root (0) root (0) 31554 2019-05-28 13:35:14.000000 ./usr/share/doc/python-nibabel-doc/html/_images/coordinate_systems-3_01.png\n -rw-r--r-- 0 root (0) root (0) 13092 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/html/_images/forking_button.png\n -rw-r--r-- 0 root (0) root (0) 136815 2019-05-27 16:12:33.000000 ./usr/share/doc/python-nibabel-doc/html/_images/illustrating_affine.png\n" }, { "source1": "./usr/share/doc/python-nibabel-doc/html/coordinate_systems.html", "source2": "./usr/share/doc/python-nibabel-doc/html/coordinate_systems.html", "unified_diff": "@@ -121,16 +121,16 @@\n
\n

Introducing Someone\u00b6

\n

We have scanned someone called \u201cSomeone\u201d, and we have a two MRI images of\n their brain, a single EPI volume, and a structural scan. In general we never\n use the person\u2019s name in the image filenames, but we make an\n exception in this case:

\n \n

We can load up the EPI image to get the image data array:

\n
>>> import nibabel as nib\n >>> epi_img = nib.load('downloads/someones_epi.nii.gz')\n >>> epi_img_data = epi_img.get_fdata()\n >>> epi_img_data.shape\n (53, 61, 33)\n"
                },
                {
                  "source1": "./usr/share/doc/python-nibabel-doc/html/devel/data_pkg_uses.html",
                  "source2": "./usr/share/doc/python-nibabel-doc/html/devel/data_pkg_uses.html",
                  "unified_diff": "@@ -297,15 +297,15 @@\n >>> local_usr = dpkg.get_source('local-user')\n >>> local_usr.register(dst)\n >>> local_usr.save()\n 
\n
\n

but we wanted to be able to avoid using dpkg. To do this, there might be\n a supporting script, in the distribution directory, called register_me.py,\n-of form given in register_me.py.

\n+of form given in register_me.py.

\n
\n
\n

Using discovery sources without dpkg\u00b6

\n

The local discovery sources are ini files, so it would be easy to read and use\n these outside the dpkg system, as long as the locations of the ini files are\n well defined. Here is the code from register_me.py defining these files:

\n
import os\n"
                },
                {
                  "source1": "./usr/share/doc/python-nibabel-doc/html/dicom/dicom_orientation.html",
                  "source2": "./usr/share/doc/python-nibabel-doc/html/dicom/dicom_orientation.html",
                  "unified_diff": "@@ -363,15 +363,15 @@\n \\[\\begin{Bmatrix}k_{{1}} : \\frac{T^{1}_{{1}} - T^{N}_{{1}}}{1 - N}, & k_{{2}} : \\frac{T^{1}_{{2}} - T^{N}_{{2}}}{1 - N}, & k_{{3}} : \\frac{T^{1}_{{3}} - T^{N}_{{3}}}{1 - N}\\end{Bmatrix}\\]
\n

and therefore:

\n
\n
\n

3D affine formulae\u00b6

\n
\n \\[ \\begin{align}\\begin{aligned}\\begin{split}A_{multi} = \\left(\\begin{smallmatrix}F_{{11}} \\Delta{r} & F_{{12}} \\Delta{c} & \\frac{T^{1}_{{1}} - T^{N}_{{1}}}{1 - N} & T^{1}_{{1}}\\\\F_{{21}} \\Delta{r} & F_{{22}} \\Delta{c} & \\frac{T^{1}_{{2}} - T^{N}_{{2}}}{1 - N} & T^{1}_{{2}}\\\\F_{{31}} \\Delta{r} & F_{{32}} \\Delta{c} & \\frac{T^{1}_{{3}} - T^{N}_{{3}}}{1 - N} & T^{1}_{{3}}\\\\0 & 0 & 0 & 1\\end{smallmatrix}\\right)\\end{split}\\\\\\begin{split}A_{single} = \\left(\\begin{smallmatrix}F_{{11}} \\Delta{r} & F_{{12}} \\Delta{c} & \\Delta{s} n_{{1}} & T^{1}_{{1}}\\\\F_{{21}} \\Delta{r} & F_{{22}} \\Delta{c} & \\Delta{s} n_{{2}} & T^{1}_{{2}}\\\\F_{{31}} \\Delta{r} & F_{{32}} \\Delta{c} & \\Delta{s} n_{{3}} & T^{1}_{{3}}\\\\0 & 0 & 0 & 1\\end{smallmatrix}\\right)\\end{split}\\end{aligned}\\end{align} \\]
\n-

See derivations/spm_dicom_orient.py for the derivations and\n+

See derivations/spm_dicom_orient.py for the derivations and\n some explanations.

\n
\n
\n
\n

Working out the Z coordinates for a set of slices\u00b6

\n

We may have the problem (see e.g. Sorting files into volumes) of trying\n to sort a set of slices into anatomical order. For this we want to use\n@@ -418,15 +418,15 @@\n

This is the distance of \u2018ImagePositionPatient\u2019 along the slice direction\n cosine.

\n

The unknown $T^1$ terms pool into a constant, and the operation has the\n neat feature that, because the $n_{123}^2$ terms, by definition, sum to 1,\n the whole can be expressed as $lambda + Delta{s} d$ - i.e. it is\n equal to the slice voxel size ($Delta{s}$) multiplied by $d$,\n plus a constant.

\n-

Again, see derivations/spm_dicom_orient.py for the derivations.

\n+

Again, see derivations/spm_dicom_orient.py for the derivations.

\n
\n \n \n \n \n \n \n" }, { "source1": "./usr/share/doc/python-nibabel-doc/html/dicom/spm_dicom.html", "source2": "./usr/share/doc/python-nibabel-doc/html/dicom/spm_dicom.html", "unified_diff": "@@ -360,15 +360,15 @@\n transform $A_{spm}$ goes from (1,1,1) based voxel indices to mm. To\n get the (0, 0, 0)-based transform we want, we need to pre-apply the\n transform to take 0-based voxel indices to 1-based voxel indices:

\n
\n \\[\\begin{split}A = R L^{-1} \\left(\\begin{smallmatrix}1 & 0 & 0 & 1\\\\0 & 1 & 0 & 1\\\\0 & 0 & 1 & 1\\\\0 & 0 & 0 & 1\\end{smallmatrix}\\right)\\end{split}\\]
\n

This formula with the definitions above result in the single and multi\n slice formulae in 3D affine formulae.

\n-

See derivations/spm_dicom_orient.py for the derivations and\n+

See derivations/spm_dicom_orient.py for the derivations and\n some explanations.

\n \n
\n

Writing the voxel data\u00b6

\n

Just apply scaling and offset from \u2018RescaleSlope\u2019 and \u2018RescaleIntercept\u2019\n for each slice and write volume.

\n
\n" }, { "source1": "./usr/share/doc/python-nibabel-doc/html/neuro_radio_conventions.html", "source2": "./usr/share/doc/python-nibabel-doc/html/neuro_radio_conventions.html", "unified_diff": "@@ -154,15 +154,15 @@\n convention. If we take a slice $k$ over the third axis of the image data array\n (img_data[:, :, k]), the resulting slice will have a first array axis\n going from left to right in terms of spatial position and the second array\n axis going from posterior to anterior. If we display this image with the\n first axis going from left to right on screen and the second from bottom to\n top, it will have the subject\u2019s right towards the right of the screen, and\n anterior towards the top of the screen, as neurologists like it. Here we are\n-showing the middle slice of an image with RAS voxel axes:

\n+showing the middle slice of an image with RAS voxel axes:

\n
>>> import nibabel as nib\n >>> import matplotlib.pyplot as plt\n >>> img = nib.load('downloads/someones_anatomy.nii.gz')\n >>> # The 3x3 part of the affine is diagonal with all +ve values\n >>> img.affine\n array([[  2.75,   0.  ,   0.  , -78.  ],\n        [  0.  ,   2.75,   0.  , -91.  ],\n"
                },
                {
                  "source1": "./usr/share/doc/python-nibabel-doc/html/notebooks/index.html",
                  "source2": "./usr/share/doc/python-nibabel-doc/html/notebooks/index.html",
                  "unified_diff": "@@ -72,15 +72,15 @@\n         
\n
\n \n
\n

IPython notebooks for Nibabel project\u00b6

\n
\n

Rotation matrix orthogonality\u00b6

\n-

See ATA error calculations and Cross\n+

See ATA error calculations and Cross\n product error. You can use the IPython notebook\n viewer to view these files; copy the URL and paste into the Notebook viewer\n URL box.

\n
\n
\n \n \n" }, { "source1": "./usr/share/doc/python-nibabel-doc/html/_downloads/01c0ddb5a01b1855aa9ab2a257e0e71b/cross_product_error.ipynb", "source2": "./usr/share/doc/python-nibabel-doc/html/_downloads/c926129d93645beba3b0111671b34176/cross_product_error.ipynb", "comments": [ "Files identical despite different names" ], "unified_diff": null }, { "source1": "./usr/share/doc/python-nibabel-doc/html/_downloads/039dcaa62222d1acc2e10e4c531009f9/ata_error.ipynb.gz", "source2": "./usr/share/doc/python-nibabel-doc/html/_downloads/b52f0e2f73c7a60fd7fecc1c2288834b/ata_error.ipynb.gz", "comments": [ "Files identical despite different names" ], "unified_diff": null }, { "source1": "./usr/share/doc/python-nibabel-doc/html/_downloads/8e417f4c1773ba9890736796b1bc25d8/someones_epi.nii.gz", "source2": "./usr/share/doc/python-nibabel-doc/html/_downloads/bebbb638f579dd26e7deaead08854ab4/someones_epi.nii.gz", "comments": [ "Files identical despite different names" ], "unified_diff": null }, { "source1": "./usr/share/doc/python-nibabel-doc/html/_downloads/91f627dc0e05cfed2c760badc0d68b0b/spm_dicom_orient.py", "source2": "./usr/share/doc/python-nibabel-doc/html/_downloads/600038078c8a32c330fa09f5f4c66d15/spm_dicom_orient.py", "comments": [ "Files identical despite different names" ], "unified_diff": null }, { "source1": "./usr/share/doc/python-nibabel-doc/html/_downloads/e7e029cef54a06cf60644ab5a2646f6e/register_me.py", "source2": "./usr/share/doc/python-nibabel-doc/html/_downloads/952c6388e9e163bd814e7d6e4ccbfdf7/register_me.py", "comments": [ "Files identical despite different names" ], "unified_diff": null }, { "source1": "./usr/share/doc/python-nibabel-doc/html/_downloads/f698b213dbfaca2fd9126e6691ac06f9/someones_anatomy.nii.gz", "source2": "./usr/share/doc/python-nibabel-doc/html/_downloads/38974bbb5af6107bf7448530b9559da2/someones_anatomy.nii.gz", "comments": [ "Files identical despite different names" ], "unified_diff": null } ] } ] } ] } ] }