SPINO (Software for exoPlanet vIsibility and Nightly Observations): a Tkinter GUI for scheduling exoplanet transit / eclipse phase-coverage observations
Project description
SPINO
Software for exoPlanet vIsibility and Nightly Observations
Overview
SPINO is a self-contained Tkinter desktop application for planning exoplanet transit / secondary-eclipse phase-coverage observations. It wraps a scientific scheduling pipeline (catalog loading, desert filtering, per-planet visibility, TSM/ESM ranking, telluric-overlap plots) behind an editable graphical interface. Every parameter that used to live in a Python config file is now a form field.
The widget/panel/theming layer is reused from
GUIBRUSHR, an earlier toolkit
by the same author; the
scheduling pipeline is bundled in src/spino/pipeline/. The whole thing is
standalone: all Python modules and data files it needs are vendored into the
package, so it runs offline out of the box.
Disclaimer. SPINO is a first-look, organizational aid, not an authoritative source. It turns a large catalog into a coherent, homogeneous shortlist so you can assemble a proposal quickly, but every value it reports (ephemerides, visibility windows, event durations, metrics) must be verified independently and carefully for each target before use.
Table of Contents
- Features
- Prerequisites
- Installation
- Usage
- Documentation
- Architecture
- Troubleshooting
- Support
- License & Attribution
- Citation
- Acknowledgments
Features
- Every config parameter is editable in the GUI: catalog source, desert / extra filters, observatory (telescope + instrument + site), proposal window, observing & event-coverage constraints, hand-entered custom planets, the telluric-overlap plot grid, and all output / landscape settings.
- One-click run of the pipeline in a background subprocess, with the live log streamed into the window and a Stop button.
- Generated PDFs / CSVs listed in the app; double-click to open them in your system viewer.
- Save / Load presets as JSON, and Reset to defaults.
- Bundled NASA Exoplanet Archive catalog cache, desert-boundary / KDE aux files, and a sky-transmission FITS, so it runs offline out of the box.
Prerequisites
-
Python 3.10+
-
Tkinter ships with most Python builds (including the conda-forge Python). There is no
tkinterpackage on PyPI, sopip install tkinterdoes not work; ifimport tkinterfails, install it with your package manager:conda install tk # conda sudo apt install python3-tk # Debian / Ubuntu sudo dnf install python3-tkinter # Fedora
Installation
Option A: Install with conda (recommended)
The conda-forge Python 3.10 already bundles Tkinter, so nothing extra is needed:
conda create -n spino_env python=3.10
conda activate spino_env
pip install spino
Option B: Install from PyPI into an existing environment
pip install spino
Option C: Clone and install in editable mode (for development)
git clone https://github.com/francescoa97outlook/SPINO
cd SPINO
python -m venv .venv && source .venv/bin/activate # or a conda env
pip install -e .
This installs the spino console entry point and all Python dependencies.
Usage
Launch the GUI
spino # console entry point (after pip install)
# or, from a source checkout:
python -m spino
Headless run (quickest smoke test, no GUI)
python -m spino.runner path/to/settings.json
Documentation
Full documentation is hosted on Read the Docs: spino-exoplanets.readthedocs.io.
The sources live in docs/source/:
| Doc | Contents |
|---|---|
| installation.md | Requirements, venv, python3-tk, editable install |
| usage.md | Tab-by-tab walkthrough, running, presets, outputs |
| configuration.md | Reference for every configuration parameter |
| architecture.md | How the GUI, runner subprocess and pipeline fit together |
| credits.md | GUIBRUSHR reuse and licensing |
To build the documentation locally:
./build_docs.sh
# then open docs/build/html/index.html
Architecture (at a glance)
GUI (app.py + panels/) --collect--> settings.json
| |
| subprocess: python -m spino.runner settings.json
v v
log pane <--stdout-- runner.py --overlay--> pipeline/phase_config
| |
+---> pipeline/phase_scheduler.main()
|
OUTPUT_DIR/*.pdf, *.csv
Troubleshooting
ModuleNotFoundError: No module named 'tkinter'
- Tkinter is not bundled on some Linux Python builds. Install it with
sudo apt install python3-tk(Debian/Ubuntu) or the equivalent for your distribution.
Import errors after installation
pip install -e . --force-reinstall
The GUI opens but the catalog is empty
- SPINO ships with a cached NASA Exoplanet Archive catalog. If you switched the catalog source, ensure network access or revert to the bundled cache.
Support
For questions, bug reports, or technical assistance, please open an issue on the GitHub repository or contact:
Francesco Amadori 📧 francesco.a97.ing@outlook.it
License & Attribution
SPINO is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License v3.0 or later (see LICENSE).
It reuses GUI widget code from GUIBRUSHR, which is GPLv3; as a derivative work SPINO is therefore also GPLv3. See docs/source/credits.md and the GUIBRUSHR project.
Citation
If you use SPINO in your research, please cite this repository: github.com/francescoa97outlook/SPINO.
Acknowledgments
SPINO relies on several open-source packages, including NumPy, SciPy, Matplotlib, pandas, Astropy, and astroquery, and reuses the GUI toolkit from GUIBRUSHR, an earlier toolkit by the same author.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spino-1.0.0.tar.gz.
File metadata
- Download URL: spino-1.0.0.tar.gz
- Upload date:
- Size: 6.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf93d95d828e3165dc896829070db28ffd179a55f34fbf9aaf57d8c3de2dea66
|
|
| MD5 |
2361b33696e049e77ae0186f7dcec6bd
|
|
| BLAKE2b-256 |
3badcc232209cd87aa39af3775290dd9a264d95b72ef12ddd82c6d5ca59504b3
|
Provenance
The following attestation bundles were made for spino-1.0.0.tar.gz:
Publisher:
publish.yml on francescoa97outlook/SPINO
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spino-1.0.0.tar.gz -
Subject digest:
cf93d95d828e3165dc896829070db28ffd179a55f34fbf9aaf57d8c3de2dea66 - Sigstore transparency entry: 2212529223
- Sigstore integration time:
-
Permalink:
francescoa97outlook/SPINO@fe12a73a36f7723a47f75a4e5eaff0dd33029487 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/francescoa97outlook
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fe12a73a36f7723a47f75a4e5eaff0dd33029487 -
Trigger Event:
push
-
Statement type:
File details
Details for the file spino-1.0.0-py3-none-any.whl.
File metadata
- Download URL: spino-1.0.0-py3-none-any.whl
- Upload date:
- Size: 6.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
edf6ed571c13525c824ff6401841d1c79e86e3c281dec78de9f3a7a984c1c049
|
|
| MD5 |
9872a5edc3191d64f9ee7469e4a9a7da
|
|
| BLAKE2b-256 |
117c1b3b8dfe95ab537814421f50d9116d389d33b9402437e5a0cf273e370120
|
Provenance
The following attestation bundles were made for spino-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on francescoa97outlook/SPINO
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spino-1.0.0-py3-none-any.whl -
Subject digest:
edf6ed571c13525c824ff6401841d1c79e86e3c281dec78de9f3a7a984c1c049 - Sigstore transparency entry: 2212529251
- Sigstore integration time:
-
Permalink:
francescoa97outlook/SPINO@fe12a73a36f7723a47f75a4e5eaff0dd33029487 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/francescoa97outlook
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fe12a73a36f7723a47f75a4e5eaff0dd33029487 -
Trigger Event:
push
-
Statement type: