Recent Releases of ProgPy

ProgPy - prog_models v1.5.2

Release v1.5.2 Hotfix

Fixes incompatibility issue between ProgPy and newly released Tensorflow v2.13

Scientific Software - Peer-reviewed
Published by teubert almost 3 years ago

ProgPy - prog_models v1.5.1

Release v1.5.1 Hotfix

Fixes two issues: 1. Issue where floating point errors can cause infinite loop when simulating using automatic step sizes and step size that cannot be divided evenly by two in floating point arithmetic. 2. Issue where None's in LSTM state cause array dtype to revert to object, which cannot be converted into a tensor.

Scientific Software - Peer-reviewed
Published by teubert almost 3 years ago

ProgPy - prog_models v1.5

Release v1.5

  • New model type: Direct Models. Direct Models directly map current state and future load to time of event, rather than state-transition models which simulate forward to calculate time of event
  • New model types that combine multiple models:
    • EnsembleModel: combinations of multiple models of the same system where results are aggregated
    • CompositeModel: combinations of models of different systems that are interdependent
      • New Model Type: Aircraft flight model interface, AircraftModel. Anticipated prognostics applications with the aircraft flight model include estimating and predicting loading of other aircraft systems (e.g., powertrain) and safety metrics.
      • New Model: Implemented Small Rotorcraft AircraftModel
      • New DataModel: Polynomial Chaos Expansion (PCE) Direct Surrogate model
      • Initial transition of Input/State/OutputContainer and SimResult to use Pandas DataFrame. This release will bring the interface more in compliance with DataFrames. v1.6 will fully transition the classes to DataFrames.
      • Implemented new metrics that can be used when calculating error: Root Mean Square Error (RMSE), Maximum Error (MAX_E), Mean Absolute Error (MAE), Mean Absolute Percentage Error (MAPE), and Dynamic Time Warping (DTW)
      • Error calculation metric can now be changed in estimate_params
      • Revamping integration:
      • New integration methods: RK4 and methods from scipy.integrate
      • Integration is now set at the model level. For continuous models the specified integration method will apply when calling next_state
      • Python 3.11 support
      • Various bug fixes and performance improvements

Note

In the next release (v1.6), progmodels and progalgs will be combined into a single package called progpy. For release v1.6 you will install what is currently progmodals and progalgs by calling pip install progpy.

Acknowledgements

Thank you to our interns Aditya Tummala (@aqitya) and Miryam Strautkalns (@mstraut) for their contributions to this release.

The changes in this release were produced in part by Northrop Grumman under a contributor license agreement. Thank you NGC!

This release includes contributions from NASA's Autonomous Spacecraft Operations (ASO), Data and Reasoning Fabric (DRF), System Wide Safety (SWS), and Transformative Tools & Technologies (TTT) projects. Thank you for your support!

Scientific Software - Peer-reviewed
Published by teubert almost 3 years ago

ProgPy - prog_models v1.4

Release v1.4

  • Data-Driven Models
    • Created new DataModel class as interface/superclass for all data-driven models. Data-driven models are interchangeable in use (e.g., simulation, use with progalgs) with physics-based models. DataModels can be trained using data (.fromdata), or an existing model (.from_model)
    • Introduced new LSTM State Transition DataModel. See lstmmodel, fulllstmmodel, and custommodel for examples of use
    • DMD model updated to new data-driven model interface. Can now be created from data as well as an existing model
    • Added ability to integrate training noise to data for DMD Model
  • New Model: Single-Phase DC Motor
  • Added the ability to select integration method when simulation. Current options are Euler and RK4
  • New feature allowing serialization of model parameters as JSON. See serialization example
  • Added automatic step size feature in simulation. When enabled, step size will adapt to meet the exact savepts and savefreq. Step size range can also be bounded
  • New Example Model: Simple Paris' Law
  • Added ability to set bounds when estimating parameters (See PrognosticsModel.estimate_params())
  • Initialize method is now optional
  • Various bug fixes and performance improvements

