Skip to main content

Electron diffraction pattern simulation, spot detection, and vector matching toolkit.

Project description

ePattern

ePattern is a Python toolkit for electron diffraction pattern simulation, spot detection, and crystal orientation indexing via vector matching.

Features

Simulation

  • Bloch-wave diffraction spot simulation using abTEM
  • HDF5 export with orientation index
  • Configurable tilt ranges and parallel execution

Spot Detection

  • Preprocessing pipeline with multiple noise reduction methods (Gaussian, DoG, Top-Hat, Rolling Ball)
  • Auto-prominence or manual prominence peak detection
  • Sub-pixel centroid refinement
  • Optional coordinate alignment
  • HDF5 export of detected spots

Vector Matching

  • Geometric baseline: Gaussian-weighted spot-to-spot matching with intensity correlation
  • Deep Sets encoder: Contrastive learning (Triplet Loss) for fast latent-space matching
  • GPU acceleration via PyTorch (encoder) and CuPy (preprocessing)
  • Multi-material phase identification and orientation determination

GUI

  • Integrated Tkinter interface for all features
  • Visual verification of detected spots

Requirements

  • Python 3.11 or higher
  • NVIDIA GPU (optional, for CUDA acceleration)

Installation

CPU only

pip install epattern

GPU (CUDA 12)

pip install torch --index-url https://download.pytorch.org/whl/cu124
pip install "epattern[cuda12]"

GPU (CUDA 11)

pip install torch --index-url https://download.pytorch.org/whl/cu118
pip install "epattern[cuda11]"

Note: Check your CUDA version with nvidia-smi before choosing.

Quick Start

Launch the GUI

epattern

Programmatic Usage

Simulation

from epattern import simulate_diffraction

simulate_diffraction(
    cif_file="structure.cif",
    output_path="simulation.h5",
    detector_size=512,
    camera_length=200,
    pixel_size=14,
    energy=200000,
    thickness=500,
    g_max=1.5,
    sg_max=0.1,
    intensity_threshold=1.5,
    tilt_x_min=-2,
    tilt_x_max=2,
    tilt_x_step=1,
    tilt_y_min=-2,
    tilt_y_max=2,
    tilt_y_step=1,
    tilt_z_min=-2,
    tilt_z_max=2,
    tilt_z_step=1,
    batch_size=10,
    parallel_workers=2,
)

Spot Detection

from epattern import detect_spots

peaks, transforms, settings = detect_spots(
    data_path="path/to/images",
    scan_cols=100,
    output_path="output/detection.h5",
    binning=True,
    align=True,
    auto_prominence=True,
    prominence_min=2.0,
    noise_factor=1.8,
    background_percentile=20.0,
    min_distance=8,
    threshold=3.0,
    max_items=150,
    noise_reduction_methods=[
        {"name": "Gaussian", "params": {"sigma": 1.0}},
    ],
)

Vector Matching

from epattern import create_encoder, run_matching

# Load a trained encoder
model = create_encoder(
    latent_dim=64,
    weights_path="weights/encoder.pt",
    device="cuda",
)

# Match experimental patterns against reference databases
results = run_matching(
    query_h5="detection.h5",
    ref_h5_paths=["LMNO.h5", "LFP.h5"],
    material_names=["LMNO", "LFP"],
    method="encoder",
    model=model,
    top_k=5,
    device="cuda",
)

# Results is a DataFrame with predicted materials and orientations
print(results[["scan_x", "scan_y", "pred_material_name", "confidence"]])

About

This project was developed within the Image & Data Science group of the LRCS laboratory / RS2E network, led by Arnaud Demortière (Director of Research at CNRS). The group develops Deep Learning and AI-based algorithms to analyze diffraction patterns and multispectral imagery for battery materials research.

Authors and Contributors

Author:

  • Liu François

Contributors:

  • Fayçal Adrar
  • Junhao Cao
  • Nicolas Folastre
  • Arnaud Demortière

License

This project is distributed under the Apache License 2.0. See the LICENSE file for details.

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

epattern-1.0.0.tar.gz (4.2 MB view details)

Uploaded Source

Built Distribution

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

epattern-1.0.0-py3-none-any.whl (4.2 MB view details)

Uploaded Python 3

File details

Details for the file epattern-1.0.0.tar.gz.

File metadata

  • Download URL: epattern-1.0.0.tar.gz
  • Upload date:
  • Size: 4.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.14.3 Windows/11

File hashes

Hashes for epattern-1.0.0.tar.gz
Algorithm Hash digest
SHA256 972c8f9bc1d96f4f2b6c9e910083e6ce626d5491c291be35f6f3f7071fb4fda9
MD5 0384e21eee2a1fa9275c00f1fdd380e0
BLAKE2b-256 53bed5280216ceec7278fa25921c9d9851d1b209a852d0cd8d47c5849b0f0f82

See more details on using hashes here.

File details

Details for the file epattern-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: epattern-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 4.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.14.3 Windows/11

File hashes

Hashes for epattern-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 71990e7e2054933355849a6c4c33cb1f44a86619279c9f91e7e82290e733ef20
MD5 9576d1a3af7a7a3fa7c824ac7bbf6362
BLAKE2b-256 94657c540803b226e73687467ac7779c5ffdbaf1fb7f9ae3881c4618b4739804

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 Pingdom Monitoring Sentry Error logging StatusPage Status page