Skip to content

Commit a9a9fda

Browse files
authored
Merge pull request #208 from nipy/fix/remaining-apply-on-object
FIX: Forgotten test using ``xfm.apply()``
2 parents 8dae35f + f10e50e commit a9a9fda

File tree

8 files changed

+5132
-24
lines changed

8 files changed

+5132
-24
lines changed

Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,14 @@ RUN apt-get update && \
2828
unzip && \
2929
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
3030

31+
RUN update-ca-certificates -f
32+
3133
# FreeSurfer 7.3.2
3234
FROM downloader as freesurfer
3335
COPY docker/files/freesurfer7.3.2-exclude.txt /usr/local/etc/freesurfer7.3.2-exclude.txt
34-
RUN curl -sSL https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/7.3.2/freesurfer-linux-ubuntu22_amd64-7.3.2.tar.gz \
36+
COPY docker/files/fs-cert.pem /usr/local/etc/fs-cert.pem
37+
RUN curl --cacert /usr/local/etc/fs-cert.pem \
38+
-sSL https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/7.3.2/freesurfer-linux-ubuntu22_amd64-7.3.2.tar.gz \
3539
| tar zxv --no-same-owner -C /opt --exclude-from=/usr/local/etc/freesurfer7.3.2-exclude.txt
3640

3741
# AFNI

docker/files/fs-cert.pem

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIHuDCCBiCgAwIBAgIRAMa1FS9MSn5TXKMgD8OXtoswDQYJKoZIhvcNAQEMBQAw
3+
RDELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCUludGVybmV0MjEhMB8GA1UEAxMYSW5D
4+
b21tb24gUlNBIFNlcnZlciBDQSAyMB4XDTI0MDUwOTAwMDAwMFoXDTI1MDUwOTIz
5+
NTk1OVowfTELMAkGA1UEBhMCVVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxMTAv
6+
BgNVBAoTKFByZXNpZGVudCBhbmQgRmVsbG93cyBvZiBIYXJ2YXJkIENvbGxlZ2Ux
7+
IzAhBgNVBAMTGnN1cmZlci5ubXIubWdoLmhhcnZhcmQuZWR1MIIBIjANBgkqhkiG
8+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxJfeMKn0NjFkmduegvgRICrm+hn4TaZITeVl
9+
uM/af+g05RUtKRKNIR0CC9mzPDYiW10VNj7TuDyS1DNoe/Jr1Or8lrMCm81NHjnY
10+
aKvtC61O9GWvvDfWeb35vkHfkbd60AgBaLGZIEglENl122bBqpSdO8JglVTDgvFd
11+
mWkuBnQzE/qKt7j88Xjafjhzbnv9Uf1hh8NtbiOaAf53/b5FZuUary64k5twPwpm
12+
Y/pWw3CQhIWUhvRMwcQNvG24lDOssOXSEgb9Gd96ikU/yE4MDnuDBb6tf+2crVQ5
13+
PF4V2YvbQZ2x8Kf8hygWk3C555ZSCR3LgRl/Paxp9DZUrxfjtwIDAQABo4ID6jCC
14+
A+YwHwYDVR0jBBgwFoAU70wAkqb7di5eleLJX4cbGdVN4tkwHQYDVR0OBBYEFG0I
15+
bSHaYbRPsftHU7uJ5A7Z9UBfMA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAA
16+
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysG
17+
AQQBsjEBAgJnMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BT
18+
MAgGBmeBDAECAjBABgNVHR8EOTA3MDWgM6Axhi9odHRwOi8vY3JsLnNlY3RpZ28u
19+
Y29tL0luQ29tbW9uUlNBU2VydmVyQ0EyLmNybDBwBggrBgEFBQcBAQRkMGIwOwYI
20+
KwYBBQUHMAKGL2h0dHA6Ly9jcnQuc2VjdGlnby5jb20vSW5Db21tb25SU0FTZXJ2
21+
ZXJDQTIuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTCC
22+
AX8GCisGAQQB1nkCBAIEggFvBIIBawFpAHUAzxFW7tUufK/zh1vZaS6b6RpxZ0qw
23+
F+ysAdJbd87MOwgAAAGPXXtaqAAABAMARjBEAiARbv8hz3utGkTar2Y3jNnWOGKG
24+
aajAYuB3f30g5Bnb+AIgAmwaltfGcp2uNYmTMU2eSC5AVhpnbisDS2KcFyC7ok4A
25+
dwCi4wrkRe+9rZt+OO1HZ3dT14JbhJTXK14bLMS5UKRH5wAAAY9de1pQAAAEAwBI
26+
MEYCIQDrM8C7Y6GdEKRmGQ1AUmbUArbpImpEXutI8E+KVOUsogIhAKbl+QYqJIUB
27+
rRHpRkKZlefPyZQRo6JnRNz/J1KEuqsTAHcATnWjJ1yaEMM4W2zU3z9S6x3w4I4b
28+
jWnAsfpksWKaOd8AAAGPXXtaRgAABAMASDBGAiEApB4qFWHZLGtPNkUK+6jFqsEk
29+
vmy3bv3cuODXSG3CvfMCIQCCQPR/3HcrSGfmeJsFjWvwLbJFqe6GbRWCvjaUaldI
30+
WDCB5AYDVR0RBIHcMIHZghpzdXJmZXIubm1yLm1naC5oYXJ2YXJkLmVkdYIUZm9y
31+
dW0uZnJlZXN1cmZlci5uZXSCGWZvcnVtLm5tci5tZ2guaGFydmFyZC5lZHWCDmZy
32+
ZWVzdXJmZXIubmV0ghdmdHAubm1yLm1naC5oYXJ2YXJkLmVkdYIZcnN5bmMubm1y
33+
Lm1naC5oYXJ2YXJkLmVkdYIWc3VwcG9ydC5mcmVlc3VyZmVyLm5ldIIad2ViZGV2
34+
Lm5tci5tZ2guaGFydmFyZC5lZHWCEnd3dy5mcmVlc3VyZmVyLm5ldDANBgkqhkiG
35+
9w0BAQwFAAOCAYEAB5nGih504XqNbZJjz1mK43IAiFs0YjocdDWOqqbXMirpbpNd
36+
cPleB0iJkXJnzfzkZFyLdvFGos9FuPRDGmXSh0sdWpm2uQdkXlOp+/e4vMDg8Nrl
37+
YkjshuU4fmUswnzsQ1aj/ome1DG3rmp3umjKpV6ewnVLhgjQ5zwCHfLLsNyzowqn
38+
I6qAa2uzk7bS3XuYu4bLhVfD3X0Ybe4V3FKODBZRAIIU8hgtCz6zw5WtxzdEm5Qp
39+
FHdN8OKazXvrJbzHB1WVk7buIn+8n2HoO202wGaFyyQFVqM2ug0FgCW8AaB+XRCq
40+
BV+nZND2AIALG1HcIIL+pZwxS1K/jBkjUJRb3GDVWw7yzxuvlmawLhk8xzrgTsvp
41+
QXaR+CbnTBx1PeB4nf+yHg2VBvKk6m7E9lnyymENmbeaLC67CJQgr+ne1rpOuEIs
42+
fVbKUP437fyEvPuZCZ+3gxFsKgOerk2J95+AdLKB01pQFh/ITS/2zHHeMeD118sR
43+
mUO+RXiPX5ZUqu/M
44+
-----END CERTIFICATE-----

