Skip to main content

Solve the general-relativistic Emitter-Observer problem.

Project description

General Relativistic Emitter-Observer problem Python algorithm (GREOPy)

PyPI - Version Documentation Status DOI

What GREOPy does

GREOPy is a Python library for calculating relativistic light rays sent by an emitter to a receiver in the presence of a gravitational field. The emitter and receiver can move along arbitrary curves and the gravitational field can be described by a rotating, non-accelerating central mass.

This package is specifically dedicated for work in (relativistic) geodesy. In classical geodesy, either a light signal's travel time or its bending angle (deviation from a straight line) is usually neglected because of the Earth's weak gravitational field and short light travel distance. While these deviations and resulting observable uncertainties might be overshadowed by other effects with state-of-the-art measurement accuracies, they might become relevant in the future where these accuracies increase. GREOPy builds a basis for quantifying what impact these deviations have on the subsequent observable error. Please visit the documentation for general information about the package.

How to install GREOPy

Note: It is recommended to install GREOPy inside of a virtual environment.

You can use pip to install this package in two ways:

  • GREOPy is published on pypi.org, so simply run
    python -m pip install GREOPy

  • or directly install the package from its repository by running
    python -m pip install git+https://codeberg.org/JPHackstein/GREOPy

Optional dependencies e.g. for documentation and development tools can be specified during the installation by running e.g.
python -m pip install GREOPy[docs, dev]
All optional dependencies are listed in the pyproject.toml file.

Get started using GREOPy

Note: The documentation contains a more detailed quickstart guide that can be downloaded and run immediately or changed to suit your needs.

Quick overview over the minimal workflow for the user:
Two curves and the underlying spacetime structure are needed to calculate light signals between the curves. Assume emission_curve and reception_curve contain the coordinates and four-velocity tangent vector of each point along the respective curve in spacetime. Also assume that config contains information on the spacetime structure. Then calling the eop_solver function calculates for each point along the emission curve the corresponding unique light signal propagating to the reception curve:

from greopy.emitter_observer_problem import eop_solver

light_rays = eop_solver(config, emission_curve, reception_curve)

The resulting light_rays contains the coordinates and four-velocity tangent vector of each point along the light signal curve in spacetime. These results can be visualised by calling the eop_plot function. Displaying the resulting plot without saving it requires a Matplotlib backend. One example could be using the QtAgg interactive backend, which requires PyQt that can be installed via
python -m pip install PyQt6

The commands with the corresponding plot might look like this:

import matplotlib.pyplot as plt
from greopy.emitter_observer_solution_plot import eop_plot

eop_plot(emission_curve, reception_curve, light_rays)
plt.show()
Emitter-Observer problem visualised
Four light rays are sent from an emitter (blue) to an observer (orange) moving on elliptical curves in the equatorial plane of a spherical central mass with Earth mass.

Community

If you would like to contribute to this package, you can read about ideas here. Since this is a young package, detailed instructions on how to contribute are still a work in progress.

Please note that this package is released with a Code of Conduct and by participating in this project you agree to abide by its terms.

License

GREOPy is available under the GNU GENERAL PUBLIC LICENSE Version 3; see the license file for more information.

How to cite GREOPy

If you would like to acknowledge this package in your work, you can do that for now by citing this zenodo DOI 10.5281/zenodo.14537865 which always points to the latest version of the released code.

Acknowledgements

This project was funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) – Project-ID 434617780 – SFB 1464, and we acknowledge support by the DFG under Germany’s Excellence Strategy – EXC-2123 QuantumFrontiers – 390837967.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

greopy-0.2.0.tar.gz (48.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

greopy-0.2.0-py3-none-any.whl (47.4 kB view details)

Uploaded Python 3

File details

Details for the file greopy-0.2.0.tar.gz.

File metadata

  • Download URL: greopy-0.2.0.tar.gz
  • Upload date:
  • Size: 48.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.0

File hashes

Hashes for greopy-0.2.0.tar.gz
Algorithm Hash digest
SHA256 125cafb6ea6b6c75137903d7ad3cb392d85c1dffce0e898c8797c26b4535a168
MD5 dc14a93b780d45344580b3a06f977ed7
BLAKE2b-256 d121909f5f506c92cbd80ad8930807e8f90e8968ae601a925f766509bb86f11e

See more details on using hashes here.

File details

Details for the file greopy-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: greopy-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 47.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.0

File hashes

Hashes for greopy-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c84ba9bfede8cf9460c1fc4257a402480617ea17b5b0bcf30d39cbc2be0692ae
MD5 25e877e0156839fa2606facb3dc4489e
BLAKE2b-256 6ecd819d1c37a6c2999db39d6b5b65b7c935f2d27dcd46f64ff9f04729df8c2d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page