Metadata-Version: 2.4
Name: sentinel1decoder
Version: 2.0.0
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Requires-Dist: numpy>=1.24
Requires-Dist: pandas
Requires-Dist: maturin>=1.4.0 ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: pytest-cov ; extra == 'dev'
Requires-Dist: pre-commit ; extra == 'dev'
Requires-Dist: black==24.2 ; extra == 'dev'
Requires-Dist: flake8==7.0 ; extra == 'dev'
Requires-Dist: autoflake ; extra == 'dev'
Requires-Dist: isort==5.13.2 ; extra == 'dev'
Requires-Dist: mypy==1.8.0 ; extra == 'dev'
Requires-Dist: jupyter ; extra == 'dev'
Requires-Dist: jupyterlab ; extra == 'dev'
Requires-Dist: ipywidgets ; extra == 'dev'
Requires-Dist: scipy ; extra == 'dev'
Requires-Dist: matplotlib ; extra == 'dev'
Requires-Dist: pandas-stubs ; extra == 'dev'
Provides-Extra: dev
License-File: LICENSE
Summary: A python decoder for ESA Sentinel-1 Level0 files
License: GPL-3.0
Requires-Python: >=3.8
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://github.com/Rich-Hall/sentinel1decoder

# sentinel1decoder

[![PyPI version](https://badge.fury.io/py/sentinel1decoder.svg)](https://badge.fury.io/py/sentinel1decoder)
[![PyPI](https://img.shields.io/pypi/v/sentinel1decoder)](https://pypi.org/project/sentinel1decoder/)

A Python decoder for Sentinel-1 Level 0 files. The Level 0 format consists of the raw space packets downlinked from the Sentinel-1 spacecraft. This package decodes these packets and produces the raw I/Q sensor output from the SAR instrument, which can then be further processed to focus a SAR image.

An example Jupyter notebook demonstrating the process of decoding Level 0 data and forming an image is available on GitHub [here](https://github.com/Rich-Hall/sentinel1Level0DecodingDemo) or on nbviewer.org [here](https://nbviewer.org/github/Rich-Hall/sentinel1Level0DecodingDemo/blob/main/sentinel1Level0DecodingDemo.ipynb).

This code is based on an implementation in C by jmfriedt, which can be found [here](https://github.com/jmfriedt/sentinel1_level0).

The core decoding functions are implemented in Rust and run multithreaded, so I/Q extraction is quite fast.

## Installation

```bash
pip install sentinel1decoder
```

Requires Python 3.8+, NumPy, and Pandas.

## Quick start

```python
import sentinel1decoder

l0file = sentinel1decoder.Level0File(filename)
l0file.packet_metadata   # packet metadata
l0file.ephemeris        # satellite ephemeris
iq_data = l0file.get_acquisition_chunk_data(0)  # decode I/Q for acquisition chunk 0
```

## Documentation

See the [documentation](docs/) for full API reference, ESA spec links, and usage details.

## Resources

- [Demo notebook](https://github.com/Rich-Hall/sentinel1Level0DecodingDemo) — decoding Level 0 data and forming an image

