Metadata-Version: 2.4
Name: ephemerista
Version: 0.1.0a6
Summary: Space mission analysis for telecommunications and satellite constellations
Project-URL: Documentation, https://docs.ephemerista.space
Project-URL: Issues, https://gitlab.com/librespacefoundation/ephemerista/ephemerista-simulator/-/issues
Project-URL: Source, https://gitlab.com/librespacefoundation/ephemerista/ephemerista-simulator
Author-email: Helge Eichhorn <helge@libre.space>, Clément Jonglez <clement@jonglez.space>, Andrei Zisu <matzipan@gmail.com>, Calum Hervieu <calumjhervieu@gmail.com>, Victoria Malyshkina <victoria@libre.space>
License: AGPL-3.0-or-later
License-File: LICENSE.txt
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.12
Requires-Dist: antimeridian~=0.3.8
Requires-Dist: anywidget~=0.9.13
Requires-Dist: folium~=0.18.0
Requires-Dist: geojson-pydantic~=1.1
Requires-Dist: geojsoncontour~=0.4.0
Requires-Dist: geopandas~=1.0.1
Requires-Dist: h3~=4.1.2
Requires-Dist: itur~=0.4
Requires-Dist: jdk4py~=21.0.2.1
Requires-Dist: lox-space==0.1.0a19
Requires-Dist: matplotlib==3.9.4
Requires-Dist: numpy~=1.26
Requires-Dist: orekit-jpype~=12.1.1.0
Requires-Dist: pandas~=2.1
Requires-Dist: plotly~=5.22
Requires-Dist: psygnal~=0.11.1
Requires-Dist: pydantic-numpy~=5.0
Requires-Dist: pydantic~=2.8
Requires-Dist: scipy~=1.14
Description-Content-Type: text/markdown

![Ephemerista Logo](docs/logo.webp)

[![PyPI - Version](https://img.shields.io/pypi/v/ephemerista.svg)](https://pypi.org/project/ephemerista)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ephemerista.svg)](https://pypi.org/project/ephemerista)
[![coverage](https://gitlab.com/librespacefoundation/ephemerista/ephemerista-simulator/badges/main/coverage.svg?job=coverage)](https://librespacefoundation.gitlab.io/ephemerista/ephemerista-simulator/coverage)

---

<!-- start introduction -->

Ephemerista is an open source ([AGPLv3]-licensed) Python library for space mission design and analysis with a focus on telecommunications and constellation design.
The development of the first release of Ephemerista was [funded by the European Space Agency (ESA)][esa].

Ephemerista is being maintained by the [Libre Space Foundation][lsf].

[AGPLv3]: https://choosealicense.com/licenses/agpl-3.0/
[lsf]: https://libre.space
[esa]: https://connectivity.esa.int/projects/ossmisi

<!-- end introduction -->

## Features

<!-- start features -->

- Time scale and reference frame transformations
- Semi-analytical and numerical orbit propagation
- Event detection
- Spacecraft and ground asset modelling
- Communication systems modelling and link budgets analyses
- Constellation design and coverage analyses

<!-- end features -->

## Quickstart

<!-- start quickstart -->

### Installation

Ephemerista is distributed on [PyPI] and can be installed via `pip`.

```shell
# Create new virtual environment
python -m venv .venv
source .venv/bin/activate

# Install Ephemerista
pip install ephemerista
```

### Obtain Required Data

Ephemerista requires the following data at runtime:

- Earth orientation parameters from the IERS: [finals2000A.all.csv][IERS]
- Planetary ephemerides in SPK format, e.g. [de44s.bsp][NAIF]
- An Orekit data package: [orekit-data-master.zip][orekit-data]
  - Alternatively, the Orekit data can be installed as a Python package via `pip`, see [here][orekit-pip].

### Initialise Ephemerista

Call the `ephemerista.init` function before using any other Ephemerista functionality and provide the paths to the required data files.

```python
import ephemerista

EOP_PATH = ... # e.g. finals2000A.all.csv
SPK_PATH = ... # e.g. de440s.bsp
OREKIT_DATA_PATH = ... # e.g. orekit-data-master.zip

ephemerista.init(eop_path=EOP_PATH, spk_path=SPK_PATH, orekit_data=OREKIT_DATA_PATH)
```

If the Orekit data package was installed via package manager the `orekit_data` parameter can be omitted.

### Use Ephemerista

Propagate the orbit of the ISS with Ephemerista.

```python
import ephemerista
from ephemerista.propagators.sgp4 import SGP4
from ephemerista.time import TimeDelta

# Propgate the trajectory
iss_tle = """ISS (ZARYA)
1 25544U 98067A   24187.33936543 -.00002171  00000+0 -30369-4 0  9995
2 25544  51.6384 225.3932 0010337  32.2603  75.0138 15.49573527461367"""

propagator = SGP4(tle=iss_tle)
start_time = propagator.time
end_time = start_time + TimeDelta.from_hours(6)
times = start_time.trange(end_time, step=float(TimeDelta.from_minutes(1)))
trajectory = propagator.propagate(times)
```

[PyPI]: https://pypi.org/project/ephemerista/
[IERS]: https://datacenter.iers.org/data/csv/finals2000A.all.csv
[NAIF]: https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/de440s.bsp
[orekit-data]: https://gitlab.orekit.org/orekit/orekit-data/-/archive/master/orekit-data-master.zip
[orekit-pip]: https://gitlab.orekit.org/orekit/orekit-data/#notes-for-orekit-python-users

<!-- end quickstart -->

For more information, visit [Ephemerista's documentation][docs].

[docs]: https://docs.ephemerista.space

## Development

Please refer to [CONTRIBUTING.md](https://gitlab.com/librespacefoundation/ossmisi/ossmisi-simulator/-/blob/main/CONTRIBUTING.md).

## License

`ephemerista` is distributed under the terms of the [AGPLv3](https://spdx.org/licenses/AGPL-3.0-or-later.html) license.
