https://github.com/equinor/timeseriesanalysis
Library that combines control engineering, dynamic simulation and machine learning on time-series. Developed to describe industrial processes and -automation. Lightweight, robust and fast for use in advanced analytics. Built on .NET to run anywhere.
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.8%) to scientific vocabulary
Keywords
Repository
Library that combines control engineering, dynamic simulation and machine learning on time-series. Developed to describe industrial processes and -automation. Lightweight, robust and fast for use in advanced analytics. Built on .NET to run anywhere.
Basic Info
- Host: GitHub
- Owner: equinor
- License: apache-2.0
- Language: C#
- Default Branch: master
- Homepage: https://equinor.github.io/TimeSeriesAnalysis
- Size: 7.48 MB
Statistics
- Stars: 17
- Watchers: 1
- Forks: 2
- Open Issues: 51
- Releases: 4
Topics
Metadata Files
readme.md
TimeSeriesAnalysis : Data-driven dynamic modeling and simulation
Overview
This library deals with developing time-series models and simulators from time-series data.
The methods in this library are primarily designed to describe time-series of physical, real-world systems for an industrial setting.
Real-world industrial systems - often exhibit repeatable transient responses to changes in inputs - usually include feeback loops, either due to recirculation in the process or because the system is controlled with PID-controllers(PID-model is included) - and often consist of a network of interconnected units that interact.
This library was designed to create dynamic unit models that can be chained into interconnected networks that can include PID-control or other feedback- or circulation loops.
Models are not derived from physical first principles, but are inferred from time-series data using the principles of system identification, the methods to infer models are built on multiple modfied linear regression steps(identification methods are included).
The library is written in C# but can be referenced from any language that can reference .NET language, including Matlab or Python. The target framework is .NET Standard 2.0.
Use cases: Digital twins, anomaly detection, "what-if", PID-tuning, monitoring and screening
The power of this library lies in the ability to automate or semi-automate the steps of identfiying new models or simulating existing models at scale. In effect this libary can create "digital twin" models of sections of a process.
The methods lend themselves readily to for instance automatically building a large number of similar models for similar sections of a process, for instance to monitor every valve, separation tank or PID-control loop in a similar fashion, in a way that lends itself to process monitoring and -screening.
The methods in this library are scalable and modular, i.e. by chaining together unit models, the library can also simulate larger sections of a process plant, so the methodology could in principle be extended to assemble a digital twin of an entire process plant.
Models can be run alongside the plant, and monitoring the difference between measured and modelled values can provide insight into changes in the plant (anomaly detection.) By manually simulating changes on these kinds of models, "what-if" scenarios can be evaluted either manually or automatically. One very interesting such use-case is to evaluate the possible benefits of re-tuning PID-controllers.
The above use-cases could be put under the umbrella term "advanced analytics", i.e. using algorithms and data to make deep insights about causes and effects to make predictions and reccomendations.
Explainable models for low-information datasets
Note that although this library uses regression methods and algorithms to learn parameters to describe data, the methodology is somewhat different from traditional machine learning in that models follow the principles of system identification rather than AI. The number of free parameters are kept low by design, as this makes reduces the likelihood of over-fitting. Over-fitting is particularly important when dealing with industrial data, as this kind of data has to be used "as-is" and one often has less information than one would like. Another benefit of keepting the number of fitted paramters low is that models remain explainable and human-understandable, and it becomes possible to combine fitted models with human pre-knowledge, what is often referred to as "grey-box" modeling.
Documentation:
:redcircle: TimeSeriesAnalysis documentation :redcircle:
:redcircle: TimeSeriesAnalysis API documentation :redcircle:
Roadmap
The aim of this repository is to collect building blocks to developing digital twins from datasets in a manner that can be automated.
This repository development in versions 1.x, is focused on "getting the basics right"
- defining a set of unit models that together can simulate most industrial processes (especially PidModel and UnitModel),
- establishing unit identification methods for each unit model type, and
- efficent simulation of "plants" of unit models
Contributing
This project welcomes contributions and suggestions. Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests.
Getting started
Regardless if you call this library from C#, Python or Matlab, the resulting code is very similar. A good first step is to read through the getting started examples and try copying in that code and getting it to run to get the hang of things
Calling this library from Python
The library can be conveniently used from Python
- grab the zipped binaries from a release and unzip
- set up Python.Net,
- start calling the API-methods
(see help article Getting started:Python.)
Calling this library from MatLab
The library be conveniently used from Matlab
- grab the zipped binaries from a release and unzip
- load the assembly with NET.addAssembly()
- start calling the API
(see article Getting started:Matlab.)
Calling this library from your .NET project
- create a project in Visual Studio, and
- import the "TimeSeriesAnalysis" library from NuGet
- start calling the API
Working with the code of this repository
- check out this repository,
- make sure NuGet is setup correctly, and
- all examples are implemented as unit-tests using NUnit, try running these to
Discussion forum and contact person
The contact person for this repository is Steinar Elgsæter, please post any question you may have related to TimeSeriesAnalysis in the github discussion pages.
License
TimeSeriesAnalysis is distributed under the Apache 2.0 license.
Owner
- Name: Equinor
- Login: equinor
- Kind: organization
- Website: http://www.equinor.com
- Repositories: 484
- Profile: https://github.com/equinor
GitHub Events
Total
- Issues event: 54
- Watch event: 6
- Delete event: 11
- Issue comment event: 26
- Push event: 131
- Pull request review comment event: 7
- Pull request review event: 19
- Pull request event: 32
- Fork event: 4
- Create event: 47
Last Year
- Issues event: 54
- Watch event: 6
- Delete event: 11
- Issue comment event: 26
- Push event: 131
- Pull request review comment event: 7
- Pull request review event: 19
- Pull request event: 32
- Fork event: 4
- Create event: 47
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 121
- Total pull requests: 34
- Average time to close issues: 10 months
- Average time to close pull requests: 1 day
- Total issue authors: 5
- Total pull request authors: 3
- Average comments per issue: 0.76
- Average comments per pull request: 0.09
- Merged pull requests: 30
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 38
- Pull requests: 33
- Average time to close issues: about 1 month
- Average time to close pull requests: 1 day
- Issue authors: 4
- Pull request authors: 3
- Average comments per issue: 0.61
- Average comments per pull request: 0.09
- Merged pull requests: 29
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- steinelg (115)
- sondreew (4)
- gunnska (1)
- sondreo (1)
- WezilL (1)
Pull Request Authors
- sondreew (18)
- steinelg (10)
- sondreo (8)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- nuget 7,351 total
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 57
- Total maintainers: 1
nuget.org: timeseriesanalysis
Time-series modeling and simulation, based on system identification. Supports transients/dynamic and static models, filters and PID-control.
- Homepage: https://github.com/equinor/timeseriesanalysis
- License: apache-2.0
-
Latest release: 1.4.12
published 6 months ago
Rankings
Maintainers (1)
Dependencies
- NuGet/setup-nuget v1.0.5 composite
- actions/checkout v2 composite
- actions/setup-dotnet v1 composite
- microsoft/Setup-MSBuild v1.0.3 composite
- actions/checkout v3 composite
- actions/deploy-pages v4 composite
- actions/setup-dotnet v3 composite
- actions/upload-pages-artifact v3 composite
- NuGet/setup-nuget v1.0.5 composite
- actions/checkout v2 composite
- actions/setup-dotnet v1 composite
- microsoft/Setup-MSBuild v1.0.3 composite
- NuGet.Build.Tasks.Pack 6.4.0 development
- Microsoft.Extensions.Configuration.Json 7.0.0
- Microsoft.NET.Test.Sdk 17.4.1
- NUnit 3.13.3
- NUnit.ConsoleRunner 3.17.0
- NUnit3TestAdapter 4.3.0
- Newtonsoft.Json 13.0.2
- System.Configuration.ConfigurationManager 7.0.0
- Microsoft.SourceLink.GitHub 8.0.0 development
- NuGet.Build.Tasks.Pack 6.1.0 development
- docfx.console 2.59.4 development
- Accord 3.8.0
- Accord.Math 3.8.0
- Accord.Statistics 3.8.0
- Microsoft.Extensions.Configuration.Json 6.0.0
- Microsoft.NET.Test.Sdk 17.1.0
- NUnit.ConsoleRunner 3.17.0
- Newtonsoft.Json 13.0.1
- System.Configuration.ConfigurationManager 6.0.0
- System.ValueTuple 4.5.0