Die Sternwarte Höfingen in der Presse
Ordnung im FITS-Chaos: Mehrere Teleskope, eine Datenstruktur
/0 Kommentare/in Allgemein/von Hagen GlötterOrdnung im FITS-Chaos: Mehrere Teleskope, eine Datenstruktur
1. Welches Problem löst das Programm?
Wer in einer Sternwarte oder im eigenen Garten mehrere Teleskope und Kameras betreibt, kennt das Problem: Ein Dwarf, ein Takahashi Epsilon 160 mit ASI2600MC, ein ASA 10N mit ASI6200MM, vielleicht noch ein Seestar S50pro. Jedes Gerät, jede Aufnahmesoftware und jede Nacht legt die Dateien anders ab:
- N.I.N.A. speichert pro Nacht in Ordnern wie
LIGHT,DARK,FLAT,BIAS,SNAPSHOT. - Dasselbe Objekt heißt mal
M31, malM 31,m-31oderMessier 31. - Dasselbe Teleskop taucht als
ASA-10NundASA10auf. - Dateien anderer Programme (z. B. SharpCap) haben abweichende FITS-Header.
- Nach mehreren Kopier- und Backup-Läufen liegen identische Dateien mehrfach herum.
- Für die spätere Bearbeitung (z. B. PixInsight, WBPP) braucht man aber pro Objekt, Teleskop und Kamera eine saubere Struktur mit getrennten Light-, Dark-, Flat- und Bias-Ordnern.
Von Hand ist das bei tausenden Dateien fehleranfällig und mühsam. Diese Scripts lesen die FITS-Header aus, sortieren alles automatisch in eine einheitliche Ordnerstruktur und vergeben deterministische Dateinamen:
2025_02_M45-Plejaden_Takahashi-Epsilon160-ED_ASI2600MC-Pro/
├── LIGHT/
├── DARK/
├── FLAT/
├── BIAS/
├── PROCESSING/
├── PRO/
└── FINAL/
Zusätzlich gilt: Es wird nichts überschrieben, nichts gelöscht, und jeder Lauf schreibt eine Logdatei. Mit --dry-run lässt sich vorher prüfen, was passieren würde.
2. Was macht welches Script?
Alle Scripts liegen im Repository und werden mit Python aufgerufen.
hg-nina-fits-organizer.py – das Hauptwerkzeug
Sortiert und benennt FITS-Dateien anhand ihrer Header um. Vereinheitlicht Objekt- und Teleskopnamen (M 31 wird zu M31-Andromedagalaxie), erkennt Frame-Typen, ordnet Begleitdateien und Vorschaubilder zu und räumt leere Quellordner auf.
# Erst nur anschauen, was passieren würde
python hg-nina-fits-organizer.py /pfad/zu/nina --dry-run
# Echtlauf
python hg-nina-fits-organizer.py /pfad/zu/nina
# Nur bestehende Zielordner auf das aktuelle Namensschema bringen
python hg-nina-fits-organizer.py /pfad/zu/nina --rename-only --dry-run
Mit --verbose werden auch unveränderte Dateien einzeln gelistet.
hg-remove-duplicates.py – Duplikate aufspüren
Findet inhaltlich identische FITS-Dateien (Dateiname egal, Vergleich per SHA-256) und verschiebt die überzähligen Kopien in den Ordner _DUPLICATES_REMOVED/<Zeitstempel>/. Gelöscht wird nichts.
python hg-remove-duplicates.py /pfad/zu/nina --dry-run
python hg-remove-duplicates.py /pfad/zu/nina
hg-analyse-fits-files.py – eine Datei untersuchen
Liest den Header einer einzelnen FITS-Datei und gibt Aufnahmedaten sowie Bildstatistiken aus. Die Datei wird nicht verändert.
python hg-analyse-fits-files.py /pfad/zu/bild_0001.fits
hg-set-filter.py – FILTER-Header setzen
Setzt den Header-Wert FILTER in allen FITS-Dateien eines Ordners (z. B. für Kameras ohne Filterrad). Erlaubt sind B, G, L, R, RGB, NONE, NOFILTER; Standard ist NOFILTER. Achtung: Die Dateien werden direkt überschrieben, es gibt kein Backup.
python hg-set-filter.py /pfad/zu/LIGHT
python hg-set-filter.py /pfad/zu/LIGHT RGB
3. HowTo für Einsteiger
Ziel: Das Script läuft auf einem normalen Rechner (Windows, macOS oder Linux). Alle Schritte werden nur einmal gebraucht.
Schritt 1: Programme installieren
| Programm | Download |
|---|---|
| Python 3.10 oder neuer | https://www.python.org/downloads/ (unter Windows „Add python.exe to PATH“ anhaken) |
| Visual Studio Code | https://code.visualstudio.com/ |
| GitHub Desktop | https://desktop.github.com/ |
In VS Code anschließend die Erweiterung Python (von Microsoft) installieren (Symbol „Extensions“ links in der Leiste).
Schritt 2: Projekt herunterladen
- GitHub Desktop starten, mit dem GitHub-Konto anmelden.
File→Clone repository…→ TabURL, die Adresse des Repositoriespython-nina-fits-organizereinfügen und einen Zielordner wählen.Open in Visual Studio Codeklicken.
Schritt 3: Virtuelle Umgebung einrichten
In VS Code über Terminal → New Terminal ein Terminal öffnen und im Projektordner ausführen:
Windows (PowerShell):
.\make_venv.bat
.\astro_env_win\Scripts\Activate.ps1
macOS / Linux:
./make_venv.sh
source astro_env_mac/bin/activate # Linux: astro_env_linux/bin/activate
Das Setup erstellt eine eigene Python-Umgebung (venv) und installiert die benötigten Pakete (astropy, numpy). Am Prompt erscheint danach der Name der Umgebung, z. B. (astro_env_mac).
Falls PowerShell das Aktivieren blockiert, einmalig ausführen: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned.
Schritt 4: Script starten
Immer zuerst mit --dry-run testen:
python hg-nina-fits-organizer.py "D:\Bilder\NINA" --dry-run
Sieht die Ausgabe gut aus, ohne --dry-run wiederholen. Pfade mit Leerzeichen in Anführungszeichen setzen.
Später: Updates holen
In GitHub Desktop auf Fetch origin und dann Pull origin klicken. Das Terminal muss danach wieder mit der Umgebung aus Schritt 3 aktiviert werden (nur der Activate-Befehl, nicht das Setup).
Tipp: Vor dem ersten Echtlauf eine Sicherungskopie der Daten anlegen oder zunächst mit einem kleinen Testordner arbeiten.
Neueste Beiträge
- Ordnung im FITS-Chaos: Mehrere Teleskope, eine Datenstruktur
- Totale Sonnenfinsternis 12.08.26 – Beobachtet in Spanien
- Begeisterung bei Sonnenfinsternis und Langer Nacht der Astronomie
- Impressionen von der Sonnenfinsternis am 12.08.2026
- Sonnenfinsternis und Lange Nacht der Astronomie am Mi, 12. Aug. 2026
Kategorien
Nächste Veranstaltungen
- 23/10/2026
- 30/10/2026
- 31/10/2026
- 01/11/2026
