Skip to content

Commit 05da98b

Browse files
authored
Merge pull request #134 from oesteban/maint/migrate-data-to-datalad
MAINT: Move test data to a full-datalad settings
2 parents af02ccd + acc06bc commit 05da98b

File tree

1 file changed

+108
-84
lines changed

1 file changed

+108
-84
lines changed

.circleci/config.yml

Lines changed: 108 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -119,72 +119,84 @@ jobs:
119119
- src/dmriprep
120120

121121
get_data:
122-
machine:
123-
# Ubuntu 14.04 with Docker 17.10.0-ce
124-
image: circleci/classic:201711-01
125-
working_directory: /home/circleci/data
122+
docker:
123+
- image: continuumio/miniconda3:4.9.2-alpine
124+
working_directory: /tmp/data
125+
environment:
126+
- TEMPLATEFLOW_HOME: /tmp/templateflow
126127
steps:
127128
- restore_cache:
128129
keys:
129-
- data-thp-v1-{{ .Revision }}
130-
- data-thp-v1-
130+
- env-v1-{{ .Branch }}-
131+
- env-v1-master-
132+
- env-v1-
131133
- run:
132-
name: Get test data from THP002
134+
name: Setup git-annex & DataLad
133135
command: |
134-
mkdir -p /tmp/data
135-
if [[ ! -d /tmp/data/THP002 ]]; then
136-
wget --retry-connrefused --waitretry=5 --read-timeout=20 --timeout=15 -t 0 -q \
137-
-O THP002_data.tar.gz "https://files.osf.io/v1/resources/8k95s/providers/osfstorage/5d7d89fc9defac0019179fdf"
138-
tar xvzf THP002_data.tar.gz -C /tmp/data/
139-
else
140-
echo "Dataset THP002 was cached"
141-
fi
136+
conda install -y -c anaconda -c conda-forge git-annex datalad
137+
python -m pip install --no-cache-dir -U datalad-osf
138+
git config --global user.name 'NiPreps Bot'
139+
git config --global user.email '[email protected]'
140+
142141
- run:
143-
name: Get FreeSurfer derivatives for THP002
142+
name: Setup TemplateFlow
144143
command: |
145-
if [[ ! -d /tmp/data/THP002/derivatives/freesurfer-6.0.1 ]]; then
146-
mkdir -p /tmp/data/THP002/derivatives
147-
wget --retry-connrefused --waitretry=5 --read-timeout=20 --timeout=15 -t 0 -q \
148-
-O THP002_derivatives_freesurfer.tar.gz "https://files.osf.io/v1/resources/8k95s/providers/osfstorage/5d7d87ce7483ec0017530cc9"
149-
tar xvzf THP002_derivatives_freesurfer.tar.gz -C /tmp/data/THP002/derivatives
150-
mv /tmp/data/THP002/derivatives/freesurfer /tmp/data/THP002/derivatives/freesurfer-6.0.1
151-
else
152-
echo "FreeSurfer derivatives of THP002 were cached"
153-
fi
144+
python -m pip install --no-cache-dir -U templateflow
145+
python -c "from templateflow import api as tfapi; \
146+
tfapi.get('OASIS30ANTs', resolution=1, desc=None, suffix='T1w'); \
147+
tfapi.get('OASIS30ANTs', resolution=1, desc='BrainCerebellumExtraction', suffix='mask'); "
148+
154149
- save_cache:
155-
key: data-thp-v1-{{ .Revision }}-{{ epoch }}
156-
paths:
157-
- /tmp/data/THP002
150+
key: env-v1-{{ .Branch }}-{{ .BuildNum }}
151+
paths:
152+
- /tmp/templateflow
153+
- /opt/conda
154+
158155
- restore_cache:
159156
keys:
160-
- data-ds001771-v1-{{ .Revision }}
161-
- data-ds001771-v1-
162-
- run:
163-
name: Get test data (ds001771)
164-
command: |
165-
mkdir -p /tmp/data
166-
if [[ ! -d /tmp/data/ds001771 ]]; then
167-
wget --retry-connrefused --waitretry=5 --read-timeout=20 --timeout=15 -t 0 -q \
168-
-O ds001771_sub-36.tar.gz "https://files.osf.io/v1/resources/8k95s/providers/osfstorage/5e1f89d36822bd01f0febbdc"
169-
tar xvzf ds001771_sub-36.tar.gz -C /tmp/data/
170-
else
171-
echo "Dataset ds001771_sub-36 was cached"
172-
fi
157+
- data-ds001771-v3-{{ .Branch }}-{{ .Revision }}-
158+
- data-ds001771-v3-{{ .Branch }}-
159+
- data-ds001771-v3-master-
160+
- data-ds001771-v3-
161+
- run:
162+
name: Install ds001771
163+
command: |
164+
datalad install -r https://github.com/nipreps-data/ds001771.git
165+
datalad update -r --merge -d ds001771/
166+
datalad get -J 2 -r -d ds001771/ ds001771/sub-36/anat/*
167+
datalad get -J 2 -r -d ds001771/ ds001771/sub-36/dwi/*
168+
datalad get -J 2 -r -d ds001771/ ds001771/sub-36/fmap/*
169+
datalad get -J 2 -r -d ds001771/derivatives/ ds001771/derivatives/smriprep-0.6.0/*
170+
datalad get -J 2 -r -d ds001771/derivatives/ ds001771/derivatives/freesurfer-6.0.1/sub-36/mri/*
171+
datalad get -J 2 -r -d ds001771/derivatives/ ds001771/derivatives/freesurfer-6.0.1/sub-36/surf/lh.white \
172+
ds001771/derivatives/freesurfer-6.0.1/sub-36/surf/rh.white \
173+
ds001771/derivatives/freesurfer-6.0.1/sub-36/surf/lh.thickness \
174+
ds001771/derivatives/freesurfer-6.0.1/sub-36/surf/rh.thickness
175+
176+
- save_cache:
177+
key: data-ds001771-v3-{{ .Branch }}-{{ .Revision }}-{{ epoch }}
178+
paths:
179+
- /tmp/data/ds001771
180+
181+
- restore_cache:
182+
keys:
183+
- data-ds000206-v1-{{ .Branch }}-{{ .Revision }}-
184+
- data-ds000206-v1-{{ .Branch }}-
185+
- data-ds000206-v1-master-
186+
- data-ds000206-v1-
173187
- run:
174-
name: Get anatomical derivatives for ds001771
188+
name: Install ds000206
175189
command: |
176-
if [[ ! -d /tmp/data/ds001771/derivatives ]]; then
177-
mkdir -p /tmp/data/ds001771/derivatives
178-
wget --retry-connrefused --waitretry=5 --read-timeout=20 --timeout=15 -t 0 -q \
179-
-O ds001771-derivs.tar.gz "https://files.osf.io/v1/resources/8k95s/providers/osfstorage/5eb251fba2199500215d1dc3"
180-
tar xvzf ds001771-derivs.tar.gz -C /tmp/data/ds001771/
181-
else
182-
echo "Anatomical derivatives of ds001771 were cached"
183-
fi
190+
datalad install -r https://github.com/nipreps-data/ds000206.git
191+
datalad update -r --merge -d ds000206/
192+
datalad get -J 2 -r -d ds000206/ ds000206/sub-05/*
193+
datalad get -J 2 -r -d ds000206/derivatives/ ds000206/derivatives/freesurfer-6.0.1/sub-05/*
194+
184195
- save_cache:
185-
key: data-ds001771-v1-{{ .Revision }}-{{ epoch }}
186-
paths:
187-
- /tmp/data/ds001771
196+
key: data-ds000206-v1-{{ .Branch }}-{{ .Revision }}-{{ epoch }}
197+
paths:
198+
- /tmp/data/ds000206
199+
188200
- run:
189201
name: Store FreeSurfer license file
190202
command: |
@@ -201,13 +213,14 @@ jobs:
201213
- persist_to_workspace:
202214
root: /tmp
203215
paths:
216+
- templateflow
204217
- fslicense
205218
- config/nipype.cfg
206219

207-
THP002:
220+
ds000206:
208221
machine:
209222
image: circleci/classic:201711-01
210-
working_directory: /tmp/THP002
223+
working_directory: /tmp/ds000206
211224
environment:
212225
- FS_LICENSE: /tmp/fslicense/license.txt
213226
steps:
@@ -221,15 +234,19 @@ jobs:
221234
echo "Only docs build"
222235
circleci step halt
223236
fi
224-
if [[ "$( git log --format=oneline -n 1 $CIRCLE_SHA1 | grep -i -E '\[skip[ _]?THP002\]' )" != "" ]]; then
225-
echo "Skipping THP002 build"
237+
if [[ "$( git log --format=oneline -n 1 $CIRCLE_SHA1 | grep -i -E '\[skip[ _]?ds000206\]' )" != "" ]]; then
238+
echo "Skipping ds000206 build"
226239
circleci step halt
227240
fi
228241
- attach_workspace:
229242
at: /tmp
230243
- restore_cache:
231244
keys:
232-
- data-thp-v1-{{ .Revision }}
245+
- data-ds000206-v1-{{ .Branch }}-{{ .Revision }}-{{ epoch }}
246+
- data-ds000206-v1-{{ .Branch }}-{{ .Revision }}-
247+
- data-ds000206-v1-{{ .Branch }}-
248+
- data-ds000206-v1-master-
249+
- data-ds000206-v1-
233250
- restore_cache:
234251
keys:
235252
- build-v1-{{ .Branch }}-{{ epoch }}
@@ -249,67 +266,69 @@ jobs:
249266
docker tag localhost:5000/dmriprep nipreps/dmriprep:latest
250267
- restore_cache:
251268
keys:
252-
- THP002-anat-v01-{{ .Branch }}-{{ .Revision }}
253-
- THP002-anat-v01-{{ .Branch }}
254-
- THP002-anat-v01-master
255-
- THP002-anat-v01-
269+
- ds000206-anat-v01-{{ .Branch }}-{{ .Revision }}
270+
- ds000206-anat-v01-{{ .Branch }}
271+
- ds000206-anat-v01-master
272+
- ds000206-anat-v01-
256273
- run:
257-
name: Run anatomical workflow on THP002
274+
name: Run anatomical workflow on ds000206
258275
no_output_timeout: 2h
259276
command: |
260-
mkdir -p /tmp/THP002/work /tmp/THP002/derivatives
277+
mkdir -p /tmp/ds000206/work /tmp/ds000206/derivatives
261278
docker run -e FS_LICENSE=$FS_LICENSE --rm \
262-
-v /tmp/data/THP002:/data \
263-
-v /tmp/THP002/derivatives:/out \
279+
-v /tmp/data/ds000206:/data \
280+
-v /tmp/ds000206/derivatives:/out \
264281
-v /tmp/fslicense/license.txt:/tmp/fslicense/license.txt:ro \
265282
-v /tmp/config/nipype.cfg:/home/dmriprep/.nipype/nipype.cfg \
266-
-v /tmp/THP002/work:/work \
283+
-v /tmp/templateflow:/home/dmriprep/.cache/templateflow \
284+
-v /tmp/ds000206/work:/work \
267285
--user $(id -u):$(id -g) \
268286
nipreps/dmriprep:latest /data /out participant -vv \
269287
--fs-subjects-dir /data/derivatives/freesurfer-6.0.1 --sloppy --anat-only \
270288
--notrack --skip-bids-validation -w /work --omp-nthreads 2 --nprocs 2
271289
- run:
272290
name: Clean-up after anatomical run
273291
command: |
274-
rm -rf /tmp/THP002/work/dmriprep_wf/fsdir*
275-
rm -rf /tmp/THP002/work/reportlets
292+
rm -rf /tmp/ds000206/work/dmriprep_wf/fsdir*
293+
rm -rf /tmp/ds000206/work/reportlets
276294
when: on_success
277295
- save_cache:
278-
key: THP002-anat-v01-{{ .Branch }}-{{ .Revision }}-{{ epoch }}
296+
key: ds000206-anat-v01-{{ .Branch }}-{{ .Revision }}-{{ epoch }}
279297
paths:
280-
- /tmp/THP002/work
298+
- /tmp/ds000206/work
281299
- run:
282-
name: Run full diffusion workflow on THP002
300+
name: Run full diffusion workflow on ds000206
283301
no_output_timeout: 2h
284302
command: |
285-
mkdir -p /tmp/THP002/work /tmp/THP002/derivatives
303+
mkdir -p /tmp/ds000206/work /tmp/ds000206/derivatives
286304
docker run -e FS_LICENSE=$FS_LICENSE --rm \
287-
-v /tmp/data/THP002:/data \
288-
-v /tmp/THP002/derivatives:/out \
305+
-v /tmp/data/ds000206:/data \
306+
-v /tmp/ds000206/derivatives:/out \
289307
-v /tmp/fslicense/license.txt:/tmp/fslicense/license.txt:ro \
290308
-v /tmp/config/nipype.cfg:/home/dmriprep/.nipype/nipype.cfg \
291-
-v /tmp/THP002/work:/work \
309+
-v /tmp/templateflow:/home/dmriprep/.cache/templateflow \
310+
-v /tmp/ds000206/work:/work \
292311
--user $(id -u):$(id -g) \
293312
nipreps/dmriprep:latest /data /out participant -vv \
294313
--fs-subjects-dir /data/derivatives/freesurfer-6.0.1 --sloppy \
295314
--notrack --skip-bids-validation -w /work --omp-nthreads 2 --nprocs 2
296315
- store_artifacts:
297-
path: /tmp/THP002/derivatives/dmriprep
316+
path: /tmp/ds000206/derivatives/dmriprep
298317
- run:
299318
name: Clean working directory
300319
when: on_success
301320
command: |
302-
sudo rm -rf /tmp/THP002/work
321+
sudo rm -rf /tmp/ds000206/work
303322
- run:
304323
name: Clean working directory
305324
when: on_fail
306325
command: |
307-
find /tmp/THP002/work \( -name "*.nii.gz" -or -name "*.nii" -or -name "*.gii" -or -name "*.h5" \) \
326+
find /tmp/ds000206/work \( -name "*.nii.gz" -or -name "*.nii" -or -name "*.gii" -or -name "*.h5" \) \
308327
-exec sh -c 'rm -f {}; touch {}' \;
309-
find /tmp/THP002/work_partial \( -name "*.nii.gz" -or -name "*.nii" -or -name "*.gii" -or -name "*.h5" \) \
328+
find /tmp/ds000206/work_partial \( -name "*.nii.gz" -or -name "*.nii" -or -name "*.gii" -or -name "*.h5" \) \
310329
-exec sh -c 'rm -f {}; touch {}' \;
311330
- store_artifacts:
312-
path: /tmp/THP002/work
331+
path: /tmp/ds000206/work
313332

314333
ds001771:
315334
machine:
@@ -336,7 +355,11 @@ jobs:
336355
at: /tmp
337356
- restore_cache:
338357
keys:
339-
- data-ds001771-v1-{{ .Revision }}
358+
- data-ds001771-v3-{{ .Branch }}-{{ .Revision }}-{{ epoch }}
359+
- data-ds001771-v3-{{ .Branch }}-{{ .Revision }}-
360+
- data-ds001771-v3-{{ .Branch }}-
361+
- data-ds001771-v3-master-
362+
- data-ds001771-v3-
340363
- restore_cache:
341364
keys:
342365
- build-v1-{{ .Branch }}-{{ epoch }}
@@ -363,6 +386,7 @@ jobs:
363386
-v /tmp/data/ds001771:/data \
364387
-v /tmp/ds001771/derivatives:/out \
365388
-v /tmp/fslicense/license.txt:/tmp/fslicense/license.txt:ro \
389+
-v /tmp/templateflow:/home/dmriprep/.cache/templateflow \
366390
-v /tmp/config/nipype.cfg:/home/dmriprep/.nipype/nipype.cfg \
367391
-v /tmp/ds001771/work:/work \
368392
--user $(id -u):$(id -g) \
@@ -671,7 +695,7 @@ workflows:
671695
tags:
672696
only: /.*/
673697

674-
- THP002:
698+
- ds000206:
675699
requires:
676700
- build
677701
- get_data
@@ -745,7 +769,7 @@ workflows:
745769
branches:
746770
ignore:
747771
- /tests?\/.*/
748-
- /THP002\/.*/
772+
- /ds000206\/.*/
749773
- /ds001771\/.*/
750774
tags:
751775
only: /.*/

0 commit comments

Comments
 (0)