Metadata-Version: 2.4
Name: cryoblob
Version: 2025.5.26
Summary: Particle Picking of Cryo-EM Datasets
Author-email: Debangshu Mukherjee <mukherjeed@ornl.gov>, "Alexis N. Williams" <williamsan@ornl.gov>
Maintainer-email: Debangshu Mukherjee <mukherjeed@ornl.gov>
License-Expression: MIT
Project-URL: Homepage, https://github.com/debangshu-mukherjee/cryoblob
Keywords: elecron microscopy,cryoEM
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mrcfile==1.5.0
Requires-Dist: numpy>=1.13.0
Requires-Dist: matplotlib>=2.2.0
Requires-Dist: matplotlib-scalebar>=0.5.0
Requires-Dist: ipywidgets>=8.1.0
Requires-Dist: tqdm>=4.66.0
Requires-Dist: jaxtyping<0.3,>=0.2.33
Requires-Dist: beartype
Requires-Dist: pandas>=2.2.3
Requires-Dist: chex>=0.1.89
Requires-Dist: pytest>=8.3.5
Requires-Dist: nbsphinx>=0.9.7
Requires-Dist: nbconvert>=7.16.6
Requires-Dist: ipykernel>=6.29.5
Requires-Dist: sphinx>=7.0.0
Requires-Dist: sphinx-rtd-theme>=3.0.2
Requires-Dist: build>=1.2.2.post1
Requires-Dist: black[jupyter]>=25.1.0
Requires-Dist: pydantic>=2.11.5
Requires-Dist: jax[cuda12]>=0.4.30; sys_platform == "linux"
Requires-Dist: jax>=0.4.30; sys_platform == "win64"
Provides-Extra: docs
Requires-Dist: sphinx>=7.0.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=3.0.2; extra == "docs"
Requires-Dist: nbsphinx>=0.9.7; extra == "docs"
Requires-Dist: myst-parser>=2.0.0; extra == "docs"
Requires-Dist: ipykernel>=6.29.5; extra == "docs"
Requires-Dist: nbconvert>=7.16.6; extra == "docs"
Dynamic: license-file

[![PyPI Downloads](https://static.pepy.tech/badge/cryoblob)](https://pepy.tech/projects/cryoblob)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![PyPI version](https://badge.fury.io/py/cryoblob.svg)](https://badge.fury.io/py/cryoblob)
[![Documentation Status](https://readthedocs.org/projects/cryoblob/badge/?version=latest)](https://cryoblob.readthedocs.io/en/latest/?badge=latest)
[![DOI](https://zenodo.org/badge/905915185.svg)](https://doi.org/10.5281/zenodo.14861992)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![codecov](https://codecov.io/gh/debangshu-mukherjee/cryoblob/branch/main/graph/badge.svg)](https://codecov.io/gh/debangshu-mukherjee/cryoblob)
[![Tests](https://github.com/debangshu-mukherjee/cryoblob/workflows/Tests/badge.svg)](https://github.com/debangshu-mukherjee/cryoblob/actions)

# cryoblob

**cryoblob** is a JAX-based, JIT-compiled, scalable package for detection of amorphous blobs in low SNR cryo-EM images.

## Features

* **JAX-powered**: Leverages JAX for high-performance computing with automatic differentiation
* **GPU acceleration**: Can utilize both CPUs and GPUs for processing
* **Adaptive filtering**: Includes adaptive Wiener filtering and thresholding
* **Blob detection**: Advanced blob detection using Laplacian of Gaussian (LoG) methods  
* **Batch processing**: Memory-optimized batch processing for large datasets
* **Validation**: Comprehensive parameter validation using Pydantic models

## Installation

```bash
pip install cryoblob
```

## Quick Start

```python
import cryoblob as cb

# Load an MRC file
mrc_image = cb.load_mrc("your_file.mrc")

# Process a folder of images
results = cb.folder_blobs("path/to/folder/")

# Plot results
cb.plot_mrc(mrc_image)
```

## Package Structure

The cryoblob package is organized into the following modules:

* **adapt**: Adaptive image processing with gradient descent optimization
* **blobs**: Core blob detection algorithms and preprocessing  
* **files**: File I/O operations and batch processing
* **image**: Basic image processing functions (filtering, resizing, etc.)
* **plots**: Visualization functions for MRC images and results
* **types**: Type definitions and PyTree structures
* **valid**: Parameter validation using Pydantic models

## Package Organization
* The **codes** are located in `/src/cryoblob/`
* The **notebooks** are located in `/tutorials/`

## Documentation

For detailed API documentation and tutorials, visit: [https://cryoblob.readthedocs.io](https://cryoblob.readthedocs.io)

## License

This project is licensed under the MIT License - see the LICENSE file for details.

## Authors

- Debangshu Mukherjee (mukherjeed@ornl.gov)
- Alexis N. Williams (williamsan@ornl.gov)
