These are biventricular (right and left ventricles) modes generated from the UK Biobank study, which was published in [Mauger et al., JCMR 2019] paper. Each figure contains two biventricular models from End-Diastole (wireframe without surface color) and End-Systole (coloured surface: green = left ventricle, blue = right ventricle, red = myocardium, pink contour = mitral valve, and yellow contour = tricuspid valve).

Mode 1

Mode 2

Mode 3

Mode 4
File Info
We provide two Principal Component Analysis (PCA) atlases from the download link above:
- UKBRVLV.h5 contains PCA atlas derived from 630 healthy reference subjects from the UK Biobank Study (see [Petersen et al., 2017]).
- UKBRVLV_ALL.h5 contains PCA atlas derived from all 4,329 subjects from the UK Biobank Study.
Only the first 200 PCA components are shared.
The PCA structure is as follows:
/COEFF
: N x 200 matrix of the first 200 principal components, where N is the number of sample points/LATENT
: 200 elements vector of the eigenvalues,/EXPLAINED
: 200 elements vector that show the percentage of the total variance explained by each principal component,/MU
: N elements vector that defines the mean shape of the biventricular model.
The file is saved in HDF5 format. Examples on how to read and plot the first principal mode are shown on the right panel here.
Notes on a shape vector:
A shape vector is defined by N elements, which means there are P = (N/3) points. Coordinate points are structured as [x1, y1, z1, x2, y2, z2, ..., xP, yP, zP] vector. Each shape vector is concatenated by [end-diastole, end-systole] components, which means that there are (P/2) points for each frame. See examples in Matlab, Python and R script on how to read the atlas below.
Matlab
Generate and plot the first principal component with σ=1.5
% read the principal components pc = h5read('UKBRVLV.h5', '/COEFF'); % read the eigenvalues ev = h5read('UKBRVLV.h5', '/LATENT'); % read the mean shape mu = h5read('UKBRVLV.h5', '/MU'); % generate the first principal mode % with 1.5 times the standard deviation S = mu + (1.5 .* sqrt(ev(1)) .* pc(:,1)'); % get ED & ES points, & convert to 3 columns matrix [x, y, z] N = length(S); ed = reshape(S(1:N/2), 3, [])'; es = reshape(S((N/2+1):end), 3, [])'; % plot ED points in blue % plot ES points in red figure('Color', 'w'); plot3(ed(:,1), ed(:,2), ed(:,3), 'b.'); hold on; plot3(es(:,1), es(:,2), es(:,3), 'r.'); axis vis3d axis equal
Python
Generate and plot the first principal component with σ=1.5
from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import h5py as h5 import numpy as np # read H5 file pc = h5.File('UKBRVLV.h5', 'r') # note that H5PY matrices in python are transposed # generate the first principal mode # with 1.5 times the standard deviation S = np.transpose(pc['MU']) + (1.5 * np.sqrt(pc['LATENT'][0,0]) * pc['COEFF'][0,:]) # get ED & ES points, & convert to 3 columns matrix [x, y, z] N = S.shape[1] // 2 ed = np.reshape(S[0,:N], (-1,3)) es = np.reshape(S[0,N:], (-1,3)) # plot ED points in blue # plot ES points in red fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(ed[:,0], ed[:,1], ed[:,2], color='dodgerblue', marker='.') ax.scatter(es[:,0], es[:,1], es[:,2], color='firebrick', marker='.')
R
Generate and plot the first principal component with σ=1.5
library(h5) library(rgl) # read H5 file f = h5file("UKBRVLV.h5") # read the principal components pc = f["/COEFF"] # read the eigenvalues ev = f["/LATENT"] # read the mean shape mu = f["/MU"] # generate the first principal mode # with 1.5 times the standard deviation S = t(mu[]) + (1.5 * as.numeric(sqrt(ev[1,1])) * pc[1,]) # get ED & ES points, & convert to 3 columns matrix [x, y, z] N = length(S); ed = matrix(S[1, 1:(N/2)], ncol=3, byrow=TRUE) es = matrix(S[1, (N/2+1):N], ncol=3, byrow=TRUE) # plot ED points in blue # plot ES points in red plot3d(ed[,1],ed[,2],ed[,3], col="dodgerblue3", size=1) plot3d(es[,1],es[,2],es[,3], col="firebrick3", size=1, add=TRUE)