diff --git a/source/documentation/_simcardio_TOC.erb b/source/documentation/_simcardio_TOC.erb index f6c17eb4..ffaf3afe 100644 --- a/source/documentation/_simcardio_TOC.erb +++ b/source/documentation/_simcardio_TOC.erb @@ -1,8 +1,8 @@ -

SimCardio Guide

+

Cardiac Modeling
Guide

  • Introduction
  • -
  • Cardiac Geometric Modeling Tool +
  • Cardiac Geometric
    Modeling Tool
  • -
  • Cardiac Electro-
    physiology Modeling
    +
  • Purkinje Network
  • -
  • Cardiac Mechanics
    Modeling
    +
  • Fiber Generation -
  • - - + \ No newline at end of file diff --git a/source/documentation/_simcardio_content.erb b/source/documentation/_simcardio_content.erb index 5820f3e2..8559d4b3 100644 --- a/source/documentation/_simcardio_content.erb +++ b/source/documentation/_simcardio_content.erb @@ -15,35 +15,18 @@
    <%= partial "documentation/simcardio/cardiacModeling/refs" %>
    - -
    <%= partial "documentation/simcardio/electrophysiology/cep-modeling" %>
    -
    <%= partial "documentation/simcardio/electrophysiology/cep-intro" %>
    -
    <%= partial "documentation/simcardio/electrophysiology/cep-theory" %>
    -
    <%= partial "documentation/simcardio/electrophysiology/cep-activation-models" %>
    -
    <%= partial "documentation/simcardio/electrophysiology/purkinje" %>
    -
    <%= partial "documentation/simcardio/electrophysiology/pnet-intro" %>
    +
    <%= partial "documentation/simcardio/electrophysiology/purkinje" %>
    <%= partial "documentation/simcardio/electrophysiology/pnet-install" %>
    <%= partial "documentation/simcardio/electrophysiology/pnet-workflow" %>
    <%= partial "documentation/simcardio/electrophysiology/pnet-parameters" %>
    <%= partial "documentation/simcardio/electrophysiology/pnet-issues" %>
    -
    <%= partial "documentation/simcardio/electrophysiology/cep-examples" %>
    -
    <%= partial "documentation/simcardio/electrophysiology/cep-example-block" %>
    -
    <%= partial "documentation/simcardio/electrophysiology/cep-example-pnet" %>
    -
    <%= partial "documentation/simcardio/electrophysiology/cep-refs" %>
    - - -
    <%= partial "documentation/simcardio/mechanics/mechanics-modeling" %>
    -
    <%= partial "documentation/simcardio/mechanics/mechanics-solve" %>
    -
    <%= partial "documentation/simcardio/mechanics/mechanics-obtain-svFSI" %>
    -
    <%= partial "documentation/simcardio/mechanics/mechanics-mesh-gen" %>
    -
    <%= partial "documentation/simcardio/mechanics/mechanics-fiber-gen" %>
    -
    <%= partial "documentation/simcardio/mechanics/mechanics-solver-input" %>
    -
    <%= partial "documentation/simcardio/mechanics/mechanics-simulation" %>
    - -
    <%= partial "documentation/simcardio/mechanics/mechanics-theory" %>
    -
    <%= partial "documentation/simcardio/mechanics/mechanics-kinematics" %>
    -
    <%= partial "documentation/simcardio/mechanics/mechanics-struct" %>
    -
    <%= partial "documentation/simcardio/mechanics/mechanics-ustruct" %>
    -
    <%= partial "documentation/simcardio/mechanics/mechanics-material-models" %>
    -
    <%= partial "documentation/simcardio/mechanics/mechanics-refs" %>
    - +
    <%= partial "documentation/simcardio/electrophysiology/pnet-example" %>
    +
    <%= partial "documentation/simcardio/electrophysiology/pnet-refs" %>
    + +
    <%= partial "documentation/simcardio/fiberGeneration/fiber" %>
    +
    <%= partial "documentation/simcardio/fiberGeneration/fiber_intro" %>
    +
    <%= partial "documentation/simcardio/fiberGeneration/fiber_meshing" %>
    +
    <%= partial "documentation/simcardio/fiberGeneration/fiber_heat" %>
    +
    <%= partial "documentation/simcardio/fiberGeneration/fiber_gen" %>
    +
    <%= partial "documentation/simcardio/fiberGeneration/fiber_debug" %>
    +
    <%= partial "documentation/simcardio/fiberGeneration/fiber_ref" %>
    \ No newline at end of file diff --git a/source/documentation/simcardio/_intro.md b/source/documentation/simcardio/_intro.md index b433f1ed..05d249bb 100644 --- a/source/documentation/simcardio/_intro.md +++ b/source/documentation/simcardio/_intro.md @@ -1,22 +1,21 @@ -#Introduction +# Cardiac Modeling Guide Human heart is an intrinsic multi-physics system. It's normal function requires synchronization and coupling of cardiac electrophysiology, tissue (myocardium) mechanics, and hemodynamics. Among the three physics, cardiac mechanics plays a central role, as it serves as the bridge between electrophysiology and blood flow. In a physiological setting, the myocardial cells (myocytes) in the heart tissue initiate and propagate an electrical impulse (action potential) that travels through the heart and drives the contraction of the cardiac muscle, which, in turn, propels the blood to sustain whole body circulation. -The SimVascular SimCardio software suite includes a machine learning-based tool to automatically segment heart chambers from medical data and create patient-specific cardiac models, a finite element solver for performing multi-physics cardiac simulations, and python-based plugins to interactively create cardiac models, Purkinje network and set solver parameters from within the main SimVascular GUI application. While some of the interactive plugins are under development, the software allows flexibility to use scripting and perform simulations on high performance clusters. +Here we present a software suite for cardiac modeling, which includes a machine learning-based tool to automatically segment heart chambers from medical data and create patient-specific cardiac models, a finite element solver for performing multi-physics cardiac simulations, and python-based plugins to interactively create cardiac models, Purkinje network and set solver parameters from within the main SimVascular GUI application. While some of the interactive plugins are under development, the software allows flexibility to use scripting and perform simulations on high performance clusters. +####[Cardiac Geometric Modeling Tool](http://simvascular.github.io/docsSimCardio.html#automatic-cardiac-modeling): +This **SimVascular** tool provides an automated workflow to generate CFD-ready models from medical images. It uses pre-trained deep neural network models to automatically generate segmentations for major cardiac structures, the four heart chambers, aorta and pulmonary arteries. The automatic cardiac segmentation tool utilized an ensemble of two-dimensional (2D) convolutional neural networks (CNNs) for automatic segmentation of cardiac structures from three-dimensional (3D) patient images and demonstrated state-of-the-art performance than prior approaches when evaluated on a benchmark dataset containing both magnetic resonance (MR) and computed tomography(CT) scans. This tool can be used from both the SimVascular's Python plugin in the GUI or from the command line version of the SimVascular Python. -###Cardiac Segmentation and Geometric Modeling - -The SimVascular Cardiac Image Segmentation Tool uses pre-trained deep neural network models to automatically generate segmentations for major cardiac structures, the four heart chambers, aorta and pulmonary arteries. The automatic cardiac segmentation tool utilized an ensemble of two-dimensional (2D) convolutional neural networks (CNNs) for automatic segmentation of cardiac structures from three-dimensional (3D) patient images and demonstrated state-of-the-art performance than prior approaches when evaluated on a benchmark dataset containing both magnetic resonance (MR) and computed tomography(CT) scans. This tool can be used from both the SimVascular's Python plugin in the GUI or from the command line version of the SimVascular Python. - - - -###Multi-physics Finite Element Solver +####[Multi-Physics Finite Element Solver](http://simvascular.github.io/docssvFSI.html): svFSI is a new multi-physics finite element solver designed for computational modeling of the whole heart dynamics. As the next generation underlining solver for the SimVascular software, svFSI is capable of simulating myocardial electrical activity using state-of-the-art cellular activation models, employ nonlinear hyperelastic material models to simulate tissue mechanics and activation coupling strategies, and perform large deformation fluid-structure interaction (FSI) to simulate the dynamics between the heart tissue and blood flow. svFSI could also be used to perform blood flow simulations by imposing the ventricular wall motion extracted from medical image data. -svFSI is compatible with several mesh formats and can read a wide range of 2D and 3D element types. svFSI could be coupled to Trilinos linear solver library providing a wide choice of linear solvers and preconditioners for various applications. The methods employed are widely popular among the scientific community and continue to evolve through research and development. The solver is parallelized using MPI for inter-process communication and was demonstrated to scale efficiently on large supercomputing clusters. ParMETIS is used for partitioning the computational domains. Simulation results are outputted into VTK format that can be easily visualized in the free software Paraview. -The source code of svFSI is available on GitHub as part of the SimVascular project and the precompiled installers can be downloaded from SimTK website. A variety of examples are also available on GitHub for the users to get started quickly on using the solver. We recommend users to navigate through all the examples under a particular physics to educate themselves with the variety of options that the solver could accommodate. We also recommend users to use the existing input files as templates and make suitable modifications that meet their needs. +####[Purkinje Network Plugin](http://simvascular.github.io/docsSimCardio.html#purkinje): +SimVascular provides a Purkinje plugin that can be used to generate Purkinje network on arbitrary patient-specific cardiac models. Our Purkinje plugin uses a fractal-tree-based method to generate the network and provides a simple interface to adjust the parameters that control the network density and coverage. The Purkinje mesh is then exported in vtu format compatible with [**svFSI**](http://simvascular.github.io/docssvFSI.html) for the ensuing electrophysiology simulations. + +####[Myocardial Fiber Orientation Generation](http://simvascular.github.io/docsSimCardio.html#fiber): +Both patient-specific cardiac mechanics modeling and electrophysiology modeling requires myocardial fiber orientation as an input. Here, we provide a pipeline to use rule-based algorithm to assign myocardial fiber orientation to patient-specific geometries. This pipeline takes advantage of existing SimVascular meshing tools and svFSI modeling capability. \ No newline at end of file diff --git a/source/documentation/simcardio/cardiacModeling/_auto-ml-cardiac-segmentation.md b/source/documentation/simcardio/cardiacModeling/_auto-ml-cardiac-segmentation.md deleted file mode 100644 index 294728ab..00000000 --- a/source/documentation/simcardio/cardiacModeling/_auto-ml-cardiac-segmentation.md +++ /dev/null @@ -1,12 +0,0 @@ -# Automated Image Segmentation - -The SimVascular Cardiac Geometric Modeling Tool uses pre-trained deep neural network models to automatically -generate segmentations of major cardiac structures: the four heart chambers, aorta and pulmonary arteries. The segmentation tool -uses an ensemble of two-dimensional (2D) convolutional neural networks (CNNs) for automatic segmentation of cardiac structures from -three-dimensional (3D) patient images. It has been shown to have superior performance compared to prior approaches when evaluated on -a benchmark dataset containing both magnetic resonance (MR) and computed tomography (CT) image data [1]. -The tool can be used from both the SimVascular GUI Python console and from the command line within the SimVascular Python -environment. - - - diff --git a/source/documentation/simcardio/cardiacModeling/_mesh-intro.md b/source/documentation/simcardio/cardiacModeling/_mesh-intro.md index e07d270f..e2d594e3 100644 --- a/source/documentation/simcardio/cardiacModeling/_mesh-intro.md +++ b/source/documentation/simcardio/cardiacModeling/_mesh-intro.md @@ -1,4 +1,4 @@ -# Mesh Generation +## Mesh Generation The Cardiac Geometric Modeling Tool can be used to generate left ventricle (LV) meshes from segmentation results. These meshes can then be used CFD modeling of LV flow combined with patient medical imaging data. diff --git a/source/documentation/simcardio/cardiacModeling/_mesh-lv-surface.md b/source/documentation/simcardio/cardiacModeling/_mesh-lv-surface.md index a9941cde..4c033883 100644 --- a/source/documentation/simcardio/cardiacModeling/_mesh-lv-surface.md +++ b/source/documentation/simcardio/cardiacModeling/_mesh-lv-surface.md @@ -1,6 +1,6 @@ -## Constructing LV Surface Meshes ## +### Constructing LV Surface Meshes -### Using SimVascular Python Shell +#### Using SimVascular Python Shell The SimVascular Python Shell @@ -28,7 +28,7 @@ surface_main.py Python surface generation script using the following comman -###Using SimVascular Python Console +#### Using SimVascular Python Console The SimVascular GUI Python Console can be used for surface generation. Use the Python console Text Editor mode to enter the following Python commands diff --git a/source/documentation/simcardio/cardiacModeling/_mesh-motion.md b/source/documentation/simcardio/cardiacModeling/_mesh-motion.md index ce87ec61..eb67d3a7 100644 --- a/source/documentation/simcardio/cardiacModeling/_mesh-motion.md +++ b/source/documentation/simcardio/cardiacModeling/_mesh-motion.md @@ -1,4 +1,4 @@ -## Mesh Motion +### Mesh Motion Once meshes have been registered the displacement of each mesh vertex over the whole cardiac cycle can be computed. The series of registered meshes are interpolated using cubic splines to obtain mesh displacements with a temporal resolution diff --git a/source/documentation/simcardio/cardiacModeling/_mesh-register.md b/source/documentation/simcardio/cardiacModeling/_mesh-register.md index bb7afca9..c9b3fc4b 100644 --- a/source/documentation/simcardio/cardiacModeling/_mesh-register.md +++ b/source/documentation/simcardio/cardiacModeling/_mesh-register.md @@ -1,4 +1,4 @@ -## Mesh Registration ## +### Mesh Registration We can simulate the LV flow over time by tracking the deformation of the heart from time-resolved imaging and impose this motion to the fluid domains inside the heart, which leads to a deforming-domain CFD problem. To be able to track the deformation of the diff --git a/source/documentation/simcardio/cardiacModeling/_mesh-volume.md b/source/documentation/simcardio/cardiacModeling/_mesh-volume.md index 37decaf4..fb9d7786 100644 --- a/source/documentation/simcardio/cardiacModeling/_mesh-volume.md +++ b/source/documentation/simcardio/cardiacModeling/_mesh-volume.md @@ -1,6 +1,6 @@ -## Volumetric Meshing +### Volumetric Meshing -###Using SimVascular Python Shell +#### Using SimVascular Python Shell The volumetric meshing script @@ -30,7 +30,7 @@ volume\_mesh\_main.py is used to generate a finite element mesh. -###Using the SimVascular Python Console +#### Using the SimVascular Python Console Within the Python plugin, we can use the Text Editor mode and enter the following lines to create a Python script. diff --git a/source/documentation/simcardio/cardiacModeling/_refs.md b/source/documentation/simcardio/cardiacModeling/_refs.md index 5030a827..56fc2250 100644 --- a/source/documentation/simcardio/cardiacModeling/_refs.md +++ b/source/documentation/simcardio/cardiacModeling/_refs.md @@ -1,4 +1,4 @@ -# References +## References [1] Kong, F., and Shadden, S. C. (2020). **Automating Model Generation for Image-based Cardiac Flow Simulation**. diff --git a/source/documentation/simcardio/cardiacModeling/_seg-inputs.md b/source/documentation/simcardio/cardiacModeling/_seg-inputs.md index 706e29db..4fe2b6a2 100644 --- a/source/documentation/simcardio/cardiacModeling/_seg-inputs.md +++ b/source/documentation/simcardio/cardiacModeling/_seg-inputs.md @@ -1,4 +1,4 @@ -## Input Requirements ## +### Input Requirements The preferred input format of the image volumes is .nii.gz, .nii or .vti files. The segmentation method requires an image to have an identity orientation matrix. diff --git a/source/documentation/simcardio/cardiacModeling/_seg-intro.md b/source/documentation/simcardio/cardiacModeling/_seg-intro.md index a043e150..7c02f984 100644 --- a/source/documentation/simcardio/cardiacModeling/_seg-intro.md +++ b/source/documentation/simcardio/cardiacModeling/_seg-intro.md @@ -1,4 +1,4 @@ -# Automated Image Segmentation +## Automated Image Segmentation The SimVascular Cardiac Geometric Modeling Tool uses pre-trained deep neural network models to automatically generate segmentations of major cardiac structures: the four heart chambers, aorta and pulmonary arteries. The segmentation tool diff --git a/source/documentation/simcardio/cardiacModeling/_seg-pre-trained-models.md b/source/documentation/simcardio/cardiacModeling/_seg-pre-trained-models.md index 4fd10297..a1c3cc06 100644 --- a/source/documentation/simcardio/cardiacModeling/_seg-pre-trained-models.md +++ b/source/documentation/simcardio/cardiacModeling/_seg-pre-trained-models.md @@ -1,4 +1,4 @@ -## Pre-Trained Models ## +### Pre-Trained Models We used the image and ground truth data provided by MMWHS to train our models. Our segmentation models were trained simultaneously on CT and MR data. The trained weight data can be downloaded from diff --git a/source/documentation/simcardio/cardiacModeling/_seg-predict.md b/source/documentation/simcardio/cardiacModeling/_seg-predict.md index 573032b4..f5f52315 100644 --- a/source/documentation/simcardio/cardiacModeling/_seg-predict.md +++ b/source/documentation/simcardio/cardiacModeling/_seg-predict.md @@ -1,6 +1,6 @@ -## Segmenting Image Data ## +### Segmenting Image Data -###Segmenting using the SimVascular Python shell +#### Segmenting using the SimVascular Python shell 3D CT or MR image volumes can be segmented within the SimVascular Python Shell using the @@ -27,7 +27,7 @@ prediction.py Python script. For example -###Segmenting using the SimVascular GUI Python Console +#### Segmenting using the SimVascular GUI Python Console Image segmentation can also be performed from within the SimVascular GUI Python console . diff --git a/source/documentation/simcardio/cardiacModeling/_seg-visualize.md b/source/documentation/simcardio/cardiacModeling/_seg-visualize.md index bcb975be..1dfa094f 100644 --- a/source/documentation/simcardio/cardiacModeling/_seg-visualize.md +++ b/source/documentation/simcardio/cardiacModeling/_seg-visualize.md @@ -1,4 +1,4 @@ -## Visualizing Segmentation Results ## +### Visualizing Segmentation Results Segmentation results can be visualized using SimVascular by first creating a SimVascular project. The segmentation results .vti file is then added as an image by right-clicking Images under the SV Data Manager and selecting the diff --git a/source/documentation/simcardio/electrophysiology/_cep-activation-models.md b/source/documentation/simcardio/electrophysiology/_cep-activation-models.md deleted file mode 100644 index ecefae68..00000000 --- a/source/documentation/simcardio/electrophysiology/_cep-activation-models.md +++ /dev/null @@ -1,106 +0,0 @@ -## Cellular Activation Models ## - -Depending on how the depolarization and repolarization within a single cardiac myocyte is described, the electrophysiology models can be roughly divided into two categories: biophysics-based ionic models (such as the ten Tusscher-Panfilov (TTP) model[2][3]), and phenomenological models (such as the Aliev-Panfilov (AP), Fitzhugh-Nagumo (FN) models[4]). - - -###Biophysics-based Ionic Models - -Between cardiac myocytes, the propagation of the electrical signal is enabled by the transmembrane motion of different ions, such as $K^+$, $Na^+$ and $Ca^{2+}$ during depolarization and repolarization of the myocytes. Cellular biophysics-based activation models are designed to capture these ionic movements. One of the popular biophysics-based ionic models, the TTP model [3] is implemented in svFSI. Here, we will briefly illustrate the ionic currents involved in the TTP model. - -In the TTP model, the ionic current is expressed as - -$$ I\_{ion} = I\_{Na} + I\_{Kl} + I\_{to} + I\_{Kr} + I\_{Ks} + I\_{CaL} + I\_{NaCa} + I\_{NaK} + I\_{pCa} + I\_{pK} + I\_{bCa} + I\_{bNa} $$ - -The governing equations for each current can be found in [3]. - -Since, intracellular calcium concentration is the driving factor behind excitation-contraction coupling, we focus on the calcium dynamics here. In the TTP model,the following calcium concentrations are included: - - - -Sarcoplasmic reticulum (SR) is a membrane structure within the muscle cell, whose main function is to store $Ca^{2+}$. Dyadic space is the region bounded by the T-tubule and SR. $Ca^{2+}$ ions are considered buffered if they are bound to negatively charged proteins (called buffers). Otherwise they are considered free. The action potential transmitted through the gap junction cause the current myocyte to depolarize. The depolarization opens the L-type (long-lasting) Ca channel located on the surface membrane. A small amount of $Ca^{2+}$ enters the myocyte due to potential, leading to a sharp increase of $Ca^{2+}$ in the dyadic space, which is a small region. This increase triggers the SR to release a large amount of $Ca^{2+}$ (calcium-induced calcium release) to enable the excitation-contraction. During diastole, calcium is removed from the cytoplasm through two ways. Ca is pumped (1) back into the SR and (2) out of the cell, mainly by the sodium-calcium exchange (NCX). - -For the TTP model in svFSI, the following units have to be used: time in [ms], length [mm], amount of substance [mmol], voltage [mV]. Mass can be in [g]. - - -
    - -
    Structures involved in $Ca^{2+}$ cycling[6].
    -
    - - -###Phenomenological Models - -Phenomenological models are derived based on some observations of the full ion model [4]. Instead of following the transmembrane ionic currents, they use an oscillation system with a fast ($V$) and a slow ($r$) variable to mimic the behaviors of the action potentials. The oscillators, without considering the diffusion term, are modeled as - -$$ \frac{\mathrm{d}V}{\mathrm{d}t}=f^{V}(V,r) $$ -$$ \frac{\mathrm{d}r}{\mathrm{d}t}=f^{r}(V,r) $$ - -Note that this set of equations describes the electrophysiology in a single cardiac myocyte, and the choice of $f^V$ and $f^r$ will determine if this is a pacemaker cell or a non-pacemaker cell. - -The FitzHugh-Nagumo (FN) model describes the pacemaker cells with - -$$ f^V = c[V(V-\alpha)(1-V)-r] $$ -$$ f^r = V-br+a $$ - -
    - -
    Action potential calculated from FitzHugh-Nagumo model.
    -
    - -The Aliev-Panfilov (AP) model describes the non-pacemaker cells with - -$$ f^V = cV(V-\alpha)(1-V)-Vr $$ - -$$ f^r = \left( \gamma+\frac{\mu\_1r}{\mu\_2+V}\right)[-r-cV(V-b-1)] $$ - -
    - -
    Action potential calculated from Aliev-Panfilov model.
    -
    - -Note that $V$ and $t$ are non-dimensional values here. The following equations are used to recover the physiological action potential and time: - -$$ \mathrm{FitzHugh-Nagumo model}: V^{fhn}=(65V-35)mV; ~~ t^{fhn} = (220t) ms $$ - -$$ \mathrm{Aliev-Panfilov model}: V^{ap}=(100V-80)mV; ~~ t^{ap} = (12.9t) ms $$ - -Another class of phenomenological models exists that include additional variables to account for intra-cellular calcium kinetics. One such model is the Bueno-Orovio (BO) model [5] that can serve as a trade-off between the complex TTP model and the simplified phenomenological AP model. - - -###Activation Models Available in svFSI - -The following table provides a summary of all the available electrophysiology models in svFSI. - - - - - - - - - - - - - - - - - - - - - - - - - -
    Available cardiac electrophysiology models.
    Electrophysiology ModelInput Keyword
    Aliev-Panfilov model[4]"ap", "aliev-panfilov"
    Fitzhugh-Nagumo model[4]"fn", "fitzhugh-nagumo"
    Bueno-Orovio-Cherry-Fenton model[5]"bo", "bueno-orovio"
    tenTusscher-Panfilov model[3]"ttp", "tentusscher-panfilov"
    - diff --git a/source/documentation/simcardio/electrophysiology/_cep-example-block.md b/source/documentation/simcardio/electrophysiology/_cep-example-block.md deleted file mode 100644 index e50e8a12..00000000 --- a/source/documentation/simcardio/electrophysiology/_cep-example-block.md +++ /dev/null @@ -1,118 +0,0 @@ -## Activation of a Myocardial Block ## - -The computational domain is a rectangular block, with dimensions of $3\times 7\times 20 mm$. A small cluster of cells located at one corner of the block (marked as S) will recive an initial stimulus, and the TTP model is used to model the activation of the rest of the domain. The entire simulation set-up along with results can be found on GitHub. - -
    - -
    Computational domain of example 1.[reference]
    -
    - -Here is the breakdown of the input file for this study. - -
    
    -    # File svFSI.inp
    -    #----------------------------------------------------------------
    -    # General simulation parameters
    -
    -    Continue previous simulation: f
    -    Number of spatial dimensions: 3
    -    Number of time steps: 100000
    -    Time step size: 0.01
    -    Spectral radius of infinite time step: 0.50
    -    Searched file name to trigger stop: STOP_SIM
    -
    -    Save results to VTK format: 1
    -    Name prefix of saved VTK files: result
    -    Increment in saving VTK files: 100
    -    Start saving after time step: 1
    -
    -    Increment in saving restart files: 100
    -    Convert BIN to VTK format: 0
    -
    -    Verbose: 1
    -    Warning: 1
    -    Debug: 0
    -
    -    #----------------------------------------------------------------
    -    # Mesh data
    -    Add mesh: msh {
    -       Mesh file path):   mesh/h0.1/mesh-complete.mesh.vtu
    -       Add face: X0 {
    -          Face file path: mesh/h0.1/mesh-surfaces/X0.vtp
    -       }
    -       Add face: X1 {
    -          Face file path: mesh/h0.1/mesh-surfaces/X1.vtp
    -       }
    -       Add face: Y0 {
    -          Face file path: mesh/h0.1/mesh-surfaces/Y0.vtp
    -       }
    -       Add face: Y1 {
    -          Face file path: mesh/h0.1/mesh-surfaces/Y1.vtp
    -       }
    -       Add face: Z0 {
    -          Face file path: mesh/h0.1/mesh-surfaces/Z0.vtp
    -       }
    -       Add face: Z1 {
    -          Face file path: mesh/h0.1/mesh-surfaces/Z1.vtp
    -       }
    -
    -       Fiber direction: (1, 0, 0)
    -
    -       # Here we also need to supply a domain information to separate
    -       # pacemaker cells and non-pacemaker cells. domain_info.dat
    -       # is a plaintext file store the domain ID of each element.
    -       # id == 1: non-pacemaker cells
    -       # id == 2: pacemaker cells (recivies stimulus)
    -       Domain file path: mesh/h0.1/domain_info.dat
    -    }
    -
    -    #----------------------------------------------------------------
    -    # Equations
    -    Add equation: CEP {
    -       Coupled: 1
    -       Min iterations: 1
    -       Max iterations: 5
    -       Tolerance: 1e-6
    -
    -       # Here domain id == 1 are non-pacemaker cells
    -       Domain: 1 {
    -          Electrophysiology model: TTP
    -          Conductivity (iso): 0.012571
    -          Conductivity (ani): 0.082715
    -          ODE solver: RK
    -       }
    -
    -       # Here domain id == 2 are pacemaker cells
    -       Domain: 2 {
    -          Electrophysiology model: TTP
    -          Conductivity (iso): 0.012571
    -          Conductivity (ani): 0.082715
    -          # Stimulus to initiate the depolarization process
    -          Stimulus: Istim {
    -             Amplitude: -35.714
    -             Start time: 0.0
    -             Duration: 2.0
    -             Cycle length: 10000.0
    -          }
    -          ODE solver: RK
    -       }
    -
    -       Output: Spatial {
    -          Action_potential: t
    -       }
    -
    -       LS type: GMRES
    -       {
    -          Max iterations:      100
    -          Tolerance:           1D-6
    -          Krylov space dimension: 50
    -       }
    -    }
    -
    - -
    - -
    Activation of the cuboid.
    -
    - - diff --git a/source/documentation/simcardio/electrophysiology/_cep-examples.md b/source/documentation/simcardio/electrophysiology/_cep-examples.md deleted file mode 100644 index f146df29..00000000 --- a/source/documentation/simcardio/electrophysiology/_cep-examples.md +++ /dev/null @@ -1,4 +0,0 @@ -## Examples ## - -In this section, we will provide two examples of cardiac electrophysiology modeling. The first example is a widely used benchmark test, activation of a block of cardiac tissue [1]. The second example is the propagation of action potential in the Purkinje fibers. More examples are available on GitHub. - diff --git a/source/documentation/simcardio/electrophysiology/_cep-intro.md b/source/documentation/simcardio/electrophysiology/_cep-intro.md deleted file mode 100644 index dbcba0a5..00000000 --- a/source/documentation/simcardio/electrophysiology/_cep-intro.md +++ /dev/null @@ -1,4 +0,0 @@ -## Introduction ## - -The electrical activity in a heart is initiated at the sinoatrial node, which is located at the right atrium of the heart. A small cluster of pacemaker cells periodically emits electrical signals into the heart’s conduction system. These signals first travel at a high speed through a network of special cells that allows the signals to reach the whole heart rapidly. Finally, they travel into the ventricular muscles, and cause the entire heart to contract almost simultaneously. The electrical signals travel between cells through a process called depolarization, during which voltage-sensitive protein channels on the cell membrane open to allow positively charged ions to move in and out of the cell, leading to ionic currents. - diff --git a/source/documentation/simcardio/electrophysiology/_cep-modeling.md b/source/documentation/simcardio/electrophysiology/_cep-modeling.md deleted file mode 100644 index 3be7ae3d..00000000 --- a/source/documentation/simcardio/electrophysiology/_cep-modeling.md +++ /dev/null @@ -1,2 +0,0 @@ -# Cardiac Electrophysiology Simulation Guide # - diff --git a/source/documentation/simcardio/electrophysiology/_cep-refs.md b/source/documentation/simcardio/electrophysiology/_cep-refs.md deleted file mode 100644 index 07c42de5..00000000 --- a/source/documentation/simcardio/electrophysiology/_cep-refs.md +++ /dev/null @@ -1,29 +0,0 @@ -## References ## - -

    -[1] Niederer, S. A., Kerfoot, E., Benson, A. P., Bernabeu, M. O., Bernus, O., Bradley, C., Cherry, E. M., Clayton, R., Fenton, F. H., Garny, A., Heidenreich, E., Land, S., Maleckar, M., Pathmanathan, P., Plank, G., Rodriguez, J. F., Roy, I., Sachse, F. B., Seemann, G., … Smith, N. P. (2011). Verification of cardiac tissue electrophysiology simulators using an N-version benchmark. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 369(1954), 4331–4351.

    - -

    -[2] ten Tusscher, K. H. W. J., Noble, D., Noble, P. J., & Panfilov, A. V. (2004). A model for human ventricular tissue. American Journal of Physiology-Heart and Circulatory Physiology, 286(4), H1573–H1589.

    - -

    -[3] ten Tusscher, K. H. W. J., & Panfilov, A. V. (2006). Alternans and spiral breakup in a human ventricular tissue model. American Journal of Physiology-Heart and Circulatory Physiology, 291(3), H1088–H1100.

    - -

    -[4] Göktepe, S., & Kuhl, E. (2009). Computational modeling of cardiac electrophysiology: A novel finite element approach. International Journal for Numerical Methods in Engineering, 79(2), 156–178.

    - -

    -[5] Bueno-Orovio, A., Cherry, E. M., & Fenton, F. H. (2008). Minimal model for human ventricular action potentials in tissue. Journal of Theoretical Biology, 253(3), 544–560.

    - -

    -[6] Bers, D. M. (2008). Calcium Cycling and Signaling in Cardiac Myocytes. Annual Review of Physiology, 70(1), 23–49.

    - -

    -[7] Dubin, D., (1996). Rapid Interpretation of EKG's. Cover Publishing Company, Tampa, Florida.

    - -

    -[8] Sahli Costabal, F., Hurtado, D. E., & Kuhl, E. (2016). Generating Purkinje networks in the human heart. Journal of Biomechanics, 49(12), 2455–2465. https://doi.org/10.1016/j.jbiomech.2015.12.025 -

    - -






    - diff --git a/source/documentation/simcardio/electrophysiology/_cep-theory.md b/source/documentation/simcardio/electrophysiology/_cep-theory.md deleted file mode 100644 index 48ae88b1..00000000 --- a/source/documentation/simcardio/electrophysiology/_cep-theory.md +++ /dev/null @@ -1,32 +0,0 @@ -## Mathematical Model of Cardiac Electrophysiology ## - -The propagation of electrical signal in the heart is governed by a reaction-diffusion like equation, - -$$\frac{\partial V}{\partial t} + \frac{I\_{ion} - I\_{app}(t)}{C\_m} = \nabla \cdot\left( \mathbf{D}\nabla V \right) $$ -$$ \mathrm{in~} \Omega^E\times(0,T] \nonumber$$ -$$(\mathbf{D}\nabla V) \cdot \mathbf{N}=0 \mathrm{~on~} \partial\Omega^E\times(0,T]$$ - -$V$ is the local transmembrane potential. $C\_m$ is the local membrane capacitance per unit area. $I\_{ion}$ and $I\_{app}$ are the ionic current flux (current per unit area) and applied external current flux, respectively. Here, $\mathbf{D}$ dictates the propagation velocity of the electrical signal and has the similar physical meaning as the diffusivity. It is calculated as - -$$ -\mathbf{D} =\frac{\sigma}{\chi C\_m} -$$ - -$\sigma$ is the conductivity tensor and has the unit $S/m$. $\chi$ is the ratio of membrane area over tissue volume. Then, $\mathbf{D}$ is a tensor with the dimension $Length^2/Time$. - -The above equation is the mono-domain description of the cardiac electrophysiology, i.e. we don't solve the intra- and extra-cellular electrical signal propagation separately. The mono-domain and multi-domain conductivities are connected through the following relation, - -$$ \sigma = \frac{\sigma\_i\sigma\_e}{\sigma\_i + \sigma\_e} $$ - -where $\sigma\_i$ and $\sigma_e$ are the intra- and extra-cellular conductivity tensors [1]. It is commonly assumed that the conductivity is transversely isotropic, - -$$ \mathbf{\sigma} = \sigma\_f \mathbf{f}\otimes \mathbf{f} + \sigma\_s (\mathbf{I}-\mathbf{f}\otimes \mathbf{f}) $$ - -where $\sigma\_f$ and $\sigma\_s$ are the conductivities along the fiber direction and in the transverse plane. $\mathbf{f}$ is the fiber direction vector. - -In svFSI, we directly specify $\mathbf{D}$ in the input file. We choose a slightly different form to enforce the transverse isotropy of the conductivity tensor, - -$$ \mathbf{D} = D\_{iso}\mathbf{I} + \sum\_{n=1}^{nsd}D\_{ani,n}\mathbf{fN}\_n\otimes\mathbf{fN}\_n $$ - -Here, $nsd$ is the dimension, and $\mathbf{fN\_n}$ is the local orthonormal coordinate system built by fiber direction and sheet direction. To connect with the previous expression, we have $D\_f=D\_{iso}+D\_{ani}$ and $D\_s=D\_{iso}$. - diff --git a/source/documentation/simcardio/electrophysiology/_cep-example-pnet.md b/source/documentation/simcardio/electrophysiology/_pnet-example.md similarity index 98% rename from source/documentation/simcardio/electrophysiology/_cep-example-pnet.md rename to source/documentation/simcardio/electrophysiology/_pnet-example.md index 9d9692b1..ad069ddf 100644 --- a/source/documentation/simcardio/electrophysiology/_cep-example-pnet.md +++ b/source/documentation/simcardio/electrophysiology/_pnet-example.md @@ -1,4 +1,4 @@ -## Activation of a Purkinje Network ## +## Example - Activation of a Purkinje Network Here we perform electrophysiology simulation on a human biventricular Purkinje network. The initial stimulus is provided at the atrio-ventricular junction, and the TTP model is used to model for the activation of the individual Purkinje cells. The entire simulation set-up along with results can be found on GitHub. diff --git a/source/documentation/simcardio/electrophysiology/_pnet-install.md b/source/documentation/simcardio/electrophysiology/_pnet-install.md index 57a10d38..350012c5 100644 --- a/source/documentation/simcardio/electrophysiology/_pnet-install.md +++ b/source/documentation/simcardio/electrophysiology/_pnet-install.md @@ -1,4 +1,4 @@ -## Plugin Installation ## +## Plugin Installation The installer for the Purkinje plugin can be found on the Simtk website. The installer installs the shared libraries, the setup.sh script and a Python script in,
    diff --git a/source/documentation/simcardio/electrophysiology/_pnet-intro.md b/source/documentation/simcardio/electrophysiology/_pnet-intro.md deleted file mode 100644 index 8e7a3299..00000000 --- a/source/documentation/simcardio/electrophysiology/_pnet-intro.md +++ /dev/null @@ -1,8 +0,0 @@ -## Introduction ## - -The electrical activity in the heart tissue triggers muscle contraction and pumps blood into the systemic circulation. Under normal conditions, the electrical signal originates at the sinoatrial node located in the right atrium and reaches the atrioventricular node, which is the only electrical joint between the atria and the ventricles. [7] The bundle of His connects the atrioventricular node to a fast conducting network of fibers, called the Purkinje network, located beneath the inner-most layer of the heart wall. Purkinje cells are larger than the cardiomyocytes and conduct the excitation wave faster than any other cell on the heart tissue. [7]] The network not only synchronizes contraction between the left and the right ventricles but also allows the trajectory to follow a sequence beginning at the ventricular apex, spreading through the free-wall and eventually to the basal plane. Modeling the Purkinje network in cardiac electrophysiology simulations is therefore essential to achieve a realistic activation pattern and tissue contraction. - -SimVascular provides a Purkinje plugin that can be used to generate Purkinje network on arbitrary patient-specific cardiac models. Our Purkinje plugin uses a fractal-tree-based method to generate the network [8] and provides a simple interface to adjust the parameters that control the network density and coverage. The Purkinje mesh is then exported in vtu format compatible with SimVascular/svFSI for the ensuing electrophysiology simulations. - -In the following sections, we describe steps to download and install the Purkinje plugin, provide a workflow for creating Purkinje network using the plugin. - diff --git a/source/documentation/simcardio/electrophysiology/_pnet-issues.md b/source/documentation/simcardio/electrophysiology/_pnet-issues.md index 8c069b5c..5953f477 100644 --- a/source/documentation/simcardio/electrophysiology/_pnet-issues.md +++ b/source/documentation/simcardio/electrophysiology/_pnet-issues.md @@ -1,4 +1,4 @@ -## Known Issues ## +## Known Issues
    1. SimVascular does not record that the plugin was added to a project. The plugin must be added to the project every time a project is opened. The project **Purkinje-Network** directory is saved between project sessions.
    2. diff --git a/source/documentation/simcardio/electrophysiology/_pnet-parameters.md b/source/documentation/simcardio/electrophysiology/_pnet-parameters.md index b87b4a39..efcb5b10 100644 --- a/source/documentation/simcardio/electrophysiology/_pnet-parameters.md +++ b/source/documentation/simcardio/electrophysiology/_pnet-parameters.md @@ -1,4 +1,4 @@ -## Network Control Parameters ## +## Network Control Parameters The Purkinje network is generated using a Python script. The inputs to the script include a triangular surface, the network starting point, a second point defining the direction of the first network branch, and the parameters used to control the shape, density and spread of the network [2]. These parameters are described below: diff --git a/source/documentation/simcardio/electrophysiology/_pnet-refs.md b/source/documentation/simcardio/electrophysiology/_pnet-refs.md new file mode 100644 index 00000000..93ea37d6 --- /dev/null +++ b/source/documentation/simcardio/electrophysiology/_pnet-refs.md @@ -0,0 +1,8 @@ +## References + +

      +[1] Dubin, D., (1996). Rapid Interpretation of EKG's. Cover Publishing Company, Tampa, Florida.

      + +

      +[2] Sahli Costabal, F., Hurtado, D. E., & Kuhl, E. (2016). Generating Purkinje networks in the human heart. Journal of Biomechanics, 49(12), 2455–2465. https://doi.org/10.1016/j.jbiomech.2015.12.025 +

      diff --git a/source/documentation/simcardio/electrophysiology/_pnet-workflow.md b/source/documentation/simcardio/electrophysiology/_pnet-workflow.md index c73d64a6..d8508961 100644 --- a/source/documentation/simcardio/electrophysiology/_pnet-workflow.md +++ b/source/documentation/simcardio/electrophysiology/_pnet-workflow.md @@ -1,9 +1,9 @@ -## Purkinje Plugin Workflow & Usage ## +## Purkinje Plugin Workflow & Usage The Purkinje plugin can be applied only on a SimVascular generated mesh and not on the model. Therefore, it is recommended that the user first create a mesh either by following the regular workflow (i.e., Image, Path, Segmentation, Model and Mesh) or by importing a solid model using the Models tool. In the example below, we use the latter approach and load the left ventricular endocardium directly into the SV project. We then mesh the volume before using the plugin to generate Purkinje network. -###Create SV mesh +### Create SV mesh After creating an SV project, right-click on the Models tab to import a left ventricular solid model (.vtp) and run the Global Reinit command. During the import, extract faces on the model using the default settings.
      @@ -48,7 +48,7 @@ We now mesh the model before adding the Purkinje network tool. Create a new mesh
      -###Plugin workflow +### Plugin workflow Here we provide a brief overview of the workflow to generate Purkinje network. Once the mesh is created, activate the Purkinje plugin so that it displays the triangular surfaces of the mesh. Purkinje network can then be created using the following steps:
        @@ -84,7 +84,7 @@ Provide a starting point of the Purkinje network by moving the mouse cursor to a
        Select the starting point and direction of the Purkinje network.
        -Adjust the control parameters of the Purkinje network and generate by selecting the Create Network button. The network is displayed by checking the Show Network box. You can repeat the selection of the initial point and network creation until the results are satisfactory. A detailed description of the network control parameters is provided below. +Adjust the control parameters of the Purkinje network and generate by selecting the Create Network button. The network is displayed by checking the Show Network box. You can repeat the selection of the initial point and network creation until the results are satisfactory. A detailed description of the network control parameters is provided below.
        @@ -96,7 +96,7 @@ Adjust the control parameters of the Purkinje network and generate by selecting
        Purkinje network is overlaid on the mesh in the Display window.
        -The network is saved in .vtu format under the Purkinje-Network sub-folder of the project directory. Additionally you can find the .txt files that contain the information of end nodes, position coordinates, and network connectivity under the same folder. Further details about the contents of each file is provided below. +The network is saved in .vtu format under the Purkinje-Network sub-folder of the project directory. Additionally you can find the .txt files that contain the information of end nodes, position coordinates, and network connectivity under the same folder. Further details about the contents of each file is provided below.
        @@ -104,7 +104,7 @@ The network is saved in .vtu format under the Purkinje-Network sub-folder of the
        -###Output Description +### Output Description The Purkinje Network tool writes a set of files in the Purkinje-Network sub-folder within the SimVascular project directory. The files are prefixed with the name of the selected face. The files and their contents are described below: