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.3.0.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.3.0-py3-none-any.whl (6.9 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: spino-0.3.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

Hashes for spino-0.3.0.tar.gz
Algorithm Hash digest
SHA256 469f0ac59ccab069001d21753d15ddee4375cca8b2303022b1688aa1a2e85420
MD5 2efde33448b5401233054afcaf066384
BLAKE2b-256 c815c628b43a75c94b7370a92b35bba97df2ed3d9afe7458cfb09c032034d3e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for spino-0.3.0.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.3.0-py3-none-any.whl.

File metadata

  • Download URL: spino-0.3.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

Hashes for spino-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 46914517fbda909b7458606c89b30a0d8142e542e31dbe8d6483322cfdbc9b0b
MD5 efe5bdf470b7e0211d2be6112e74c908
BLAKE2b-256 da15e033c7e795cc0c25284f9f9c7fce41133848d70761c18374dc7647b3618f

See more details on using hashes here.

Provenance

The following attestation bundles were made for spino-0.3.0-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