Metadata-Version: 2.4
Name: arrakis-backend-frames
Version: 0.3.1
Summary: Frame backend for the Arrakis server
Project-URL: Homepage, https://git.ligo.org/ngdd/backends/arrakis-backend-frames
Project-URL: Documentation, https://docs.ligo.org/ngdd/backends/arrakis-backend-frames
Project-URL: Issue Tracker, https://git.ligo.org/ngdd/backends/arrakis-backend-frames/issues
Project-URL: Source Code, https://git.ligo.org/ngdd/backends/arrakis-backend-frames.git
Author-email: Olivia Godwin <olivia.godwin@ligo.org>, Jonathan Hanks <jonathan.hanks@ligo.org>
Maintainer-email: Olivia Godwin <olivia.godwin@ligo.org>, Jonathan Hanks <jonathan.hanks@ligo.org>
License-Expression: GPL-3.0-or-later
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Astronomy
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.11
Requires-Dist: arrakis-server>=0.10
Requires-Dist: arrakis>=0.12
Requires-Dist: gwframe>=0.4.2
Requires-Dist: numpy
Requires-Dist: platformdirs
Requires-Dist: python-memcached
Requires-Dist: requests
Provides-Extra: dev
Requires-Dist: markdown-callouts>=0.2; extra == 'dev'
Requires-Dist: markdown-exec>=0.5; extra == 'dev'
Requires-Dist: mkdocs-coverage>=0.2; extra == 'dev'
Requires-Dist: mkdocs-gen-files>=0.3; extra == 'dev'
Requires-Dist: mkdocs-literate-nav>=0.4; extra == 'dev'
Requires-Dist: mkdocs-material-igwn; extra == 'dev'
Requires-Dist: mkdocs-section-index>=0.3; extra == 'dev'
Requires-Dist: mkdocs>=1.3; extra == 'dev'
Requires-Dist: mkdocstrings[python]; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: mypy-extensions; extra == 'dev'
Requires-Dist: pip; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Requires-Dist: toml>=0.10; extra == 'dev'
Requires-Dist: types-requests; extra == 'dev'
Provides-Extra: docs
Requires-Dist: markdown-callouts>=0.2; extra == 'docs'
Requires-Dist: markdown-exec>=0.5; extra == 'docs'
Requires-Dist: mkdocs-coverage>=0.2; extra == 'docs'
Requires-Dist: mkdocs-gen-files>=0.3; extra == 'docs'
Requires-Dist: mkdocs-literate-nav>=0.4; extra == 'docs'
Requires-Dist: mkdocs-material-igwn; extra == 'docs'
Requires-Dist: mkdocs-section-index>=0.3; extra == 'docs'
Requires-Dist: mkdocs>=1.3; extra == 'docs'
Requires-Dist: mkdocstrings[python]; extra == 'docs'
Requires-Dist: toml>=0.10; extra == 'docs'
Provides-Extra: lint
Requires-Dist: mypy; extra == 'lint'
Requires-Dist: mypy-extensions; extra == 'lint'
Requires-Dist: pip; extra == 'lint'
Requires-Dist: ruff; extra == 'lint'
Requires-Dist: types-requests; extra == 'lint'
Provides-Extra: test
Requires-Dist: pytest; extra == 'test'
Requires-Dist: pytest-cov; extra == 'test'
Description-Content-Type: text/markdown

<h1 align="center">arrakis-backend-frames</h1>

<p align="center">Frame backend for Arrakis server</p>

<p align="center">
  <a href="https://git.ligo.org/ngdd/backends/arrakis-backend-frames/-/pipelines/latest">
    <img alt="ci" src="https://git.ligo.org/ngdd/backends/arrakis-backend-frames/badges/main/pipeline.svg" />
  </a>
  <a href="https://git.ligo.org/ngdd/backends/arrakis-backend-frames/-/pipelines/latest">
    <img alt="coverage" src="https://git.ligo.org/ngdd/backends/arrakis-backend-frames/badges/main/coverage.svg" />
  </a>
  <a href="https://ngdd.docs.ligo.org/backends/arrakis-backend-frames/">
    <img alt="documentation" src="https://img.shields.io/badge/docs-mkdocs%20material-blue.svg?style=flat" />
  </a>
  <a href="https://pypi.org/project/arrakis-backend-frames/">
    <img alt="pypi version" src="https://img.shields.io/pypi/v/arrakis-backend-frames.svg" />
  </a>
</p>

---

Frame backend for the [Arrakis server](https://git.ligo.org/ngdd/arrakis-server),
part of the LIGO next-generation data delivery (NGDD) project.  Serves
historical detector data over Apache Arrow Flight from multi-year archives
of Gravitational-Wave Frame (`.gwf`) files, read with
[gwframe](https://git.ligo.org/olivia.godwin/gwframe).

## Resources

* [Documentation](https://ngdd.docs.ligo.org/backends/arrakis-backend-frames/)
* [Source Code](https://git.ligo.org/ngdd/backends/arrakis-backend-frames)
* [Issue Tracker](https://git.ligo.org/ngdd/backends/arrakis-backend-frames/-/issues)
* [Arrakis server](https://git.ligo.org/ngdd/arrakis-server)
* [Arrakis Python client](https://git.ligo.org/ngdd/arrakis-python)

## Installation

With `pip`:

```
pip install arrakis-backend-frames
```

With Docker:

```
docker run --net=host -it containers.ligo.org/ngdd/backends/arrakis-backend-frames:main
```

## Features

* Serves historical timeseries from `.gwf` frame archives over Apache Arrow
  Flight
* Query planner that turns channel and time-range requests into a minimal
  set of frame reads
* Metadata-server integration to discover channels and track their frame
  types over time
* Locates frames through a diskcache service, so the backend never indexes
  the archive itself
* Optional in-process or memcached-backed caching of decoded channel data
* Gap-aware responses that return masked data for missing samples
