Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
577 changes: 577 additions & 0 deletions lsst/solar_system/0_lsst_sso_statistics.ipynb

Large diffs are not rendered by default.

656 changes: 656 additions & 0 deletions lsst/solar_system/1_ssobject.ipynb

Large diffs are not rendered by default.

1,058 changes: 1,058 additions & 0 deletions lsst/solar_system/2_ssoft.ipynb

Large diffs are not rendered by default.

539 changes: 539 additions & 0 deletions lsst/solar_system/3_fast_rotator.ipynb

Large diffs are not rendered by default.

21 changes: 21 additions & 0 deletions lsst/solar_system/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Fink Solar System tutorials

These tutorials have been given during the [LSST@EUROPE 8](https://lsst-europe8.hu/index.php) conference on 2026/10/01. Slides can be found [online](https://docs.google.com/presentation/d/1ZXTh_gdrZ6j1hKZou-27jggY74BlEmugOSdWhifgzUk/edit?usp=sharing).

- [0_lsst_sso_statistics.ipynb](0_lsst_sso_statistics.ipynb): play with stream statistics
- [1_ssobject.ipynb](1_ssobject.ipynb): how to query object data
- [2_ssoft.ipynb](2_ssoft.ipynb): how to query SSO Fink Table (SSOFT)
- [3_fast_rotator.ipynb](3_fast_rotator.ipynb): Characterizing a Super-fast Rotating Asteroid in Rubin Observatory First Alerts with Fink tools.

## Running the notebooks

Python 3.10+ is recommended. We suggest to use `jupyter-lab` in a Python virtual environment:

```bash
# Assuming you are on Linux
python3 -m venv venv
source venv/bin/activate

pip install -r requirements.txt
jupyter-lab
```
4 changes: 4 additions & 0 deletions lsst/solar_system/lint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

ruff check --fix .
ruff format .
21 changes: 21 additions & 0 deletions lsst/solar_system/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Numeric
pandas<3.0.0
numpy
astropy

# Visualisation
matplotlib

# Core
ruff
requests

# Notebooks
jupyter
jupyterlab
jupyterlab_myst
ipympl

# Phase curve & period estimation
space-phunk
nifty_ls
56 changes: 56 additions & 0 deletions lsst/solar_system/sso_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
from astropy.time import Time

UNIQUE_BANDS = ["u", "g", "r", "i", "z", "y"]
MARKERS = {
"u": "o",
"g": "<",
"r": ">",
"i": "s",
"z": "*",
"y": "p",
}

COLORS = {
"u": "#15284f",
"g": "#626d84",
"r": "#afb2b9",
"i": "#dbbeb2",
"z": "#e89070",
"y": "#f5622e",
}


def plot_lightcurve_allbands(time, flux, fluxErr, bands, ax, label=""):
"""Wrapper to plot all filter bands"""
for band in UNIQUE_BANDS:
mask = bands == band
if mask.sum() == 0:
continue
ax.errorbar(
Time(time[mask], format="mjd", scale="tai").datetime,
flux[mask],
fluxErr[mask],
color=COLORS[band],
marker=MARKERS[band],
label=f"{band} band",
ls="",
)


def plot_lightcurve_singleband(
time, flux, fluxErr, bands, ax, single_band, label="", color="C0", marker="o"
):
"""Wrapper to plot a single band"""
mask = bands == single_band
if mask.sum() == 0:
print(f"No data for band {single_band}")
return
ax.errorbar(
time[mask],
flux[mask],
fluxErr[mask],
color=color,
marker=marker,
label=label,
ls="",
)
Loading