fastnda 0.2.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.
- fastnda-0.2.0/.gitattributes +6 -0
- fastnda-0.2.0/.github/workflows/test.yml +75 -0
- fastnda-0.2.0/.gitignore +210 -0
- fastnda-0.2.0/.pre-commit-config.yaml +7 -0
- fastnda-0.2.0/CHANGELOG.md +268 -0
- fastnda-0.2.0/LICENSE +11 -0
- fastnda-0.2.0/PKG-INFO +67 -0
- fastnda-0.2.0/README.md +47 -0
- fastnda-0.2.0/fastnda/__init__.py +12 -0
- fastnda-0.2.0/fastnda/btsda.py +92 -0
- fastnda-0.2.0/fastnda/dicts.py +100 -0
- fastnda-0.2.0/fastnda/main.py +79 -0
- fastnda-0.2.0/fastnda/nda.py +421 -0
- fastnda-0.2.0/fastnda/ndax.py +728 -0
- fastnda-0.2.0/fastnda/utils.py +67 -0
- fastnda-0.2.0/fastnda/version.py +3 -0
- fastnda-0.2.0/pyproject.toml +65 -0
- fastnda-0.2.0/tests/__init__.py +0 -0
- fastnda-0.2.0/tests/conftest.py +64 -0
- fastnda-0.2.0/tests/test_btsda.py +32 -0
- fastnda-0.2.0/tests/test_data/SIM.nda.zip +0 -0
- fastnda-0.2.0/tests/test_data/SIM.parquet +0 -0
- fastnda-0.2.0/tests/test_data/Unit27_Example_Data_File.ndax +0 -0
- fastnda-0.2.0/tests/test_data/Unit27_Example_Data_File.parquet +0 -0
- fastnda-0.2.0/tests/test_data/interp-test.csv +334 -0
- fastnda-0.2.0/tests/test_data/interp-test.ndax +0 -0
- fastnda-0.2.0/tests/test_data/interp-test.parquet +0 -0
- fastnda-0.2.0/tests/test_data/new_nda_file.nda.zip +0 -0
- fastnda-0.2.0/tests/test_data/new_nda_file.parquet +0 -0
- fastnda-0.2.0/tests/test_data/nw4-120-1-6-53.ndax +0 -0
- fastnda-0.2.0/tests/test_data/nw4-120-1-6-53.parquet +0 -0
- fastnda-0.2.0/tests/test_read.py +186 -0
- fastnda-0.2.0/tests/test_utils.py +83 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ "main" ]
|
|
6
|
+
tags:
|
|
7
|
+
- v[0-9]+.[0-9]+.[0-9]+*
|
|
8
|
+
pull_request:
|
|
9
|
+
branches: [ "main" ]
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
test:
|
|
16
|
+
name: Test with Pytest
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
strategy:
|
|
19
|
+
matrix:
|
|
20
|
+
python-version:
|
|
21
|
+
- "3.10"
|
|
22
|
+
- "3.13"
|
|
23
|
+
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
- name: Install uv and set the python version
|
|
27
|
+
uses: astral-sh/setup-uv@v5
|
|
28
|
+
with:
|
|
29
|
+
enable-cache: true
|
|
30
|
+
python-version: ${{ matrix.python-version }}
|
|
31
|
+
|
|
32
|
+
- name: Install
|
|
33
|
+
run: |
|
|
34
|
+
uv pip install ruff pytest pytest-cov
|
|
35
|
+
uv pip install -e .
|
|
36
|
+
- name: Lint with ruff
|
|
37
|
+
run: |
|
|
38
|
+
ruff check --select=F,E9,B
|
|
39
|
+
|
|
40
|
+
- name: Test with pytest
|
|
41
|
+
run: |
|
|
42
|
+
pytest --cov=fastnda --cov-report=term
|
|
43
|
+
|
|
44
|
+
# Publish to PyPI if tagged and tests pass
|
|
45
|
+
publish:
|
|
46
|
+
name: Publish to PyPI
|
|
47
|
+
needs: test
|
|
48
|
+
if: startsWith(github.ref, 'refs/tags/v') && github.repository == 'g-kimbell/fastnda'
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
permissions:
|
|
51
|
+
id-token: write
|
|
52
|
+
contents: write
|
|
53
|
+
|
|
54
|
+
steps:
|
|
55
|
+
- name: Checkout code
|
|
56
|
+
uses: actions/checkout@v4
|
|
57
|
+
|
|
58
|
+
- name: Set up Python
|
|
59
|
+
uses: actions/setup-python@v5
|
|
60
|
+
with:
|
|
61
|
+
python-version: '3.12'
|
|
62
|
+
|
|
63
|
+
- name: Install flit
|
|
64
|
+
run: pip install flit~=3.12
|
|
65
|
+
|
|
66
|
+
- name: Publish to PyPI
|
|
67
|
+
run: flit publish
|
|
68
|
+
env:
|
|
69
|
+
FLIT_USERNAME: __token__
|
|
70
|
+
FLIT_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
71
|
+
|
|
72
|
+
- name: Create GitHub release
|
|
73
|
+
uses: softprops/action-gh-release@v2
|
|
74
|
+
with:
|
|
75
|
+
generate_release_notes: true
|
fastnda-0.2.0/.gitignore
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[codz]
|
|
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
|
+
# UV
|
|
98
|
+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
|
99
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
100
|
+
# commonly ignored for libraries.
|
|
101
|
+
#uv.lock
|
|
102
|
+
|
|
103
|
+
# poetry
|
|
104
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
105
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
106
|
+
# commonly ignored for libraries.
|
|
107
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
108
|
+
#poetry.lock
|
|
109
|
+
#poetry.toml
|
|
110
|
+
|
|
111
|
+
# pdm
|
|
112
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
113
|
+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
|
|
114
|
+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
|
|
115
|
+
#pdm.lock
|
|
116
|
+
#pdm.toml
|
|
117
|
+
.pdm-python
|
|
118
|
+
.pdm-build/
|
|
119
|
+
|
|
120
|
+
# pixi
|
|
121
|
+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
|
|
122
|
+
#pixi.lock
|
|
123
|
+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
|
|
124
|
+
# in the .venv directory. It is recommended not to include this directory in version control.
|
|
125
|
+
.pixi
|
|
126
|
+
|
|
127
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
128
|
+
__pypackages__/
|
|
129
|
+
|
|
130
|
+
# Celery stuff
|
|
131
|
+
celerybeat-schedule
|
|
132
|
+
celerybeat.pid
|
|
133
|
+
|
|
134
|
+
# SageMath parsed files
|
|
135
|
+
*.sage.py
|
|
136
|
+
|
|
137
|
+
# Environments
|
|
138
|
+
.env
|
|
139
|
+
.envrc
|
|
140
|
+
.venv
|
|
141
|
+
env/
|
|
142
|
+
venv/
|
|
143
|
+
ENV/
|
|
144
|
+
env.bak/
|
|
145
|
+
venv.bak/
|
|
146
|
+
|
|
147
|
+
# Spyder project settings
|
|
148
|
+
.spyderproject
|
|
149
|
+
.spyproject
|
|
150
|
+
|
|
151
|
+
# Rope project settings
|
|
152
|
+
.ropeproject
|
|
153
|
+
|
|
154
|
+
# mkdocs documentation
|
|
155
|
+
/site
|
|
156
|
+
|
|
157
|
+
# mypy
|
|
158
|
+
.mypy_cache/
|
|
159
|
+
.dmypy.json
|
|
160
|
+
dmypy.json
|
|
161
|
+
|
|
162
|
+
# Pyre type checker
|
|
163
|
+
.pyre/
|
|
164
|
+
|
|
165
|
+
# pytype static type analyzer
|
|
166
|
+
.pytype/
|
|
167
|
+
|
|
168
|
+
# Cython debug symbols
|
|
169
|
+
cython_debug/
|
|
170
|
+
|
|
171
|
+
# PyCharm
|
|
172
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
173
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
174
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
175
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
176
|
+
#.idea/
|
|
177
|
+
|
|
178
|
+
# Abstra
|
|
179
|
+
# Abstra is an AI-powered process automation framework.
|
|
180
|
+
# Ignore directories containing user credentials, local state, and settings.
|
|
181
|
+
# Learn more at https://abstra.io/docs
|
|
182
|
+
.abstra/
|
|
183
|
+
|
|
184
|
+
# Visual Studio Code
|
|
185
|
+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
|
186
|
+
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
|
187
|
+
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
|
188
|
+
# you could uncomment the following to ignore the entire vscode folder
|
|
189
|
+
.vscode/
|
|
190
|
+
|
|
191
|
+
# Ruff stuff:
|
|
192
|
+
.ruff_cache/
|
|
193
|
+
|
|
194
|
+
# PyPI configuration file
|
|
195
|
+
.pypirc
|
|
196
|
+
|
|
197
|
+
# Cursor
|
|
198
|
+
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
|
|
199
|
+
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
|
|
200
|
+
# refer to https://docs.cursor.com/context/ignore-files
|
|
201
|
+
.cursorignore
|
|
202
|
+
.cursorindexingignore
|
|
203
|
+
|
|
204
|
+
# Marimo
|
|
205
|
+
marimo/_static/
|
|
206
|
+
marimo/_lsp/
|
|
207
|
+
__marimo__/
|
|
208
|
+
|
|
209
|
+
# Streamlit
|
|
210
|
+
.streamlit/secrets.toml
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
All notable changes to this project will be documented in this file.
|
|
3
|
+
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## [v2025.06.02]
|
|
9
|
+
### Fixed
|
|
10
|
+
- Higher-precision Timestamp interpolation.
|
|
11
|
+
- Compatibility with PEP 639.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [v2025.05.15]
|
|
15
|
+
### Added
|
|
16
|
+
- Support for ndc file version 17
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## [v2025.04.02]
|
|
20
|
+
### Added
|
|
21
|
+
- Support for current range -40000
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
- Project moved to https://github.com/d-cogswell/NewareNDA
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## [v2025.02.13]
|
|
28
|
+
### Added
|
|
29
|
+
- Millisecond timestamp accuracy for ndc 11 and 14
|
|
30
|
+
- Support for OCV step type
|
|
31
|
+
- Additional current range
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
- Timestamp interpolation bug that occasionally resulted in negative dt
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
## [v2025.01.02]
|
|
38
|
+
### Added
|
|
39
|
+
- Additional current range settings
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
- Addressed a PerformanceWarning related to the Timestamp field
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
## [v2024.12.02]
|
|
46
|
+
### Added
|
|
47
|
+
- Support for ndax aux temperature (ndc version 14, filetype 5)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## [v2024.10.01]
|
|
51
|
+
### Added
|
|
52
|
+
- Added regression tests for NewareNDAcli
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
- Changed the NewareNDAcli flag from --software_cycle_number to --no_software_cycle_number
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## [v2024.09.03]
|
|
59
|
+
### Added
|
|
60
|
+
- dtype specifications for auxiliary data.
|
|
61
|
+
- Addtional current range multipliers.
|
|
62
|
+
- Regression tests for software_cycle_number and cycle_mode keywords.
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
- Millisecond timing now read from BTS 9.1 files.
|
|
66
|
+
|
|
67
|
+
### Changed
|
|
68
|
+
- Refactored NewareNDAx.py to explicitly treat ndc files based on version and filetype.
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
## [v2024.08.01]
|
|
72
|
+
### Added
|
|
73
|
+
- Read aux temperature data from BTS 9.1 files.
|
|
74
|
+
|
|
75
|
+
### Fixed
|
|
76
|
+
- Bug fixes for BTS 9.1.
|
|
77
|
+
|
|
78
|
+
### Changed
|
|
79
|
+
- setup.py converted to pyproject.toml
|
|
80
|
+
- Reworked logging functionality with new log_level keyword.
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
## [v2024.07.01]
|
|
84
|
+
### Added
|
|
85
|
+
- Initial support for BTS 9.1 files.
|
|
86
|
+
- Additional auxiliary fields read for ndc version 11.
|
|
87
|
+
|
|
88
|
+
### Fixed
|
|
89
|
+
- Incorrect range multiplier
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
## [v2024.06.03]
|
|
93
|
+
### Added
|
|
94
|
+
- Active mass and comments are read and returned as a logging messages.
|
|
95
|
+
- More regression tests.
|
|
96
|
+
- Additional hardware ranges.
|
|
97
|
+
- Aux voltage is now read from nda files.
|
|
98
|
+
|
|
99
|
+
### Fixed
|
|
100
|
+
- Correct voltage, current, capacity scalings for ndax files with ndc version 14 data.
|
|
101
|
+
- Handling of timestamps now matches Neware. Dates are read as UTC and then converted to local time zone.
|
|
102
|
+
|
|
103
|
+
### Changed
|
|
104
|
+
- Warning now use logging.warning() instead of warnings.warn().
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
## [v2024.05.01]
|
|
108
|
+
### Added
|
|
109
|
+
- Unsupported nda versions now raise exceptions.
|
|
110
|
+
|
|
111
|
+
### Fixed
|
|
112
|
+
- More robust support for nda version 130
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
## [v2024.04.01]
|
|
116
|
+
### Added
|
|
117
|
+
- Github workflow with regression testing and code coverage.
|
|
118
|
+
- Hardware range settings.
|
|
119
|
+
|
|
120
|
+
### Fixed
|
|
121
|
+
- Issue #50 related to missing Aux data.
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
## [v2024.03.01]
|
|
125
|
+
### Added
|
|
126
|
+
- Additional range setting added.
|
|
127
|
+
|
|
128
|
+
### Fixed
|
|
129
|
+
- Resolved FutureWarnings for pandas 3.0
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
## [v2024.02.01]
|
|
133
|
+
### Added
|
|
134
|
+
- Expanded ndax aux channel support (ndc version 11).
|
|
135
|
+
- 'extras_require' added to setup.py for testing.
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
## [v2024.01.02]
|
|
139
|
+
### Added
|
|
140
|
+
- Support for nda files from BTS9.
|
|
141
|
+
- New 'cycle_mode' keyword argument to specify how cycle number should be generated.
|
|
142
|
+
- Additional current ranges.
|
|
143
|
+
|
|
144
|
+
### Fixed
|
|
145
|
+
- Bug fixes for ndax support.
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
## [v2023.12.01]
|
|
149
|
+
### Added
|
|
150
|
+
- Support for ndax from BTS Server 8.
|
|
151
|
+
- Additional ndax verison information now returned as logging.
|
|
152
|
+
|
|
153
|
+
### Changed
|
|
154
|
+
- 'software_cycle_number=True' is now the default for ndax.
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
## [v2023.11.01]
|
|
158
|
+
### Added
|
|
159
|
+
- Ability to read auxiliary data from ndax files.
|
|
160
|
+
- pytest regression tests for code development.
|
|
161
|
+
|
|
162
|
+
### Fixed
|
|
163
|
+
- Support for constant power charge and discharge.
|
|
164
|
+
- Additional current ranges.
|
|
165
|
+
|
|
166
|
+
### Changed
|
|
167
|
+
- 'software_cycle_number=True' is one again the default behavior for nda.
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
## [v2023.10.02]
|
|
171
|
+
### Added
|
|
172
|
+
- Support for constant power charge and discharge.
|
|
173
|
+
- Additional current ranges.
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
## [v2023.07.03]
|
|
177
|
+
### Added
|
|
178
|
+
- Support for reading ndax.
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
## [v2023.06.01]
|
|
182
|
+
### Added
|
|
183
|
+
- Missing current range.
|
|
184
|
+
- Performance improvements
|
|
185
|
+
|
|
186
|
+
### Changed
|
|
187
|
+
- The cycle number is now read directly from the nda file for compatibility with the newest version of BTSDA. Previous numbering can be restored with the new 'software_cycle_number' flag.
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
## [v2023.05.01]
|
|
191
|
+
### Fixed
|
|
192
|
+
- Issue #20, files failing to load.
|
|
193
|
+
- Updates to README.
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
## [v2023.04.14]
|
|
197
|
+
### Added
|
|
198
|
+
- Significant performance improvement.
|
|
199
|
+
- PEP8 code formatting consistency.
|
|
200
|
+
|
|
201
|
+
### Fixed
|
|
202
|
+
- Issue #22 that occasionally resulted in incorrect temperature values.
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
## [v2023.02.01]
|
|
206
|
+
### Added
|
|
207
|
+
- Support for additional current ranges and states
|
|
208
|
+
|
|
209
|
+
### Fixed
|
|
210
|
+
- Maintenance updates and code cleanup
|
|
211
|
+
|
|
212
|
+
### Changed
|
|
213
|
+
- Conditions used for locating first data record
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
## [v2022.10.03]
|
|
217
|
+
### Added
|
|
218
|
+
- Additional current ranges
|
|
219
|
+
|
|
220
|
+
### Fixed
|
|
221
|
+
- Improved performance and reduced memory usage.
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
## [v2022.09.06]
|
|
225
|
+
### Added
|
|
226
|
+
- Commandline nda file conversion tool
|
|
227
|
+
- Performance improvements
|
|
228
|
+
|
|
229
|
+
### Fixed
|
|
230
|
+
- Added missing status and current ranges
|
|
231
|
+
|
|
232
|
+
### Changed
|
|
233
|
+
- 'Jump' field removed
|
|
234
|
+
- Default index is used for the DataFrame and set_index() is no longer called
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
## [v2022.08.01]
|
|
238
|
+
### Added
|
|
239
|
+
- Performance improvements
|
|
240
|
+
|
|
241
|
+
### Fixed
|
|
242
|
+
- Added missing status and current range
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
## [v2022.07.01]
|
|
246
|
+
### Added
|
|
247
|
+
- Ability to read temperature fields
|
|
248
|
+
|
|
249
|
+
### Fixed
|
|
250
|
+
- Step field now matches Neware output
|
|
251
|
+
- Correct handling of 'SIM' steps
|
|
252
|
+
|
|
253
|
+
### Changed
|
|
254
|
+
- Charge/discharge capacity/energy are now separate fields
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
## [2022.06.01]
|
|
258
|
+
### Added
|
|
259
|
+
- More robust error handling
|
|
260
|
+
- Additional hardware ranges implemented
|
|
261
|
+
|
|
262
|
+
### Fixed
|
|
263
|
+
- Cycle and Step now match Neware
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
## [v0.1.0] - 2022-05-10
|
|
267
|
+
### Added
|
|
268
|
+
- Initial release tested on nda versions 7.6 and 8.0.
|
fastnda-0.2.0/LICENSE
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Copyright (c) 2022-2024 SES AI Corporation, All rights reserved.
|
|
2
|
+
|
|
3
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
4
|
+
|
|
5
|
+
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
6
|
+
|
|
7
|
+
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
8
|
+
|
|
9
|
+
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
|
10
|
+
|
|
11
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
fastnda-0.2.0/PKG-INFO
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: fastnda
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Read Neware nda and ndax files fast.
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
License-Expression: BSD-3-Clause
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Requires-Dist: defusedxml>=0.7.1
|
|
11
|
+
Requires-Dist: numpy>=2.2.6
|
|
12
|
+
Requires-Dist: pandas>=2.3.1
|
|
13
|
+
Requires-Dist: polars>=1.32.2
|
|
14
|
+
Requires-Dist: bumpver>=2025.1131 ; extra == "dev"
|
|
15
|
+
Requires-Dist: pre-commit>=4.2.0 ; extra == "dev"
|
|
16
|
+
Requires-Dist: pytest>=8.4.1 ; extra == "dev"
|
|
17
|
+
Requires-Dist: ruff>=0.12.8 ; extra == "dev"
|
|
18
|
+
Provides-Extra: dev
|
|
19
|
+
|
|
20
|
+
# FastNDA
|
|
21
|
+
|
|
22
|
+
Python tool to parse Neware .nda and .ndax binary files.
|
|
23
|
+
|
|
24
|
+
This project is a fork of [d-cogswell/NewareNDA](https://github.com/d-cogswell/NewareNDA), which has taken over development from [original NewareNDA project](https://github.com/Solid-Energy-Systems/NewareNDA).
|
|
25
|
+
|
|
26
|
+
This is an experimental fork refactored with a focus on speed, for those of us with enormous quantities of battery cycling data. The data parsing takes advantage of `polars` and uses vectorization where possible to give a ~10x speed improvement.
|
|
27
|
+
|
|
28
|
+
## Should I use this or NewareNDA?
|
|
29
|
+
|
|
30
|
+
This is an experimental fork that has had less testing. NewareNDA is more mature and stable, and is still being actively maintained.
|
|
31
|
+
|
|
32
|
+
If you are interested in parsing your data as fast as possible and are willing to help stress test this package, use FastNDA. If you need stability, stick with NewareNDA.
|
|
33
|
+
|
|
34
|
+
This package does not currently have a CLI, if you need this, use NewareNDA.
|
|
35
|
+
|
|
36
|
+
## Installation
|
|
37
|
+
|
|
38
|
+
The package requires Python >3.10. Install from PyPI:
|
|
39
|
+
```
|
|
40
|
+
pip install fastnda
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Usage
|
|
44
|
+
|
|
45
|
+
Import and use `read` for both .nda and .ndax
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
import fastnda
|
|
49
|
+
|
|
50
|
+
df = fastnda.read("my/neware/file.ndax")
|
|
51
|
+
```
|
|
52
|
+
This returns a polars dataframe. If you would prefer to use pandas, you can do a zero-copy convert with:
|
|
53
|
+
```python
|
|
54
|
+
df = df.to_pandas()
|
|
55
|
+
```
|
|
56
|
+
You will need pandas and pyarrow installed for this.
|
|
57
|
+
|
|
58
|
+
## Contributions
|
|
59
|
+
|
|
60
|
+
Contributions are very welcome.
|
|
61
|
+
|
|
62
|
+
If you have problems reading data, please raise an issue on this GitHub page.
|
|
63
|
+
|
|
64
|
+
We are always in need of test data sets, as there are many different .nda and .ndax file types, and we can only generate some with the equipment we have.
|
|
65
|
+
|
|
66
|
+
Ideally, test data is small. We need the .nda/.ndax and a .csv exported from BTSDA - see the instructions in the [`btsda.py`](fastnda/btsda.py) file.
|
|
67
|
+
|
fastnda-0.2.0/README.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# FastNDA
|
|
2
|
+
|
|
3
|
+
Python tool to parse Neware .nda and .ndax binary files.
|
|
4
|
+
|
|
5
|
+
This project is a fork of [d-cogswell/NewareNDA](https://github.com/d-cogswell/NewareNDA), which has taken over development from [original NewareNDA project](https://github.com/Solid-Energy-Systems/NewareNDA).
|
|
6
|
+
|
|
7
|
+
This is an experimental fork refactored with a focus on speed, for those of us with enormous quantities of battery cycling data. The data parsing takes advantage of `polars` and uses vectorization where possible to give a ~10x speed improvement.
|
|
8
|
+
|
|
9
|
+
## Should I use this or NewareNDA?
|
|
10
|
+
|
|
11
|
+
This is an experimental fork that has had less testing. NewareNDA is more mature and stable, and is still being actively maintained.
|
|
12
|
+
|
|
13
|
+
If you are interested in parsing your data as fast as possible and are willing to help stress test this package, use FastNDA. If you need stability, stick with NewareNDA.
|
|
14
|
+
|
|
15
|
+
This package does not currently have a CLI, if you need this, use NewareNDA.
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
The package requires Python >3.10. Install from PyPI:
|
|
20
|
+
```
|
|
21
|
+
pip install fastnda
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
Import and use `read` for both .nda and .ndax
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
import fastnda
|
|
30
|
+
|
|
31
|
+
df = fastnda.read("my/neware/file.ndax")
|
|
32
|
+
```
|
|
33
|
+
This returns a polars dataframe. If you would prefer to use pandas, you can do a zero-copy convert with:
|
|
34
|
+
```python
|
|
35
|
+
df = df.to_pandas()
|
|
36
|
+
```
|
|
37
|
+
You will need pandas and pyarrow installed for this.
|
|
38
|
+
|
|
39
|
+
## Contributions
|
|
40
|
+
|
|
41
|
+
Contributions are very welcome.
|
|
42
|
+
|
|
43
|
+
If you have problems reading data, please raise an issue on this GitHub page.
|
|
44
|
+
|
|
45
|
+
We are always in need of test data sets, as there are many different .nda and .ndax file types, and we can only generate some with the equipment we have.
|
|
46
|
+
|
|
47
|
+
Ideally, test data is small. We need the .nda/.ndax and a .csv exported from BTSDA - see the instructions in the [`btsda.py`](fastnda/btsda.py) file.
|