ddDT-GFM 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dddt_gfm-0.1.0/.github/workflows/publish.yml +47 -0
- dddt_gfm-0.1.0/.github/workflows/test.yml +31 -0
- dddt_gfm-0.1.0/.gitignore +195 -0
- dddt_gfm-0.1.0/.readthedocs.yaml +19 -0
- dddt_gfm-0.1.0/LICENSE +24 -0
- dddt_gfm-0.1.0/PKG-INFO +95 -0
- dddt_gfm-0.1.0/README.md +25 -0
- dddt_gfm-0.1.0/ddDT_GFM.egg-info/PKG-INFO +95 -0
- dddt_gfm-0.1.0/ddDT_GFM.egg-info/SOURCES.txt +48 -0
- dddt_gfm-0.1.0/ddDT_GFM.egg-info/dependency_links.txt +1 -0
- dddt_gfm-0.1.0/ddDT_GFM.egg-info/requires.txt +24 -0
- dddt_gfm-0.1.0/ddDT_GFM.egg-info/scm_file_list.json +45 -0
- dddt_gfm-0.1.0/ddDT_GFM.egg-info/scm_version.json +8 -0
- dddt_gfm-0.1.0/ddDT_GFM.egg-info/top_level.txt +1 -0
- dddt_gfm-0.1.0/dddt_gfm/__init__.py +9 -0
- dddt_gfm-0.1.0/dddt_gfm/data_cleaning/__init__.py +0 -0
- dddt_gfm-0.1.0/dddt_gfm/data_cleaning/physics_constraint.py +358 -0
- dddt_gfm-0.1.0/dddt_gfm/dataloaders/__init__.py +0 -0
- dddt_gfm-0.1.0/dddt_gfm/dataloaders/dataloader_DIW.py +119 -0
- dddt_gfm-0.1.0/dddt_gfm/dataloaders/dataloader_sunsmart.py +1278 -0
- dddt_gfm-0.1.0/dddt_gfm/dataloaders/rwb_dataloader_sunsmart.py +1380 -0
- dddt_gfm-0.1.0/dddt_gfm/exemplar_DIW/__init__.py +0 -0
- dddt_gfm-0.1.0/dddt_gfm/exemplar_DIW/training/__init__.py +0 -0
- dddt_gfm-0.1.0/dddt_gfm/exemplar_DIW/training/train.py +194 -0
- dddt_gfm-0.1.0/dddt_gfm/exemplar_LPBF/__init__.py +0 -0
- dddt_gfm-0.1.0/dddt_gfm/exemplar_LPBF/training/__init__.py +0 -0
- dddt_gfm-0.1.0/dddt_gfm/exemplar_LPBF/training/train.py +269 -0
- dddt_gfm-0.1.0/dddt_gfm/exemplar_PV/__init__.py +0 -0
- dddt_gfm-0.1.0/dddt_gfm/exemplar_PV/training/__init__.py +0 -0
- dddt_gfm-0.1.0/dddt_gfm/exemplar_PV/training/train.py +262 -0
- dddt_gfm-0.1.0/dddt_gfm/models/__init__.py +0 -0
- dddt_gfm-0.1.0/dddt_gfm/models/stGAE.py +300 -0
- dddt_gfm-0.1.0/dddt_gfm/rwb-graph_UNET.py +161 -0
- dddt_gfm-0.1.0/dddt_gfm/tests/__init__.py +0 -0
- dddt_gfm-0.1.0/dddt_gfm/tests/test_util.py +5 -0
- dddt_gfm-0.1.0/dddt_gfm/util/__init__.py +0 -0
- dddt_gfm-0.1.0/dddt_gfm/util/callbacks.py +47 -0
- dddt_gfm-0.1.0/dddt_gfm/util/io.py +63 -0
- dddt_gfm-0.1.0/docs/Makefile +14 -0
- dddt_gfm-0.1.0/docs/_static/.gitkeep +0 -0
- dddt_gfm-0.1.0/docs/api.rst +29 -0
- dddt_gfm-0.1.0/docs/conf.py +66 -0
- dddt_gfm-0.1.0/docs/index.rst +24 -0
- dddt_gfm-0.1.0/docs/installation.rst +35 -0
- dddt_gfm-0.1.0/docs/make.bat +28 -0
- dddt_gfm-0.1.0/notebooks/DIW_demo.ipynb +266 -0
- dddt_gfm-0.1.0/notebooks/LPBF_demo.ipynb +954 -0
- dddt_gfm-0.1.0/notebooks/PV_demo.ipynb +797 -0
- dddt_gfm-0.1.0/pyproject.toml +76 -0
- dddt_gfm-0.1.0/setup.cfg +4 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: publish
|
|
2
|
+
|
|
3
|
+
# Build and publish to PyPI when a version tag (e.g. v2024.07.03) is pushed.
|
|
4
|
+
# Uses PyPI Trusted Publishing (OIDC) -- no API token/secret required. You must
|
|
5
|
+
# first configure a "trusted publisher" for this project on PyPI:
|
|
6
|
+
# https://docs.pypi.org/trusted-publishers/adding-a-publisher/
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
tags:
|
|
10
|
+
- "v*"
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
name: Build distribution
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
fetch-depth: 0 # setuptools_scm needs full history + tags
|
|
20
|
+
- uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.12"
|
|
23
|
+
- name: Build sdist and wheel
|
|
24
|
+
run: |
|
|
25
|
+
python -m pip install --upgrade build
|
|
26
|
+
python -m build
|
|
27
|
+
- uses: actions/upload-artifact@v4
|
|
28
|
+
with:
|
|
29
|
+
name: dist
|
|
30
|
+
path: dist/
|
|
31
|
+
|
|
32
|
+
publish:
|
|
33
|
+
name: Publish to PyPI
|
|
34
|
+
needs: build
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
environment:
|
|
37
|
+
name: pypi
|
|
38
|
+
url: https://pypi.org/p/dddt-gfm
|
|
39
|
+
permissions:
|
|
40
|
+
id-token: write # required for trusted publishing
|
|
41
|
+
steps:
|
|
42
|
+
- uses: actions/download-artifact@v4
|
|
43
|
+
with:
|
|
44
|
+
name: dist
|
|
45
|
+
path: dist/
|
|
46
|
+
- name: Publish to PyPI
|
|
47
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
test:
|
|
10
|
+
|
|
11
|
+
strategy:
|
|
12
|
+
fail-fast: false # don't cancel other matrix jobs when one fails
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
|
15
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
16
|
+
|
|
17
|
+
runs-on: ${{ matrix.os }}
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
- name: Set up Python
|
|
22
|
+
uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: ${{ matrix.python-version }}
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: |
|
|
27
|
+
pip install -e .
|
|
28
|
+
pip install .[test]
|
|
29
|
+
- name: Run tests
|
|
30
|
+
run: |
|
|
31
|
+
pytest
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
share/python-wheels/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
MANIFEST
|
|
28
|
+
|
|
29
|
+
# PyInstaller
|
|
30
|
+
# Usually these files are written by a python script from a template
|
|
31
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
32
|
+
*.manifest
|
|
33
|
+
*.spec
|
|
34
|
+
|
|
35
|
+
# Installer logs
|
|
36
|
+
pip-log.txt
|
|
37
|
+
pip-delete-this-directory.txt
|
|
38
|
+
|
|
39
|
+
# Unit test / coverage reports
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
.nox/
|
|
43
|
+
.coverage
|
|
44
|
+
.coverage.*
|
|
45
|
+
.cache
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
*.cover
|
|
49
|
+
*.py,cover
|
|
50
|
+
.hypothesis/
|
|
51
|
+
.pytest_cache/
|
|
52
|
+
cover/
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
db.sqlite3
|
|
62
|
+
db.sqlite3-journal
|
|
63
|
+
|
|
64
|
+
# Flask stuff:
|
|
65
|
+
instance/
|
|
66
|
+
.webassets-cache
|
|
67
|
+
|
|
68
|
+
# Scrapy stuff:
|
|
69
|
+
.scrapy
|
|
70
|
+
|
|
71
|
+
# Sphinx documentation
|
|
72
|
+
docs/_build/
|
|
73
|
+
|
|
74
|
+
# PyBuilder
|
|
75
|
+
.pybuilder/
|
|
76
|
+
target/
|
|
77
|
+
|
|
78
|
+
# Jupyter Notebook
|
|
79
|
+
.ipynb_checkpoints
|
|
80
|
+
|
|
81
|
+
# IPython
|
|
82
|
+
profile_default/
|
|
83
|
+
ipython_config.py
|
|
84
|
+
|
|
85
|
+
# pyenv
|
|
86
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
87
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
88
|
+
# .python-version
|
|
89
|
+
|
|
90
|
+
# pipenv
|
|
91
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
92
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
93
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
94
|
+
# install all needed dependencies.
|
|
95
|
+
#Pipfile.lock
|
|
96
|
+
|
|
97
|
+
# poetry
|
|
98
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
99
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
100
|
+
# commonly ignored for libraries.
|
|
101
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
102
|
+
#poetry.lock
|
|
103
|
+
|
|
104
|
+
# pdm
|
|
105
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
106
|
+
#pdm.lock
|
|
107
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
|
108
|
+
# in version control.
|
|
109
|
+
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
|
110
|
+
.pdm.toml
|
|
111
|
+
.pdm-python
|
|
112
|
+
.pdm-build/
|
|
113
|
+
|
|
114
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
115
|
+
__pypackages__/
|
|
116
|
+
|
|
117
|
+
# Celery stuff
|
|
118
|
+
celerybeat-schedule
|
|
119
|
+
celerybeat.pid
|
|
120
|
+
|
|
121
|
+
# SageMath parsed files
|
|
122
|
+
*.sage.py
|
|
123
|
+
|
|
124
|
+
# Environments
|
|
125
|
+
.env
|
|
126
|
+
.venv
|
|
127
|
+
env/
|
|
128
|
+
venv/
|
|
129
|
+
ENV/
|
|
130
|
+
env.bak/
|
|
131
|
+
venv.bak/
|
|
132
|
+
|
|
133
|
+
# Spyder project settings
|
|
134
|
+
.spyderproject
|
|
135
|
+
.spyproject
|
|
136
|
+
|
|
137
|
+
# Rope project settings
|
|
138
|
+
.ropeproject
|
|
139
|
+
|
|
140
|
+
# mkdocs documentation
|
|
141
|
+
/site
|
|
142
|
+
|
|
143
|
+
# mypy
|
|
144
|
+
.mypy_cache/
|
|
145
|
+
.dmypy.json
|
|
146
|
+
dmypy.json
|
|
147
|
+
|
|
148
|
+
# Pyre type checker
|
|
149
|
+
.pyre/
|
|
150
|
+
|
|
151
|
+
# pytype static type analyzer
|
|
152
|
+
.pytype/
|
|
153
|
+
|
|
154
|
+
# Cython debug symbols
|
|
155
|
+
cython_debug/
|
|
156
|
+
|
|
157
|
+
# PyCharm
|
|
158
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
159
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
160
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
161
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
162
|
+
#.idea/
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
DS_Store/
|
|
166
|
+
*.DS_Store
|
|
167
|
+
|
|
168
|
+
pip-log.txt
|
|
169
|
+
pip-delete-this-directory.txt
|
|
170
|
+
|
|
171
|
+
bin/
|
|
172
|
+
develop-eggs/
|
|
173
|
+
dist/
|
|
174
|
+
eggs/
|
|
175
|
+
lib/
|
|
176
|
+
lib64/
|
|
177
|
+
parts/
|
|
178
|
+
sdist/
|
|
179
|
+
var/
|
|
180
|
+
Drafts/
|
|
181
|
+
*/build/
|
|
182
|
+
build/
|
|
183
|
+
venv/
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
# Byte-compiled / optimized / DLL files
|
|
187
|
+
.pytest_cache/
|
|
188
|
+
__pycache__/
|
|
189
|
+
*.py[cod]
|
|
190
|
+
|
|
191
|
+
data/
|
|
192
|
+
*.csv
|
|
193
|
+
|
|
194
|
+
*/lightning_logs/
|
|
195
|
+
lightning_logs/
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Read the Docs configuration file
|
|
2
|
+
# https://docs.readthedocs.io/en/stable/config-file/v2.html
|
|
3
|
+
|
|
4
|
+
version: 2
|
|
5
|
+
|
|
6
|
+
build:
|
|
7
|
+
os: ubuntu-24.04
|
|
8
|
+
tools:
|
|
9
|
+
python: "3.12"
|
|
10
|
+
|
|
11
|
+
sphinx:
|
|
12
|
+
configuration: docs/conf.py
|
|
13
|
+
|
|
14
|
+
python:
|
|
15
|
+
install:
|
|
16
|
+
- method: pip
|
|
17
|
+
path: .
|
|
18
|
+
extra_requirements:
|
|
19
|
+
- docs
|
dddt_gfm-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
BSD 2-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024, CWRU SDLE
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
16
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
17
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
18
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
19
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
20
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
21
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
22
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
23
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
24
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
dddt_gfm-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ddDT-GFM
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Data-driven Foundation Models for fleet-level system performance prediction using spatiotemporal graph neural networks.
|
|
5
|
+
Author: Benjamin G. Pierce, Raymond J. Wieser, Weiqi Yue, Yangxin Fan, Hein Htet Aung, Thomas G. Ciardi, Yinghui Wu
|
|
6
|
+
Author-email: "Pawan K. Tripathi" <pawan.tripathi@case.edu>, "Roger H. French" <rxf131@case.edu>
|
|
7
|
+
License: BSD 2-Clause License
|
|
8
|
+
|
|
9
|
+
Copyright (c) 2024, CWRU SDLE
|
|
10
|
+
|
|
11
|
+
Redistribution and use in source and binary forms, with or without
|
|
12
|
+
modification, are permitted provided that the following conditions are met:
|
|
13
|
+
|
|
14
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
15
|
+
list of conditions and the following disclaimer.
|
|
16
|
+
|
|
17
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
18
|
+
this list of conditions and the following disclaimer in the documentation
|
|
19
|
+
and/or other materials provided with the distribution.
|
|
20
|
+
|
|
21
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
22
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
23
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
24
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
25
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
26
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
27
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
28
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
29
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
30
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
+
|
|
32
|
+
Project-URL: Homepage, https://github.com/cwru-sdle/ddDT-GFM
|
|
33
|
+
Project-URL: Repository, https://github.com/cwru-sdle/ddDT-GFM
|
|
34
|
+
Project-URL: Documentation, https://dddt-gfm.readthedocs.io
|
|
35
|
+
Classifier: Development Status :: 3 - Alpha
|
|
36
|
+
Classifier: Intended Audience :: Science/Research
|
|
37
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
38
|
+
Classifier: Operating System :: OS Independent
|
|
39
|
+
Classifier: Programming Language :: Python :: 3
|
|
40
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
41
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
42
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
43
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
44
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
45
|
+
Requires-Python: >=3.9
|
|
46
|
+
Description-Content-Type: text/markdown
|
|
47
|
+
License-File: LICENSE
|
|
48
|
+
Requires-Dist: numpy
|
|
49
|
+
Requires-Dist: pandas
|
|
50
|
+
Requires-Dist: scipy
|
|
51
|
+
Requires-Dist: scikit-learn
|
|
52
|
+
Requires-Dist: matplotlib
|
|
53
|
+
Requires-Dist: seaborn
|
|
54
|
+
Requires-Dist: tqdm
|
|
55
|
+
Requires-Dist: requests
|
|
56
|
+
Requires-Dist: torch
|
|
57
|
+
Requires-Dist: torchvision
|
|
58
|
+
Requires-Dist: pytorch_lightning
|
|
59
|
+
Provides-Extra: full
|
|
60
|
+
Requires-Dist: torch_geometric; extra == "full"
|
|
61
|
+
Requires-Dist: torch_sparse; extra == "full"
|
|
62
|
+
Requires-Dist: torch-spatiotemporal; extra == "full"
|
|
63
|
+
Provides-Extra: test
|
|
64
|
+
Requires-Dist: pytest; extra == "test"
|
|
65
|
+
Provides-Extra: docs
|
|
66
|
+
Requires-Dist: sphinx>=7; extra == "docs"
|
|
67
|
+
Requires-Dist: furo; extra == "docs"
|
|
68
|
+
Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
|
|
69
|
+
Dynamic: license-file
|
|
70
|
+
|
|
71
|
+
# ddDT-GFM
|
|
72
|
+
## Data-driven Digital Twins: Generalized Foundation Models for Fleet Level System Performance Prediction, Advanced Manufacturing Tool and Part Qualification, Conformance, and Lifetime
|
|
73
|
+
|
|
74
|
+
## Abstract
|
|
75
|
+
Digital twins are comprised of computational models that mimic the 'as built' characteristics of devices, systems, and networks of systems whose performance in the real world warrants quantitative and critical assessment.
|
|
76
|
+
The literature on constructing digital twins is historically focused around task-specific, physics-based models that seek to understand the device from first principles, thereby constructing an idealized understanding of the system.
|
|
77
|
+
However, these ``empirical digital twins" (eDT) can be quite difficult to construct, as the level of detail required to accurately model the complex physics of many devices is often missing or expensive to obtain, especially for systems with widespread deployment.
|
|
78
|
+
Additionally, eDTs generally assume the device is working as intended; in practice, many systems experience some form of derating or degradation that causes them to operate off-specification.
|
|
79
|
+
As it is often the goal of a digital twin model to quantify these departures from the idealized system, it is quite difficult to separate derated assumptions from the expected model output.
|
|
80
|
+
In contrast, data-driven digital twins (ddDT) seek to model the system as it actually is based on real observations about the device in question.
|
|
81
|
+
Additionally, ddDTs generally utilize a flexible model architecture (typically an artificial neural network) to avoid injecting implicit bias into the system.
|
|
82
|
+
This flexibility also lends itself to another advantage: modularity.
|
|
83
|
+
Digital twins are often utilized to answer multiple different questions about the system.
|
|
84
|
+
With a ddDT, it is possible to train the model in a self-supervised manner via a reconstruction objective in order to obtain an encoder module.
|
|
85
|
+
This module can then be used as a Foundation Model (FM) for different tasks without either constructing a entirely new task-specific eDT or training another ddDT from scratch.
|
|
86
|
+
This work presents a unified pipeline for constructing data-driven Foundation Models for three exemplifying cases: solar photovoltaic fleets, direct ink write additive manufacturing, and laser powder bed fusion.
|
|
87
|
+
Although these three systems are conceptually very different, the presented Foundation Model utilizes the flexibility of spatiotemporal graph neural networks (st-GNNs) to apply the same methodology to each case, allowing scientists to focus on their scientific objectives rather than troubleshooting a overwhelmingly detailed modeling pipeline.
|
|
88
|
+
|
|
89
|
+
## Downloading data
|
|
90
|
+
You can download the data used in this work from OSF with the `util` module of this package.
|
|
91
|
+
For example, to download a PV site:
|
|
92
|
+
```py
|
|
93
|
+
from dddt_gfm.util.io import OSF_download
|
|
94
|
+
OSF_download(0, 'downloaded_test.csv', './')
|
|
95
|
+
```
|
dddt_gfm-0.1.0/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# ddDT-GFM
|
|
2
|
+
## Data-driven Digital Twins: Generalized Foundation Models for Fleet Level System Performance Prediction, Advanced Manufacturing Tool and Part Qualification, Conformance, and Lifetime
|
|
3
|
+
|
|
4
|
+
## Abstract
|
|
5
|
+
Digital twins are comprised of computational models that mimic the 'as built' characteristics of devices, systems, and networks of systems whose performance in the real world warrants quantitative and critical assessment.
|
|
6
|
+
The literature on constructing digital twins is historically focused around task-specific, physics-based models that seek to understand the device from first principles, thereby constructing an idealized understanding of the system.
|
|
7
|
+
However, these ``empirical digital twins" (eDT) can be quite difficult to construct, as the level of detail required to accurately model the complex physics of many devices is often missing or expensive to obtain, especially for systems with widespread deployment.
|
|
8
|
+
Additionally, eDTs generally assume the device is working as intended; in practice, many systems experience some form of derating or degradation that causes them to operate off-specification.
|
|
9
|
+
As it is often the goal of a digital twin model to quantify these departures from the idealized system, it is quite difficult to separate derated assumptions from the expected model output.
|
|
10
|
+
In contrast, data-driven digital twins (ddDT) seek to model the system as it actually is based on real observations about the device in question.
|
|
11
|
+
Additionally, ddDTs generally utilize a flexible model architecture (typically an artificial neural network) to avoid injecting implicit bias into the system.
|
|
12
|
+
This flexibility also lends itself to another advantage: modularity.
|
|
13
|
+
Digital twins are often utilized to answer multiple different questions about the system.
|
|
14
|
+
With a ddDT, it is possible to train the model in a self-supervised manner via a reconstruction objective in order to obtain an encoder module.
|
|
15
|
+
This module can then be used as a Foundation Model (FM) for different tasks without either constructing a entirely new task-specific eDT or training another ddDT from scratch.
|
|
16
|
+
This work presents a unified pipeline for constructing data-driven Foundation Models for three exemplifying cases: solar photovoltaic fleets, direct ink write additive manufacturing, and laser powder bed fusion.
|
|
17
|
+
Although these three systems are conceptually very different, the presented Foundation Model utilizes the flexibility of spatiotemporal graph neural networks (st-GNNs) to apply the same methodology to each case, allowing scientists to focus on their scientific objectives rather than troubleshooting a overwhelmingly detailed modeling pipeline.
|
|
18
|
+
|
|
19
|
+
## Downloading data
|
|
20
|
+
You can download the data used in this work from OSF with the `util` module of this package.
|
|
21
|
+
For example, to download a PV site:
|
|
22
|
+
```py
|
|
23
|
+
from dddt_gfm.util.io import OSF_download
|
|
24
|
+
OSF_download(0, 'downloaded_test.csv', './')
|
|
25
|
+
```
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ddDT-GFM
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Data-driven Foundation Models for fleet-level system performance prediction using spatiotemporal graph neural networks.
|
|
5
|
+
Author: Benjamin G. Pierce, Raymond J. Wieser, Weiqi Yue, Yangxin Fan, Hein Htet Aung, Thomas G. Ciardi, Yinghui Wu
|
|
6
|
+
Author-email: "Pawan K. Tripathi" <pawan.tripathi@case.edu>, "Roger H. French" <rxf131@case.edu>
|
|
7
|
+
License: BSD 2-Clause License
|
|
8
|
+
|
|
9
|
+
Copyright (c) 2024, CWRU SDLE
|
|
10
|
+
|
|
11
|
+
Redistribution and use in source and binary forms, with or without
|
|
12
|
+
modification, are permitted provided that the following conditions are met:
|
|
13
|
+
|
|
14
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
15
|
+
list of conditions and the following disclaimer.
|
|
16
|
+
|
|
17
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
18
|
+
this list of conditions and the following disclaimer in the documentation
|
|
19
|
+
and/or other materials provided with the distribution.
|
|
20
|
+
|
|
21
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
22
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
23
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
24
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
25
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
26
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
27
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
28
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
29
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
30
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
+
|
|
32
|
+
Project-URL: Homepage, https://github.com/cwru-sdle/ddDT-GFM
|
|
33
|
+
Project-URL: Repository, https://github.com/cwru-sdle/ddDT-GFM
|
|
34
|
+
Project-URL: Documentation, https://dddt-gfm.readthedocs.io
|
|
35
|
+
Classifier: Development Status :: 3 - Alpha
|
|
36
|
+
Classifier: Intended Audience :: Science/Research
|
|
37
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
38
|
+
Classifier: Operating System :: OS Independent
|
|
39
|
+
Classifier: Programming Language :: Python :: 3
|
|
40
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
41
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
42
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
43
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
44
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
45
|
+
Requires-Python: >=3.9
|
|
46
|
+
Description-Content-Type: text/markdown
|
|
47
|
+
License-File: LICENSE
|
|
48
|
+
Requires-Dist: numpy
|
|
49
|
+
Requires-Dist: pandas
|
|
50
|
+
Requires-Dist: scipy
|
|
51
|
+
Requires-Dist: scikit-learn
|
|
52
|
+
Requires-Dist: matplotlib
|
|
53
|
+
Requires-Dist: seaborn
|
|
54
|
+
Requires-Dist: tqdm
|
|
55
|
+
Requires-Dist: requests
|
|
56
|
+
Requires-Dist: torch
|
|
57
|
+
Requires-Dist: torchvision
|
|
58
|
+
Requires-Dist: pytorch_lightning
|
|
59
|
+
Provides-Extra: full
|
|
60
|
+
Requires-Dist: torch_geometric; extra == "full"
|
|
61
|
+
Requires-Dist: torch_sparse; extra == "full"
|
|
62
|
+
Requires-Dist: torch-spatiotemporal; extra == "full"
|
|
63
|
+
Provides-Extra: test
|
|
64
|
+
Requires-Dist: pytest; extra == "test"
|
|
65
|
+
Provides-Extra: docs
|
|
66
|
+
Requires-Dist: sphinx>=7; extra == "docs"
|
|
67
|
+
Requires-Dist: furo; extra == "docs"
|
|
68
|
+
Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
|
|
69
|
+
Dynamic: license-file
|
|
70
|
+
|
|
71
|
+
# ddDT-GFM
|
|
72
|
+
## Data-driven Digital Twins: Generalized Foundation Models for Fleet Level System Performance Prediction, Advanced Manufacturing Tool and Part Qualification, Conformance, and Lifetime
|
|
73
|
+
|
|
74
|
+
## Abstract
|
|
75
|
+
Digital twins are comprised of computational models that mimic the 'as built' characteristics of devices, systems, and networks of systems whose performance in the real world warrants quantitative and critical assessment.
|
|
76
|
+
The literature on constructing digital twins is historically focused around task-specific, physics-based models that seek to understand the device from first principles, thereby constructing an idealized understanding of the system.
|
|
77
|
+
However, these ``empirical digital twins" (eDT) can be quite difficult to construct, as the level of detail required to accurately model the complex physics of many devices is often missing or expensive to obtain, especially for systems with widespread deployment.
|
|
78
|
+
Additionally, eDTs generally assume the device is working as intended; in practice, many systems experience some form of derating or degradation that causes them to operate off-specification.
|
|
79
|
+
As it is often the goal of a digital twin model to quantify these departures from the idealized system, it is quite difficult to separate derated assumptions from the expected model output.
|
|
80
|
+
In contrast, data-driven digital twins (ddDT) seek to model the system as it actually is based on real observations about the device in question.
|
|
81
|
+
Additionally, ddDTs generally utilize a flexible model architecture (typically an artificial neural network) to avoid injecting implicit bias into the system.
|
|
82
|
+
This flexibility also lends itself to another advantage: modularity.
|
|
83
|
+
Digital twins are often utilized to answer multiple different questions about the system.
|
|
84
|
+
With a ddDT, it is possible to train the model in a self-supervised manner via a reconstruction objective in order to obtain an encoder module.
|
|
85
|
+
This module can then be used as a Foundation Model (FM) for different tasks without either constructing a entirely new task-specific eDT or training another ddDT from scratch.
|
|
86
|
+
This work presents a unified pipeline for constructing data-driven Foundation Models for three exemplifying cases: solar photovoltaic fleets, direct ink write additive manufacturing, and laser powder bed fusion.
|
|
87
|
+
Although these three systems are conceptually very different, the presented Foundation Model utilizes the flexibility of spatiotemporal graph neural networks (st-GNNs) to apply the same methodology to each case, allowing scientists to focus on their scientific objectives rather than troubleshooting a overwhelmingly detailed modeling pipeline.
|
|
88
|
+
|
|
89
|
+
## Downloading data
|
|
90
|
+
You can download the data used in this work from OSF with the `util` module of this package.
|
|
91
|
+
For example, to download a PV site:
|
|
92
|
+
```py
|
|
93
|
+
from dddt_gfm.util.io import OSF_download
|
|
94
|
+
OSF_download(0, 'downloaded_test.csv', './')
|
|
95
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
.gitignore
|
|
2
|
+
.readthedocs.yaml
|
|
3
|
+
LICENSE
|
|
4
|
+
README.md
|
|
5
|
+
pyproject.toml
|
|
6
|
+
.github/workflows/publish.yml
|
|
7
|
+
.github/workflows/test.yml
|
|
8
|
+
ddDT_GFM.egg-info/PKG-INFO
|
|
9
|
+
ddDT_GFM.egg-info/SOURCES.txt
|
|
10
|
+
ddDT_GFM.egg-info/dependency_links.txt
|
|
11
|
+
ddDT_GFM.egg-info/requires.txt
|
|
12
|
+
ddDT_GFM.egg-info/scm_file_list.json
|
|
13
|
+
ddDT_GFM.egg-info/scm_version.json
|
|
14
|
+
ddDT_GFM.egg-info/top_level.txt
|
|
15
|
+
dddt_gfm/__init__.py
|
|
16
|
+
dddt_gfm/rwb-graph_UNET.py
|
|
17
|
+
dddt_gfm/data_cleaning/__init__.py
|
|
18
|
+
dddt_gfm/data_cleaning/physics_constraint.py
|
|
19
|
+
dddt_gfm/dataloaders/__init__.py
|
|
20
|
+
dddt_gfm/dataloaders/dataloader_DIW.py
|
|
21
|
+
dddt_gfm/dataloaders/dataloader_sunsmart.py
|
|
22
|
+
dddt_gfm/dataloaders/rwb_dataloader_sunsmart.py
|
|
23
|
+
dddt_gfm/exemplar_DIW/__init__.py
|
|
24
|
+
dddt_gfm/exemplar_DIW/training/__init__.py
|
|
25
|
+
dddt_gfm/exemplar_DIW/training/train.py
|
|
26
|
+
dddt_gfm/exemplar_LPBF/__init__.py
|
|
27
|
+
dddt_gfm/exemplar_LPBF/training/__init__.py
|
|
28
|
+
dddt_gfm/exemplar_LPBF/training/train.py
|
|
29
|
+
dddt_gfm/exemplar_PV/__init__.py
|
|
30
|
+
dddt_gfm/exemplar_PV/training/__init__.py
|
|
31
|
+
dddt_gfm/exemplar_PV/training/train.py
|
|
32
|
+
dddt_gfm/models/__init__.py
|
|
33
|
+
dddt_gfm/models/stGAE.py
|
|
34
|
+
dddt_gfm/tests/__init__.py
|
|
35
|
+
dddt_gfm/tests/test_util.py
|
|
36
|
+
dddt_gfm/util/__init__.py
|
|
37
|
+
dddt_gfm/util/callbacks.py
|
|
38
|
+
dddt_gfm/util/io.py
|
|
39
|
+
docs/Makefile
|
|
40
|
+
docs/api.rst
|
|
41
|
+
docs/conf.py
|
|
42
|
+
docs/index.rst
|
|
43
|
+
docs/installation.rst
|
|
44
|
+
docs/make.bat
|
|
45
|
+
docs/_static/.gitkeep
|
|
46
|
+
notebooks/DIW_demo.ipynb
|
|
47
|
+
notebooks/LPBF_demo.ipynb
|
|
48
|
+
notebooks/PV_demo.ipynb
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
numpy
|
|
2
|
+
pandas
|
|
3
|
+
scipy
|
|
4
|
+
scikit-learn
|
|
5
|
+
matplotlib
|
|
6
|
+
seaborn
|
|
7
|
+
tqdm
|
|
8
|
+
requests
|
|
9
|
+
torch
|
|
10
|
+
torchvision
|
|
11
|
+
pytorch_lightning
|
|
12
|
+
|
|
13
|
+
[docs]
|
|
14
|
+
sphinx>=7
|
|
15
|
+
furo
|
|
16
|
+
sphinx-autodoc-typehints
|
|
17
|
+
|
|
18
|
+
[full]
|
|
19
|
+
torch_geometric
|
|
20
|
+
torch_sparse
|
|
21
|
+
torch-spatiotemporal
|
|
22
|
+
|
|
23
|
+
[test]
|
|
24
|
+
pytest
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"files": [
|
|
3
|
+
"README.md",
|
|
4
|
+
"LICENSE",
|
|
5
|
+
"pyproject.toml",
|
|
6
|
+
".gitignore",
|
|
7
|
+
".readthedocs.yaml",
|
|
8
|
+
"docs/Makefile",
|
|
9
|
+
"docs/index.rst",
|
|
10
|
+
"docs/api.rst",
|
|
11
|
+
"docs/make.bat",
|
|
12
|
+
"docs/installation.rst",
|
|
13
|
+
"docs/conf.py",
|
|
14
|
+
"docs/_static/.gitkeep",
|
|
15
|
+
"dddt_gfm/__init__.py",
|
|
16
|
+
"dddt_gfm/rwb-graph_UNET.py",
|
|
17
|
+
"dddt_gfm/models/__init__.py",
|
|
18
|
+
"dddt_gfm/models/stGAE.py",
|
|
19
|
+
"dddt_gfm/data_cleaning/__init__.py",
|
|
20
|
+
"dddt_gfm/data_cleaning/physics_constraint.py",
|
|
21
|
+
"dddt_gfm/exemplar_LPBF/__init__.py",
|
|
22
|
+
"dddt_gfm/exemplar_LPBF/training/__init__.py",
|
|
23
|
+
"dddt_gfm/exemplar_LPBF/training/train.py",
|
|
24
|
+
"dddt_gfm/util/__init__.py",
|
|
25
|
+
"dddt_gfm/util/io.py",
|
|
26
|
+
"dddt_gfm/util/callbacks.py",
|
|
27
|
+
"dddt_gfm/exemplar_DIW/__init__.py",
|
|
28
|
+
"dddt_gfm/exemplar_DIW/training/__init__.py",
|
|
29
|
+
"dddt_gfm/exemplar_DIW/training/train.py",
|
|
30
|
+
"dddt_gfm/dataloaders/__init__.py",
|
|
31
|
+
"dddt_gfm/dataloaders/rwb_dataloader_sunsmart.py",
|
|
32
|
+
"dddt_gfm/dataloaders/dataloader_sunsmart.py",
|
|
33
|
+
"dddt_gfm/dataloaders/dataloader_DIW.py",
|
|
34
|
+
"dddt_gfm/exemplar_PV/__init__.py",
|
|
35
|
+
"dddt_gfm/exemplar_PV/training/__init__.py",
|
|
36
|
+
"dddt_gfm/exemplar_PV/training/train.py",
|
|
37
|
+
"dddt_gfm/tests/__init__.py",
|
|
38
|
+
"dddt_gfm/tests/test_util.py",
|
|
39
|
+
"notebooks/DIW_demo.ipynb",
|
|
40
|
+
"notebooks/LPBF_demo.ipynb",
|
|
41
|
+
"notebooks/PV_demo.ipynb",
|
|
42
|
+
".github/workflows/test.yml",
|
|
43
|
+
".github/workflows/publish.yml"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dddt_gfm
|