# jaeger
![Versions](https://img.shields.io/badge/python->=3.9,<3.11-blue)
[![Documentation Status](https://readthedocs.org/projects/sdss-jaeger/badge/?version=latest)](https://sdss-jaeger.readthedocs.io/en/latest/?badge=latest)
[![Tests Status](https://github.com/sdss/jaeger/workflows/Test/badge.svg)](https://github.com/sdss/jaeger/actions)
[![codecov](https://codecov.io/gh/sdss/jaeger/branch/main/graph/badge.svg)](https://codecov.io/gh/sdss/jaeger)
[jaeger](http://pacificrim.wikia.com/wiki/Jaeger>) provides high level control for the SDSS-V [Focal Plane System](https://wiki.sdss.org/display/FPS). Some of the features that jaeger provide are:
- Wraps the low level CAN commands for simpler use.
- Provides a framework that is independent of the CAN interface used (by using the [python-can](https://python-can.readthedocs.io/en/master/) library).
- Interfaces with [kaiju](https://github.com/sdss/kaiju) to provide anticollision path planning for trajectories.
- Implements status and position update loops.
- Provides implementations for commonly used tasks (e.g., go to position, send trajectory).
- Interfaces with the Instrument Electronics Box modbus PLC controller.
- Provides a TCP/IP interface to send commands and output keywords using the SDSS-standard formatting.
The code for jaeger is developed in [GitHub](https://github.com/sdss/jaeger) and can be installed using [sdss_install](https://github.com/sdss/sdss_install) or by running
```console
pip install --upgrade sdss-jaeger
```
To check out the development version do
```console
git clone https://github.com/sdss/jaeger.git
```
jaeger is developed as an [asyncio](https://docs.python.org/3/library/asyncio.html) library and a certain familiarity with asynchronous programming is required. The actor functionality (TCP/IP connection, command parser, inter-actor communication) is built on top of [CLU](https://github.com/sdss/clu).
## A simple jaeger program
```python
import asyncio
from jaeger import FPS, log
async def main():
# Set logging level to DEBUG
log.set_level(0)
# Initialise the FPS instance.
fps = FPS()
await fps.initialise()
# Print the status of positioner 4
print(fps[4].status)
# Send positioner 4 to alpha=90, beta=45
await pos.goto(alpha=90, beta=45)
# Cleanly finish all pending tasks and exit
await fps.shutdown()
asyncio.run(main())
```
Raw data
{
"_id": null,
"home_page": "https://github.com/sdss/jaeger",
"name": "jaeger",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.11,>=3.9",
"maintainer_email": null,
"keywords": "astronomy, software",
"author": "Jos\u00e9 S\u00e1nchez-Gallego",
"author_email": "gallegoj@uw.edu",
"download_url": "https://files.pythonhosted.org/packages/7e/03/583bd05a34d05b6f14ff342bdd2c66aed0c659f08575fa97d37d24ed085b/jaeger-1.6.3.tar.gz",
"platform": null,
"description": "# jaeger\n\n![Versions](https://img.shields.io/badge/python->=3.9,<3.11-blue)\n[![Documentation Status](https://readthedocs.org/projects/sdss-jaeger/badge/?version=latest)](https://sdss-jaeger.readthedocs.io/en/latest/?badge=latest)\n[![Tests Status](https://github.com/sdss/jaeger/workflows/Test/badge.svg)](https://github.com/sdss/jaeger/actions)\n[![codecov](https://codecov.io/gh/sdss/jaeger/branch/main/graph/badge.svg)](https://codecov.io/gh/sdss/jaeger)\n\n[jaeger](http://pacificrim.wikia.com/wiki/Jaeger>) provides high level control for the SDSS-V [Focal Plane System](https://wiki.sdss.org/display/FPS). Some of the features that jaeger provide are:\n\n- Wraps the low level CAN commands for simpler use.\n- Provides a framework that is independent of the CAN interface used (by using the [python-can](https://python-can.readthedocs.io/en/master/) library).\n- Interfaces with [kaiju](https://github.com/sdss/kaiju) to provide anticollision path planning for trajectories.\n- Implements status and position update loops.\n- Provides implementations for commonly used tasks (e.g., go to position, send trajectory).\n- Interfaces with the Instrument Electronics Box modbus PLC controller.\n- Provides a TCP/IP interface to send commands and output keywords using the SDSS-standard formatting.\n\nThe code for jaeger is developed in [GitHub](https://github.com/sdss/jaeger) and can be installed using [sdss_install](https://github.com/sdss/sdss_install) or by running\n\n```console\npip install --upgrade sdss-jaeger\n```\n\nTo check out the development version do\n\n```console\ngit clone https://github.com/sdss/jaeger.git\n```\n\njaeger is developed as an [asyncio](https://docs.python.org/3/library/asyncio.html) library and a certain familiarity with asynchronous programming is required. The actor functionality (TCP/IP connection, command parser, inter-actor communication) is built on top of [CLU](https://github.com/sdss/clu).\n\n## A simple jaeger program\n\n```python\nimport asyncio\nfrom jaeger import FPS, log\n\nasync def main():\n\n # Set logging level to DEBUG\n log.set_level(0)\n\n # Initialise the FPS instance.\n fps = FPS()\n await fps.initialise()\n\n # Print the status of positioner 4\n print(fps[4].status)\n\n # Send positioner 4 to alpha=90, beta=45\n await pos.goto(alpha=90, beta=45)\n\n # Cleanly finish all pending tasks and exit\n await fps.shutdown()\n\nasyncio.run(main())\n```\n\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "Controllers for the SDSS-V FPS",
"version": "1.6.3",
"project_urls": {
"Documentation": "https://sdss-jaeger.readthedocs.io/en/latest/",
"Homepage": "https://github.com/sdss/jaeger",
"Repository": "https://github.com/sdss/jaeger"
},
"split_keywords": [
"astronomy",
" software"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "02bfd9f4b53852d0c58771ea183f4d0f4f42c3dd2c15571eb20ff5ff9a02bf3c",
"md5": "f76198b64d6ca2481b72cb0e023547a7",
"sha256": "da35de1326fa5d5b559bfa3a901c5947afbfabbe539dd6093aad34dbdc9921de"
},
"downloads": -1,
"filename": "jaeger-1.6.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f76198b64d6ca2481b72cb0e023547a7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.11,>=3.9",
"size": 189736,
"upload_time": "2024-04-01T21:45:45",
"upload_time_iso_8601": "2024-04-01T21:45:45.703469Z",
"url": "https://files.pythonhosted.org/packages/02/bf/d9f4b53852d0c58771ea183f4d0f4f42c3dd2c15571eb20ff5ff9a02bf3c/jaeger-1.6.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7e03583bd05a34d05b6f14ff342bdd2c66aed0c659f08575fa97d37d24ed085b",
"md5": "7158ab927e2ff965ad661a8c44796c1d",
"sha256": "007e6caae6c435f1a5c26ddd7a74bb0fd58e782b838af62d6a9fab7107577a5f"
},
"downloads": -1,
"filename": "jaeger-1.6.3.tar.gz",
"has_sig": false,
"md5_digest": "7158ab927e2ff965ad661a8c44796c1d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.11,>=3.9",
"size": 152608,
"upload_time": "2024-04-01T21:45:47",
"upload_time_iso_8601": "2024-04-01T21:45:47.380855Z",
"url": "https://files.pythonhosted.org/packages/7e/03/583bd05a34d05b6f14ff342bdd2c66aed0c659f08575fa97d37d24ed085b/jaeger-1.6.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-01 21:45:47",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sdss",
"github_project": "jaeger",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "jaeger"
}