Metadata-Version: 2.4
Name: phaserEM
Version: 0.1
Summary: Weapon of choice for electron ptychographic reconstructions
Author-email: Colin Gilgenbach <hexane@mit.edu>
License-Expression: MPL-2.0
Project-URL: Repository, https://github.com/hexane360/phaser.git
Project-URL: Documentation, https://hexane360.github.io/phaser/dev
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: numpy<2.5,>=1.22
Requires-Dist: scipy<1.18,>=1.7.0
Requires-Dist: matplotlib~=3.8
Requires-Dist: h5py~=3.8
Requires-Dist: pyyaml>=5.3.1
Requires-Dist: click~=8.1.0
Requires-Dist: rich~=12.0.0
Requires-Dist: tifffile>=2023.8.25
Requires-Dist: py-pane==0.11.2
Requires-Dist: typing_extensions~=4.7
Provides-Extra: dev
Requires-Dist: pytest>=6.2.4; extra == "dev"
Requires-Dist: pytest-cov>=3.0.0; extra == "dev"
Requires-Dist: coveragepy-lcov>=0.1.1; extra == "dev"
Provides-Extra: cupy
Requires-Dist: cupy-wheel; extra == "cupy"
Requires-Dist: pynvml>=11.0.0; extra == "cupy"
Provides-Extra: jax
Requires-Dist: jax<0.6,>=0.4.25; extra == "jax"
Requires-Dist: optax>=0.2.2; extra == "jax"
Provides-Extra: web
Requires-Dist: Quart>=0.19.5; extra == "web"
Requires-Dist: backoff==2.2.1; extra == "web"
Requires-Dist: requests>=2.31.0; extra == "web"
Provides-Extra: docs
Requires-Dist: mkdocs==1.6.1; extra == "docs"
Requires-Dist: mkdocs-material==9.6.11; extra == "docs"
Requires-Dist: mkdocstrings[python]==0.29.1; extra == "docs"
Requires-Dist: markdown-include==0.8.1; extra == "docs"
Requires-Dist: mike==2.1.3; extra == "docs"
Requires-Dist: black>=25.1.0; extra == "docs"
Dynamic: license-file

phaser: The weapon of choice for ptychographic reconstructions
---
[![][ci-badge]][ci-url] [![][commit-badge]][commit-url] [![][docs-dev-badge]][docs-dev-url]

`phaser` is a fully-featured package for multislice electron ptychography.

## Features

- ePIE, LSQ-MLs, and gradient descent algorithms
- [`numpy`][numpy], [`cupy`][cupy], and [`jax`][jax] backends.
- Single and multislice ptychography
- Multiple incoherent probe modes
- Probe position correction
- Upsampled (sPIE) and segmented ptychography (work in progress)
- Adaptive propagator correction (work in progress)

## Installation

To install, first clone the repository from github:

```sh
$ git clone https://github.com/hexane360/phaser
# enter phaser directory
$ cd phaser
```

If you're using [`cupy`][cupy] or [`jax`][jax] with a GPU, follow the installation instructions for those packages.

Then, install with `pip`:

```sh
$ python -m pip install -e .
```

For the jax or cupy backend, or for the optional webserver, install with the corresponding options:

```sh
$ python -m pip install -e '.[cupy,web]' # or '.[jax,web]'
```

## Running

After installation, the `phaser` command should be available. Phaser can be run from the command line, or through a job server.

To run a single reconstruction on the command line, call `phaser run <file>`, where `file` is the path to a reconstruction plan file.

To run the webserver, call `phaser serve`. By default, the server serves on https://localhost:5050/, so navigate there in a web browser. The server interface can be used to start workers and schedule reconstruction jobs.

To run a worker, call `phaser worker <url>`, where `url` is the URL of a running job server.

## Alternatives

Other notable ptychography packages:

 - [`fold_slice`](https://github.com/yijiang1/fold_slice) branch of [PtychoShelves](https://www.psi.ch/en/sls/csaxs/software#coming-soon-ptychoshelves-a-versatile-high-level-framework-for-high-performance-analysis-of)
 - [`py4DSTEM`](https://github.com/py4dstem/py4DSTEM)
 - [`PtyLab.m/py/jl`](https://opg.optica.org/oe/fulltext.cfm?uri=oe-31-9-13763&id=529026)
 - [PtyPy](https://ptycho.github.io/ptypy/)

[numpy]: https://numpy.org/
[cupy]: https://cupy.dev/
[jax]: https://docs.jax.dev/en/latest/

[ci-badge]: https://github.com/hexane360/phaser/workflows/Tests/badge.svg
[ci-url]: https://github.com/hexane360/phaser/actions/workflows/ci.yaml
[docs-dev-badge]: https://img.shields.io/badge/docs-dev-blue
[docs-dev-url]: https://hexane360.github.io/phaser/dev/
[commit-badge]: https://img.shields.io/github/last-commit/hexane360/phaser
[commit-url]: https://github.com/hexane360/phaser/commits
