Switch to unified view

a/README.md b/README.md
1
# AssemblyNet: 3D Whole Brain MRI Segmentation
1
# AssemblyNet: 3D Whole Brain MRI Segmentation
2
2
3
This repository presents the Docker image of our whole brain segmentation pipeline: **AssemblyNet** [[paper]](https://dx.doi.org/10.1016/j.neuroimage.2020.117026).
3
This repository presents the Docker image of our whole brain segmentation pipeline: **AssemblyNet** [[paper]](https://dx.doi.org/10.1016/j.neuroimage.2020.117026).
4
4
5
![AssemblyNet_report_capture.png](doc/AssemblyNet_report_capture.png)
5
6
7
Based on a large ensemble of convolution neural networks, **AssemblyNet** allows to segment a T1 MRI scan image in 133 labels, according to [BrainColor protocol](https://mindboggle.info/braincolor/).
6
Based on a large ensemble of convolution neural networks, **AssemblyNet** allows to segment a T1 MRI scan image in 133 labels, according to [BrainColor protocol](https://mindboggle.info/braincolor/).
8
7
9
8
10
Given an input T1 image in nifti format, this Docker image will produce segmentation images (in native and MNI spaces) of intracranial cavity, brain tissues, brain macrostructures, cortical lobes, and cortical and subcortical structures, and also a report and a csv file with segmented volumes and expected bounds (if age is provided).
9
Given an input T1 image in nifti format, this Docker image will produce segmentation images (in native and MNI spaces) of intracranial cavity, brain tissues, brain macrostructures, cortical lobes, and cortical and subcortical structures, and also a report and a csv file with segmented volumes and expected bounds (if age is provided).
11
10
12
Here are examples of produced segmentations (in MNI space): [structures](example/mni_structures_my_brain.nii.gz), [macrostructures](example/mni_macrostructures_my_brain.nii.gz), [tissues](example/mni_tissues_my_brain.nii.gz), [lobes](example/mni_lobes_my_brain.nii.gz), [intracranial cavity](example/mni_mask_my_brain.nii.gz) corresponding to this processed [T1 image](example/mni_t1_my_brain.nii.gz). Here are examples of produced PDF and CSV volumetry reports: [report.pdf](example/report_my_brain.pdf) and [report.csv](example/report_my_brain.csv).  
11
Here are examples of produced segmentations (in MNI space): [structures](example/mni_structures_my_brain.nii.gz), [macrostructures](example/mni_macrostructures_my_brain.nii.gz), [tissues](example/mni_tissues_my_brain.nii.gz), [lobes](example/mni_lobes_my_brain.nii.gz), [intracranial cavity](example/mni_mask_my_brain.nii.gz) corresponding to this processed [T1 image](example/mni_t1_my_brain.nii.gz). Here are examples of produced PDF and CSV volumetry reports: [report.pdf](example/report_my_brain.pdf) and [report.csv](example/report_my_brain.csv).  
13
12
14
**This Docker image is to be used only for non-commercial and non-medical purposes (research only).** See [license](https://github.com/volBrain/AssemblyNet/blob/main/README.md#license).
13
**This Docker image is to be used only for non-commercial and non-medical purposes (research only).** See [license](https://github.com/volBrain/AssemblyNet/blob/main/README.md#license).
15
14
16
If you use this Docker image, please cite:  
15
If you use this Docker image, please cite:  
17
Pierrick Coupé, Boris Mansencal, Michaël Clément, Rémi Giraud, Baudouin Denis de Senneville, Vinh-Thong Ta, Vincent Lepetit, José V. Manjon  
16
Pierrick Coupé, Boris Mansencal, Michaël Clément, Rémi Giraud, Baudouin Denis de Senneville, Vinh-Thong Ta, Vincent Lepetit, José V. Manjon  
18
[AssemblyNet: A large ensemble of CNNs for 3D whole brain MRI segmentation](https://dx.doi.org/10.1016/j.neuroimage.2020.117026).  
17
[AssemblyNet: A large ensemble of CNNs for 3D whole brain MRI segmentation](https://dx.doi.org/10.1016/j.neuroimage.2020.117026).  
19
NeuroImage, Elsevier, 2020, 219, pp.117026. 
18
NeuroImage, Elsevier, 2020, 219, pp.117026. 
20
[[paper]](https://dx.doi.org/10.1016/j.neuroimage.2020.117026) [[bibtex]](doc/AssemblyNet.bib)
19
[[paper]](https://dx.doi.org/10.1016/j.neuroimage.2020.117026) [[bibtex]](doc/AssemblyNet.bib)
21
20
22
21
23
# Quick Start instructions
22
# Quick Start instructions
24
23
25
If you have already installed Docker, you can get the volbrain/assemblynet:1.0.0 image from Docker Hub repository:
24
If you have already installed Docker, you can get the volbrain/assemblynet:1.0.0 image from Docker Hub repository:
26
```
25
```
27
sudo docker pull volbrain/assemblynet:1.0.0
26
sudo docker pull volbrain/assemblynet:1.0.0
28
```
27
```
29
28
30
If you have a NVIDIA GPU with at least 8GB, and have already installed NVIDIA Container Toolkit, you can run AssemblyNet on the GPU on the image /absolute/path/to/images/image.nii.gz:
29
If you have a NVIDIA GPU with at least 8GB, and have already installed NVIDIA Container Toolkit, you can run AssemblyNet on the GPU on the image /absolute/path/to/images/image.nii.gz:
31
```
30
```
32
sudo docker run --rm --gpus '"device=0"' -v /absolute/path/to/images:/data volbrain/assemblynet:1.0.0 /data/image.nii.gz
31
sudo docker run --rm --gpus '"device=0"' -v /absolute/path/to/images:/data volbrain/assemblynet:1.0.0 /data/image.nii.gz
33
```
32
```
34
33
35
If you have a x86_64 CPU, you can run AssemblyNet on the CPU on the image /absolute/path/to/images/image.nii.gz:
34
If you have a x86_64 CPU, you can run AssemblyNet on the CPU on the image /absolute/path/to/images/image.nii.gz:
36
```
35
```
37
sudo docker run --rm -v /absolute/path/to/images:/data volbrain/assemblynet:1.0.0 /data/image.nii.gz
36
sudo docker run --rm -v /absolute/path/to/images:/data volbrain/assemblynet:1.0.0 /data/image.nii.gz
38
```
37
```
39
38
40
See [Installation instructions](https://github.com/volBrain/AssemblyNet/blob/main/README.md#installation-instructions) for detailed instructions on how to install all the dependencies.  
39
See [Installation instructions](https://github.com/volBrain/AssemblyNet/blob/main/README.md#installation-instructions) for detailed instructions on how to install all the dependencies.  
41
See [How to use AssemblyNet](https://github.com/volBrain/AssemblyNet/blob/main/README.md#how-to-use-assemblynet) for detailed instructions on how to use AssemblyNet.
40
See [How to use AssemblyNet](https://github.com/volBrain/AssemblyNet/blob/main/README.md#how-to-use-assemblynet) for detailed instructions on how to use AssemblyNet.
42
41
43
42
44
# Installation instructions 
43
# Installation instructions 
45
44
46
## Prerequisites
45
## Prerequisites
47
46
48
To run this Docker image on a CPU, you will need:
47
To run this Docker image on a CPU, you will need:
49
* a x86_64 CPU 
48
* a x86_64 CPU 
50
* At least 6GB of RAM
49
* At least 6GB of RAM
51
* GNU/Linux [[supported distributions]](https://docs.docker.com/engine/install/#server) or Windows 10/11 with WSL [[supported versions]](https://docs.docker.com/desktop/windows/install/)
50
* GNU/Linux [[supported distributions]](https://docs.docker.com/engine/install/#server) or Windows 10/11 with WSL [[supported versions]](https://docs.docker.com/desktop/windows/install/)
52
* Docker >= 19.03 
51
* Docker >= 19.03 
53
* AssemblyNet Docker image 
52
* AssemblyNet Docker image 
54
* MRI files in nifti format
53
* MRI files in nifti format
55
54
56
To run this Docker image on a GPU, you will need:
55
To run this Docker image on a GPU, you will need:
57
* A NVIDIA GPU with at least 8GB and a [CUDA Compute capability](https://developer.nvidia.com/cuda-gpus#compute) >= 6.0 (that is a GPU from the NVIDIA Pascal, Volta, Turing, and Ampere Architecture GPU families. For example Titan Xp, V100, GeForce RTX 2080, Geforce RTX 3080, A40, ...)
56
* A NVIDIA GPU with at least 8GB and a [CUDA Compute capability](https://developer.nvidia.com/cuda-gpus#compute) >= 6.0 (that is a GPU from the NVIDIA Pascal, Volta, Turing, and Ampere Architecture GPU families. For example Titan Xp, V100, GeForce RTX 2080, Geforce RTX 3080, A40, ...)
58
* GNU/Linux x86_64 with kernel version > 3.10 (for example Ubuntu 16.04 or above) [[supported distributions]](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#supported-platforms) or Windows 10/11 with WSL 2 [[supported versions]](https://docs.docker.com/desktop/windows/install/)
57
* GNU/Linux x86_64 with kernel version > 3.10 (for example Ubuntu 16.04 or above) [[supported distributions]](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#supported-platforms) or Windows 10/11 with WSL 2 [[supported versions]](https://docs.docker.com/desktop/windows/install/)
59
* NVIDIA drivers >= 418.xx with xx>=40, 440.xx with xx>=33, 450.xx with xx>=51, 460.xx with xx>=27 or 470.xx [[driver requirements]](https://docs.nvidia.com/deeplearning/frameworks/tensorflow-release-notes/rel_21-08.html#rel_21-08)
58
* NVIDIA drivers >= 418.xx with xx>=40, 440.xx with xx>=33, 450.xx with xx>=51, 460.xx with xx>=27 or 470.xx [[driver requirements]](https://docs.nvidia.com/deeplearning/frameworks/tensorflow-release-notes/rel_21-08.html#rel_21-08)
60
* Docker >= 19.03 
59
* Docker >= 19.03 
61
* NVIDIA Container Toolkit 
60
* NVIDIA Container Toolkit 
62
* AssemblyNet Docker image 
61
* AssemblyNet Docker image 
63
* MRI files in nifti format
62
* MRI files in nifti format
64
63
65
## Installation 
64
## Installation 
66
65
67
Docker may be installed on supported versions of [GNU/Linux](https://github.com/volBrain/AssemblyNet/blob/main/README.md#installation-on-gnulinux) or [Windows 10/11 with WSL](https://github.com/volBrain/AssemblyNet/blob/main/README.md#installation-on-windows-1011-with-wsl). The docker image can also be transformed in a [Singularity image](https://github.com/volBrain/AssemblyNet/blob/main/README.md#singularity-image)
66
Docker may be installed on supported versions of [GNU/Linux](https://github.com/volBrain/AssemblyNet/blob/main/README.md#installation-on-gnulinux) or [Windows 10/11 with WSL](https://github.com/volBrain/AssemblyNet/blob/main/README.md#installation-on-windows-1011-with-wsl). The docker image can also be transformed in a [Singularity image](https://github.com/volBrain/AssemblyNet/blob/main/README.md#singularity-image)
68
67
69
### Installation on GNU/Linux
68
### Installation on GNU/Linux
70
69
71
Here are the detailled installation instructions on Ubuntu (18.04 or above).
70
Here are the detailled installation instructions on Ubuntu (18.04 or above).
72
71
73
#### Docker 
72
#### Docker 
74
73
75
Install Docker from official repository [[instructions]](https://docs.docker.com/engine/install/ubuntu/).  
74
Install Docker from official repository [[instructions]](https://docs.docker.com/engine/install/ubuntu/).  
76
(Docker no longer releases updated packages for Ubuntu 16.04)
75
(Docker no longer releases updated packages for Ubuntu 16.04)
77
```
76
```
78
#Uninstall old versions of docker
77
#Uninstall old versions of docker
79
sudo apt-get remove docker docker-engine docker.io containerd runc
78
sudo apt-get remove docker docker-engine docker.io containerd runc
80
#Install using the official repository
79
#Install using the official repository
81
sudo apt-get update
80
sudo apt-get update
82
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
81
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
83
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
82
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
84
sudo apt-key fingerprint 0EBFCD88
83
sudo apt-key fingerprint 0EBFCD88
85
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
84
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
86
sudo apt-get update
85
sudo apt-get update
87
sudo apt-get install docker-ce docker-ce-cli containerd.io
86
sudo apt-get install docker-ce docker-ce-cli containerd.io
88
#Verify that Docker Engine is installed correctly
87
#Verify that Docker Engine is installed correctly
89
sudo docker run hello-world
88
sudo docker run hello-world
90
# it may download the hello-world docker image and then print "Hello from Docker!" and other information.
89
# it may download the hello-world docker image and then print "Hello from Docker!" and other information.
91
```
90
```
92
91
93
#### NVIDIA Driver [GPU-use only]
92
#### NVIDIA Driver [GPU-use only]
94
93
95
Install the proprietary NVIDIA driver. 
94
Install the proprietary NVIDIA driver. 
96
95
97
You need a NVIDIA driver version >= 418.xx with xx>=40, 440.xx with xx>=33, 450.xx with xx>=51, 460.xx with xx>=27 or 470.xx [[driver requirements]](https://docs.nvidia.com/deeplearning/frameworks/tensorflow-release-notes/rel_21-08.html#rel_21-08)
96
You need a NVIDIA driver version >= 418.xx with xx>=40, 440.xx with xx>=33, 450.xx with xx>=51, 460.xx with xx>=27 or 470.xx [[driver requirements]](https://docs.nvidia.com/deeplearning/frameworks/tensorflow-release-notes/rel_21-08.html#rel_21-08)
98
97
99
For exemple:
98
For exemple:
100
```
99
```
101
sudo apt install nvidia-driver-470
100
sudo apt install nvidia-driver-470
102
```
101
```
103
102
104
103
105
#### NVIDIA Container Toolkit [GPU-use only]
104
#### NVIDIA Container Toolkit [GPU-use only]
106
105
107
Install NVIDIA Container Toolkit (nvidia-docker2 package) from official repository [[instructions]](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker)
106
Install NVIDIA Container Toolkit (nvidia-docker2 package) from official repository [[instructions]](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker)
108
```
107
```
109
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
108
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
110
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
109
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
111
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
110
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
112
sudo apt-get update
111
sudo apt-get update
113
sudo apt-get install -y nvidia-docker2
112
sudo apt-get install -y nvidia-docker2
114
sudo systemctl restart docker
113
sudo systemctl restart docker
115
#Verify that Docker can access the GPU with:
114
#Verify that Docker can access the GPU with:
116
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
115
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
117
# it may download the nvidia/cuda:11.0-base docker image and then run nvidia-smi from inside the docker without any error.
116
# it may download the nvidia/cuda:11.0-base docker image and then run nvidia-smi from inside the docker without any error.
118
```
117
```
119
118
120
For other linux distributions, see [NVIDIA Container Toolkit installation instructions](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker).
119
For other linux distributions, see [NVIDIA Container Toolkit installation instructions](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker).
121
120
122
121
123
#### AssemblyNet Docker image 
122
#### AssemblyNet Docker image 
124
123
125
Pull the volbrain/assemblynet:1.0.0 image from Docker Hub repository:
124
Pull the volbrain/assemblynet:1.0.0 image from Docker Hub repository:
126
125
127
```
126
```
128
sudo docker pull volbrain/assemblynet:1.0.0
127
sudo docker pull volbrain/assemblynet:1.0.0
129
```
128
```
130
129
131
See [How to use AssemblyNet](https://github.com/volBrain/AssemblyNet/blob/main/README.md#how-to-use-assemblynet).
130
See [How to use AssemblyNet](https://github.com/volBrain/AssemblyNet/blob/main/README.md#how-to-use-assemblynet).
132
131
133
132
134
### Installation on Windows 10/11 with WSL
133
### Installation on Windows 10/11 with WSL
135
134
136
Here are the detailled installation instructions on Windows 10 or 11.
135
Here are the detailled installation instructions on Windows 10 or 11.
137
136
138
#### Check Windows version
137
#### Check Windows version
139
138
140
You need:
139
You need:
141
* Windows 10 64-bit: Home or Pro 2004 (build 19041) or higher, or Enterprise or Education 1909 (build 18363) or higher.
140
* Windows 10 64-bit: Home or Pro 2004 (build 19041) or higher, or Enterprise or Education 1909 (build 18363) or higher.
142
* Windows 11 64-bit: Home or Pro version 21H2 or higher, or Enterprise or Education version 21H2 or higher.
141
* Windows 11 64-bit: Home or Pro version 21H2 or higher, or Enterprise or Education version 21H2 or higher.
143
142
144
To check your Windows version and build number, select Windows logo key + R, type winver, select OK. 
143
To check your Windows version and build number, select Windows logo key + R, type winver, select OK. 
145
You can update to the latest Windows version by selecting Start > Settings > Windows Update > Check for updates.
144
You can update to the latest Windows version by selecting Start > Settings > Windows Update > Check for updates.
146
145
147
#### Enable BIOS virtualization support
146
#### Enable BIOS virtualization support
148
147
149
BIOS-level hardware virtualization support must be enabled.
148
BIOS-level hardware virtualization support must be enabled.
150
149
151
You can check the Performance tab on the Task Manager to see if virtualization is enabled, see [virtualization support](https://docs.docker.com/desktop/windows/troubleshoot/#virtualization-must-be-enabled).
150
You can check the Performance tab on the Task Manager to see if virtualization is enabled, see [virtualization support](https://docs.docker.com/desktop/windows/troubleshoot/#virtualization-must-be-enabled).
152
151
153
#### WSL2
152
#### WSL2
154
153
155
Install Windows Subsystem for Linux (WSL) 2 [[instructions]](https://docs.microsoft.com/en-us/windows/wsl/install)
154
Install Windows Subsystem for Linux (WSL) 2 [[instructions]](https://docs.microsoft.com/en-us/windows/wsl/install)
156
155
157
Open PowerShell as Administrator (Start menu > PowerShell > right-click > Run as Administrator) and enter this command:
156
Open PowerShell as Administrator (Start menu > PowerShell > right-click > Run as Administrator) and enter this command:
158
```
157
```
159
wsl --install
158
wsl --install
160
```
159
```
161
It should install the last Ubuntu LTS. You may need to reboot your machine.
160
It should install the last Ubuntu LTS. You may need to reboot your machine.
162
161
163
You can check that WSL version 2 was installed:
162
You can check that WSL version 2 was installed:
164
Open PowerShell as Administrator (Start menu > PowerShell > right-click > Run as Administrator) and enter this command:
163
Open PowerShell as Administrator (Start menu > PowerShell > right-click > Run as Administrator) and enter this command:
165
```
164
```
166
wsl -l -v
165
wsl -l -v
167
```
166
```
168
167
169
Launch Ubuntu (Start menu > ubuntu). It should ask to create a default user. 
168
Launch Ubuntu (Start menu > ubuntu). It should ask to create a default user. 
170
You may upgrade the system: 
169
You may upgrade the system: 
171
```
170
```
172
sudo apt-get update
171
sudo apt-get update
173
sudo apt-get upgrade
172
sudo apt-get upgrade
174
```
173
```
175
174
176
#### Docker Desktop
175
#### Docker Desktop
177
176
178
Install Docker Desktop [[instructions]](https://docs.docker.com/desktop/windows/wsl/).
177
Install Docker Desktop [[instructions]](https://docs.docker.com/desktop/windows/wsl/).
179
178
180
Download [Docker Desktop 2.3+](https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe) and follow the installation instructions.
179
Download [Docker Desktop 2.3+](https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe) and follow the installation instructions.
181
Use of WSL 2 backend should be enabled by default during installation if WSL 2 was correctly installed.
180
Use of WSL 2 backend should be enabled by default during installation if WSL 2 was correctly installed.
182
181
183
You have to log off and log in again to be able to use Docker Desktop.
182
You have to log off and log in again to be able to use Docker Desktop.
184
183
185
If your admin account is different to your user account, you must add the user to the docker-users group. Run Computer Management as an administrator and navigate to Local Users and Groups > Groups > docker-users. Right-click to add the user to the group. Log out and log back in for the changes to take effect.
184
If your admin account is different to your user account, you must add the user to the docker-users group. Run Computer Management as an administrator and navigate to Local Users and Groups > Groups > docker-users. Right-click to add the user to the group. Log out and log back in for the changes to take effect.
186
185
187
If you have an Nvidia GPU, you can verify that Docker can access the GPU.
186
If you have an Nvidia GPU, you can verify that Docker can access the GPU.
188
Launch Ubuntu and run:
187
Launch Ubuntu and run:
189
```
188
```
190
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
189
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
191
# it may download the nvidia/cuda:11.0-base docker image and then run nvidia-smi from inside the docker without any error.
190
# it may download the nvidia/cuda:11.0-base docker image and then run nvidia-smi from inside the docker without any error.
192
```
191
```
193
192
194
#### AssemblyNet Docker image 
193
#### AssemblyNet Docker image 
195
194
196
From the Ubuntu terminal, pull the volbrain/assemblynet:1.0.0 image from Docker Hub repository:
195
From the Ubuntu terminal, pull the volbrain/assemblynet:1.0.0 image from Docker Hub repository:
197
```
196
```
198
sudo docker pull volbrain/assemblynet:1.0.0
197
sudo docker pull volbrain/assemblynet:1.0.0
199
```
198
```
200
199
201
See [How to use AssemblyNet](https://github.com/volBrain/AssemblyNet/blob/main/README.md#how-to-use-assemblynet).
200
See [How to use AssemblyNet](https://github.com/volBrain/AssemblyNet/blob/main/README.md#how-to-use-assemblynet).
202
201
203
202
204
203
205
204
206
# How to use AssemblyNet 
205
# How to use AssemblyNet 
207
206
208
## Inputs
207
## Inputs
209
208
210
This Docker image requires images in nifti format (.nii or .nii.gz) as inputs.
209
This Docker image requires images in nifti format (.nii or .nii.gz) as inputs.
211
210
212
To convert your DICOM files into nifti format, you can use [dcm2niix](https://github.com/rordenlab/dcm2niix), a multiplatform and open source software.
211
To convert your DICOM files into nifti format, you can use [dcm2niix](https://github.com/rordenlab/dcm2niix), a multiplatform and open source software.
213
212
214
213
215
## Outputs
214
## Outputs
216
215
217
For each processed image, the following files will be produced (where *filename* is replaced by the original filename):
216
For each processed image, the following files will be produced (where *filename* is replaced by the original filename):
218
217
219
* native_t1_*filename*.nii.gz and mni_t1_*filename*.nii.gz: filtered and normalized T1 image in native space and in MNI space
218
* native_t1_*filename*.nii.gz and mni_t1_*filename*.nii.gz: filtered and normalized T1 image in native space and in MNI space
220
* native_mask_*filename*.nii.gz and mni_mask_*filename*.nii.gz: Intracranial Cavity mask image in native space and in MNI space
219
* native_mask_*filename*.nii.gz and mni_mask_*filename*.nii.gz: Intracranial Cavity mask image in native space and in MNI space
221
* native_tissues_*filename*.nii.gz and mni_tissues_*filename*.nii.gz: tissues segementation in native space and in MNI space
220
* native_tissues_*filename*.nii.gz and mni_tissues_*filename*.nii.gz: tissues segementation in native space and in MNI space
222
* native_macrostructures_*filename*.nii.gz and mni_macrostructures_*filename*.nii.gz: macrostructures segementation in native space and in MNI space
221
* native_macrostructures_*filename*.nii.gz and mni_macrostructures_*filename*.nii.gz: macrostructures segementation in native space and in MNI space
223
* native_lobes_*filename*.nii.gz and mni_lobes_*filename*.nii.gz: lobes segementation in native space and in MNI space
222
* native_lobes_*filename*.nii.gz and mni_lobes_*filename*.nii.gz: lobes segementation in native space and in MNI space
224
* native_strctures_*filename*.nii.gzand mni_strctures_*filename*.nii.gz: structures segementation in native space and in MNI space
223
* native_strctures_*filename*.nii.gzand mni_strctures_*filename*.nii.gz: structures segementation in native space and in MNI space
225
* matrix_affine_native_to_mni_*filename*.txt: ITK transformation matrix from native to MNI space
224
* matrix_affine_native_to_mni_*filename*.txt: ITK transformation matrix from native to MNI space
226
* report_*filename*.pdf: PDF format volumetry report. The reports will show the expected limits/normative bounds of normalized volumes in function of age, if age and optionally sex were specified.
225
* report_*filename*.pdf: PDF format volumetry report. The reports will show the expected limits/normative bounds of normalized volumes in function of age, if age and optionally sex were specified.
227
* report_*filename*.csv: CSV format volumetry report
226
* report_*filename*.csv: CSV format volumetry report
228
* README.pdf: README with this information and the labels correspondance.
227
* README.pdf: README with this information and the labels correspondance.
229
228
230
The reports include a Quality Control rating based on RegQCNET [1]. 
229
The reports include a Quality Control rating based on RegQCNET [1]. 
231
230
232
[1]
231
[1]
233
Baudouin Denis de Senneville, José V. Manjon, Pierrick Coupé,  
232
Baudouin Denis de Senneville, José V. Manjon, Pierrick Coupé,  
234
[RegQCNET: Deep quality control for image-to-template brain MRI affine registration](https://iopscience.iop.org/article/10.1088/1361-6560/abb6be/meta).  
233
[RegQCNET: Deep quality control for image-to-template brain MRI affine registration](https://iopscience.iop.org/article/10.1088/1361-6560/abb6be/meta).  
235
Physics in Medicine & Biology, Volume 65, Number 22.
234
Physics in Medicine & Biology, Volume 65, Number 22.
236
235
237
The size of the ouput files on disk is roughly 7.5 times the input size (for compressed nii files).
236
The size of the ouput files on disk is roughly 7.5 times the input size (for compressed nii files).
238
237
239
## Command options
238
## Command options
240
239
241
The Docker image has the following arguments: 
240
The Docker image has the following arguments: 
242
```
241
```
243
[-age <age>] [-sex <sex>] [-age-sex-csv input_csv_filename] [-recursive] [-pattern-t1 <pattern>] [-no-pdf-report] [-global-csv output_csv_filename] [-batch-size <batchSize>] <input image or directory> [output directory]
242
[-age <age>] [-sex <sex>] [-age-sex-csv input_csv_filename] [-recursive] [-pattern-t1 <pattern>] [-no-pdf-report] [-global-csv output_csv_filename] [-batch-size <batchSize>] <input image or directory> [output directory]
244
```
243
```
245
244
246
* `<input image or directory>`: it is possible to process a single image or all the images in an input directory. 
245
* `<input image or directory>`: it is possible to process a single image or all the images in an input directory. 
247
* `<output directory>`: it is also possible to specify an output directory where the produced files will be saved. 
246
* `<output directory>`: it is also possible to specify an output directory where the produced files will be saved. 
248
* `[-age <age>]` and `[-sex <sex>]` allows to specify age and sex. Sex must be "Male" or "Female". Age is the age in years and should be a float. If an age is specified, the produced volumetry report report_*filename*.pdf will show the expected limits/normative bounds of normalized volumes in function of age. If both age and sex are specified, the expected limits of normalized volumes will be in function of age and sex. These bounds have been estimated over more than 3000 cognitively normal subjects. In case of abnormality, red values indicate volumes lower or bigger than normal at 95%. These options are mainly useful when processing exactly one image (see `-age-sex-csv` when processing several images).
247
* `[-age <age>]` and `[-sex <sex>]` allows to specify age and sex. Sex must be "Male" or "Female". Age is the age in years and should be a float. If an age is specified, the produced volumetry report report_*filename*.pdf will show the expected limits/normative bounds of normalized volumes in function of age. If both age and sex are specified, the expected limits of normalized volumes will be in function of age and sex. These bounds have been estimated over more than 3000 cognitively normal subjects. In case of abnormality, red values indicate volumes lower or bigger than normal at 95%. These options are mainly useful when processing exactly one image (see `-age-sex-csv` when processing several images).
249
* `-age-sex-csv <input_csv_filename>`: specify input CSV filename with age and sex for all the input files when processing several files. The CSV file should have at least three columns: filename, age and sex, separated by commas. The first row of the csv should start with "#" and contain the columns names. In the filename column, each filename should contain the relative path of a file in the input directory. 
248
* `-age-sex-csv <input_csv_filename>`: specify input CSV filename with age and sex for all the input files when processing several files. The CSV file should have at least three columns: filename, age and sex, separated by commas. The first row of the csv should start with "#" and contain the columns names. In the filename column, each filename should contain the relative path of a file in the input directory. 
250
* `[-recursive]`: allows to specify that images will be searched recursively in input directory. 
249
* `[-recursive]`: allows to specify that images will be searched recursively in input directory. 
251
* `[-pattern-t1 <pattern>]`: allows to specify a pattern for images searched in input directory. The default is: \*.nii\*
250
* `[-pattern-t1 <pattern>]`: allows to specify a pattern for images searched in input directory. The default is: \*.nii\*
252
* `[-no-pdf-report]`: specify to produce no PDF format volumetry report.
251
* `[-no-pdf-report]`: specify to produce no PDF format volumetry report.
253
* `[-global-csv <output_csv_filename>]`: allows to have all the volumetry information in a unique CSV file.
252
* `[-global-csv <output_csv_filename>]`: allows to have all the volumetry information in a unique CSV file.
254
* `[-batch-size <batchSize>]`: allows to speciy the batch size (an integer) of T1 images processed simultaneously. When processing several images, increasing the batch size may reduce the total processing time (see [Processing time](https://github.com/volBrain/AssemblyNet/blob/main/README.md#processing_time)) at the cost of more memory usage (mainly CPU memory). It is recommanded to use the largest batch size that fits in your CPU & GPU memory. Default batch size is set to 3.
253
* `[-batch-size <batchSize>]`: allows to speciy the batch size (an integer) of T1 images processed simultaneously. When processing several images, increasing the batch size may reduce the total processing time (see [Processing time](https://github.com/volBrain/AssemblyNet/blob/main/README.md#processing_time)) at the cost of more memory usage (mainly CPU memory). It is recommanded to use the largest batch size that fits in your CPU & GPU memory. Default batch size is set to 3.
255
254
256
255
257
## Exemples of commands
256
## Exemples of commands
258
257
259
258
260
The following command run AssemblyNet on first GPU (0) on the image /absolute/path/to/images/image.nii.gz:  
259
The following command run AssemblyNet on first GPU (0) on the image /absolute/path/to/images/image.nii.gz:  
261
```
260
```
262
sudo docker run --rm --gpus '"device=0"' -v /absolute/path/to/images:/data volbrain/assemblynet:1.0.0 /data/image.nii.gz
261
sudo docker run --rm --gpus '"device=0"' -v /absolute/path/to/images:/data volbrain/assemblynet:1.0.0 /data/image.nii.gz
263
```
262
```
264
263
265
- "/absolute/path/to/images" should be changed to the absolute path of your image. This path must only contain these letters `[a-zA-Z0-9][a-zA-Z0-9_.-]`.
264
- "/absolute/path/to/images" should be changed to the absolute path of your image. This path must only contain these letters `[a-zA-Z0-9][a-zA-Z0-9_.-]`.
266
- You can pass `.nii` or `.nii.gz` files
265
- You can pass `.nii` or `.nii.gz` files
267
- If you have multiple GPUs, you can change the GPU used to run AssemblyNet by changing the GPU indice set. '"device=2"' for third GPU for example. This Docker image uses only one GPU.
266
- If you have multiple GPUs, you can change the GPU used to run AssemblyNet by changing the GPU indice set. '"device=2"' for third GPU for example. This Docker image uses only one GPU.
268
- The produced output files will be in the same directory than the input image.
267
- The produced output files will be in the same directory than the input image.
269
268
270
In the same way, the following command run AssemblyNet on CPU on the image /absolute/path/to/images/image.nii
269
In the same way, the following command run AssemblyNet on CPU on the image /absolute/path/to/images/image.nii
271
```
270
```
272
sudo docker run --rm -v /absolute/path/to/images:/data volbrain/assemblynet:1.0.0 /data/image.nii
271
sudo docker run --rm -v /absolute/path/to/images:/data volbrain/assemblynet:1.0.0 /data/image.nii
273
```
272
```
274
273
275
You can also process all the images in an input directory and produce the output files in an output directory, here on first GPU:
274
You can also process all the images in an input directory and produce the output files in an output directory, here on first GPU:
276
```
275
```
277
sudo docker run --rm --gpus '"device=0"' -v /absolute/input/path/to/images:/data -v /absolute/output/path:/data_out volbrain/assemblynet:1.0.0 /data /data_out
276
sudo docker run --rm --gpus '"device=0"' -v /absolute/input/path/to/images:/data -v /absolute/output/path:/data_out volbrain/assemblynet:1.0.0 /data /data_out
278
```
277
```
279
278
280
`sudo` may be omitted if the user is member of the docker group.
279
`sudo` may be omitted if the user is member of the docker group.
281
280
282
281
283
Here is an example of command to run AssemblyNet on first GPU, specifying age and gender of subject to have normality bounds:  
282
Here is an example of command to run AssemblyNet on first GPU, specifying age and gender of subject to have normality bounds:  
284
```
283
```
285
sudo docker run --rm --gpus '"device=0"' -v /absolute/path/to/images:/data volbrain/assemblynet:1.0.0 -age 50 -sex Male /data/image.nii.gz
284
sudo docker run --rm --gpus '"device=0"' -v /absolute/path/to/images:/data volbrain/assemblynet:1.0.0 -age 50 -sex Male /data/image.nii.gz
286
```
285
```
287
If you only have one gpu, you can also specify `--gpus all` instead of `--gpus '"device=0"'`.
286
If you only have one gpu, you can also specify `--gpus all` instead of `--gpus '"device=0"'`.
288
287
289
Here is an example of command to run AssemblyNet on first GPU on all the T1.nii images recursively found in input directory `/absolute/path/to/images`, produce a global csv file, and save ouptut files in `/absolute/path/to/output/directory`:
288
Here is an example of command to run AssemblyNet on first GPU on all the T1.nii images recursively found in input directory `/absolute/path/to/images`, produce a global csv file, and save ouptut files in `/absolute/path/to/output/directory`:
290
```
289
```
291
sudo docker run --rm --gpus '"device=0"' -v /absolute/path/to/images:/data -v /absolute/path/to/output/directory:/data_out volbrain/assemblynet:1.0.0 -recursive -pattern-t1 T1.nii -global-csv /data_out/global_volumetry_info.csv /data/ /data_out/
290
sudo docker run --rm --gpus '"device=0"' -v /absolute/path/to/images:/data -v /absolute/path/to/output/directory:/data_out volbrain/assemblynet:1.0.0 -recursive -pattern-t1 T1.nii -global-csv /data_out/global_volumetry_info.csv /data/ /data_out/
292
```
291
```
293
292
294
Here is an example of command to run AssemblyNet on first GPU on all the T1*.nii* images recursively found in input directory `/absolute/path/to/images`, to use a csv filename to specify age and sex, to produce a global csv file and no pdf report, to use a batch size of 8 and save ouptut files in `/absolute/path/to/output/directory`:
293
Here is an example of command to run AssemblyNet on first GPU on all the T1*.nii* images recursively found in input directory `/absolute/path/to/images`, to use a csv filename to specify age and sex, to produce a global csv file and no pdf report, to use a batch size of 8 and save ouptut files in `/absolute/path/to/output/directory`:
295
```
294
```
296
sudo docker run --rm --gpus '"device=0"' -v /absolute/path/to/images:/data -v /absolute/path/to/output/directory:/data_out volbrain/assemblynet:1.0.0 -recursive -pattern-t1 "T1*.nii*" -age-sex-csv /data/age_sex.csv -global-csv /data_out/global_volumetry_info.csv -no-pdf-report -batch-size 8 /data/ /data_out/
295
sudo docker run --rm --gpus '"device=0"' -v /absolute/path/to/images:/data -v /absolute/path/to/output/directory:/data_out volbrain/assemblynet:1.0.0 -recursive -pattern-t1 "T1*.nii*" -age-sex-csv /data/age_sex.csv -global-csv /data_out/global_volumetry_info.csv -no-pdf-report -batch-size 8 /data/ /data_out/
297
```
296
```
298
297
299
If there are sub-directories in the input dir (in particular when -recursive is used) and an output directory is specified, these sub-directories will be created in the output directory. This is for example a way to process a [BIDS](https://bids.neuroimaging.io/) directory.
298
If there are sub-directories in the input dir (in particular when -recursive is used) and an output directory is specified, these sub-directories will be created in the output directory. This is for example a way to process a [BIDS](https://bids.neuroimaging.io/) directory.
300
299
301
On Windows, a C:\data_dir directory will be mounted as /mnt/c/data_dir in the WSL file system. So if you have a file image.nii.gz in C:\data_dir, you could process it for example with:
300
On Windows, a C:\data_dir directory will be mounted as /mnt/c/data_dir in the WSL file system. So if you have a file image.nii.gz in C:\data_dir, you could process it for example with:
302
```
301
```
303
docker run --rm --gpus '"device=0"' -v /mnt/c/data_dir:/data volbrain/assemblynet:1.0.0 -age 50 -sex Male /data/image.nii.gz
302
docker run --rm --gpus '"device=0"' -v /mnt/c/data_dir:/data volbrain/assemblynet:1.0.0 -age 50 -sex Male /data/image.nii.gz
304
```
303
```
305
However, your performance speed will improve if you store/copy your file(s) in the WSL file system.
304
However, your performance speed will improve if you store/copy your file(s) in the WSL file system.
306
305
307
Processing time should around 7-15mn/image depending on the hardware configuration (See [Processing time](https://github.com/volBrain/AssemblyNet/blob/main/README.md#processing_time)).
306
Processing time should around 7-15mn/image depending on the hardware configuration (See [Processing time](https://github.com/volBrain/AssemblyNet/blob/main/README.md#processing_time)).
308
307
309
The produced ouput files will be own by root. You may change ownership with `sudo chown -R $(id -u) output_file_or_directory`.
308
The produced ouput files will be own by root. You may change ownership with `sudo chown -R $(id -u) output_file_or_directory`.
310
If you run docker with `--user $(id -u):$(id -g)`  the created files will have the current user as owner, however, on linux, docker will only run on CPU.
309
If you run docker with `--user $(id -u):$(id -g)`  the created files will have the current user as owner, however, on linux, docker will only run on CPU.
311
310
312
AssemblyNet is not fully deterministic: you may have slight differences in the produced segmentations between runs.
311
AssemblyNet is not fully deterministic: you may have slight differences in the produced segmentations between runs.
313
312
314
313
315
# Singularity image 
314
# Singularity image 
316
315
317
To use this docker image without root privileges (on a HPC cluster for example), you can transform the docker image in a singularity image with the following command:
316
To use this docker image without root privileges (on a HPC cluster for example), you can transform the docker image in a singularity image with the following command:
318
```
317
```
319
singularity build assemblynet_1.0.0.sif docker://volbrain/assemblynet:1.0.0
318
singularity build assemblynet_1.0.0.sif docker://volbrain/assemblynet:1.0.0
320
```
319
```
321
320
322
You can then use the singularity image with the following command to process a single image (and output the produced files in the same directory):
321
You can then use the singularity image with the following command to process a single image (and output the produced files in the same directory):
323
```
322
```
324
singularity run --nv -B <your_tmp_dir>:/tmp -B <your_data_dir>:/data <path_to_singularity_image>/assemblynet_1.0.0.sif /data/<your_nii_image>
323
singularity run --nv -B <your_tmp_dir>:/tmp -B <your_data_dir>:/data <path_to_singularity_image>/assemblynet_1.0.0.sif /data/<your_nii_image>
325
```
324
```
326
or to process a whole directory (and output the produced files in a new ouput directory):
325
or to process a whole directory (and output the produced files in a new ouput directory):
327
```
326
```
328
singularity run --nv -B <your_tmp_dir>:/tmp -B <your_data_dir>:/data <your_data_out_dir>:/data_out <path_to_singularity_image>/assemblynet_1.0.0.sif -recursive /data /data_out
327
singularity run --nv -B <your_tmp_dir>:/tmp -B <your_data_dir>:/data <your_data_out_dir>:/data_out <path_to_singularity_image>/assemblynet_1.0.0.sif -recursive /data /data_out
329
```
328
```
330
The option `--nv` enables GPU support. You may have to set the environment variable [SINGULARITYENV_CUDA_VISIBLE_DEVICES](https://sylabs.io/guides/main/user-guide/gpu.html#gpu-selection) to choose which GPU to use.
329
The option `--nv` enables GPU support. You may have to set the environment variable [SINGULARITYENV_CUDA_VISIBLE_DEVICES](https://sylabs.io/guides/main/user-guide/gpu.html#gpu-selection) to choose which GPU to use.
331
330
332
Depending on how your computer is set up, you may also have to specify a temporary home directory, with for example:  `-H <a_tmp_dir>:/data` (for example to prevent finding local python packages).
331
Depending on how your computer is set up, you may also have to specify a temporary home directory, with for example:  `-H <a_tmp_dir>:/data` (for example to prevent finding local python packages).
333
332
334
See [command options](https://github.com/volBrain/AssemblyNet/blob/main/README.md#command-options) for other command arguments.
333
See [command options](https://github.com/volBrain/AssemblyNet/blob/main/README.md#command-options) for other command arguments.
335
334
336
335
337
# Processing time
336
# Processing time
338
337
339
The following tables list AssemblyNet processing time for one or several images when running on CPU or GPU.
338
The following tables list AssemblyNet processing time for one or several images when running on CPU or GPU.
340
Each time, the batch size is set to be equal to the number of images.
339
Each time, the batch size is set to be equal to the number of images.
341
340
342
341
343
Config1:  
342
Config1:  
344
 CPU: Intel Core i9-7940x  
343
 CPU: Intel Core i9-7940x  
345
 GPU: Nvidia Titan Xp 12GB  
344
 GPU: Nvidia Titan Xp 12GB  
346
 RAM: 128GB  
345
 RAM: 128GB  
347
 DISK: SATA
346
 DISK: SATA
348
 OS: Ubuntu 20.04  
347
 OS: Ubuntu 20.04  
349
348
350
On GPU:
349
On GPU:
351
350
352
| # images   | total time | time per image |
351
| # images   | total time | time per image |
353
| ---------- | ---------- | -------------- |
352
| ---------- | ---------- | -------------- |
354
|  1 image   |  14m48s    |  888s/img      |
353
|  1 image   |  14m48s    |  888s/img      |
355
|  2 images  |  21m02s    |  631s/img      |
354
|  2 images  |  21m02s    |  631s/img      |
356
|  4 images  |  33m15s    |  499s/img      |
355
|  4 images  |  33m15s    |  499s/img      |
357
|  8 images  |  58m34s    |  440s/img      |
356
|  8 images  |  58m34s    |  440s/img      |
358
| 12 images  |  82m06s    |  411s/img      |
357
| 12 images  |  82m06s    |  411s/img      |
359
| 16 images  | 108m21s    |  407s/img      |
358
| 16 images  | 108m21s    |  407s/img      |
360
359
361
On CPU:
360
On CPU:
362
361
363
| # images   | total time | time per image |
362
| # images   | total time | time per image |
364
| ---------- | ---------- | -------------- |
363
| ---------- | ---------- | -------------- |
365
|  1 image   |  16m32s    |  992s/img      |
364
|  1 image   |  16m32s    |  992s/img      |
366
|  2 images  |  27m48s    |  834s/img      |
365
|  2 images  |  27m48s    |  834s/img      |
367
|  4 images  |  46m42s    |  699s/img      |
366
|  4 images  |  46m42s    |  699s/img      |
368
|  8 images  |  87m32s    |  657s/img      |
367
|  8 images  |  87m32s    |  657s/img      |
369
| 12 images  | 127m40s    |  638s/img      |
368
| 12 images  | 127m40s    |  638s/img      |
370
| 16 images  | 169m10s    |  635s/img      |
369
| 16 images  | 169m10s    |  635s/img      |
371
370
372
371
373
372
374
Config2  
373
Config2  
375
 CPU: AMD 5800X  
374
 CPU: AMD 5800X  
376
 GPU: RTX 3800  
375
 GPU: RTX 3800  
377
 RAM: 64GB  
376
 RAM: 64GB  
378
 DISK: NVMe SSD  
377
 DISK: NVMe SSD  
379
 OS: Windows 10 - WSL2 (Ubuntu 20.04)    
378
 OS: Windows 10 - WSL2 (Ubuntu 20.04)    
380
379
381
On GPU:
380
On GPU:
382
381
383
| # images   | total time | time per image |
382
| # images   | total time | time per image |
384
| ---------- | ---------- | -------------- |
383
| ---------- | ---------- | -------------- |
385
|  1 image   |   6m42s    |  402s/img      |
384
|  1 image   |   6m42s    |  402s/img      |
386
|  2 images  |   9m17s    |  279s/img      |
385
|  2 images  |   9m17s    |  279s/img      |
387
|  4 images  |  15m03s    |  226s/img      |
386
|  4 images  |  15m03s    |  226s/img      |
388
|  8 images  |  26m40s    |  200s/img      |
387
|  8 images  |  26m40s    |  200s/img      |
389
| 12 images  |  38m11s    |  191s/img      |
388
| 12 images  |  38m11s    |  191s/img      |
390
389
391
On CPU:
390
On CPU:
392
391
393
| # images   | total time | time per image |
392
| # images   | total time | time per image |
394
| ---------- | ---------- | -------------- |
393
| ---------- | ---------- | -------------- |
395
|  1 image   |  11m37s    |  697s/img      |
394
|  1 image   |  11m37s    |  697s/img      |
396
|  2 images  |  20m03s    |  601s/img      |
395
|  2 images  |  20m03s    |  601s/img      |
397
|  4 images  |  37m51s    |  568s/img      |
396
|  4 images  |  37m51s    |  568s/img      |
398
|  8 images  |  72m16s    |  542s/img      |
397
|  8 images  |  72m16s    |  542s/img      |
399
| 12 images  | 112m08s    |  561s/img      |
398
| 12 images  | 112m08s    |  561s/img      |
400
399
401
400
402
According to our benchmarks, disk access speed has more impact on processing time than GPU performance.
401
According to our benchmarks, disk access speed has more impact on processing time than GPU performance.
403
If possible, it is recommended to store both the Docker image and the T1 images on a SSD disk.
402
If possible, it is recommended to store both the Docker image and the T1 images on a SSD disk.
404
403
405
# Normative ranges
404
# Normative ranges
406
405
407
We provide the normative ranges of normalized volumes used in AssemblyNet (in the report when age is provided) through the following files: [bounds_female.csv](bounds_female.csv), [bounds_male.csv](bounds_male.csv), and [bounds_general.csv](bounds_general.csv).
406
We provide the normative ranges of normalized volumes used in AssemblyNet (in the report when age is provided) through the following files: [bounds_female.csv](bounds_female.csv), [bounds_male.csv](bounds_male.csv), and [bounds_general.csv](bounds_general.csv).
408
bounds_general.csv is used when only age is provided (and not sex).
407
bounds_general.csv is used when only age is provided (and not sex).
409
408
410
The first column is the name of the tissue/macrostructure/structure. In case of a bilateral symmetric element, the name is present four times with suffixes: "_total", "_right", "_left", "_asym" for the total, this is right+left, right and left normalized volumes and the asymmetry (calculated as the difference between right and left volumes divided by their mean, in percent).
409
The first column is the name of the tissue/macrostructure/structure. In case of a bilateral symmetric element, the name is present four times with suffixes: "_total", "_right", "_left", "_asym" for the total, this is right+left, right and left normalized volumes and the asymmetry (calculated as the difference between right and left volumes divided by their mean, in percent).
411
Then the following columns, are the lower bound, median value and upper bound for each age in [1; 90] years old.
410
Then the following columns, are the lower bound, median value and upper bound for each age in [1; 90] years old.
412
411
413
The images used to compute these ranges are described in the following paper:  
412
The images used to compute these ranges are described in the following paper:  
414
Pierrick Coupé, Gwenaelle Catheline, Enrique Lanuza, José V. Manjon, and for the Alzheimer's Disease Neuroimaging Initiative  
413
Pierrick Coupé, Gwenaelle Catheline, Enrique Lanuza, José V. Manjon, and for the Alzheimer's Disease Neuroimaging Initiative  
415
[Towards a unified analysis of brain maturation and aging across the entire lifespan: A MRI analysis](https://onlinelibrary.wiley.com/doi/abs/10.1002/hbm.23743).  
414
[Towards a unified analysis of brain maturation and aging across the entire lifespan: A MRI analysis](https://onlinelibrary.wiley.com/doi/abs/10.1002/hbm.23743).  
416
Human Brain Mapping, 38: 5501-5518.
415
Human Brain Mapping, 38: 5501-5518.
417
[[paper]](https://onlinelibrary.wiley.com/doi/epdf/10.1002/hbm.23743)  
416
[[paper]](https://onlinelibrary.wiley.com/doi/epdf/10.1002/hbm.23743)  
418
Please cite this paper if you use these csv files.
417
Please cite this paper if you use these csv files.
419
418
420
419
421
# License
420
# License
422
421
423
**This Docker image is to be used only for non-commercial and non-medical purposes (research only).**
422
**This Docker image is to be used only for non-commercial and non-medical purposes (research only).**
424
423
425
The code and Docker are free for non-commercial purposes. [license.txt](license.txt) shows the terms for commercial and for-profit purposes.
424
The code and Docker are free for non-commercial purposes. [license.txt](license.txt) shows the terms for commercial and for-profit purposes.
426
425
427
As this Docker image uses CUDA for GPU support, you must agreee to [CUDA End User License Agreement](https://docs.nvidia.com/cuda/eula/index.html#abstract).  
426
As this Docker image uses CUDA for GPU support, you must agreee to [CUDA End User License Agreement](https://docs.nvidia.com/cuda/eula/index.html#abstract).  
428
Internally, this docker uses binaries of [SPM8](https://www.fil.ion.ucl.ac.uk/spm/software/spm8/), [N4ITK](), [ANTs](https://github.com/ANTsX/ANTs).
427
Internally, this docker uses binaries of [SPM8](https://www.fil.ion.ucl.ac.uk/spm/software/spm8/), [N4ITK](), [ANTs](https://github.com/ANTsX/ANTs).
429
428
430
429