Metadata-Version: 2.4
Name: sigpyproc
Version: 2.0.0
Summary: Python FRB/pulsar data toolbox
Keywords: pulsar,FRB,filterbank,SIGPROC,PSRFITS,radio astronomy
Author: Pravir Kumar, Ewan Barr
Author-email: Pravir Kumar <pravirka@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Astronomy
Requires-Dist: numpy>=2.0
Requires-Dist: numba>=0.61
Requires-Dist: astropy>=6.0
Requires-Dist: matplotlib>=3.8
Requires-Dist: seaborn>=0.13
Requires-Dist: h5py>=3.10
Requires-Dist: bottleneck>=1.4
Requires-Dist: attrs>=24
Requires-Dist: click>=8.1
Requires-Dist: rich>=13
Requires-Dist: rich-click>=1.8
Requires-Dist: rocket-fft>=0.3
Requires-Dist: bidict>=0.23
Requires-Dist: lazy-loader>=0.4
Requires-Dist: ruff ; extra == 'dev'
Requires-Dist: ty ; extra == 'dev'
Requires-Dist: sphinx ; extra == 'docs'
Requires-Dist: sphinx-book-theme ; extra == 'docs'
Requires-Dist: sphinx-click ; extra == 'docs'
Requires-Dist: sphinx-copybutton ; extra == 'docs'
Requires-Dist: numpydoc ; extra == 'docs'
Requires-Dist: myst-nb ; extra == 'docs'
Requires-Dist: jupyter-sphinx ; extra == 'docs'
Requires-Dist: sphinx-design ; extra == 'docs'
Requires-Dist: pytest>=9.0 ; extra == 'tests'
Requires-Dist: pytest-cov ; extra == 'tests'
Requires-Dist: pytest-randomly ; extra == 'tests'
Requires-Dist: pytest-sugar ; extra == 'tests'
Requires-Dist: pytest-benchmark ; extra == 'tests'
Requires-Dist: pytest-mock ; extra == 'tests'
Requires-Dist: scipy>=1.13 ; extra == 'tests'
Maintainer: Pravir Kumar
Maintainer-email: Pravir Kumar <pravirka@gmail.com>
Requires-Python: >=3.12
Project-URL: Homepage, https://sigpyproc3.readthedocs.io
Project-URL: Repository, https://github.com/FRBs/sigpyproc3
Project-URL: Documentation, https://sigpyproc3.readthedocs.io
Project-URL: Changelog, https://sigpyproc3.readthedocs.io/en/latest/changes.html
Project-URL: Issues, https://github.com/FRBs/sigpyproc3/issues
Provides-Extra: dev
Provides-Extra: docs
Provides-Extra: tests
Description-Content-Type: text/markdown

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/FRBs/sigpyproc3/main/docs/_static/logo/logo-tagline-dark.svg">
    <img alt="sigpyproc: pulsar and FRB I/O" src="https://raw.githubusercontent.com/FRBs/sigpyproc3/main/docs/_static/logo/logo-tagline.svg" width="480">
  </picture>
</p>

<div align="center">

[![GitHub CI](https://github.com/FRBs/sigpyproc3/workflows/GitHub%20CI/badge.svg)](https://github.com/FRBs/sigpyproc3/actions)
[![PyPI](https://img.shields.io/pypi/v/sigpyproc)](https://pypi.org/project/sigpyproc/)
[![Docs](https://readthedocs.org/projects/sigpyproc3/badge/?version=latest)](https://sigpyproc3.readthedocs.io/en/latest/?badge=latest)
[![codecov](https://codecov.io/gh/FRBs/sigpyproc3/branch/main/graph/badge.svg)](https://codecov.io/gh/FRBs/sigpyproc3)
[![License](https://img.shields.io/github/license/FRBs/sigpyproc3)](https://github.com/FRBs/sigpyproc3/blob/main/LICENSE)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![Scientific Python Ecosystem Coordination](https://img.shields.io/badge/SPEC-0,1-green?labelColor=%23004811&color=%235CA038)](https://scientific-python.org/specs/)

</div>

`sigpyproc` is a Python library for pulsar and FRB data. It reads [SIGPROC filterbank](http://sigproc.sourceforge.net), [PSRFITS](https://www.atnf.csiro.au/research/pulsar/psrfits_definition/Psrfits.html), time series, and Fourier series as objects, and runs the numerical work with [Numba](https://numba.pydata.org/). Use it to inspect a file, try a processing step, and prototype a search ahead of a survey pipeline.

## Installation

Python 3.12 or newer, on Linux or macOS.

```bash
python -m pip install sigpyproc
```

`uv pip install sigpyproc` works the same way. The first Numba call compiles; later calls reuse that code. See the [installation page](https://sigpyproc3.readthedocs.io/en/latest/install.html) for a virtual environment or a development checkout.

## Usage

```python
from sigpyproc import FilReader

with FilReader("observation.fil") as obs:
    print(obs.header)
    series = obs.dedisperse(dm=30.0)

candidates = series.search(nfolds=4, pmax=10.0)
candidates.cluster(snr_min=8.0).to_csv("candidates.csv")
```

From the terminal:

```bash
spp_header print observation.fil
spp_view observation.fil
spp_search fft observation.tim --nfolds 4 --pmax 10 -o candidates.csv
```

Each `spp_*` command has `--help`. The [command reference](https://sigpyproc3.readthedocs.io/en/latest/cmd.html) lists the rest. The [quickstart](https://sigpyproc3.readthedocs.io/en/latest/tutorials/quickstart.html) runs the Python example on a synthetic file.

## Older releases

2.0.0 is the stable API. The `legacy` branch and the last 0.x release, 0.5.5, keep the previous interface.

## Contributing

See the [developer documentation](https://sigpyproc3.readthedocs.io/en/latest/dev.html). sigpyproc is released under the [MIT license](https://github.com/FRBs/sigpyproc3/blob/main/LICENSE).
