Code for the paper: Sahli Costabal F, Yang Y, Perdikaris P, Hurtado DE and Kuhl E (2020) Physics-Informed Neural Networks for Cardiac Activation Mapping. Front. Phys. 8:42. doi: 10.3389/fphy.2020.00042
Dependencies:
- tensorflow v1.0
- pyDOE:
pip install pydoe
- matplotlib, numpy, scipy
- Non-parametric Entropy Estimation Toolbox: https://github.com/gregversteeg/NPEET
There are two files containing the models: models_tf.py
, which is a single neural network and models_para_tf.py
, which implements the randomized prior functions and trains multiple neural networks in parallel.
Within the models_tf.py
there is a 2D and a 3D model:
-
Eikonal2DnetCV2
, which has the inputs:x, y
: location of the collocation points to enforce the residual penalty. Each of them must be of shapeN_colloc, 1
.x_e, y_e
: location of the data points. Each of them must be of shapeN_data, 1
.T_e
: activation times data. Must be of shapeN_data, 1
.layers
: list with the number of neurons of each layer for the activation times, for example[2,20,20,1]
.CVlayers
: list with the number of neurons of each layer for the conduction velocity, for example[2,5,5,1]
.C
: maximum conduction velocity.alpha
: regularization coefficient for the conduction velocity.alphaL2
: regularization coefficient for the weights of the neural network.jobs
: number of cpus to use to train the model.
-
Eikonal3DnetCV2
, which has the inputs:X
: location of the collocation points to enforce the residual penalty. For a triangular mesh, this corresponds to the centroid of each triangle. Must be of shapeN_colloc, 3
.normals
: unit vectors representing the normal of the surface at the pointsX
. For a triangular mesh, this corresponds to the normal of each triangle. Must be of shapeN_colloc, 3
X_e
: location of the data points. Each of them must be of shapeN_data, 3
.T_e
: activation times data. Must be of shapeN_data, 1
.layers
: list with the number of neurons of each layer for the activation times, for example[3,20,20,1]
.CVlayers
: list with the number of neurons of each layer for the conduction velocity, for example[3,5,5,1]
.C
: maximum conduction velocity.alpha
: regularization coefficient for the conduction velocity.alphaL2
: regularization coefficient for the weights of the neural network.jobs
: number of cpus to use to train the model.
Within the models_para_tf.py
there is a 2D and a 3D model as well:
-
Eikonal2DnetCV2RPF
, which has the additional inputs thanEikonal2DnetCV2
:Batch
: the number of neural networks to train in parallel.noise_level
: which is the expected standard deviation of the measurements.
-
Eikonalnet3DRPF
, which has the additional inputs thanEikonal3DnetCV2
:Batch
: the number of neural networks to train in parallel.noise_level
: which is the expected standard deviation of the measurements.
The files 2Dexample.ipynb
demonstrates the use of a single neural network and the file active_learning_2Dexample.py
demontrates the use of multiple neural networks with active learning.