Computational pipeline for reconstructing and analyzing the vascular connectome from lumen-labeled two-photon vascular volumetric images.
The pipeline is implemented in MATLAB 2019b and has been tested on Win 10, CentOS 7.6 and Ubuntu 18.04.
- Directory setting: Setup the directories in
./Utilities/FileManager.m
.ROOT_PATH
: the absolute path to the root of the data folder.SCRIPT_PATH
: the absolute path to the root of the local script (this repository) folder.EXTERNAL_LIB_ROOT_PATH
: the absolute path to the root of the external libraries. This folder contains third-party softwares for visualization, e.g.itk-snap
.SCRATCH_ROOT_PATH
: the absolute path to the root of the scratch folder.SERVER_ROOT_PATH
: the absolute path to the server / network drive that is mapped to a local directory. This is for accessing data not stored on the local hard drive.SERVER_SCRIPT_PATH
: the absolute path to the shared script on the server / network drive. This is for parallel computing using multiple machines.
- Install third-party software:
ITK-SNAP
: an open-source software for visualizing and annotating volumetric image data. After installation, please setup the directory to the executable file infp_itksnap_exe
of./Utilities/FileManager.m/
.
The spatial graph representation of the vascular network is stored as a MATLAB structure with the following fields:
num
: MATLAB structure with the following fields:mask_size
: 1 x 3 vector, size of the 3D array that holds the vascular network. The dimensions are in MATLAB subscript order and can be directly used for converting the linear indices of the voxels into the subscripts.mask_size_pad
: 1 x 3 vector, equalsmask_size + 2
.block_voxel
: scalar, number of voxels in the 3D array, equalsprod(mask_size)
.block_voxel_pad
: scalar, number of voxels in the padded 3D array, equalsprod(maks_size_pad)
.neighbor_add_pad
: 26 x 1 vector, linear indices difference between a voxel and its 26 (3 x 3 x 3 - 1) neighboring voxels in the 3D array.neighbor_add_pad
: 26 x 1 vector, linear indices difference between a voxel and its 26 (3 x 3 x 3 - 1) neighboring voxels in the padded 3D array.skeleton_voxel
: scalar, number of vessel skeleton voxels.
link
: MATLAB structure with the following fields:num_cc
: scalar, number of link (vessel segment) connected components in the graphcc_ind
: cell array, each cell contains the linear indices of the centerline voxels in the link, ordered from one end of the segment to an other end of the segment. The link connected components are labeled from 1 tonum_cc
.pos_ind
: column vector, generated by concatenatinglink.cc_ind
.num_voxel
: number of link voxels in the graphnum_voxel_per_cc
: number of voxels in each link connected component, i.e. number of elements in each cell ofcc_ind
.label
: column vector, link lables of the link voxels.map_ind_2_label
: sparse column vector, map the linear indices of link voxels to their link connected component labels.connected_node_label
:num_cc
-by-2 array, labels of the connected nodes at the two ends (may not in the same order as the indices incc_ind
).0
represents unconnected endpoints.num_node
: column vector, number of connected nodes of each link.
node
: MATLAB structure with the following fields:num_cc
,num_voxel
,num_voxel_per_cc
,label
,map_ind_2_label
,pos_ind
are defined the same as the ones inlink
for node connected component.cc_ind
: same aslink.cc_ind
, but the linear indices in each cell are not ordered.connected_link_label
: cell array, each cell contains the label of the link connected componet that the node is connected to.
isopoint
: MATLAB structure with the following fields:pos_ind
andnum_voxel
are defined the same as the ones inlink
for isolated centerline voxels.
isoloop
: MATLAB structure with the following fields:cc_ind
,num_cc
,pos_ind
are defined the same as the ones inlink
for isolated loop connected components.
endpoints
: MATLAB structure with the following fields:pos_ind
: column vector, linear indices of the link voxels with only one 26-neighbor centerline voxellink_label
: column vector, label of the link connected component that the endpoint voxel belong to.num_voxel
: scalar, number of endpoint voxels.map_ind_2_label
: sparse column vector, map the linear indices of the endpoint voxels to their link connected component labels.
radius
: sparse column vector, map the linear indices of the centerline voxels to their radii.
@article{Ji2021,
title={Brain microvasculature has a common topology with local differences in geometry that match metabolic load},
author={Ji, Xiang and Ferreira, Tiago and Friedman, Beth and Liu, Rui and Liechty, Hannah and Bas, Erhan and Chandrasheka, Jayaram and Kleinfeld, David},
journal={Neuron},
volume={109},
number={7},
pages={P1168-1187.E13},
year={2021},
publisher={Elsevier},
url={https://doi.org/10.1016/j.neuron.2021.02.006}}