From 21bce324681d647911eecfa94e1ce9b76ca92e33 Mon Sep 17 00:00:00 2001 From: Katy Date: Wed, 9 Oct 2024 17:22:39 -0700 Subject: [PATCH] Started intro for tutorial --- examples/2024PHMTutorial.ipynb | 99 +++++++++++++++++++++++++++++- examples/img/ProgPyComponents.png | Bin 0 -> 32361 bytes 2 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 examples/img/ProgPyComponents.png diff --git a/examples/2024PHMTutorial.ipynb b/examples/2024PHMTutorial.ipynb index c0f3f60..ff1a82c 100644 --- a/examples/2024PHMTutorial.ipynb +++ b/examples/2024PHMTutorial.ipynb @@ -8,7 +8,26 @@ "_2024 PHM Society Conference_\n", "_November, 2024_\n", "\n", - "Please put questions in the Whova App or raise your hand" + "Please put questions in the Whova App or raise your hand." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Pre-Work\n", + "_We recommend installing ProgPy prior to the tutorial_\n", + "\n", + "The latest stable release of ProgPy is hosted on PyPi. To install via the command line, use the following command: \n", + "\n", + "`$ pip install progpy`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Please download the Whova App ( link? ) for live Q&A during the session." ] }, { @@ -22,11 +41,87 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "\n", "•\tPut questions in the whova app\n", "•\tWhat it is\n", "•\tWhere to find it\n", "•\tInstalling it – Pre-work\n", - "•\tGeneral Structure\n" + "•\tGeneral Structure\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "NASA’s ProgPy is an open-source python package supporting research and development of prognostics, health management, and predictive maintenance tools. It implements architectures and common functionality of prognostics, supporting researchers and practitioners.\n", + "\n", + "The goal of this tutorial is to instruct users to use and extend ProgPy. This tutorial will cover how to use a model, including existing models and additional capabilities like parameter estimation and simulation, as well as how to build a new model from scratch. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Definitions and Background\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ProgPy uses the following definition for prognostics: \n", + "\n", + "**Prognostics**: Prediction of (a) future performance and/or (b) the time at which one or more events of interest occur, for a system or a system of systems." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ProgPy framework consists of three key components, illustrated below, that combine to create a flexible and extendible prognostics architecture.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Alt text](img/ProgPyComponents.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "_Prognostics Model_ \n", + "\n", + "The Prognostics Models are the backbone of the ProgPy architecture. Models describe the specific system that prognostics will be applied to and how the system will evolve with time. Everything else within ProgPy (e.g. simulation capabiliites and prognostics tools) are built on top of a model. \n", + "\n", + "ProgPy supports models that are physics-based, data-driven, or hybrid. ProgPy includes some built-in models (see examples below) but is also written in an easily adaptable way so users can implement models specific to their use-cases. \n", + "\n", + "_Prognostics Engine_\n", + "\n", + "The Prognostics Engine encapsulates the complex logic of prognostics in a way that is modular and extendable. It includes the necessary tools to perform prognostics on the model, including state estimation, prediction, and uncertainty management. The modularity of the framework allows these capabilities to work with any model (built-in or user-defined) and the extensibility of the architecture allows users to additionally create their own methodologies. \n", + "\n", + "_Prognostics Support Tools_\n", + "\n", + "The Prognostics Support Tools are a collection of capabilities to help users build new funtionalities or understand prognostics results. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to these key components of the software architecture, the following definitions are needed for a comprehensive understanding of ProgPy.\n", + "\n", + "* **Event**: Something that can be predicted (e.g., system failure, warning threshold). An event has either occurred or not.\n", + "* **Event State**: Progress towards event occurring. Defined as a number where an event state of 0 indicates the event has occurred and 1 indicates no progress towards the event (i.e., fully healthy operation for a failure event). For gradually occurring events (e.g., discharge) the number will progress from 1 to 0 as the event nears. In prognostics, event state is frequently called \"State of Health\" or \"SOH\"\n", + "* **Inputs**: Control applied to the system being modeled (e.g., current drawn from a battery)\n", + "* **Outputs**: Measured sensor values from a system (e.g., voltage and temperature of a battery), outputs can be estimated from system state\n", + "* **States**: Internal parameters (typically hidden states) used to represent the state of the system- can be same as inputs/outputs but do not have to be." ] }, { diff --git a/examples/img/ProgPyComponents.png b/examples/img/ProgPyComponents.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c1656ddf8e914b2d1d8fc8d33d33acb0c9e628 GIT binary patch literal 32361 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 literal 0 HcmV?d00001