Skip to main content

Config-driven CLI that runs a multi-stage materials-discovery funnel on your own machines.

Project description

materials-cli

A config-driven funnel for high-throughput materials discovery — on your own machines.

CI Python License Code style Typed


You write one YAML file saying what to explore and where each stage runs. You run one command.

materials-cli run
flowchart LR
    A(compose) --> B(structure) --> C(screen) --> D(["calculate<br/><i>optional</i>"]) --> E(extract)

    classDef s fill:#1E3A5F,stroke:#38BDF8,stroke-width:1px,color:#E0F2FE
    classDef o fill:#3B2F63,stroke:#A78BFA,stroke-width:1px,color:#EDE9FE,stroke-dasharray:4 3
    class A,B,C,E s
    class D o
Stage What it produces Science it uses
compose charge-balanced compositions from your element set SMACT
structure candidate crystals per composition — 3D / 2D / 1D symmetry families PyXtal
screen ML relaxation + a convergence/sanity verdict MACE
calculate (optional) DFTB+ energies with self-healing convergence retries your own AiiDA
extract one OPTIMADE-shaped record.json per material

Every stage runs on your local CPU/GPU or on a machine you own over SSH (optionally through SLURM). State lives in SQLite, results in plain files — no server, no database to install, nothing on anyone else's infrastructure. Interrupt a run at any point; running it again picks up exactly where it stopped.

Install

pip install materials-cli

Or get a self-contained install (its own venv under ~/.local/share/materials-cli, a launcher on your PATH, upgradeable later with materials-cli update):

curl -fsSL https://raw.githubusercontent.com/Quantum-ARISE-Acad/qa-materials-cli/main/install.sh | bash

The base install is deliberately light — it will never pull in torch or a science stack.

Quickstart

materials-cli init                       # scaffold materials-cli.yaml + check your environment
$EDITOR materials-cli.yaml               # your elements, your machines
materials-cli doctor                     # backends reachable? deps present? fixes named
materials-cli run                        # seed and drain the funnel  (Ctrl-C is safe)
materials-cli monitor                    # live dashboard while it runs
materials-cli results --export db.json   # your records, one JSON array

Every command reads materials-cli.yaml from the current directory (or --config PATH) and accepts --json for machine-readable output. Exit codes: 0 success · 1 problems found · 2 config error.

Configure

The scaffold from init is a working config; this is its shape:

run:
  work_dir: ./materials-work
  elements: [Na, Cl, O]          # what to explore
  # combination_sizes: [2, 3]    # binaries, ternaries, ... (omit = all sizes)

backends:                        # the WHERE — machines that run jobs
  laptop:
    kind: local
    options: { max_parallel: 2 }
  gpu_box:
    kind: ssh_exec
    options: { host: you@gpu-box.lan, max_parallel: 4 }

stages:                          # the WHAT — each stage picks a backend
  compose:   { backend: laptop }
  structure: { backend: laptop }
  screen:    { backend: gpu_box }
  extract:   { backend: laptop }

Any string may be an environment reference (env:NAME) — secrets never live in the file. Adding an optional calculate: stage runs each screened-in structure through DFTB+ using your AiiDA installation; leave it out and the funnel is unchanged.

Commands

Command What it does
init Scaffold a starter config and check your environment
doctor Diagnose config, machine reachability, and per-stage readiness — naming the exact fix
run Seed and drain the funnel; --only STAGE and --materials narrow it
status Per-state counts, failures with reasons, jobs in flight
monitor Live read-only dashboard: progress donut, stage pipeline, per-material CPU/GPU
retry Put failed materials back in the queue (previews before it acts)
results List finished materials; --export PATH writes the records array
cif Export DFTB+ relaxed structures as CIF files
update Upgrade an installed copy in place

materials-cli <command> --help documents every flag.

The science stack is yours

materials-cli automates your calculations; it does not bundle SMACT, PyXtal, MACE/torch, ASE, AiiDA, or any ML model. You install those in your own environment — the tool checks what a run needs and tells you precisely what is missing, and where, before any calculation starts. For screening, if you have no MACE model configured it can fetch the foundation model for you — always with your consent, never silently.

Want the whole stack in one go? pip install materials-cli[compute] is a convenience alias for smact + pyxtal + mace-torch. An alias, never a requirement.

Documentation

guide.md is the full user guide — every command, every flag, the complete config reference, remote execution, material states, and worked recipes. Contributing and release process: CONTRIBUTING.md.

Citation

If this tool contributes to work you publish, please cite it — see CITATION.cff (GitHub renders a Cite this repository button from it).

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

materials_cli-0.1.1.tar.gz (296.4 kB view details)

Uploaded Source

Built Distribution

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

materials_cli-0.1.1-py3-none-any.whl (188.9 kB view details)

Uploaded Python 3

File details

Details for the file materials_cli-0.1.1.tar.gz.

File metadata

  • Download URL: materials_cli-0.1.1.tar.gz
  • Upload date:
  • Size: 296.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for materials_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3f7791e10f674fa288b1a7bd603c6701ea24e24c20d358d15ff9ea3c79f1fa1a
MD5 20fc7bc6eddd569abf3f6bc507b884b8
BLAKE2b-256 d106fb41c6acc36f6865cf6d1d3bf7aaef26752987628b97ac7ae19459c00e4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for materials_cli-0.1.1.tar.gz:

Publisher: publish.yml on Quantum-ARISE-Acad/qa-materials-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file materials_cli-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: materials_cli-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 188.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for materials_cli-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 38fea038471217a82b5601899639b54e92d443a93777ea237ec5f72ed2316343
MD5 3ce3508ec8626a0e2adc5b50d6ae96c6
BLAKE2b-256 433212b2d354a0c58de8c16fc5968fbb01744e5d46269a5b3c583469d4f8ec8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for materials_cli-0.1.1-py3-none-any.whl:

Publisher: publish.yml on Quantum-ARISE-Acad/qa-materials-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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