English | Português
Modern asteroid detection software for citizen science and educational use. Built for Linux, compatible with the IASC / MPC workflow. Outputs ADES 2022 format reports.
⚠️ Beta software — not yet validated with real observatory FITS files. All features are implemented and the test suite passes on 11 Linux distributions, but end-to-end validation with real telescope imagery has not been performed. Results (astrometry, photometry, ADES reports) should be independently verified before submission to the MPC. Feedback and real-world test reports are very welcome.
"To my son Guga, a Linux user like me who had no good option for finding asteroids."
- FITS viewer with zoom, pan, invert, flip horizontal/flip vertical
- Display stretch: Linear, Logarithmic, Square-root, Asinh, Histogram Equalization
- False-colour LUTs: Grayscale, Hot, Cool, Viridis
- NaN pixels rendered in a distinct colour
- Multi-image blink comparison with sharpening (Laplacian / Unsharp-mask)
- Thumbnail navigator for rapid frame selection
- Background and range dialog with interactive stretch selector
- Histogram panel with Gaussian sky-noise fit
- 2-D power spectrum (FFT) for periodic noise diagnosis
- FITS cube (NAXIS3 > 3) temporal animation
- 1-D spectrum plot (NAXIS=1 FITS files) via Qt6::Charts
- FITS (
.fits,.fit,.fts) — single HDU, multi-HDU, RGB (NAXIS3=3), temporal cubes - SER video (
.ser) — first frame - XISF — PixInsight (
.xisf) - TIFF 16-bit, PNG, BMP, JPEG
- ZIP archives — automatic extraction on open
- TAR.GZ, TAR.BZ2, TAR.XZ, 7Z, RAR — via libarchive (optional)
- HDU navigation bar for multi-extension FITS files
- Automated star detection (SEP / Source Extractor)
- Plate solving online via astrometry.net
- Plate solving offline via ASTAP
- Full WCS pipeline: TAN, SIN, ARC, STG, CAR, MER, GLS/SFL, AIT (Calabretta & Greisen 2002)
- Write WCS solution back to FITS header
- VizieR star catalog overlay (UCAC4, Gaia DR3)
- Local star catalog from FITS BINTABLE (offline, optional)
- Ecliptic and galactic plane overlay with extinction warning
- Atmospheric refraction correction (topocentric, ignores space telescopes)
- ICRS → CIRS → topocentric conversion for sub-arcsecond ADES residuals (annual aberration, precession J2000→date, nutation)
- Background model by sliding-median filter (tile grid + sigma-clipping)
- Bad pixel mask with nearest-neighbour interpolation
- Streak/trail detection by blob elongation (fast asteroids, satellites)
- PSF fitting: elliptical Gaussian with Levenberg–Marquardt
- ClumpFind: contour-based blended source separation
- Aperture photometry (single and multi-aperture)
- Differential photometry with zero-point calibration
- Airmass correction (extinction coefficient)
- Light curve dialog
- Growth curve dialog
- Region statistics panel
- Moving Object Detection (MOD) across ≥3 images
- Track & Stack with asteroid-tracking alignment
- Image stacker: Add, Average, Median, Sigma-clipped; sub-pixel FFT registration
- Bias, dark, flat-field calibration
- Calibration wizard (step-by-step)
- Master dark / master flat builder
- Drag-and-drop calibration frames
- ADES 2022 XML and PSV report generation
<sys>ICRF</sys>flag for precise reference frame annotation- MPC report preview dialog with HTML rendering
- MPC direct submission endpoint
- Solar System Body identification via IMCCE SkyBoT
- JPL Horizons ephemeris queries
- Magnitude band selector, proper motion, observer site from FITS headers
- Export image as JPEG/PNG
- Import DAOPHOT/SExtractor FITS BINTABLE as detected-star overlay
- Import IRAF/Astropy reduction tables (XCENTER/YCENTER, xcentroid/ycentroid, sky coords)
- Export/import school configuration
- Save project (
.gusJSON format)
- Day / Night / Auto UI theme (Ctrl+Shift+T)
- Full bilingual interface: English and Brazilian Portuguese (1007+ strings)
- School workflow: step-by-step guided mode for students
- Toast notifications (non-blocking)
- Undo/Redo stack
- Secure API key storage (Qt Keychain, optional)
- Session comparison dialog
astrometrica/
├── cmake/
│ ├── dependencies.cmake # Third-party library detection (pkg-config + FetchContent)
│ ├── audit.cmake # Numerical audit targets (38.1–38.5)
│ └── valgrind.supp # Valgrind suppressions for Qt/glibc noise
├── docs/
│ └── technical-reference.md # Technical reference (WCS, refraction, PSF, ADES…)
├── i18n/
│ ├── astrofind_en.ts # English translation source
│ ├── astrofind_pt_BR.ts # Brazilian Portuguese translation source
│ ├── astrofind_en.qm # Compiled English strings
│ └── astrofind_pt_BR.qm # Compiled Portuguese strings
├── originals/
│ └── CCfits.tar.gz # CCfits 2.7 source archive — used at build time only
├── resources/
│ ├── help/
│ │ ├── help_en.html # Built-in help — English
│ │ └── help_pt_br.html # Built-in help — Portuguese
│ ├── icons/
│ │ ├── astrofind-16.png # Application icon 16×16
│ │ ├── astrofind-32.png
│ │ ├── astrofind-48.png
│ │ ├── astrofind-64.png
│ │ ├── astrofind-128.png
│ │ ├── astrofind-256.png
│ │ ├── astrofind-512.png
│ │ └── astrofind.svg # Vector source
│ └── resources.qrc # Qt resource manifest
├── src/
│ ├── core/ # Business logic — no Qt UI dependencies
│ │ ├── AdesReport.cpp/h
│ │ ├── ApiKeyStore.cpp/h
│ │ ├── AstapSolver.cpp/h
│ │ ├── AstrometryClient.cpp/h
│ │ ├── Astronomy.cpp/h
│ │ ├── Calibration.cpp/h
│ │ ├── CatalogClient.cpp/h
│ │ ├── Centroid.cpp/h
│ │ ├── Ephemeris.cpp/h
│ │ ├── ExportImage.cpp/h
│ │ ├── FitsImage.cpp/h
│ │ ├── FitsTableReader.cpp/h
│ │ ├── GusProject.cpp/h
│ │ ├── HorizonsClient.cpp/h
│ │ ├── ImageLoader.cpp/h
│ │ ├── ImageSession.cpp/h
│ │ ├── ImageStacker.cpp/h
│ │ ├── KooEngine.cpp/h
│ │ ├── Measurement.h
│ │ ├── MovingObjectDetector.cpp/h
│ │ ├── MpcOrb.cpp/h
│ │ ├── MpcSubmit.cpp/h
│ │ ├── ObservatoryDatabase.h
│ │ ├── Overlay.h
│ │ ├── Photometry.cpp/h
│ │ ├── SessionComparator.cpp/h
│ │ ├── Spectrum1D.cpp/h
│ │ ├── StarDetector.cpp/h
│ │ └── CMakeLists.txt
│ ├── ui/ # Qt6 widgets — depends on astrofind_core
│ │ ├── AboutDialog.cpp/h
│ │ ├── AppIcons.cpp/h
│ │ ├── BackgroundRangeDialog.cpp/h
│ │ ├── BlinkWidget.cpp/h
│ │ ├── CalibrationPanel.cpp/h
│ │ ├── CalibrationWizard.cpp/h
│ │ ├── DockTitleBar.cpp/h
│ │ ├── EditImageParametersDialog.cpp/h
│ │ ├── FitsImageView.cpp/h
│ │ ├── FitsSubWindow.cpp/h
│ │ ├── GrowthCurveDialog.cpp/h
│ │ ├── HelpDialog.cpp/h
│ │ ├── HistogramDialog.cpp/h
│ │ ├── HorizonsQueryDialog.cpp/h
│ │ ├── ImageCatalogTable.cpp/h
│ │ ├── LightCurveDialog.cpp/h
│ │ ├── LogPanel.cpp/h
│ │ ├── MainWindow.cpp/h
│ │ ├── MainWindow_io.cpp
│ │ ├── MainWindow_measurement.cpp
│ │ ├── MainWindow_p.h
│ │ ├── MainWindow_reduction.cpp
│ │ ├── MainWindow_settings.cpp
│ │ ├── MasterFrameDialog.cpp/h
│ │ ├── MeasurementTable.cpp/h
│ │ ├── PowerSpectrumDialog.cpp/h
│ │ ├── RegionStatsPanel.cpp/h
│ │ ├── ReportPreviewDialog.cpp/h
│ │ ├── SelectMarkingsDialog.cpp/h
│ │ ├── SessionCompareDialog.cpp/h
│ │ ├── SessionInfoBar.cpp/h
│ │ ├── SettingsDialog.cpp/h
│ │ ├── SetupWizard.cpp/h
│ │ ├── SpectrumDialog.cpp/h
│ │ ├── Theme.cpp/h
│ │ ├── ThumbnailBar.cpp/h
│ │ ├── Toast.cpp/h
│ │ ├── VerificationDialog.cpp/h
│ │ ├── WorkflowPanel.cpp/h
│ │ └── CMakeLists.txt
│ ├── CMakeLists.txt
│ └── main.cpp
├── tests/ # Unit / integration tests — optional for app-only builds
│ ├── test_ades_report.cpp # ADES XML/PSV generation, ICRS flag (10 cases)
│ ├── test_astronomy.cpp # Refraction, aberration, precession, nutation, CIRS (17 cases)
│ ├── test_calibration.cpp # Dark/flat/bias, background, bad pixels (8 cases)
│ ├── test_calibration_panel.cpp # CalibrationPanel widget state (9 cases) [UI]
│ ├── test_centroid.cpp # Moments, Gaussian PSF, elliptical LM PSF (6 cases)
│ ├── test_fits_functional.cpp # Multi-HDU, multi-ext RGB, SER, XISF (10 cases)
│ ├── test_fits_loader.cpp # FITS open, metadata, invalid files (2 cases)
│ ├── test_image_session.cpp # Session create/add/persist (3 cases)
│ ├── test_image_stacker.cpp # Add/Average/Median, FFT align, Track&Stack (8 cases)
│ ├── test_moving_object_detector.cpp # Tracklets, tolerance, SNR (5 cases)
│ ├── test_mpc_orb.cpp # Parsing, lookup, update (4 cases)
│ ├── test_photometry.cpp # Differential photometry, zero-point, growth curve (18 cases)
│ ├── test_robustness.cpp # Degenerate images, overflow, extremes, NaN (22 cases)
│ ├── test_session_signals.cpp # MainWindow/WorkflowPanel/BlinkWidget signals (12 cases) [UI]
│ ├── test_settings_dialog.cpp # SettingsDialog load/save/reset (2 cases) [UI]
│ ├── test_star_detector.cpp # Detection, threshold, star limit (3 cases)
│ └── CMakeLists.txt
├── astrofind.desktop # XDG desktop entry (Linux install)
├── CHANGELOG.md
├── CLAUDE.md # AI assistant instructions and feature backlog
├── CMakeLists.txt # Root build configuration
├── CONTRIBUTING.md
├── INSTALL.md # Per-distro installation instructions
├── LICENSE # PolyForm Noncommercial 1.0.0
└── README.md
Note on
originals/: this directory contains onlyCCfits.tar.gz, a C++ FITS library used at build time. It is not needed to run the application and can be ignored by end users. CMake extracts it automatically during configuration.Note on
tests/: the test suite (116 core + 23 UI cases) is part of the repository but is not required to build the application. See Building for how to compile the app only.
| File | Description |
|---|---|
AdesReport.cpp/h |
ADES 2022 XML and PSV report generation; <sys>ICRF</sys> annotation |
ApiKeyStore.cpp/h |
API key credential storage (Qt Keychain when available, QSettings fallback) |
AstapSolver.cpp/h |
ASTAP offline plate solver — subprocess wrapper |
AstrometryClient.cpp/h |
astrometry.net REST client (async, QNetworkAccessManager) |
Astronomy.cpp/h |
Atmospheric refraction, annual aberration, precession J2000→date, nutation, ICRS→CIRS→topocentric, ecliptic/galactic coordinates, Julian Date |
Calibration.cpp/h |
Bias/dark/flat calibration pipeline; bad pixel mask + interpolation; background subtraction |
CatalogClient.cpp/h |
VizieR TAP query (UCAC4, Gaia DR3); SQLite local cache |
Centroid.cpp/h |
Moment centroids; Gaussian PSF; elliptical PSF with Levenberg–Marquardt |
Ephemeris.cpp/h |
Ephemeris calculations (position of Solar System bodies) |
ExportImage.cpp/h |
Export FITS image data as JPEG/PNG via Qt |
FitsImage.cpp/h |
FITS file loader (cfitsio); PlateSolution WCS pipeline (all 8 projections); loadFitsCube() for temporal cubes; loadSpectrum1D() for 1-D spectra |
FitsTableReader.cpp/h |
FITS BINTABLE reader (CCfits); importDaophotTable() (SExtractor/DAOPHOT); readLocalCatalogTable() (offline catalogs); importReductionTable() (IRAF/Astropy) |
GusProject.cpp/h |
.gus project file save/load (nlohmann/json) |
HorizonsClient.cpp/h |
JPL Horizons API client for ephemeris queries |
ImageLoader.cpp/h |
Unified loader dispatching to FITS/SER/XISF/Qt formats by extension |
ImageSession.cpp/h |
Multi-image session container with metadata |
ImageStacker.cpp/h |
Add / Average / Median / Sigma-clipped stacking; FFT sub-pixel alignment; Track & Stack |
KooEngine.cpp/h |
Known Object Overlay using IMCCE SkyBoT REST API |
Measurement.h |
MeasurementResult data structure (centroid, photometry, astrometry) |
MovingObjectDetector.cpp/h |
Moving object detection across ≥3 images; tracklet linking |
MpcOrb.cpp/h |
MPCORB.DAT parser and lookup; incremental update |
MpcSubmit.cpp/h |
MPC direct report submission (HTTP POST) |
ObservatoryDatabase.h |
Static MPC observatory code + coordinates database |
Overlay.h |
DetectedStar, CatalogStar, KooObject data structures |
Photometry.cpp/h |
Aperture photometry; differential zero-point; multi-aperture; airmass correction |
SessionComparator.cpp/h |
Session comparison (photometry residuals, star matching across sessions) |
Spectrum1D.cpp/h |
1-D spectrum loader from FITS NAXIS=1 files; WCS axis computation |
StarDetector.cpp/h |
SEP (Source Extractor) integration; streak detection; ClumpFind blended sources |
| File | Description |
|---|---|
AboutDialog.cpp/h |
About / license dialog |
AppIcons.cpp/h |
All application icons drawn programmatically with QPainter |
BackgroundRangeDialog.cpp/h |
Interactive stretch selector (display min/max + transfer function) |
BlinkWidget.cpp/h |
Multi-frame blink widget; Laplacian / Unsharp-Mask sharpening toggle |
CalibrationPanel.cpp/h |
Dark/flat/bias status dock panel |
CalibrationWizard.cpp/h |
Step-by-step calibration frame wizard |
DockTitleBar.cpp/h |
Custom styled dock title bar |
EditImageParametersDialog.cpp/h |
Manual override of image header parameters (RA, Dec, JD, scale…) |
FitsImageView.cpp/h |
FITS image rendering widget (OpenGL, zoom, pan, overlay painting, colour LUTs) |
FitsSubWindow.cpp/h |
MDI child wrapping FitsImageView; HDU navigation bar; context menu |
GrowthCurveDialog.cpp/h |
Aperture growth curve plot |
HelpDialog.cpp/h |
Bilingual built-in help (HTML) |
HistogramDialog.cpp/h |
Pixel histogram with Gaussian sky-noise fit |
HorizonsQueryDialog.cpp/h |
JPL Horizons ephemeris query UI |
ImageCatalogTable.cpp/h |
Reference star catalog table (loaded images tab) |
LightCurveDialog.cpp/h |
Light curve plot across session images |
LogPanel.cpp/h |
Scrollable log panel (info / warning / error) |
MainWindow.cpp/h |
Main application window; menus; toolbar; dock layout |
MainWindow_io.cpp |
File I/O: load images, calibration frames, project save/load, archive extraction (ZIP + libarchive), spectrum/cube handling, DAOPHOT/IRAF import |
MainWindow_measurement.cpp |
Measurement mode: pixel click → centroid + photometry pipeline |
MainWindow_p.h |
Private shared header included by all MainWindow_*.cpp translation units |
MainWindow_reduction.cpp |
Data reduction: star detection, plate solving, VizieR/local catalog, KOO overlay |
MainWindow_settings.cpp |
Settings load/save/apply; observer location; camera parameters |
MasterFrameDialog.cpp/h |
Master dark / master flat builder dialog |
MeasurementTable.cpp/h |
Measurement results table (RA, Dec, mag, errors) |
PowerSpectrumDialog.cpp/h |
2-D power spectrum (fftw3 r2c, Hann window, fftshift, frequency tooltip) |
RegionStatsPanel.cpp/h |
Floating region statistics overlay (mean, median, σ, min/max) |
ReportPreviewDialog.cpp/h |
ADES/MPC report preview with HTML rendering and submission buttons |
SelectMarkingsDialog.cpp/h |
Object overlay visibility selector |
SessionCompareDialog.cpp/h |
Side-by-side session photometry comparison |
SessionInfoBar.cpp/h |
Top status bar showing current session step and image counts |
SettingsDialog.cpp/h |
Full settings dialog (observer, camera, connections, detection, display, legacy) |
SetupWizard.cpp/h |
First-run setup wizard (API key, site location, pixel scale) |
SpectrumDialog.cpp/h |
1-D spectrum plot (Qt6::Charts, dark theme, wavelength/flux axes) |
Theme.cpp/h |
Day / Night / Auto theme engine (palette + stylesheet) |
ThumbnailBar.cpp/h |
Bottom thumbnail strip for multi-image navigation |
Toast.cpp/h |
Transient non-blocking notification toasts (success/info/warning/error) |
VerificationDialog.cpp/h |
Measurement verification: star match, residuals, known object check |
WorkflowPanel.cpp/h |
Step-by-step guided workflow panel (school mode) |
| File | Description |
|---|---|
main.cpp |
Application entry point; locale, translation loader, QApplication setup |
| Dependency | Version | Notes |
|---|---|---|
| Qt | ≥ 6.4 | Widgets, OpenGL, Charts, Concurrent, Network, Sql, Xml |
| cfitsio | any | FITS I/O (system package or FetchContent) |
| FFTW3 | any | FFT for image stacking and power spectrum |
| SEP | ≥ 1.2 | Source Extractor C library (bundled via FetchContent) |
| spdlog | ≥ 1.11 | Logging (bundled via FetchContent) |
| nlohmann/json | ≥ 3.11 | Project file serialisation (bundled) |
| CMake | ≥ 3.20 | Build system |
| C++ | 23 | Compiler: GCC ≥ 13 or Clang ≥ 16 |
| Dependency | Notes |
|---|---|
| QuaZip + Qt6Core5Compat | ZIP archive extraction; dnf install qt6-qt5compat-devel |
| libarchive | TAR.GZ/BZ2/XZ, 7Z, RAR extraction; dnf install libarchive-devel |
| Qt6Keychain | Secure API key storage; dnf install qtkeychain-qt6-devel libsecret-devel |
| Qt6LinguistTools | Compile .ts translations; dnf install qt6-linguist |
| ASTAP | Offline plate solver; download from hnsky.org |
curl -LO https://codeberg.org/petrinhu/astrofind/releases/download/v0.9.0-beta/install.sh
chmod +x install.sh
./install.shAuto-detects your distribution, downloads the correct package, installs dependencies, and sets up desktop integration. Bilingual (EN/PT-BR).
Fedora / RHEL / Rocky Linux
curl -LO https://codeberg.org/petrinhu/astrofind/releases/download/v0.9.0-beta/astrofind-0.9.0-0.beta1.x86_64.rpm
sudo rpm -i astrofind-0.9.0-0.beta1.x86_64.rpm
sudo dnf install qt6-qtbase qt6-qtcharts qt6-qtopengl cfitsio fftw libarchiveUbuntu / Debian / Mint / Pop!_OS / Zorin
curl -LO https://codeberg.org/petrinhu/astrofind/releases/download/v0.9.0-beta/astrofind_0.9.0~beta-1_amd64.deb
sudo apt-get install ./astrofind_0.9.0~beta-1_amd64.debArch Linux / Manjaro
curl -LO https://codeberg.org/petrinhu/astrofind/releases/download/v0.9.0-beta/astrofind-0.9.0-beta-arch-PKGBUILD.tar.gz
tar xzf astrofind-0.9.0-beta-arch-PKGBUILD.tar.gz
cd astrofind-arch && makepkg -siFor all per-distro commands and build-from-source instructions see INSTALL.md.
For per-distro installation commands see INSTALL.md.
# Configure and build (application only)
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --target AstroFind -j$(nproc)
# Run
./build/bin/AstroFind
# Build everything including tests (optional)
cmake --build build -j$(nproc)Optional: install to system (Linux FHS)
sudo cmake --install buildThis installs the binary to /usr/local/bin, the .desktop file to
/usr/local/share/applications, and icons to the hicolor icon theme.
# Core tests (116 cases)
./build/bin/astrofind_tests
# UI tests (23 cases — requires display)
./build/bin/astrofind_ui_testsPolyForm Noncommercial License 1.0.0 — free for personal, educational, and non-commercial use. Copyright (c) 2024–2026 Petrus Silva Costa.
AstroFind was inspired by and learned from these excellent projects:
| Project | Author(s) | What we learned |
|---|---|---|
| Astrometrica | Herbert Raab | Primary UX inspiration — the standard Windows tool for IASC/MPC work |
| find_orb | Bill Gray (Project Pluto) | ADES output format, MPC submission, orbit determination |
| umbrella2 | CSCF | Moving object detection algorithms, tracklet linking |
| Siril | Free-Astro team | PSF fitting, background extraction, photometry pipeline |
| astrometry.net | Dustin Lang et al. | Plate-solving REST API used directly |
| IRAF | NOAO / community | Aperture photometry concepts and table column conventions |
| GDL | GDL team | PSF elliptical / MPFIT, sliding median, FFT algorithms |
| NEMO | P. Teuben | Bad pixel masks, blob/streak, ClumpFind, histogram, Laplacian, WCS |
| Boost.Astronomy | GSoC 2019 | Atmospheric refraction, CIRS/ADES, ecliptic/galactic overlays |
Libraries used: Qt6 · cfitsio · CCfits 2.7 · FFTW3 · SEP · spdlog · nlohmann/json · Catch2 · QuaZip · qt-keychain · libarchive
Software moderno de detecção de asteroides para ciência cidadã e uso educacional. Desenvolvido para Linux, compatível com o fluxo de trabalho IASC / MPC. Gera relatórios no formato ADES 2022.
⚠️ Software em fase beta — ainda não validado com arquivos FITS reais de observatório. Todas as funcionalidades estão implementadas e a suite de testes passa em 11 distribuições Linux, mas a validação ponta-a-ponta com imagens reais de telescópio ainda não foi realizada. Os resultados (astrometria, fotometria, relatórios ADES) devem ser verificados de forma independente antes de qualquer envio ao MPC. Relatos de testes com dados reais são muito bem-vindos.
"Para meu filho Guga, usuário de Linux como eu que estava sem uma boa opção para buscar asteroides."
- Visualizador FITS com zoom, pan, inverter, espelhar horizontal/vertical
- Esticamento de display: Linear, Logarítmico, Raiz Quadrada, Asinh, Equalização de Histograma
- LUTs de falsa cor: Escala de Cinza, Hot, Cool, Viridis
- Pixels NaN renderizados em cor distinta
- Comparação de múltiplas imagens em blink com realce (Laplaciano / Unsharp-mask)
- Barra de miniaturas para seleção rápida de frames
- Diálogo de fundo e alcance com seletor de esticamento interativo
- Painel de histograma com ajuste gaussiano de ruído de céu
- Espectro de potência 2-D (FFT) para diagnóstico de ruído periódico
- Animação temporal de cubo FITS (NAXIS3 > 3)
- Plot de espectro 1-D (arquivos FITS NAXIS=1) via Qt6::Charts
- FITS (
.fits,.fit,.fts) — HDU único, multi-HDU, RGB (NAXIS3=3), cubos temporais - Vídeo SER (
.ser) — primeiro frame - XISF — PixInsight (
.xisf) - TIFF 16-bit, PNG, BMP, JPEG
- Arquivos ZIP — extração automática ao abrir
- TAR.GZ, TAR.BZ2, TAR.XZ, 7Z, RAR — via libarchive (opcional)
- Barra de navegação HDU para arquivos FITS multi-extensão
- Detecção automática de estrelas (SEP / Source Extractor)
- Plate solving online via astrometry.net
- Plate solving offline via ASTAP
- Pipeline WCS completo: TAN, SIN, ARC, STG, CAR, MER, GLS/SFL, AIT (Calabretta & Greisen 2002)
- Gravar solução WCS de volta no cabeçalho FITS
- Sobreposição do catálogo de estrelas VizieR (UCAC4, Gaia DR3)
- Catálogo local de estrelas em FITS BINTABLE (offline, opcional)
- Sobreposição de planos eclíptico e galáctico com aviso de extinção
- Correção de refração atmosférica (topocêntrica, ignora telescópios espaciais)
- Conversão ICRS → CIRS → topocêntrico para resíduos ADES sub-arcseg (aberração anual, precessão J2000→data, nutação)
- Modelo de fundo por filtro de mediana deslizante (grade de tiles + sigma-clipping)
- Máscara de pixels ruins com interpolação por vizinhos mais próximos
- Detecção de traço/streak por elongação de blob (asteroides rápidos, satélites)
- Ajuste de PSF: Gaussiana elíptica com Levenberg–Marquardt
- ClumpFind: separação de fontes blendadas por contorno de intensidade
- Fotometria de abertura (simples e multi-abertura)
- Fotometria diferencial com calibração de zero-point
- Correção de massa de ar (coeficiente de extinção)
- Diálogo de curva de luz
- Diálogo de curva de crescimento
- Painel de estatísticas de região
- Detecção de Objeto em Movimento (MOD) em ≥3 imagens
- Track & Stack com alinhamento por rastreamento de asteroide
- Empilhador de imagens: Adição, Média, Mediana, Sigma-clipped; registro sub-pixel por FFT
- Calibração bias/dark/flat
- Assistente de calibração (passo a passo)
- Construtor de master dark / master flat
- Frames de calibração por arrastar e soltar
- Geração de relatório ADES 2022 XML e PSV
- Flag
<sys>ICRF</sys>para anotação de sistema de referência preciso - Diálogo de pré-visualização de relatório MPC com renderização HTML
- Endpoint de submissão direta ao MPC
- Identificação de corpos do Sistema Solar via IMCCE SkyBoT
- Consultas de efemérides JPL Horizons
- Seletor de banda de magnitude, movimento próprio, localização do observador a partir de cabeçalhos FITS
- Exportar imagem como JPEG/PNG
- Importar tabela FITS BINTABLE DAOPHOT/SExtractor como sobreposição de estrelas detectadas
- Importar tabelas de redução IRAF/Astropy (XCENTER/YCENTER, xcentroid/ycentroid, coordenadas de céu)
- Exportar/importar configuração da escola
- Salvar projeto (formato JSON
.gus)
- Tema de UI Dia / Noite / Automático (Ctrl+Shift+T)
- Interface bilíngue completa: inglês e português brasileiro (1007+ strings)
- Fluxo escolar: modo guiado passo a passo para alunos
- Notificações toast (não bloqueantes)
- Pilha Desfazer/Refazer
- Armazenamento seguro de chave API (Qt Keychain, opcional)
- Diálogo de comparação de sessão
Veja a seção Project Structure acima — a estrutura é idêntica.
Nota sobre
originals/: este diretório contém apenasCCfits.tar.gz, uma biblioteca C++ de FITS usada somente em tempo de compilação. Não é necessária para executar o aplicativo e pode ser ignorada por usuários finais. O CMake a extrai automaticamente durante a configuração.Nota sobre
tests/: a suíte de testes (116 casos core + 23 UI) faz parte do repositório mas não é necessária para compilar o aplicativo. Veja Compilação para compilar somente o app.
| Dependência | Versão | Notas |
|---|---|---|
| Qt | ≥ 6.4 | Widgets, OpenGL, Charts, Concurrent, Network, Sql, Xml |
| cfitsio | qualquer | I/O FITS (pacote do sistema ou FetchContent) |
| FFTW3 | qualquer | FFT para empilhamento de imagens e espectro de potência |
| SEP | ≥ 1.2 | Biblioteca C do Source Extractor (bundled via FetchContent) |
| spdlog | ≥ 1.11 | Log (bundled via FetchContent) |
| nlohmann/json | ≥ 3.11 | Serialização de arquivo de projeto (bundled) |
| CMake | ≥ 3.20 | Sistema de build |
| C++ | 23 | Compilador: GCC ≥ 13 ou Clang ≥ 16 |
| Dependência | Notas |
|---|---|
| QuaZip + Qt6Core5Compat | Extração de arquivos ZIP; dnf install qt6-qt5compat-devel |
| libarchive | Extração TAR.GZ/BZ2/XZ, 7Z, RAR; dnf install libarchive-devel |
| Qt6Keychain | Armazenamento seguro de chave API; dnf install qtkeychain-qt6-devel libsecret-devel |
| Qt6LinguistTools | Compilar traduções .ts; dnf install qt6-linguist |
| ASTAP | Plate solver offline; baixar em hnsky.org |
curl -LO https://codeberg.org/petrinhu/astrofind/releases/download/v0.9.0-beta/install.sh
chmod +x install.sh
./install.shDetecta automaticamente sua distribuição, baixa o pacote correto, instala dependências e configura a integração com o desktop. Interface bilíngue (EN/PT-BR).
Fedora / RHEL / Rocky Linux
curl -LO https://codeberg.org/petrinhu/astrofind/releases/download/v0.9.0-beta/astrofind-0.9.0-0.beta1.x86_64.rpm
sudo rpm -i astrofind-0.9.0-0.beta1.x86_64.rpm
sudo dnf install qt6-qtbase qt6-qtcharts qt6-qtopengl cfitsio fftw libarchiveUbuntu / Debian / Mint / Pop!_OS / Zorin
curl -LO https://codeberg.org/petrinhu/astrofind/releases/download/v0.9.0-beta/astrofind_0.9.0~beta-1_amd64.deb
sudo apt-get install ./astrofind_0.9.0~beta-1_amd64.debArch Linux / Manjaro
curl -LO https://codeberg.org/petrinhu/astrofind/releases/download/v0.9.0-beta/astrofind-0.9.0-beta-arch-PKGBUILD.tar.gz
tar xzf astrofind-0.9.0-beta-arch-PKGBUILD.tar.gz
cd astrofind-arch && makepkg -siPara todos os comandos por distribuição e instruções de compilação, veja INSTALL.md.
Para comandos de instalação por distribuição, veja INSTALL.md.
# Configurar e compilar (somente o aplicativo)
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --target AstroFind -j$(nproc)
# Executar
./build/bin/AstroFind
# Compilar tudo incluindo testes (opcional)
cmake --build build -j$(nproc)Opcional: instalar no sistema (Linux FHS)
sudo cmake --install build# Testes do núcleo (116 casos)
./build/bin/astrofind_tests
# Testes de UI (23 casos — requer display)
./build/bin/astrofind_ui_testsPolyForm Noncommercial License 1.0.0 — livre para uso pessoal, educacional e não comercial. Copyright (c) 2024–2026 Petrus Silva Costa.
O AstroFind foi inspirado e aprendeu com estes excelentes projetos:
| Projeto | Autor(es) | O que aprendemos |
|---|---|---|
| Astrometrica | Herbert Raab | Inspiração principal de UX — ferramenta padrão Windows para IASC/MPC |
| find_orb | Bill Gray (Project Pluto) | Formato de saída ADES, submissão MPC, determinação de órbita |
| umbrella2 | CSCF | Algoritmos de detecção de objetos em movimento, ligação de tracklets |
| Siril | Free-Astro team | Ajuste de PSF, extração de fundo, pipeline de fotometria |
| astrometry.net | Dustin Lang et al. | API REST de plate-solving usada diretamente |
| IRAF | NOAO / comunidade | Conceitos de fotometria de abertura e convenções de colunas de tabela |
| GDL | equipe GDL | PSF elíptica / MPFIT, mediana deslizante, algoritmos FFT |
| NEMO | P. Teuben | Máscaras de pixels ruins, blob/streak, ClumpFind, histograma, Laplaciano, WCS |
| Boost.Astronomy | GSoC 2019 | Refração atmosférica, CIRS/ADES, sobreposições eclíptica/galáctica |
Bibliotecas utilizadas: Qt6 · cfitsio · CCfits 2.7 · FFTW3 · SEP · spdlog · nlohmann/json · Catch2 · QuaZip · qt-keychain · libarchive