nomad-ml-workflows
A NOMAD plugin for supporting machine-learning workflows. It currently provides the Export Entries action, which turns a permission-scoped NOMAD search into a reusable JSON, Parquet, or CSV dataset.
📦 Installation
Install the package with pip:
pip install nomad-ml-workflows
To add the plugin to your NOMAD deployment, see Adding this plugin to NOMAD.
✨ Key functionality
The Export Entries action lets users:
- select entries with a NOMAD search query and ownership scope;
- export complete archives or selected archive paths, optionally resolving references;
- generate JSON, Parquet, or CSV datasets; and
- save the generated dataset to a staging project/upload as a ZIP archive or directory.
JSON preserves the selected archive structure. Parquet provides typed tabular data and preserves nested quantity values, while CSV represents nested values as JSON text.
Action input
The action form groups its fields into Search options and Export options. Its underlying input shape is:
{
"user_id": "<injected by NOMAD>",
"upload_id": "<destination-project-id>",
"search_settings": {
"owner": "visible",
"max_entries": 1000,
"query": "{\n \"entry_type\": \"ELNSample\"\n}",
"required": [
{
"type": "include",
"path": "results.method",
"resolve_references": false
}
]
},
"export_settings": {
"file_format": "parquet",
"create_zip_archive": true
}
}
user_id is required by the workflow but is not shown in the action form. The other
fields have these semantics:
| Field | Values and behavior |
|---|---|
upload_id |
ID of the staging project/upload that receives the exported artifacts. |
search_settings.owner |
visible, public, user, shared, or staging; defaults to visible. |
search_settings.max_entries |
Positive requested limit, bounded by max_entries_export_limit; defaults to the smaller of 1,000 and the deployment limit. |
search_settings.query |
NOMAD search query supplied as JSON text. The query can be copied from View API Call in a NOMAD search app. |
search_settings.required |
Archive paths to include. An empty list exports the complete archive. Set resolve_references to include content reached through references below a path. |
export_settings.file_format |
parquet, csv, or json; defaults to parquet. |
export_settings.create_zip_archive |
Defaults to true. Set it to false to publish a project subdirectory instead of a ZIP file. |
The current public model supports include directives only. Exclusion is not yet available through the action form.
Generated output
The generated ZIP archive or directory contains:
| File | Contents |
|---|---|
data.json, data.parquet, or data.csv |
The exported archive data in the selected format. This file is omitted when no entries match. |
selected_entries.json |
The ordered entry_id and upload_id pairs selected for export. |
metadata.json |
The export metadata under data, together with its JSON schema and an explanatory note. |
The metadata records the original input, search timing, export-limit state, and the
num_entries_available, num_entries_selected, and num_entries_exported counts. It
also records nomad_deployment_api_host, nomad_version, and
nomad_ml_workflows_version. A zero-match export still contains metadata.json and
an empty selected_entries.json.
⚙️ Configuration
Configure the action entry point in the nomad.yaml of the NOMAD Oasis:
plugins:
entry_points:
options:
nomad_ml_workflows.actions:export_entries:
max_entries_export_limit: 100000
# Deployment cap for one Export Entries action.
read_archives_timeout: 7200
# Start-to-close timeout, in seconds, for reading archives and
# writing the selected output format.
max_write_buffer_size_bytes: 4194304
# Target maximum uncompressed Arrow bytes accumulated before a
# Parquet or CSV flush. One oversized row may exceed this target.
🚀 Adding this plugin to NOMAD
NOMAD Oasis
Follow the NOMAD plugin installation documentation to add and enable the plugin in an Oasis.
Local NOMAD development installation
Use the dedicated
nomad-distro-dev repository for
an integrated local NOMAD development environment.
🛠️ Development
Clone the repository and create a virtual environment with Python 3.10, 3.11, or 3.12:
git clone https://github.com/FAIRmat-NFDI/nomad-ml-workflows.git
cd nomad-ml-workflows
python3.12 -m venv .pyenv
. .pyenv/bin/activate
python -m pip install --upgrade pip
python -m pip install uv
uv pip install -e '.[dev]'
Run the focused Export Entries tests:
pytest tests/actions/export_entries/test_models.py \
tests/actions/export_entries/test_utils.py
Run linting and formatting checks with Ruff:
ruff check .
ruff format . --check
For interactive test debugging, pass --pdb to pytest. To serve the documentation
locally, use the development dependencies and run:
mkdocs serve
👥 Main contributors
| Name | |
|---|---|
| Sarthak Kapoor | sarthak.kapoor@physik.hu-berlin.de |
📄 License
This project is licensed under the MIT License. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nomad_ml_workflows-0.0.10.tar.gz.
File metadata
- Download URL: nomad_ml_workflows-0.0.10.tar.gz
- Upload date:
- Size: 124.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25d031fddbbb44c5dd147ec91a46df17fdb9ce01a019b15704f1d7712b21bec7
|
|
| MD5 |
28e716d553b30084d3ee693fba6394c1
|
|
| BLAKE2b-256 |
5a54fbeae0e73548cca7ba9480c27776f48a30069b23f11bc7e1aafc27876339
|
File details
Details for the file nomad_ml_workflows-0.0.10-py3-none-any.whl.
File metadata
- Download URL: nomad_ml_workflows-0.0.10-py3-none-any.whl
- Upload date:
- Size: 23.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f84ded327d839c94012858621c72f8138899a6bec84cef462db29a24cc76c91
|
|
| MD5 |
169d6249763712123ce1fa291f273cdb
|
|
| BLAKE2b-256 |
6cdb5e546bb19feecd39f468d5857dfd8997af3eb01616371c05df6650c2b2c7
|