Skip to content

Releases: christiantroyandrada/aporn-tool

v0.6.2.post1 — docs-only

Choose a tag to compare

@christiantroyandrada christiantroyandrada released this 21 Jul 06:45
a48f363

Post-release: no code change from 0.6.2. Adds the Troubleshooting entries (GraXpert hang guard; cluster washed-background fix) to the published package page. Functionally identical to v0.6.2.

🤖 Generated with Claude Code

v0.6.2 — dark cluster background + GraXpert hang guard

Choose a tag to compare

@christiantroyandrada christiantroyandrada released this 21 Jul 06:37
1fceb63

Two fixes found during the 0.6.1 regression sweep (both pre-date 0.6.1).

Fixed

  • dso-star-cluster washed-out background on light-polluted stacks. For DSLR / --stacked input the cluster finish now stretches to an explicit dark background target (bare autostretch washed a light-polluted stack's skyglow to grey). Scoped to that input only — Seestar FITS cluster output is byte-identical to 0.6.1. Tune under pipeline.cluster_finish.
  • GraXpert could hang the pipeline. run_graxpert now caps the GraXpert subprocess with a timeout (default 1200s); a stalled GraXpert (e.g. OOM on a very large DSLR image) fails the stage cleanly instead of blocking forever.

263 unit tests pass. Full details in CHANGELOG.

🤖 Generated with Claude Code

v0.6.1 — handheld Milky Way foreground de-ghost

Choose a tag to compare

@christiantroyandrada christiantroyandrada released this 21 Jul 06:15
b807a39

--no-tripod — recover a sharp foreground from a hand-held Milky Way stack

Star-aligned stacking sharpens the sky but smears the fixed foreground (house / trees / wires) into a ghost when frames are shot hand-held. dso-milky-way --no-tripod keeps the deep stacked sky and paints the foreground back in from a single sharp frame.

  • Foreground found from per-pixel variance across the registered frames (sky is aligned = still; foreground moves) — no horizon line to draw. Sky = the low-variance region flood-filled from the image centre; interior/tiny false positives are folded back to sky (border-touch + size guards) so they never render as black blobs.
  • New deghost finish stage (resume-safe; no-ops cleanly without registered frames). New pipeline.no_tripod config block; --no-tripod flag (wide mode only).

Changed

  • milkyway_finish defaults retuned for a dark sky with the Milky Way popping (autostretch_bg 0.20→0.10, clip -2.5→-2.9, satu 0.5→0.85).

Notes

  • The ragged hand-held border is best trimmed with an explicit --crop "X Y W H" box.
  • Regression-tested across every mode; no regressions. Full details in CHANGELOG.

🤖 Generated with Claude Code

v0.6.0

Choose a tag to compare

@christiantroyandrada christiantroyandrada released this 20 Jul 12:41

New in 0.6.0:

  • dso-milky-way — stack a wide-field Milky Way from phone/camera stills (JPEG/HEIC/PNG/TIFF), no FITS needed.
  • DSLR / mirrorless DSO — the four DSO modes now accept raw (CR2/CR3/NEF/ARW/DNG/...), TIFF, or JPEG with full master calibration (--darks/--flats/--bias), plus --focal/--pixel/--coords.
  • --stacked — feed an already-stacked linear image (from DSS, Siril, etc.) straight into a mode's finish.
  • Emission/star-cluster finish now seeds its plate solve so SPCC runs on DSLR/stacked data, and falls back gracefully (local Gaia -> online -> skip).

The Seestar FITS path is unchanged. See CHANGELOG.md for details.

v0.5.0

Choose a tag to compare

@christiantroyandrada christiantroyandrada released this 15 Jul 05:11

v0.5.0 — Composite dual-layer finish + target-type modes

⚠️ Breaking

  • dso-mosaic is removed → use dso-galaxy. Whether a capture is single-panel or a
    multi-panel mosaic is now auto-detected from the subs' pointing spread (override with
    --mosaic / --single; the decision is always printed). Update any scripts/launchers.
  • NGC 7000 recategorised from mosaic to emission.

Composite dual-layer finish (galaxy / emission / reflection)

  • The modern star/nebula separate-and-recombine workflow: remove stars → process the starless
    nebula layer and the stars layer independently → recombine with a screen blend. Lets the
    background be darkened/denoised hard without smearing stars — dramatically cleaner results on
    short-integration / light-polluted data. Tunable with --star-reduce (galaxy 0.5,
    emission/reflection 1.0). Star-cluster is excluded (the stars are the subject).