Acknowledgements

Thank you to our intern Henry Lembo (@hlembo) for his contributions to this release.

This release includes contributions from NASA's Autonomous Spacecraft Operations (ASO), Data and Reasoning Fabric (DRF), System Wide Safety (SWS), and Transformative Tools & Technologies (TTT) projects. Thank you for your support!

Scientific Software - Peer-reviewed
Published by teubert over 3 years ago

ProgPy - prog_models v1.3.1: Bugfixes

Various bug fixes, including:

  • Removing unnecessary deepcopies
  • Fixed initial state updating bug in simulate_to*
  • Fix DMD handling of tuple save_freq
  • Fix copy and comparison for DictLikeMatrixWrapper

Scientific Software - Peer-reviewed
Published by teubert about 4 years ago

ProgPy - prog_models v1.3

Release v1.3

  • Surrogate Models Added initial draft of new feature to generate surrogate models automatically from PrognosticsModel (See examples.generate_surrogate.py). Initial implementation uses Dynamic Mode Decomposition. Additional Surrogate Model Generation approaches will be explored for future releases.
  • New Example Models Added new DCMotor, ESC, and Powertrain models to prog_models.models (See examples.powertrain.py`).
  • Datasets Added new feature that allows users to access prognostic datasets programmatically (See examples.dataset.py).
  • Added new LinearModel class - Linear Prognostics Models can be represented by a Linear Model. Similar to PrognosticsModels, LinearModels are created by subclassing the LinearModel class. Some algorithms will only work with Linear Models. See linear_model.py example for detail.
  • Added new StateContainer/InputContainer/OutputContainer objects for classes which allow for data access in matrix form and enforce expected keys.
  • Added new metric for SimResult: Monotonicity.
  • SimResult.plot() now automatically shows legends.
  • Added drag to ThrownObject model, making the model non-linear. Degree of nonlinearity can be effected using the model parameters (e.g., coefficient of drag cd).
  • observables from previous releases are now called performance_metrics.
  • model.simulate_to* now returns named tuple, allowing for access by property name (e.g., result.states).
  • Updates to SimResult and LazySimResult for robustness.
  • Various performance improvements and bug fixes.

Note

Now input, states, and output should be represented by model.InputContainer, StateContainer, and OutputContainer, respectively.

Note

Python 3.6 is no longer supported.

Acknowledgments

Thank you to our intern Lawrence Hwang (@lawrence-hwang) for his help with this release.

This release includes contributions from NASA's Autonomous Spacecraft Operations (ASO), Data and Reasoning Fabric (DRF), and System Wide Safety (SWS) projects. Thank you for your support!

Scientific Software - Peer-reviewed
Published by teubert about 4 years ago

ProgPy - v1.2.2: Minor fixes

A few minor fixes: * ThrownObject used a property to store maxx. This meant it couldn't be used in sample-based algorithms like a Particle Filter or Monte Carlo. maxx is now a state. * Fixed comparison of models using equality * Support added for single thresholdkey (instead of list). E.g., m.simulatetothreshold(thresholdkeys='key1')

Scientific Software - Peer-reviewed
Published by teubert over 4 years ago

ProgPy - v1.2.1: Python3.10 Support

Added support for Python 3.10

Scientific Software - Peer-reviewed
Published by teubert over 4 years ago

ProgPy - prog_models v1.2

Release v1.2 (Mini-release)

This release primarily includes changes needed to support prog_algs v1.1. Specific improvements include:

  • Model Vectorization - significantly improves runtime when used in way that requires multiple samples to be simulated simultaneously [#143]
  • Added support for dynamic step sizes in simulation (using user defined next_time function) [#131]
  • Created model.apply_limits(state) -> state function to apply model state limits. This enables other methods that externally agitate state (e.g., particle filters) to ensure they remain within bounds).
  • Arguments in initialize are now optional for existing models [#157]
  • Updates to simulate_to*
    • First output is now optional for classes where arguments of initialize are optional [#157]
    • Ability to specify the starting time [#145]
  • New ThrownObject model used in examples and tests [#139]
  • Extend SimResult to include features of a list (e.g., index, pop, extend) [#150]
  • Removed intra-package dependency in examples which prevented some IDEs from executing a few of the examples [#139]
  • Added additional examples demonstrating prog_models features
  • Various Bugfixes

The changes in this release were produced in part by Northrop Grumman under a contributor license agreement. Thank you NGC!

Scientific Software - Peer-reviewed
Published by teubert over 4 years ago

ProgPy - prog_models v1.1

Release v1.1

General Updates

  • Added Derived Parameter Feature- allows users to specify callbacks to automatically update parameters.
  • Added Parameter Estimation Feature- supports the estimation of model parameters using data from one or more runs
  • Added Automatic Noise Generation Feature- noise generation is done automatically in private functions _nextstate() and __output()
  • Added Configurable State Bounds Feature- optional bound checking for states. If next_state is outside of range it is set equal to the closest boundary
    • Added example to demonstrate new Configurable State Bounds Feature
  • Predictions now return a Simulation Result object.
    • This new class makes Output and Event State a "Lazily Evaluated" property. It is now calculated on need. This speeds up simulation when intermediate states are not printed and these properties are not used
    • A plot method has been added directly to the class (e.g., event_states.plot())
  • Added Intermediate Printing Feature- option to print states during simulation
  • Added support for observables- i.e., performance parameters that are a function of system state/health but are not directly measured (e.g., maximum torque of a motor)
  • Added support for Python3.9
  • Various bugfixes

ElectroChemistry Model Updates

  • Added thermal degradation
  • Added Capacity Degradation (i.e., EOL) and combined EOL/EOD Electrochemistry models with new event (degraded_capacity)
  • Updated SOC (EOD event state) calculation to include voltage when near VEOD. This prevents situation where voltage is below lower bound but SOC > 0
  • Added ranges and descriptions for model states
  • Various Bug Fixes

CentrifugalPump Model Updates

  • Added CentrifugalPumpBase class where wear rates are parameters instead of part of the state vector
  • Fixed bug where some event states were returned as negative
  • Added example on use of CentrifugalPump Model
  • Added ranges and descriptions for model states
  • Performance Improvements

PneumaticValve Model Updates

  • Added PneumaticValveBase class where wear rates are parameters instead of part of the state vector
  • Added ranges and descriptions for model states
  • Added example on use of PneumaticValve model

BatteryCircuit Model

  • Added ranges and descriptions for model states

Note: noise addition has been moved into the PrognosticsModel class. If you've created a new class which adds noise manually - please remove that to avoid noise being added twice.

Thank you to our intern Wade Lamberson (@wlamberson1) for his help this summer. His contributions are included in this release. This release was completed thanks to input from engineers at Northrop Grumman Corporation. The team appreciates NGC's input.

Scientific Software - Peer-reviewed
Published by teubert almost 5 years ago

ProgPy - Initial Release

Introducing the NASA Prognostics Models Package. The NASA Prognostic Model Package is a python modeling framework focused on defining and building models for prognostics (computation of remaining useful life) of engineering systems, and provides a set of prognostics models for select components developed within this framework, suitable for use in prognostics applications for these components.

Features of the initial release include: * Parent class for models (progmodels.PrognosticsModel) - either discrete or continuous * Tool for generating new models * Tools for simulating model to time or threshold * Tools for visualizing results (progmodels.visualize) * Example models: Battery - Equivalent Circuit Model (BatteryCircuit), Battery - ElectroChem Model (BatteryElectrochem), Centrifugal Pump Model, Pneumatic Valve Model * User Documentation * Examples of package use, including: * Simulating a model * Simulating with complex future loading profiles * Simulating with different noise profiles * Creating a new model (through model_gen function or subclass) * Visualizing results * Benchmarking models * Sensitivity analyses * User tutorial * New model template

Scientific Software - Peer-reviewed
Published by teubert about 5 years ago