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.
@@ -0,0 +1,6 @@
1
+ # Normalize line endings to LF on commit
2
+ * text=auto
3
+
4
+ *.nda binary
5
+ *.ndax binary
6
+ *.zip binary
@@ -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
@@ -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,7 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.12.4
4
+ hooks:
5
+ - id: ruff-check
6
+ args: ["--fix", "--select=F,E9,B"]
7
+ - id: ruff-format
@@ -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
+
@@ -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.
@@ -0,0 +1,12 @@
1
+ """Public API."""
2
+
3
+ from fastnda.btsda import btsda_csv_to_parquet
4
+ from fastnda.main import read, read_metadata
5
+ from fastnda.version import __version__
6
+
7
+ __all__ = [
8
+ "__version__",
9
+ "btsda_csv_to_parquet",
10
+ "read",
11
+ "read_metadata",
12
+ ]