These files, and the notes below, were prepared by A. van Oosterom and P. van Dam. The geometry files are text files. Matlab code for reading and manipulating the .tri files is also provided here.
thorax | case3_torso.tri (370 nodes) |
left lung | case3_llung.tri |
right lung | case3_rlung.tri |
epicardium | case3_peric.tri closed geometry encompassing the ventricles shares nodes with those of the epicardium |
ventricles | case3_ventr.tri closed surface bounding ventricular mass: topology: first order doughnut; (because of RVOT) includes: endocardium; epicardium; and connection at the base |
left cavity | case3_lendo.tri closed surface representing blood inside cavities shares nodes with those of the endocardium |
right cavity | case3_rendo.tri closed surface representing blood inside cavities shares nodes with those of the endocardium |
All the above: consistent coordinate system; heart in natural position
left ventricle | case3_LV.tri (corrected) closed surface representing left ventricular myocardium. (right ventricle 'cut off') orientation vertical: along long axis |
Descriptive trailers are included in these files:
Nodes among the 352-node Dalhousie grid where potentials have been recorded in case 3 | elnodes_120_352.lst ascii file initial row (120 1) specifies matrix size |
Electrode positions on the thorax for 123-node BPSM | elnodes_123_370.lst ascii file initial row (123 1) specifies matrix size |
potential data | ecgs_case3.asc original data as previously posted on PhysioNet (see trailer) |
These files are described below:
Load .asc file in Matlab | get_370_lead_signals.m |
Load .asc file in Matlab | loadmat.m |
Load .tri file in Matlab | loadtri.m |
Laplacian interpolator | intripol.m |
Save data in .asc form | savemat.m |
Save triangulation in .tri form | savetri.m |
Sample of ECGs | ecgs_123_leads.jpg |
Sample of a BSPM at t=555 ms | bspm_555.jpg |
Transfer matrix for interpolation from 123 to 370 nodes | transfer_370_123.mat |
Each .tri file can be opened in Matlab as
[VER,ITRI]=loadtri('filename.tri);
Strip the first column, which contains vertex/triangle labels. VER are coordinates of all nodes of the mesh, and ITRI are ordered triples of the triangles.
The ECG potential data may be imported in Matlab by using:
PHI=loadmat('ecgs_case3.asc');
After stripping the first 3 columns by:
PHI=PHI(:,4:355);the potentials (units 1 microV) are a matrix of potential data, with the rows at 1 ms intervals. The first 3 columns are leads Vr, Vl, and Vf (non-augmented amplitudes!); the next 120 columns are the potentials at the 120 electode array; and the remaining columns are the potentials at a regular 352 array.
Potentials at all 370 nodes representing the thorax can be computed by using the transfer matrix:
T=loadmat('transfer_370_123.mat');which yields a Laplacian based interpolation (see intripol.m):
PSI=T*PHI;The file get_370_lead_signals.m shows how to "generate" the potentials at the 370 nodes of the torso model starting with the data file and the auxiliary files.
Finally, the files savemat.m and savetri.m are scripts for storing any similar output data.