The main code repo for the paper SynthAorta: A 3D Mesh Dataset of Parametrized Physiological Healthy Aortas.
This repository contains 100 examples from the dataset; with 4 nested meshes of varying spatial refinement level per case. The Examples folder contains the 4 .msh files related to the first mesh case.
The full dataset in the identical format as the present one may be found at the repository of the Graz University of Technology: https://repository.tugraz.at/doi/10.3217/e59fr-wj507 (DOI: 10.3217/ft6av-k4w55). The dataset contains the following data for each case, in binary format:
- Mesh nodes as a vector:
$[x_1,y_1,z_1,x_2,y_2,z_2,\dots,x_n,y_n,z_n]$ -- in float ('single') format - Skeleton nodes as a vector:
$[x_1,y_1,z_1,x_2,y_2,z_2,\dots,x_n,y_n,z_n]$ -- in float ('single') format - Skeleton radii as a vector:
$[r_1, r_2, \dots, r_n]$ -- in float ('single') format - Connectivity matrices for 4 refinement levels, shared by all meshes (hexahedral) -- in uint32 format
- Equivalent connectivity matrices for the mesh surface (quadrilateral) -- in uint32 format
- Connectivity matrix for skeleton segments -- in uint32 format
- Parameter vectors for each example -- in single format
For a unified format, and easier visualization, it is recommended to install the open source 3D finite element mesh generator Gmsh.
Everything is written for MATLAB/Octave. The following two steps are necessary to use the code.
- To make sure all the paths are properly added, define a variable that says where you saved the SynthAorta folder and add it to MATLAB paths, e.g.,
InputPath = "C:/Users/YourUsername/Documents/github/SynthAorta/"
addpath(InputPath);
- To initialize the necessary paths to the code use:
SynthAortaInitialize(InputPath);
Now you are ready to use the code! Each future function will require the InputPath variable.
To load a mesh use the following function:
Mesh = SynthAortaLoadLinMesh(Index, RefLevel, InputPath);
where you choose the example number you want(Index, can be 1 to 100 for the test dataset provided here) and the refinement level(RefLevel). The possible options for the refinement level are 1, 2, 4 and 8; the meshes are nested.
To visualize the mesh, first convert it to the .msh format using
OutputFilename = "YourFilename.msh";
SynthAortaMeshLinHexaToMSH(Mesh, OutputFilename, [], []);
and then open the .msh file using Gmsh. Note that if you do not add ".msh" it will be added automatically. The meshes are also equipped with their extracted surface; you can verify this in Gmsh using Tools -> Visibility -> (Select surface or volume) -> Apply.
To load and visualize the skeleton(centerline) with the radius information use:
Skeleton = SynthAortaLoadSkeleton(Index, InputPath);
The visualization can be toggled off with a flag at the beginning of the function.
Additional functionality should be added along the way, however it has to be done here since the data published at the repository of the Graz University of Technology cannot be modified.
If you are using this work, consider citing the original paper, currently available only as a preprint: SynthAorta: A 3D Mesh Dataset of Parametrized Physiological Healthy Aortas