Skip to main content

MatCraft Toolkit

Project description

mckit — MatCraft Toolkit

A modular Python framework for building and analyzing atomic structures. Backed by ASE and pymatgen for materials modelling.

Features

  • Operations — modelling materials
  • Observations — inspect structures and run sanity checks

1. Usage

Installation

You can simply use:

pip install matcraft-kit

For development, clone the repository and install in editable mode:

pip install -e ".[dev]"

CLI

# for observations:
mckit observe -h
# for operations:
mckit operate -h

2. Development

Click to expand development instructions

Prerequisites

  • Python ≥ 3.9
  • pip

Setup

# Clone the repository
git clone <repo-url>
cd matcraft-kit

# Create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate        # Linux/macOS
# .venv\Scripts\activate         # Windows

# Install in editable mode with dev dependencies
pip install -e ".[dev]"

Project Structure

mckit/
├── __init__.py              # Package root — exports public API
├── core/
│   ├── lattice.py           # Lattice dataclass (3×3 matrix, ASE Cell-backed)
│   └── tool.py              # Abstract base classes: Operation, Observation
├── operate/
│   ├── bulk.py              # BulkBuilder — standard crystal structures
│   └── surface.py           # SurfaceBuilder, TerminationAnalyzer, MoleculeDetector
├── observe/
│   ├── inspect.py              # StructureInspect — structural summary
│   └── fundamental.py       # FundamentalCheck — geometric validity checks
└── io/
    ├── reader.py            # read_structure() -> ASE Atoms
    └── writer.py            # write_structure() — ASE io.write

Architecture

The framework follows an Operation / Observation pattern:

  • Operation (abstract) — tools that build or modify structures. Subclasses implement apply(...) and return ase.Atoms.
  • Observation (abstract) — tools that inspect structures without modifying them. Subclasses implement observe(structure) → Any.

Both are single-method ABCs defined in mckit.core.tool, making it straightforward to add new operations or observations.

Core data flow:

File (CIF, VASP, ...) ──read_structure()──▶ ase.Atoms ──Operation──▶ ase.Atoms ──write_structure()──▶ File
                                                │
                                                └──Observation──▶ dict / CheckResult / ...

Running Tests

pytest

With coverage:

pytest --cov=mckit --cov-report=term-missing

Adding a New Operation

Create a file under mckit/operate/ and subclass Operation:

from ase import Atoms
from mckit.core.tool import Operation

class MyBuilder(Operation):
    """Build or modify a structure."""

    def apply(self, *, some_param: float, **kwargs) -> Atoms:
        # ... your logic here ...
        return new_structure

Then re-export it from mckit/operate/__init__.py.

Adding a New Observation

Create a file under mckit/observe/ and subclass Observation:

from ase import Atoms
from mckit.core.tool import Observation

class MyAnalysis(Observation):
    """Inspect a structure and return results."""

    def observe(self, structure: Atoms, **kwargs):
        # ... your logic here ...
        return result_dict

Then re-export it from mckit/observe/__init__.py.

Dependencies

Package Purpose
numpy ≥ 1.21 Numerical computing
ase ≥ 3.22 Atomic Simulation Environment — crystal builders, I/O, coordinate transforms
pymatgen ≥ 2022.0.0 Python Materials Genomics — CIF parsing, symmetry analysis

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

matcraft_kit-0.1.5.tar.gz (86.4 kB view details)

Uploaded Source

Built Distribution

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

matcraft_kit-0.1.5-py3-none-any.whl (91.2 kB view details)

Uploaded Python 3

File details

Details for the file matcraft_kit-0.1.5.tar.gz.

File metadata

  • Download URL: matcraft_kit-0.1.5.tar.gz
  • Upload date:
  • Size: 86.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for matcraft_kit-0.1.5.tar.gz
Algorithm Hash digest
SHA256 0bce64a986aa3767518e06de7e50235dae8808c3ea9646075c5e0311d6069a6e
MD5 b8ba21b0711faf23f0f5ba1954bb17cf
BLAKE2b-256 03c74db94007990ec0f8b049868504359fd27208ec315e8b061157659687f2fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for matcraft_kit-0.1.5.tar.gz:

Publisher: publish-to-pypi.yml on theAfish/matcraft-kit

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

File details

Details for the file matcraft_kit-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: matcraft_kit-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 91.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for matcraft_kit-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 3cdbfaebd3d59034a546edc0a449773df8ba41e430b74903018290ababd70ac6
MD5 5926b9b9fda28f7b85eed96ea32eb105
BLAKE2b-256 d5de7f31decb48bd488f39ce300c01652e61c97298b44021f4c36adbbe9d4cea

See more details on using hashes here.

Provenance

The following attestation bundles were made for matcraft_kit-0.1.5-py3-none-any.whl:

Publisher: publish-to-pypi.yml on theAfish/matcraft-kit

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