Modes are now target types

  • dso-galaxy (new) · dso-emission-nebula · dso-reflection-nebula · dso-star-cluster.
  • Mosaic is a capture technique, not a target category — it applies to any type and is detected
    from the data.
  • Emission now calls the StarNet2 CLI (composite); no mode needs SIRIL-internal StarNet any more.

Validated end-to-end from raw Seestar subs via the bare <mode> --in <folder> command on
M31 (galaxy/mosaic), M33 (galaxy/single), M8 + M20 (emission), and VdB106 (reflection). 195 tests.

🤖 Generated with Claude Code

v0.4.0

Choose a tag to compare

@christiantroyandrada christiantroyandrada released this 09 Jul 11:18

Centralize all pipeline parameters in one config file.

Every tunable knob — stack/register, GraXpert, auto-crop, SPCC, the per-mode stretch·GHT·saturation·star-blend, the reflection dual-layer dials, subsky degree, rmgreen, and deliverable JPEG quality — now lives under a pipeline block in aporntool.config.json, grouped by stage/mode.

  • Out of the box: the first run auto-writes the config (all defaults) next to you to edit — no code to touch. aporn-tool config --init writes it on demand.
  • Guarded: no file / deleted / empty / corrupt → built-in defaults; partial files override only their keys; unknown / wrong-typed / non-finite values are ignored. A hand-edited file can't break a run. With no config, the pipeline is byte-identical to v0.3.3.
  • Fixes: emission/cluster plate-solve now honours the configured SPCC catalog; crop.target_blocks: 0 no longer divides by zero.

Verified end-to-end on a real 922-sub M31 mosaic via the simplest command: aporn-tool dso-mosaic --in "<subs>".

v0.3.3

Choose a tag to compare

@christiantroyandrada christiantroyandrada released this 07 Jul 04:11

Docs cleanup. Tightened the README and changelog prose. No functional changes.

v0.3.2

Choose a tag to compare

@christiantroyandrada christiantroyandrada released this 06 Jul 19:04
  • Cleaner reflection backgrounds. Added selective background desaturation to the reflection
    finish: the global blue boost that makes the nebula pop no longer floods the sky with blue
    speckle — low-signal pixels fade to neutral black while the nebula keeps its colour. (New
    desaturate_background; defaults bg_desat=0.14, bg_desat_soft=0.14.)
  • --version is now correct. It read a hardcoded string that was never bumped (so 0.3.0/0.3.1
    both reported 0.2.0); it now derives from the installed package metadata and can't drift again.

v0.3.1

Choose a tag to compare

@christiantroyandrada christiantroyandrada released this 06 Jul 18:43

Maintenance release — no functional changes.

  • Refreshed the PyPI page. The 0.3.0 upload was tagged one commit before the README badge/header
    fix, so its PyPI description still showed a stale "Latest release: v0.2.0" line. PyPI freezes a
    version's description at upload, so this rebuild (from the corrected README) is the only way to
    update the page.
  • CI: publish-workflow actions bumped off the deprecated Node 20 — checkout@v7,
    setup-python@v6, upload-artifact@v7, download-artifact@v8.

v0.3.0

Choose a tag to compare

@christiantroyandrada christiantroyandrada released this 06 Jul 18:28

First release published to PyPIpip install aporn-tool, then run aporn-tool <mode> --in …
(the one-word aporntool and python -m aporntool also work).

Added

  • Target + coordinate auto-detection--target is now optional: when omitted, the object name
    and coordinates are read from the subs' FITS header (OBJECT + RA/DEC), so unlisted targets
    (e.g. VdB 106) work with no manual coords. --out is now optional too, defaulting to a <TARGET>
    folder beside the input subs. The everyday command is just mode + --in (e.g.
    aporntool dso-mosaic --in "/path/to/M31 subs"). --target/--out still override.
  • --clean flag (all dso-* modes): on a fully successful run, deletes the working files in
    _work/<target>/ except the golden anchor (02_linear/<TARGET>_Linear.fit), the manifest, and
    logs. Reclaims almost all scratch disk (a real M8 run went 18 GB → 25 MB) while keeping a cheap
    re-finish — --from bge (mosaic/reflection) or --from finish (emission/cluster) rebuilds every
    deliverable from the anchor with no re-stack. Off by default; a failed run never cleans, so resume
    always works.

Removed

  • --coords flag — no longer needed now that coordinates are read from the FITS header. The
    resolve_target(name, coords=…) library function still accepts explicit coords.