Skip to main content

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 Email
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

nomad_ml_workflows-0.0.11.tar.gz (135.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nomad_ml_workflows-0.0.11-py3-none-any.whl (34.1 kB view details)

Uploaded Python 3

File details

Details for the file nomad_ml_workflows-0.0.11.tar.gz.

File metadata

  • Download URL: nomad_ml_workflows-0.0.11.tar.gz
  • Upload date:
  • Size: 135.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for nomad_ml_workflows-0.0.11.tar.gz
Algorithm Hash digest
SHA256 d308648451e51f6e10e1ef273127ebd685368a5aac2d185f2b0cba806611d892
MD5 0e0134954310405a5cf24b5fe115a219
BLAKE2b-256 7ccbf3c4ac44318582ec5d462810104a6dd095d85e3096143fa709544f7098da

See more details on using hashes here.

File details

Details for the file nomad_ml_workflows-0.0.11-py3-none-any.whl.

File metadata

File hashes

Hashes for nomad_ml_workflows-0.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 4cd554020d8be0f288621d4aee5e4e0d0eab910e599f6ea22a487c554d4dc7ea
MD5 ecd2fdb2a2d3214bb84453197beb4112
BLAKE2b-256 10e1b4c8d63d1a524d1b7c0fd4fe0af1f2d5a466a042679b80c81c4f5d680442

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page