The purpose of this project is to enable simulation of patient metabolism and the interactions of controllers such as Tidepool Loop. The current phase is for supporting FDA risk analysis. The longer term goal is to support many activities such as Tidepool Loop performance analysis and evaluation of algorithms for settings optimization.
This project supports ongoing risk assessment for Tidepool Loop. Changes (including exploring proposed changes) to the algorithm and new features all may require new development.
During refactoring of the FDA risk analysis it became clear that increased generality/abstraction in an object-oriented approach to that code would support multiple projects of interest to Tidepool and Tidepool Data Science. The current state of this project is a generic simulator that facilitates answering questions around Tidepool Loop risk, Tidepool Loop performance, data-driven user modeling, and many others.
The refactored code on which this is based is in /notebooks/TEMPLATE_Run_Risk_Scenario_in_pyloopkit_in_colab_v0_5.ipynb
- Python
- Anaconda for our virtual environments
- Pandas for working with data (99% of the time)
- Plotly for visualization
- Pytest for testing
- Travis for continuous integration testing
- Black for code style
- JSLint for linting
- Numpy docstring format
- Install Miniconda. CAUTION for python virtual env users: Anaconda will automatically update your .bash_profile
so that conda is launched automatically when you open a terminal. You can deactivate with the command
conda deactivate
or you can edit your bash_profile. - If you are new to Anaconda check out their getting started docs.
- Clone this repo (for help see this tutorial).
- In a terminal, navigate to the directory where you cloned this repo.
- Run
conda update -n base -c defaults conda
to update to the latest version of conda - Run
conda env create -f conda-environment.yml
. This will download all of the package dependencies and install them in a conda (python) virtual environment. - Run
conda env list
to get a list of conda environments and select the environment that was created from the environmental.yml file (hint: environment name is at the top of the file) - Run
conda activate <conda-env-name>
orsource activate <conda-env-name>
to start the environment. - Run
deactivate
to stop the environment.
- Current FDA scenarios are being kept
scenario_configs/tidepool_risk_v2/loop_risk_v2_0
within this repo. - Exploratory iCGM sensitivity analyses are located in
tidepool_data_science_simulator/projects/icgm
within this repo. - Analysess of proposed Tidepool Loop therapy settings guardrails are located in
tidepool_data_science_simulator/projects/loop_guardrails
within this repo.
In order to use the Swift implementation of the Loop Algorithm, you need:
- A machine running MacOS with XCode installed.
- To clone the LoopAlgorithmToPython respository with the built dylib (see Build Dynamic Library in the associated README).
- The
tidepool-data-science-swift.yml
conda environment installed and activated (see Getting Started with the Conda Virtual Environment).- Note - the conda environment assumes both the data-science-simulator and LoopAlgorithmToPython repositories are in the same directory.
The SwiftLoopController
class can be directly substituted for the LoopController
class when setting up simulator experiments.
The SwiftLoopController can be selected via configuration override by specifying "controller": { "id": "swift"}
instead of "controller": {"id": "pyloopkit_v1"}
.
- All are welcome to contribute to this project.
- Naming convention for notebooks is
[short_description]-[initials]-[date_created]-[version]
, e.g.initial_data_exploration-jqp-2020-04-25-v-0-1-0.ipynb
. A short_
delimited description, the creator's initials, date of creation, and a version number, - Naming convention for data files, figures, and tables is
[PHI (if applicable)]-[short_description]-[date created or downloaded]-[code_version]
, e.g.raw_project_data_from_mnist-2020-04-25-v-0-1-0.csv
, orproject_data_figure-2020-04-25-v-0-1-0.png
.
NOTE: PHI data is never stored in github and the .gitignore file includes this requirement as well.
- Integrate iCGM sensor and analysis scenarios (size: medium)
- Testing and cleanup (size: medium to large)
- Integrate visuals and metrics repos (size: small)
- Surface all parameters for configuration (size: small)
- Control randomness via config seed(s) (size: small)
- Speed up Pyloopkit, possible in this code base (size: medium to large)
Name (with github link) |
---|
Mark Connolly |
Shawn Foster |
Pete Schwamb |
Name (with github link) |
---|
Ed Nykaza |
Jason Meno |
Cameron Summers |
Anna Quinlan |
Eden Grown-Haeberli |