Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
engine
engine
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3
    • Issues 3
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Pulse Physiology Suite
  • engineengine
  • Wiki
  • Home

Last edited by Aaron Bray Aug 27, 2020
Page history

Home

Welcome to the Pulse Wiki

We use this space to talk about various features and possibilities you may not know Pulse supports, demonstrate best practices, and provide detailed explanations for any questions or problems anyone brings to our attention.

If you would like us to expand upon anything feel free to bring it up in our discourse channel.

Before diving into the topics below, make sure you have a good understanding of the the Common Data Model and its structures, as well as the Pulse interface.

We also assume you have build the source code per instruction from our repository.

  • We will refer to the source code directory as <pulse/source>
  • The build directory you set where you ran CMake, will be refereed to as <pulse/build>
  • All commands will be run from a terminal in the <pulse/build>/install/bin, which we will refer to as <pulse/bin>

The script to run all of our tests, utilities, and tools is written in CMake to ensure cross platform compatibility. CMake should be available on your path to use these tools. We also provide a simple run batch/shell script wrapper around the CMake calling format to be run as follows :

# The CMake invocation
cmake -DTYPE:STRING=[command] -P run.cmake 
# On Windows
> run [command]
# On Linux/Max
$ ./run.sh [command]
# Note you may need to do a 
$ chmod +x run.sh
# To run this script on your machine

Where [command] can be one of the following values:

  • genData - Generate pba files from data in the <pulse/source>/data/Data.xlxs file (Patients, Substances, etc.)
  • genStates - Generate a state file for every patient at the point where the patient completed stabilization (Simulation time 0s)to <pulse/bin>/states
  • SystemValidation - Will use <pulse/source>/test/config/ValidationSystems.config to create system validation tables in the <pulse/bin>/test_results directory
  • PatientValidation - Will use <pulse/source>/test/config/ValidationPatients.config to create patient validation tables in the <pulse/bin>/test_results directory
  • The names of the other config files in the <pulse/source>/test/config/ directory without the suffix
    • For Example : DebugRun, CDMUnitTests, ValidationSystems, VerificationScenarios, etc.
    • With exception of the Characterize.config, this is a legacy testing configuration that will not work

Lastly, to follow along and both execute and debug the engine, you will need to pull all of our baseline scenarios. If you chose not to pull the baselines in your build process (you do not have a <pulse/bin>/verification folder), you will need to pull them. From a command/terminal running in the <pulse/bin>, execute the following command :

# Windows
> run updateBaselines
# On Mac/Linux
$ ./run.sh updateBaselines

This baseline collection will be create the following folder : <pulse/bin>/verification. It will contain both Scenario files, and baseline results files. We will discuss the baseline results in the test suite section.

Executing Pulse

Being a C++ library, Pulse requires a separate application to instantiate and execute the engine. We will explore various execution mechanisms in our repository in the sections below :

Running and Timing Pulse
Running the Pulse Test Suite

Setting up an IDE

Using C++ with Visual Studio
Using C++ with CLion
Using Java with Eclipse
Using Java with IntelliJ
Using Python with PyCharm

Using Pulse

Learn how to use the Pulse SDK
Integrating Pulse into your application

Pulse provides an API for many different languages. To learn more about working with the Pulse API, you can find HowTo folders in many of the language folders in src Pulse provides an API for each of these languages, and they are designed to be very consistent with each other. So if you are looking for how to use a particular feature in Pulse and the language you are using does not provide an example, look around in the other languages and it should be trivial to translate to the language of your application.

C#/.NET API
Python

Extending and Contributing to Pulse

To get started with your Pulse contribution: Contributing to Pulse

While these topics are referenced in the Contributing to Pulse document, for quick reference here are individual topics:

How to modify a system circuit
How to extend a system
How to create a new action
How to create a new condition
How to add a new parameter
How to create a scenario
How to create a unit test
How to update the documentation
How to generate the documentation
How to perform verification and validation
How to rebase the verification baselines

Clone repository
  • Adding a Parameter
  • Contributing to Pulse
  • Creating a Scenario
  • Creating a Unit Test
  • Creating a condition
  • Creating an Action
  • Extending a System
  • Generating Documentation
  • Modifying a System Circuit
  • Pulse Scenario Driver
  • Test Suite
  • Updating Baselines
  • Updating Documentation
  • Using C#
  • Using CLion
View All Pages