Tree
- Tree:
ac87c92b2797300b3b23d51cfbf76cf09caa49e5- Date:
- Message:
- Fix sub-pixel centroiding, auto min_frames, batched cross-matches; validate against real variable-star and IASC campaign data - detect_sources: refine PeakMesh's integer peak to a sub-pixel flux-weighted centroid before centering the aperture (returned x/y stay the original integers, so nothing position-dependent changes). - run_pipeline/search_field: min_frames/variability_min_frames now auto-adjust for quality_max_std-gated frames instead of silently making every tracklet unreachable. - crossmatch_catalog(:vsx/:simbad): batch OR-chained TAP queries (ceil(N/50) requests instead of N); retry once on the HTTP.ParseError confirmed to be a transient connection-reuse quirk, not a real outage. - crossmatch_catalog(:skybot): concurrent requests (measured ~8x speedup) plus a retry on transient HTTP errors, replacing a fully sequential loop that died to a connection error on a real multi-hour run. - find_variable_sources: systematic_error_fraction default raised 0.01 -> 0.02 after sweeping it against both real stationary stars (false-positive side) and a real confirmed variable (sensitivity side) — 2% is the largest floor checked that doesn't cost real detections. - load_wcs: fixed a real wcslib bug on Pan-STARRS1 headers where legacy CNPIX1/CNPIX2 keywords make wcslib build a degenerate implicit WCS and fail the whole parse, even though the header's real WCS is valid; retries after stripping just those two keywords. New examples/variable_star_demo.jl validates search_field end to end against a real, independently-confirmed variable star (ASASSN-V J183620.31) for the first time this project has done so. New examples/iasc_demo.jl validates run_pipeline against 5 real IASC Pan-STARRS1 practice campaign fields (not just ZTF), recovering 9 distinct known objects; also required a BLANK-sentinel pixel cleanup step and a match_radius retuned to the survey's own real astrometric precision (PERROR in the headers) instead of a value carried over from ZTF's pixel scale. Full narrative for all of the above in docs/src/investigation-log.md.
| .envrc | commits | blame |
| .github/ | |
| .gitignore | commits | blame |
| LICENSE | commits | blame |
| Project.toml | commits | blame |
| README.md | commits | blame |
| docs/ | |
| examples/ | |
| flake.lock | commits | blame |
| flake.nix | commits | blame |
| src/ | |
| test/ | |
README.md
# AsteroidPipeline.jl
[](https://github.com/Richard7987/AsteroidPipeline.jl/actions/workflows/Documenter.yml)
[](https://richard7987.github.io/AsteroidPipeline.jl/dev/)
An open-source Julia pipeline for asteroid search campaigns, developed for
use with the [International Astronomical Search Collaboration
(IASC)](https://iasc.cosmosearch.org/). Detects moving and variable
sources across a sequence of FITS frames, optionally via ZOGY difference
imaging, and calibrates and cross-matches the result against known-object
catalogs (SkyBoT, VSX, SIMBAD).
**Full documentation, including project status, real-data validation
results, known limitations, and the complete API reference, is at
<https://richard7987.github.io/AsteroidPipeline.jl/dev/>.**
## Installation
```julia
using Pkg
Pkg.activate(".")
Pkg.instantiate()
```
A reproducible development environment is also provided via Nix
(`flake.nix`):
```
nix develop
```
## Contributing
`docs/make.jl` builds the documentation site
([Documenter.jl](https://github.com/JuliaDocs/Documenter.jl) +
[DocumenterVitepress.jl](https://github.com/LuxDL/DocumenterVitepress.jl));
build it locally with:
```
julia --project=docs docs/make.jl
```
`.github/workflows/Documenter.yml` builds and deploys it to GitHub Pages
on every push to `main` and on tags.
## License
MIT. See `LICENSE`.
