About Pulse

The Pulse Physiology Engine can be used as a standalone application or integrated with simulators, sensor interfaces, and models of all fidelities. The platform includes a common data model for standard model and data definitions, a software interface for engine control, robust physics-based circuit and transport solvers, and a verification and validation suite. The architecture was specifically designed to reduce model development time and increase the usability of the engine in simulations by creating a modular, extensible definition for human physiology. Pulse provides the following benefits to its user community:

  • Sound underlying physics: Clear, accurate, precise first principles conservation equations
  • Standardized data model: Easily understandable, widely usable, ontologies and software interfaces
  • Extensible: Reusable, repeatable implementation to allow the addition of new capabilities and functionality
  • Modular: Interdependent, hierarchical models for varying fidelity and complexity
  • Thorough documentation: In-depth, referenced descriptions of physiology methodology and software design
  • Cross-platform deployment: Easy compilation on all standard operating systems (Windows, Mac, Linux, and ARM) and multiple languages (C++, C#, Java, Unity)
  • Credible: Computational models transparently derived from evidence-based literature and analyzed with extensive verification and validation tools
  • Open: Public repository managed by experienced Kitware team with a permissible Apache 2.0 license for multicenter and multidisciplinary collaborative development

Pulse is comprised of numerical models representing the different body systems, feedback mechanisms and interactions between the systems, PK/PD, and medical equipment. The major systems are modeled using zero-dimensional lumped-parameter circuit analogs (e.g., the cardiovascular circuit) with homeostatic feedback. The differential equations contained in each system are calculated through transient analysis with a shared dynamic time step. The numerical models currently execute with a time step of 20 ms, which can be reduced, as necessary, to ensure all physiology features of interest are captured, while maintaining real-time execution for the simulation.

Pulse has been developed through a combination of funding by many different government and private entities, and is a significantly improved and extended fork from the DoD-funded BioGears program. The Pulse repository is maintained by the Kitware team that includes the original core BioGears creators (see the FAQ). Pulse has recently been incorporated into a number of commercial, research, and academic tools for medical simulation (see Pulse in action)


Validation Methodology

Models are validated using a combination of peer-reviewed publications and subject matter expertise. The validation process includes:

  • Defining key parameters for system validation
  • Performing literature reviews to gather published data in the form of waveforms, and max, min, and mean values
  • Using custom developed tools to compare data, perform analysis, and generate plots and tables of results

We validate each system at a compartment level (pressure, flow, volume, temperature, etc.). We also validate each action for a variety of system level parameters (heart rate, respiratory rate, tidal volume, blood pressure, etc.). We provide reports for each system in our Methodology documentation.

Below is a summary of our system and compartment level validation.

Key
Good agreement: correct trends or <10% deviation from expected
Some deviation: correct trend and/or <30% deviation from expected
Poor agreement: incorrect trends or >30% deviation from expected
Category < 10% 10%-30% > 30% Total
BloodChemistry 40 1 1 42
Cardiovascular 20 2 0 22
CardiovascularCompartments 64 5 4 73
CompleteBloodCount 7 0 1 8
CompleteMetabolicPanel 8 0 0 8
Endocrine 1 0 0 1
Energy 6 0 0 6
Gastrointestinal 1 0 0 1
Nervous 0 0 0 0
PulmonaryFunctionTest 7 0 0 7
Renal 36 3 5 44
RenalCompartments 38 3 8 49
RenalSubstances 19 6 11 36
Respiratory 36 4 3 43
RespiratoryCompartments 34 0 0 34
Tissue 7 2 0 9
TissueCompartments 24 2 0 26
TissueSubstances 0 0 0 0
Urinalysis 6 0 0 6
Total 354 28 33 415

What can I do with the physiology engine?

Define patient parameters, such as height, weight, systolic and diastolic pressure.
Simulate specific chronic and/or disease states via conditions.
Modify external environmental conditions (weather, submerge in water, etc.)
Apply various actions (acute insults/injuries, interventions, conscious breathing, exercise, etc.) to the patient.
Have patient interact with equipment models, such as an Anesthesia and/or an ECG Machine as well as an Inhaler via actions.
Integrate the engine into your applications.

Available data is defined within the engine in three major ways:

  1. System data (Cardiovascular, Respiratory, etc.) that is analogous to system vitals Examples: heart rate, oxygen consumption, mean arterial pressure, etc.
  2. Compartment data
    • Flow, pressure, and volume related to specific region of the body or component of equipment Examples: Cerebral Blood Flow, Right Lung Volume, Right Heart Pressure
    • Substance specific data related to a specific part of the body or component of equipment Examples: The Extracellular concentration of succinylcholine in the brain tissue, anesthesia machine gas inlet oxygen volume fraction
  3. Assessments formed at the level of a clinician's report, Intended to mimic test results Examples: Pulmonary Function Test

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.