docs/notebooks/Reading and Writing transforms.ipynb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
"import numpy as np\n",
4747
"import nibabel as nb\n",
4848
"import nitransforms as nt\n",
49+
"from nitransforms.resampling import apply\n",
4950
"\n",
5051
"cwd = TemporaryDirectory()\n",
5152
"os.chdir(cwd.name)\n",
@@ -263,7 +264,7 @@
263264
"metadata": {},
264265
"outputs": [],
265266
"source": [
266-
"moved = xfm.apply(nii, order=0)\n",
267+
"moved = apply(xfm, nii, order=0)\n",
267268
"moved.to_filename('moved-nb.nii.gz')"
268269
]
269270
},
@@ -741,7 +742,7 @@
741742
"outputs": [],
742743
"source": [
743744
"xfm.reference = oblique\n",
744-
"moved_oblique = xfm.apply(las_anatomy)"
745+
"moved_oblique = apply(xfm, las_anatomy)"
745746
]
746747
},
747748
{
@@ -895,7 +896,7 @@
895896
],
896897
"metadata": {
897898
"kernelspec": {
898-
"display_name": "Python 3",
899+
"display_name": "Python 3 (ipykernel)",
899900
"language": "python",
900901
"name": "python3"
901902
},
@@ -909,9 +910,9 @@
909910
"name": "python",
910911
"nbconvert_exporter": "python",
911912
"pygments_lexer": "ipython3",
912-
"version": "3.8.5"
913+
"version": "3.11.8"
913914
}
914915
},
915916
"nbformat": 4,
916-
"nbformat_minor": 2
917+
"nbformat_minor": 4
917918
}

docs/notebooks/isbi2020.ipynb

Lines changed: 5063 additions & 10 deletions
Large diffs are not rendered by default.

nitransforms/manip.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ def __len__(self):
6767
"""Enable using len()."""
6868
return len(self.transforms)
6969

70+
@property
71+
def ndim(self):
72+
"""Get the number of dimensions."""
73+
return max(x.ndim for x in self._transforms)
74+
7075
@property
7176
def transforms(self):
7277
"""Get the internal list of transforms."""

nitransforms/nonlinear.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,11 +317,11 @@ def map(self, x, inverse=False):
317317
--------
318318
>>> xfm = BSplineFieldTransform(test_dir / "someones_bspline_coefficients.nii.gz")
319319
>>> xfm.reference = test_dir / "someones_anatomy.nii.gz"
320-
>>> xfm.map([-6.5, -36., -19.5]).tolist()
321-
[[-6.5, -31.476097418406784, -19.5]]
320+
>>> xfm.map([-6.5, -36., -19.5]).tolist() # doctest: +ELLIPSIS
321+
[[-6.5, -31.476097418406..., -19.5]]
322322
323-
>>> xfm.map([[-6.5, -36., -19.5], [-1., -41.5, -11.25]]).tolist()
324-
[[-6.5, -31.476097418406784, -19.5], [-1.0, -3.8072675377121996, -11.25]]
323+
>>> xfm.map([[-6.5, -36., -19.5], [-1., -41.5, -11.25]]).tolist() # doctest: +ELLIPSIS
324+
[[-6.5, -31.4760974184..., -19.5], [-1.0, -3.807267537712..., -11.25]]
325325
326326
"""
327327
vfunc = partial(

nitransforms/tests/test_manip.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
RMSE_TOL,
1515
APPLY_NONLINEAR_CMD,
1616
)
17+
from nitransforms.resampling import apply
1718

1819
FMT = {"lta": "fs", "tfm": "itk"}
1920

@@ -54,7 +55,7 @@ def test_itk_h5(tmp_path, testdata_path):
5455
assert exit_code == 0
5556
sw_moved = nb.load("resampled.nii.gz")
5657

57-
nt_moved = xfm.apply(img_fname, order=0)
58+
nt_moved = apply(xfm, img_fname, order=0)
5859
nt_moved.to_filename("nt_resampled.nii.gz")
5960
diff = sw_moved.get_fdata() - nt_moved.get_fdata()
6061
# A certain tolerance is necessary because of resampling at borders

nitransforms/tests/test_nonlinear.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ def test_displacements_field1(
169169
exit_code = check_call([cmd], shell=True)
170170
assert exit_code == 0
171171
sw_moved_mask = nb.load("resampled_brainmask.nii.gz")
172-
nt_moved_mask = xfm.apply(msk, order=0)
172+
nt_moved_mask = apply(xfm, msk, order=0)
173173
nt_moved_mask.set_data_dtype(msk.get_data_dtype())
174174
diff = np.asanyarray(sw_moved_mask.dataobj) - np.asanyarray(nt_moved_mask.dataobj)
175175

@@ -189,7 +189,7 @@ def test_displacements_field1(
189189
assert exit_code == 0
190190
sw_moved = nb.load("resampled.nii.gz")
191191

192-
nt_moved = xfm.apply(nii, order=0)
192+
nt_moved = apply(xfm, nii, order=0)
193193
nt_moved.set_data_dtype(nii.get_data_dtype())
194194
nt_moved.to_filename("nt_resampled.nii.gz")
195195
sw_moved.set_data_dtype(nt_moved.get_data_dtype())
@@ -229,7 +229,7 @@ def test_displacements_field2(tmp_path, testdata_path, sw_tool):
229229
assert exit_code == 0
230230
sw_moved = nb.load("resampled.nii.gz")
231231

232-
nt_moved = xfm.apply(img_fname, order=0)
232+
nt_moved = apply(xfm, img_fname, order=0)
233233
nt_moved.to_filename("nt_resampled.nii.gz")
234234
sw_moved.set_data_dtype(nt_moved.get_data_dtype())
235235
diff = np.asanyarray(

0 commit comments

Comments
 (0)