Skip to main content

Location & Orientation of Particles found using Two-Dimensional Template Matching

Project description

Leopard-EM: Python based template matching

License PyPI Python Version CI codecov

Leopard-EM (Location & oriEntatiOn of PARticles found using two-Dimensional tEmplate Matching) is a python package for running two-dimensional template matching (2DTM) on cryo-EM images. Check out the online documentation for more details about using, configuring, and analyzing data from the Leopard-EM Python package.

[!IMPORTANT] If you use Leopard-EM in your research, please include these linked references: Citation (bottom of this page).

Basic Installation

The newest released version of the package can be installed from PyPI using pip:

pip install leopard-em

Usage

Template Matching

Inputs to the template matching programs can be configured through a YAML file or a set of Python objects. The example YAML configuration file acts as a template for configuring your own runs with more details on configuring and running 2DTM on the programs section of the documentation. We also provide a default match_template.py script with some additional detail, but a compacted version of this script is shown below. Once configured with the proper paths, parameters, etc., the program can run as follows:

from leopard_em.pydantic_models.managers import MatchTemplateManager

YAML_CONFIG_PATH = "/path/to/match-template-configuration.yaml"
DATAFRAME_OUTPUT_PATH = "/path/to/match-template-results.csv"
ORIENTATION_BATCH_SIZE = 8

def main():
    mt_manager = MatchTemplateManager.from_yaml(YAML_CONFIG_PATH)
    mt_manager.run_match_template(ORIENTATION_BATCH_SIZE)
    df = mt_manager.results_to_dataframe()
    df.to_csv("/path/to/results.csv")

# NOTE: invoking from `if __name__ == "__main__"` is necessary
# for proper multiprocessing/GPU-distribution behavior
if __name__ == "__main__":
    main()

Template Refinement

Particle orientations and locations can be refined using the RefineTemplateManager objects after a template matching run. The RefineTemplateManager is similarly a set of Pydantic models capable of configuration via YAML files. The example YAML configuration file acts as a template for configuring your own runs. We also provide a default refine_template.py script with some additional detail, but a compacted version of this script is shown below. Once configured with the proper paths, parameters, etc., the program can run as follows:

from leopard_em.pydantic_models.managers import RefineTemplateManager

YAML_CONFIG_PATH = "/path/to/refine-template-configuration.yaml"
DATAFRAME_OUTPUT_PATH = "/path/to/refine-template-results.csv"
PARTICLE_BATCH_SIZE = 80

def main():
    rt_manager = RefineTemplateManager.from_yaml(YAML_CONFIG_PATH)
    rt_manager.run_refine_template(DATAFRAME_OUTPUT_PATH, PARTICLE_BATCH_SIZE)

if __name__ == "__main__":
    main()

Installation for Development

The package can be installed from source in editable mode with the optional development libraries via pip.

git clone https://github.com/Lucaslab-Berkeley/Leopard-EM.git
cd Leopard-EM
pip install -e '.[dev,test, docs]'

Further information on development and contributing to the repo can be found in our online documentation.

Citation

If you use Leopard-EM in your research, please include the following citations in your biblography:

@article {Giammar2025.08.26.672452,
  author = {Giammar, Matthew David and Dickerson, Joshua Luke and Hall, Laina Nicole and Lucas, Bronwyn Ayla},
  title = {Leopard-EM: An extensible 2DTM package to accelerate in situ structural biology},
  elocation-id = {2025.08.26.672452},
  year = {2025},
  doi = {10.1101/2025.08.26.672452},
  publisher = {Cold Spring Harbor Laboratory},
  URL = {https://www.biorxiv.org/content/early/2025/08/29/2025.08.26.672452},
  eprint = {https://www.biorxiv.org/content/early/2025/08/29/2025.08.26.672452.full.pdf},
  journal = {bioRxiv}
}

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

leopard_em-1.1.tar.gz (10.1 MB view details)

Uploaded Source

Built Distribution

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

leopard_em-1.1-py3-none-any.whl (96.4 kB view details)

Uploaded Python 3

File details

Details for the file leopard_em-1.1.tar.gz.

File metadata

  • Download URL: leopard_em-1.1.tar.gz
  • Upload date:
  • Size: 10.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for leopard_em-1.1.tar.gz
Algorithm Hash digest
SHA256 203dab01f1b19271a1064e2f953b1337fbdee2f5cda042c13188d177707abb49
MD5 44d9d3519e14d3cdc0b84ff071682da0
BLAKE2b-256 7e8fb63dbd01674dc6151f30c30febec3ca1666e7e394c147fb16e8472695f6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for leopard_em-1.1.tar.gz:

Publisher: python-publish.yml on Lucaslab-Berkeley/Leopard-EM

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

File details

Details for the file leopard_em-1.1-py3-none-any.whl.

File metadata

  • Download URL: leopard_em-1.1-py3-none-any.whl
  • Upload date:
  • Size: 96.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for leopard_em-1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 047a3729f9dc65ccfc03afb9ca6b0ed8c78d629ba62208a7dab294820b5e0428
MD5 63caba07d464af2cd05177ad046b4ac4
BLAKE2b-256 04759baa2b0b6bedfdfb74db3150328d94d66cd278b56491d28457857440c128

See more details on using hashes here.

Provenance

The following attestation bundles were made for leopard_em-1.1-py3-none-any.whl:

Publisher: python-publish.yml on Lucaslab-Berkeley/Leopard-EM

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