Skip to main content

SPINO (Software for exoPlanet vIsibility and Nightly Observations): a Tkinter GUI for scheduling exoplanet transit / eclipse phase-coverage observations

Project description

SPINO logo

SPINO

Software for exoPlanet vIsibility and Nightly Observations

Source on GitHub License: GPL v3 Documentation Status PyPI version


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

  • 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 tkinter package on PyPI, so pip install tkinter does not work; if import tkinter fails, 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

spino-0.2.5.tar.gz (6.7 MB view details)

Uploaded Source

Built Distribution

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

spino-0.2.5-py3-none-any.whl (6.8 MB view details)

Uploaded Python 3

File details

Details for the file spino-0.2.5.tar.gz.

File metadata

  • Download URL: spino-0.2.5.tar.gz
  • Upload date:
  • Size: 6.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for spino-0.2.5.tar.gz
Algorithm Hash digest
SHA256 941e40bb5515e2c87c02772d7fdd4b8fad9701661659d3aff60fd481b3b7c687
MD5 76a8ad362b5ff8ae2cb30b154abc3262
BLAKE2b-256 5757ef31c0925f71acad30071e76be306d8a1c3ac5a5f127d58e7bf3212063e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for spino-0.2.5.tar.gz:

Publisher: publish.yml on francescoa97outlook/SPINO

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file spino-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: spino-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for spino-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e2ce78faff63b45500a629133bc8ce94fbba847cd06c27853665b214bcd026f2
MD5 edd563f47be34de252ad2ad6ad14231d
BLAKE2b-256 65571e39aaa51317c7ac5c79471a2847f3d592684647b55a4219b26cf065fe94

See more details on using hashes here.

Provenance

The following attestation bundles were made for spino-0.2.5-py3-none-any.whl:

Publisher: publish.yml on francescoa97outlook/SPINO

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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