hst123 1.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. hst123-1.1.0/.github/workflows/build-test.yml +36 -0
  2. hst123-1.1.0/.github/workflows/documentation.yml +42 -0
  3. hst123-1.1.0/.github/workflows/publish-pypi.yml +43 -0
  4. hst123-1.1.0/.gitignore +13 -0
  5. hst123-1.1.0/LICENSE.txt +21 -0
  6. hst123-1.1.0/PKG-INFO +162 -0
  7. hst123-1.1.0/README.md +121 -0
  8. hst123-1.1.0/docs/Makefile +14 -0
  9. hst123-1.1.0/docs/_static/.gitkeep +0 -0
  10. hst123-1.1.0/docs/_static/hst123-docs.css +17 -0
  11. hst123-1.1.0/docs/_templates/.gitkeep +0 -0
  12. hst123-1.1.0/docs/_templates/layout.html +2 -0
  13. hst123-1.1.0/docs/api.rst +77 -0
  14. hst123-1.1.0/docs/changelog.md +27 -0
  15. hst123-1.1.0/docs/conf.py +118 -0
  16. hst123-1.1.0/docs/index.rst +63 -0
  17. hst123-1.1.0/docs/installation.rst +57 -0
  18. hst123-1.1.0/docs/user_guide.rst +151 -0
  19. hst123-1.1.0/docs/zeropoints.md +17 -0
  20. hst123-1.1.0/environment.yml +22 -0
  21. hst123-1.1.0/hst123/__init__.py +54 -0
  22. hst123-1.1.0/hst123/__main__.py +20 -0
  23. hst123-1.1.0/hst123/_pipeline.py +3343 -0
  24. hst123-1.1.0/hst123/_version.py +1 -0
  25. hst123-1.1.0/hst123/datamodels/__init__.py +9 -0
  26. hst123-1.1.0/hst123/datamodels/base_model.py +500 -0
  27. hst123-1.1.0/hst123/datamodels/hst_model.py +76 -0
  28. hst123-1.1.0/hst123/dolphot_install.py +2320 -0
  29. hst123-1.1.0/hst123/primitives/__init__.py +25 -0
  30. hst123-1.1.0/hst123/primitives/astrometry/__init__.py +22 -0
  31. hst123-1.1.0/hst123/primitives/astrometry/alignment_meta.py +136 -0
  32. hst123-1.1.0/hst123/primitives/astrometry/astrometry_primitive.py +1563 -0
  33. hst123-1.1.0/hst123/primitives/astrometry/jhat.py +82 -0
  34. hst123-1.1.0/hst123/primitives/base.py +111 -0
  35. hst123-1.1.0/hst123/primitives/fits.py +277 -0
  36. hst123-1.1.0/hst123/primitives/photometry.py +176 -0
  37. hst123-1.1.0/hst123/primitives/primitive_cleanup.py +352 -0
  38. hst123-1.1.0/hst123/primitives/run_dolphot/__init__.py +7 -0
  39. hst123-1.1.0/hst123/primitives/run_dolphot/run_dolphot_primitive.py +1150 -0
  40. hst123-1.1.0/hst123/primitives/scrape_dolphot/__init__.py +6 -0
  41. hst123-1.1.0/hst123/primitives/scrape_dolphot/scrape_dolphot_primitive.py +884 -0
  42. hst123-1.1.0/hst123/scripts/update_changelog.py +75 -0
  43. hst123-1.1.0/hst123/settings.py +312 -0
  44. hst123-1.1.0/hst123/utils/__init__.py +73 -0
  45. hst123-1.1.0/hst123/utils/alignment_validation.py +206 -0
  46. hst123-1.1.0/hst123/utils/astrodrizzle_helpers.py +472 -0
  47. hst123-1.1.0/hst123/utils/astrodrizzle_paths.py +122 -0
  48. hst123-1.1.0/hst123/utils/display.py +229 -0
  49. hst123-1.1.0/hst123/utils/dolphot_catalog_hdf5.py +765 -0
  50. hst123-1.1.0/hst123/utils/dolphot_mask.py +1057 -0
  51. hst123-1.1.0/hst123/utils/dolphot_sky.py +766 -0
  52. hst123-1.1.0/hst123/utils/dolphot_splitgroups.py +210 -0
  53. hst123-1.1.0/hst123/utils/logging.py +1170 -0
  54. hst123-1.1.0/hst123/utils/options.py +298 -0
  55. hst123-1.1.0/hst123/utils/paths.py +93 -0
  56. hst123-1.1.0/hst123/utils/progress_log.py +212 -0
  57. hst123-1.1.0/hst123/utils/reference_download.py +260 -0
  58. hst123-1.1.0/hst123/utils/stdio.py +99 -0
  59. hst123-1.1.0/hst123/utils/stsci_wcs.py +79 -0
  60. hst123-1.1.0/hst123/utils/stwcs/STWCS_VENDOR.txt +11 -0
  61. hst123-1.1.0/hst123/utils/stwcs/__init__.py +16 -0
  62. hst123-1.1.0/hst123/utils/stwcs/distortion/__init__.py +0 -0
  63. hst123-1.1.0/hst123/utils/stwcs/distortion/coeff_converter.py +151 -0
  64. hst123-1.1.0/hst123/utils/stwcs/distortion/models.py +316 -0
  65. hst123-1.1.0/hst123/utils/stwcs/distortion/mutil.py +707 -0
  66. hst123-1.1.0/hst123/utils/stwcs/distortion/utils.py +276 -0
  67. hst123-1.1.0/hst123/utils/stwcs/updatewcs/__init__.py +459 -0
  68. hst123-1.1.0/hst123/utils/stwcs/updatewcs/apply_corrections.py +335 -0
  69. hst123-1.1.0/hst123/utils/stwcs/updatewcs/astrometry_utils.py +966 -0
  70. hst123-1.1.0/hst123/utils/stwcs/updatewcs/corrections.py +361 -0
  71. hst123-1.1.0/hst123/utils/stwcs/updatewcs/det2im.py +261 -0
  72. hst123-1.1.0/hst123/utils/stwcs/updatewcs/makewcs.py +274 -0
  73. hst123-1.1.0/hst123/utils/stwcs/updatewcs/npol.py +308 -0
  74. hst123-1.1.0/hst123/utils/stwcs/updatewcs/updatehdr.py +780 -0
  75. hst123-1.1.0/hst123/utils/stwcs/updatewcs/utils.py +262 -0
  76. hst123-1.1.0/hst123/utils/stwcs/updatewcs/wfpc2_dgeo.py +127 -0
  77. hst123-1.1.0/hst123/utils/stwcs/version.py +34 -0
  78. hst123-1.1.0/hst123/utils/stwcs/wcsutil/__init__.py +32 -0
  79. hst123-1.1.0/hst123/utils/stwcs/wcsutil/altwcs.py +1116 -0
  80. hst123-1.1.0/hst123/utils/stwcs/wcsutil/convertwcs.py +118 -0
  81. hst123-1.1.0/hst123/utils/stwcs/wcsutil/getinput.py +63 -0
  82. hst123-1.1.0/hst123/utils/stwcs/wcsutil/headerlet.py +2814 -0
  83. hst123-1.1.0/hst123/utils/stwcs/wcsutil/hstwcs.py +1009 -0
  84. hst123-1.1.0/hst123/utils/stwcs/wcsutil/instruments.py +317 -0
  85. hst123-1.1.0/hst123/utils/stwcs/wcsutil/mappings.py +27 -0
  86. hst123-1.1.0/hst123/utils/stwcs/wcsutil/mosaic.py +185 -0
  87. hst123-1.1.0/hst123/utils/stwcs/wcsutil/wcscorr.py +661 -0
  88. hst123-1.1.0/hst123/utils/stwcs/wcsutil/wcsdiff.py +153 -0
  89. hst123-1.1.0/hst123/utils/visit.py +40 -0
  90. hst123-1.1.0/hst123/utils/wcs_utils.py +208 -0
  91. hst123-1.1.0/hst123/utils/workdir_cleanup.py +364 -0
  92. hst123-1.1.0/hst123.egg-info/PKG-INFO +162 -0
  93. hst123-1.1.0/hst123.egg-info/SOURCES.txt +133 -0
  94. hst123-1.1.0/hst123.egg-info/dependency_links.txt +1 -0
  95. hst123-1.1.0/hst123.egg-info/entry_points.txt +3 -0
  96. hst123-1.1.0/hst123.egg-info/requires.txt +27 -0
  97. hst123-1.1.0/hst123.egg-info/top_level.txt +1 -0
  98. hst123-1.1.0/pyproject.toml +87 -0
  99. hst123-1.1.0/scripts/run_sn2021tyw.sh +29 -0
  100. hst123-1.1.0/setup.cfg +4 -0
  101. hst123-1.1.0/tests/__init__.py +1 -0
  102. hst123-1.1.0/tests/conftest.py +82 -0
  103. hst123-1.1.0/tests/test_alignment_meta.py +237 -0
  104. hst123-1.1.0/tests/test_alignment_validation.py +71 -0
  105. hst123-1.1.0/tests/test_astrodrizzle_helpers.py +123 -0
  106. hst123-1.1.0/tests/test_astrodrizzle_output_path.py +86 -0
  107. hst123-1.1.0/tests/test_astrometry.py +93 -0
  108. hst123-1.1.0/tests/test_compress_reference.py +61 -0
  109. hst123-1.1.0/tests/test_display.py +121 -0
  110. hst123-1.1.0/tests/test_dolphot_c_python_parity.py +548 -0
  111. hst123-1.1.0/tests/test_dolphot_catalog_hdf5.py +222 -0
  112. hst123-1.1.0/tests/test_dolphot_install.py +856 -0
  113. hst123-1.1.0/tests/test_dolphot_sky.py +301 -0
  114. hst123-1.1.0/tests/test_dolphot_splitgroups.py +144 -0
  115. hst123-1.1.0/tests/test_hst123.py +268 -0
  116. hst123-1.1.0/tests/test_init.py +4 -0
  117. hst123-1.1.0/tests/test_logging.py +400 -0
  118. hst123-1.1.0/tests/test_obstable_drizname.py +13 -0
  119. hst123-1.1.0/tests/test_options.py +137 -0
  120. hst123-1.1.0/tests/test_paths.py +65 -0
  121. hst123-1.1.0/tests/test_pipeline_cleanup_validation.py +63 -0
  122. hst123-1.1.0/tests/test_pipeline_main.py +133 -0
  123. hst123-1.1.0/tests/test_pipeline_mast_download.py +163 -0
  124. hst123-1.1.0/tests/test_pipeline_methods.py +104 -0
  125. hst123-1.1.0/tests/test_primitive_cleanup.py +59 -0
  126. hst123-1.1.0/tests/test_primitives.py +99 -0
  127. hst123-1.1.0/tests/test_progress_log.py +89 -0
  128. hst123-1.1.0/tests/test_reference_download.py +89 -0
  129. hst123-1.1.0/tests/test_run_dolphot.py +548 -0
  130. hst123-1.1.0/tests/test_scrape_dolphot.py +376 -0
  131. hst123-1.1.0/tests/test_settings.py +138 -0
  132. hst123-1.1.0/tests/test_stdio.py +34 -0
  133. hst123-1.1.0/tests/test_visit.py +60 -0
  134. hst123-1.1.0/tests/test_wcs_utils.py +196 -0
  135. hst123-1.1.0/tests/test_workdir_cleanup.py +186 -0
@@ -0,0 +1,36 @@
1
+ name: Build and Test
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ build-and-test:
11
+ runs-on: ubuntu-latest
12
+ defaults:
13
+ run:
14
+ # Required so conda env is activated in run steps (setup-miniconda)
15
+ shell: bash -el {0}
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ with:
19
+ submodules: true
20
+ fetch-depth: 0
21
+ persist-credentials: false
22
+ - name: Set up Conda with Python 3.12
23
+ uses: conda-incubator/setup-miniconda@v3
24
+ with:
25
+ environment-file: environment.yml
26
+ activate-environment: hst123
27
+ auto-update-conda: true
28
+ - name: Install the package and dependencies
29
+ run: |
30
+ python -m pip install --upgrade pip setuptools wheel
31
+ # Editable install: tests and monkeypatches target the checkout, not a
32
+ # stale copy under site-packages.
33
+ python -m pip install -e ".[test]"
34
+ - name: Run tests
35
+ run: |
36
+ python -m pytest tests/ -v --tb=short
@@ -0,0 +1,42 @@
1
+ name: Documentation
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ permissions:
10
+ contents: write
11
+
12
+ jobs:
13
+ docs:
14
+ runs-on: ubuntu-latest
15
+ strategy:
16
+ matrix:
17
+ python-version: [3.12]
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ with:
21
+ submodules: true
22
+ fetch-depth: 0
23
+ persist-credentials: false
24
+ - name: Set up Python ${{ matrix.python-version }}
25
+ uses: actions/setup-python@v5
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+ - name: Install the package with doc dependencies
29
+ run: |
30
+ python -m pip install --upgrade pip setuptools wheel
31
+ pip install .[docs]
32
+ - name: Build the docs
33
+ run: |
34
+ cd docs
35
+ make html
36
+ - name: Deploy to GitHub Pages
37
+ uses: peaceiris/actions-gh-pages@v4
38
+ with:
39
+ publish_branch: gh-pages
40
+ github_token: ${{ secrets.GITHUB_TOKEN }}
41
+ publish_dir: docs/build/html/
42
+ force_orphan: true
@@ -0,0 +1,43 @@
1
+ # Publish the hst123 package to https://pypi.org/project/hst123/
2
+ #
3
+ # Setup (one-time on PyPI):
4
+ # 1. Create the "hst123" project on PyPI (or claim the name if reserved).
5
+ # 2. Publishing → "Add a new publisher" → GitHub → this repo → this workflow file.
6
+ # (Optional: restrict to a GitHub Environment named "pypi" and add the same
7
+ # name under "Publisher" on PyPI.)
8
+ #
9
+ # Release:
10
+ # git tag v1.2.3 && git push origin v1.2.3
11
+ # (setuptools-scm reads the tag; requires fetch-depth: 0 below)
12
+ #
13
+ name: Publish to PyPI
14
+
15
+ on:
16
+ push:
17
+ tags:
18
+ - "v*"
19
+
20
+ permissions:
21
+ contents: read
22
+ id-token: write
23
+
24
+ jobs:
25
+ publish:
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+ with:
30
+ fetch-depth: 0
31
+
32
+ - uses: actions/setup-python@v5
33
+ with:
34
+ python-version: "3.12"
35
+
36
+ - name: Install build tools
37
+ run: pip install --upgrade pip build
38
+
39
+ - name: Build sdist and wheel
40
+ run: python -m build
41
+
42
+ - name: Publish to PyPI
43
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,13 @@
1
+ *.pyc
2
+ __pycache__
3
+
4
+ # Editor / IDE (local)
5
+ .vscode/
6
+
7
+ # Local integration / regression data (large FITS, logs); not versioned
8
+ test_data/
9
+ *.egg-info/
10
+ build/
11
+ docs/build/
12
+ # Setuptools-scm writes this at build time; do not commit
13
+ hst123/_version.py
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Charles D. Kilpatrick
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
hst123-1.1.0/PKG-INFO ADDED
@@ -0,0 +1,162 @@
1
+ Metadata-Version: 2.4
2
+ Name: hst123
3
+ Version: 1.1.0
4
+ Summary: An all-in-one script for downloading, registering, and drizzling HST images, running dolphot, and scraping data from dolphot catalogs.
5
+ License: BSD-3-Clause
6
+ Keywords: astronomy,HST,Hubble,dolphot,drizzle,photometry
7
+ Classifier: Development Status :: 4 - Beta
8
+ Classifier: Intended Audience :: Science/Research
9
+ Classifier: License :: OSI Approved :: BSD License
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Topic :: Scientific/Engineering :: Astronomy
14
+ Requires-Python: <3.13,>=3.12
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE.txt
17
+ Requires-Dist: setuptools<82,>=64.0
18
+ Requires-Dist: astropy<6,>=5.3
19
+ Requires-Dist: astroquery>=0.4.6
20
+ Requires-Dist: astroscrappy>=1.1.0
21
+ Requires-Dist: drizzlepac>=3.5.1
22
+ Requires-Dist: numpy<2,>=1.26
23
+ Requires-Dist: progressbar33>=2.4
24
+ Requires-Dist: python-dateutil>=2.8.2
25
+ Requires-Dist: requests>=2.32.0
26
+ Requires-Dist: scipy<2,>=1.11
27
+ Requires-Dist: h5py>=3.8
28
+ Requires-Dist: jhat
29
+ Provides-Extra: perf
30
+ Requires-Dist: numba>=0.59; extra == "perf"
31
+ Provides-Extra: test
32
+ Requires-Dist: pytest>=7.0; extra == "test"
33
+ Provides-Extra: hdf5
34
+ Requires-Dist: h5py>=3.8; extra == "hdf5"
35
+ Provides-Extra: docs
36
+ Requires-Dist: sphinx>=5.0; extra == "docs"
37
+ Requires-Dist: sphinx-rtd-theme>=1.2; extra == "docs"
38
+ Requires-Dist: numpydoc>=1.5; extra == "docs"
39
+ Requires-Dist: myst-parser>=2.0; extra == "docs"
40
+ Dynamic: license-file
41
+
42
+ # hst123
43
+
44
+ [![Build and Test](https://github.com/charliekilpatrick/hst123/actions/workflows/build-test.yml/badge.svg)](https://github.com/charliekilpatrick/hst123/actions/workflows/build-test.yml)
45
+ [![Documentation](https://github.com/charliekilpatrick/hst123/actions/workflows/documentation.yml/badge.svg)](https://github.com/charliekilpatrick/hst123/actions/workflows/documentation.yml)
46
+ [![Documentation site](https://img.shields.io/badge/documentation-GitHub%20Pages-4b32b3)](https://charliekilpatrick.github.io/hst123/)
47
+
48
+ Pipeline for HST data: download from MAST, align (tweakreg/jhat), drizzle, run DOLPHOT, and scrape photometry. Optimized for point-source photometry across multiple visits and filters.
49
+
50
+ **Issues:** Report bugs and feature requests via the project issue tracker. Other questions or publications using hst123: [Contact](#contact).
51
+
52
+ ---
53
+
54
+ ## Repository status
55
+
56
+ - **Python:** **3.12** (``requires-python`` in ``pyproject.toml`` pins the **3.12** line: ``>=3.12,<3.13``)
57
+ - **Versioning:** From git tags (setuptools-scm); `hst123 --version`
58
+ - **Layout:** Main pipeline in `hst123/_pipeline.py`; helpers in `hst123/primitives/` (FITS, photometry, astrometry, DOLPHOT, scrape) and `hst123/utils/` (options, display, visit, WCS)
59
+ - **Tests:** `pytest` in `tests/`; optional markers `network`, `dolphot` (see pyproject.toml)
60
+ - **Docs:** Sphinx sources under `docs/` (MyST Markdown + reStructuredText, Read the Docs theme). Build: `pip install -e ".[docs]"` then `cd docs && make html`. **Hosted:** [GitHub Pages](https://charliekilpatrick.github.io/hst123/) (from the [Documentation workflow](https://github.com/charliekilpatrick/hst123/actions/workflows/documentation.yml)).
61
+
62
+ ---
63
+
64
+ ## Installation
65
+
66
+ **1. Environment (recommended: Conda)**
67
+ From the repo root:
68
+
69
+ ```bash
70
+ conda env create -f environment.yml
71
+ conda activate hst123
72
+ ```
73
+
74
+ **2. Pipeline and heavy deps**
75
+
76
+ ```bash
77
+ pip install drizzlepac
78
+ pip install -e .
79
+ ```
80
+
81
+ The **STScI WCS** stack used by hst123 (``updatewcs``, ``HSTWCS``, ``altwcs``) is **bundled** under ``hst123.utils.stwcs`` (see ``STWCS_VENDOR.txt`` there) and reached only via ``hst123.utils.stsci_wcs`` — **PyPI ``stwcs`` is not an hst123 dependency**. DrizzlePac may still install ``stwcs`` for its own use.
82
+
83
+ The `hst123` command is available. Download, alignment, and drizzling work without DOLPHOT.
84
+
85
+ **3. DOLPHOT (only for `--run-dolphot`)**
86
+ DOLPHOT is external; not bundled. With **conda activated**, the helper downloads sources and PSF/PAM reference data under **`$CONDA_PREFIX/opt/hst123-dolphot`**, runs **`make`**, and symlinks **`dolphot`**, **`calcsky`**, and optional mask/split tools into **`$CONDA_PREFIX/bin`**. **Masking** (`acsmask` / `wfc3mask` / `wfpc2mask`) and **`splitgroups`** are implemented in Python by default (see **`hst123.utils.dolphot_mask`**, **`hst123.utils.dolphot_splitgroups`**); set **`HST123_DOLPHOT_MASK_EXTERNAL=1`** or **`HST123_DOLPHOT_SPLITGROUPS_EXTERNAL=1`** to force the C binaries.
87
+
88
+ ```bash
89
+ conda activate hst123 # or your env with hst123 installed
90
+ hst123-install-dolphot
91
+ ```
92
+
93
+ Without conda (or to choose a location), pass **`--dolphot-dir /path/to/dolphot`**; use **`--no-link-conda-bin`** and **`export PATH="/path/to/dolphot:$PATH"`** if you do not want links in the env `bin/`. Manual install: [americano.dolphinsim.com/dolphot](http://americano.dolphinsim.com/dolphot/).
94
+
95
+ The helper installs **DOLPHOT 3.1**, merges PSF tables into the tree DOLPHOT expects, and can apply small source patches for long paths on macOS. Re-running **`hst123-install-dolphot`** does not re-download already-installed artifacts; use **`--force-download`** to refresh. See **`hst123-install-dolphot --help`**.
96
+
97
+ ---
98
+
99
+ ## Usage
100
+
101
+ ```bash
102
+ hst123 <ra> <dec> [options]
103
+ # Example:
104
+ hst123 12:30:00 -45.0 --download
105
+ ```
106
+
107
+ - **`--work-dir`** — Absolute path is recommended; defaults to the current directory at startup. **`--raw-dir`** defaults to **`<work-dir>/raw`** (science FITS are written there, then copied into the work directory for reduction). **MAST / astroquery staging** (the temporary **`mastDownload`** tree) is always created under **`<work-dir>/.mast_download_staging/`** and removed after each file is moved to **`raw`** or **`--archive`**, so nothing is left in the directory you launched the command from when **`--work-dir`** points elsewhere. Most calibrated inputs and per-epoch drizzle outputs live under **`<work-dir>/workspace/`**; **`--drizzle-all`** writes the consolidated **`drizzle/`** directory under **`<work-dir>/drizzle/`** (the base work directory, not inside **`workspace/`**).
108
+ - **`--download`** — Fetch data from MAST for the given RA/Dec (5′ radius). Use **`--token`** for private data ([MAST auth](https://auth.mast.stsci.edu/info)).
109
+ - **`--run-dolphot`** — Run DOLPHOT (requires DOLPHOT on PATH).
110
+ - **`--scrape-dolphot`** — Extract photometry at the target from DOLPHOT output.
111
+
112
+ **DOLPHOT catalog → HDF5:** Optional helper **`hst123.utils.dolphot_catalog_hdf5.write_dolphot_catalog_hdf5`** writes the DOLPHOT table to a single **HDF5** file (columnar datasets + metadata). Requires **`h5py`** (`pip install h5py` or **`pip install .[hdf5]`**).
113
+
114
+ Run in a directory that will hold (or already holds) your images. Without `--download`, hst123 uses existing files in the working directory. Full option list: **`hst123 --help`**.
115
+
116
+ ---
117
+
118
+ ## Supported instruments
119
+
120
+ | Instrument | File types |
121
+ | ---------- | ------------------------- |
122
+ | WFPC2 | c0m.fits, c1m.fits (both) |
123
+ | ACS/WFC | flc.fits |
124
+ | ACS/HRC | flt.fits |
125
+ | WFC3/UVIS | flc.fits |
126
+ | WFC3/IR | flt.fits |
127
+
128
+ You can provide **`--reference`** or let hst123 build one from the data. Alignment: **tweakreg** (default) or **jhat** (**`--align-with`**). Photometry is reported in AB mag by default; see `docs/zeropoints.md`.
129
+
130
+ ---
131
+
132
+ ## Options (summary)
133
+
134
+ - **Run environment:** `--work-dir`, `--raw-dir`, `--archive`, `--cleanup`, `--keep-drizzle-artifacts`, `--by-visit`
135
+ - **Filters/dates:** `--before`, `--after`, `--only-filter`, `--only-wide`
136
+ - **Reference:** `--reference` / `--ref`, `--reference-filter`, `--reference-instrument`, `--avoid-wfpc2`
137
+ - **Alignment:** `--tweak-search`, `--tweak-min-obj`, `--tweak-thresh`, `--skip-tweakreg`, `--align-with`, `--hierarchical`
138
+ - **Drizzle / parallelism:** `--drizzle-all`, `--drizzle-dim`, `--drizzle-scale`, `--sky-sub`, `--redrizzle`, `--fix-zpt`, `--no-rotation`, `--max-cores` (AstroDrizzle `num_cores` and DOLPHOT prep thread pool, capped by exposure count; default min(8, CPU count); `--max-cores 1` forces serial prep and single-worker drizzle)
139
+ - **DOLPHOT:** `--run-dolphot`, `--dolphot` / `--dp`, `--dolphot-lim`, `--do-fake`, `--add-crmask`, `--include-all-splits`
140
+ - **Scraping:** `--scrape-dolphot` / `--sd`, `--scrape-all`, `--scrape-radius`, `--no-cuts`, `--brightest`
141
+
142
+ ---
143
+
144
+ ## Documentation
145
+
146
+ - **Online:** [charliekilpatrick.github.io/hst123](https://charliekilpatrick.github.io/hst123/) (API reference, user guide, changelog, zero points).
147
+ - **Local build:** `pip install -e ".[docs]"` then `cd docs && make html` → `docs/build/html/index.html`.
148
+ - **Sources:** `docs/index.rst`, `docs/user_guide.rst`, `docs/api.rst`, plus `docs/changelog.md` and `docs/zeropoints.md` (MyST).
149
+
150
+ ---
151
+
152
+ ## Citing and contact
153
+
154
+ **Citation:** C. D. Kilpatrick, *hst123: HST download, alignment, drizzle, and DOLPHOT photometry pipeline*, GitHub (or project URL). If a DOI (e.g. Zenodo) is assigned to a release, cite that. We welcome notice of papers that use hst123.
155
+
156
+ **Suggested references for citing hst123:** If you cite this software in a paper or proposal, you may also reference the following peer-reviewed works that use *Hubble Space Telescope* data heavily and describe the use of **hst123**:
157
+
158
+ - Kilpatrick et al., “A cool and inflated progenitor candidate for the Type Ib supernova 2019yvr at 2.6 yr before explosion,” *MNRAS* **504**, 2073 (2021). [doi:10.1093/mnras/stab838](https://doi.org/10.1093/mnras/stab838) · [arXiv:2101.03185](https://arxiv.org/abs/2101.03185)
159
+ - Kilpatrick et al., “Hubble Space Telescope Observations of GW170817: Complete Light Curves and the Properties of the Galaxy Merger of NGC 4993,” *ApJ* **926**, 49 (2022). [doi:10.3847/1538-4357/ac3e59](https://doi.org/10.3847/1538-4357/ac3e59) · [arXiv:2109.06211](https://arxiv.org/abs/2109.06211)
160
+ - Kilpatrick et al., “Type II-P supernova progenitor star initial masses and SN 2020jfo: direct detection, light-curve properties, nebular spectroscopy, and local environment,” *MNRAS* **524**, 2161 (2023). [doi:10.1093/mnras/stad1954](https://doi.org/10.1093/mnras/stad1954) · [arXiv:2307.00550](https://arxiv.org/abs/2307.00550)
161
+
162
+ **Contact:** Charlie Kilpatrick, ckilpatrick@northwestern.edu. **Bugs and feature requests:** please open an issue on the repository.
hst123-1.1.0/README.md ADDED
@@ -0,0 +1,121 @@
1
+ # hst123
2
+
3
+ [![Build and Test](https://github.com/charliekilpatrick/hst123/actions/workflows/build-test.yml/badge.svg)](https://github.com/charliekilpatrick/hst123/actions/workflows/build-test.yml)
4
+ [![Documentation](https://github.com/charliekilpatrick/hst123/actions/workflows/documentation.yml/badge.svg)](https://github.com/charliekilpatrick/hst123/actions/workflows/documentation.yml)
5
+ [![Documentation site](https://img.shields.io/badge/documentation-GitHub%20Pages-4b32b3)](https://charliekilpatrick.github.io/hst123/)
6
+
7
+ Pipeline for HST data: download from MAST, align (tweakreg/jhat), drizzle, run DOLPHOT, and scrape photometry. Optimized for point-source photometry across multiple visits and filters.
8
+
9
+ **Issues:** Report bugs and feature requests via the project issue tracker. Other questions or publications using hst123: [Contact](#contact).
10
+
11
+ ---
12
+
13
+ ## Repository status
14
+
15
+ - **Python:** **3.12** (``requires-python`` in ``pyproject.toml`` pins the **3.12** line: ``>=3.12,<3.13``)
16
+ - **Versioning:** From git tags (setuptools-scm); `hst123 --version`
17
+ - **Layout:** Main pipeline in `hst123/_pipeline.py`; helpers in `hst123/primitives/` (FITS, photometry, astrometry, DOLPHOT, scrape) and `hst123/utils/` (options, display, visit, WCS)
18
+ - **Tests:** `pytest` in `tests/`; optional markers `network`, `dolphot` (see pyproject.toml)
19
+ - **Docs:** Sphinx sources under `docs/` (MyST Markdown + reStructuredText, Read the Docs theme). Build: `pip install -e ".[docs]"` then `cd docs && make html`. **Hosted:** [GitHub Pages](https://charliekilpatrick.github.io/hst123/) (from the [Documentation workflow](https://github.com/charliekilpatrick/hst123/actions/workflows/documentation.yml)).
20
+
21
+ ---
22
+
23
+ ## Installation
24
+
25
+ **1. Environment (recommended: Conda)**
26
+ From the repo root:
27
+
28
+ ```bash
29
+ conda env create -f environment.yml
30
+ conda activate hst123
31
+ ```
32
+
33
+ **2. Pipeline and heavy deps**
34
+
35
+ ```bash
36
+ pip install drizzlepac
37
+ pip install -e .
38
+ ```
39
+
40
+ The **STScI WCS** stack used by hst123 (``updatewcs``, ``HSTWCS``, ``altwcs``) is **bundled** under ``hst123.utils.stwcs`` (see ``STWCS_VENDOR.txt`` there) and reached only via ``hst123.utils.stsci_wcs`` — **PyPI ``stwcs`` is not an hst123 dependency**. DrizzlePac may still install ``stwcs`` for its own use.
41
+
42
+ The `hst123` command is available. Download, alignment, and drizzling work without DOLPHOT.
43
+
44
+ **3. DOLPHOT (only for `--run-dolphot`)**
45
+ DOLPHOT is external; not bundled. With **conda activated**, the helper downloads sources and PSF/PAM reference data under **`$CONDA_PREFIX/opt/hst123-dolphot`**, runs **`make`**, and symlinks **`dolphot`**, **`calcsky`**, and optional mask/split tools into **`$CONDA_PREFIX/bin`**. **Masking** (`acsmask` / `wfc3mask` / `wfpc2mask`) and **`splitgroups`** are implemented in Python by default (see **`hst123.utils.dolphot_mask`**, **`hst123.utils.dolphot_splitgroups`**); set **`HST123_DOLPHOT_MASK_EXTERNAL=1`** or **`HST123_DOLPHOT_SPLITGROUPS_EXTERNAL=1`** to force the C binaries.
46
+
47
+ ```bash
48
+ conda activate hst123 # or your env with hst123 installed
49
+ hst123-install-dolphot
50
+ ```
51
+
52
+ Without conda (or to choose a location), pass **`--dolphot-dir /path/to/dolphot`**; use **`--no-link-conda-bin`** and **`export PATH="/path/to/dolphot:$PATH"`** if you do not want links in the env `bin/`. Manual install: [americano.dolphinsim.com/dolphot](http://americano.dolphinsim.com/dolphot/).
53
+
54
+ The helper installs **DOLPHOT 3.1**, merges PSF tables into the tree DOLPHOT expects, and can apply small source patches for long paths on macOS. Re-running **`hst123-install-dolphot`** does not re-download already-installed artifacts; use **`--force-download`** to refresh. See **`hst123-install-dolphot --help`**.
55
+
56
+ ---
57
+
58
+ ## Usage
59
+
60
+ ```bash
61
+ hst123 <ra> <dec> [options]
62
+ # Example:
63
+ hst123 12:30:00 -45.0 --download
64
+ ```
65
+
66
+ - **`--work-dir`** — Absolute path is recommended; defaults to the current directory at startup. **`--raw-dir`** defaults to **`<work-dir>/raw`** (science FITS are written there, then copied into the work directory for reduction). **MAST / astroquery staging** (the temporary **`mastDownload`** tree) is always created under **`<work-dir>/.mast_download_staging/`** and removed after each file is moved to **`raw`** or **`--archive`**, so nothing is left in the directory you launched the command from when **`--work-dir`** points elsewhere. Most calibrated inputs and per-epoch drizzle outputs live under **`<work-dir>/workspace/`**; **`--drizzle-all`** writes the consolidated **`drizzle/`** directory under **`<work-dir>/drizzle/`** (the base work directory, not inside **`workspace/`**).
67
+ - **`--download`** — Fetch data from MAST for the given RA/Dec (5′ radius). Use **`--token`** for private data ([MAST auth](https://auth.mast.stsci.edu/info)).
68
+ - **`--run-dolphot`** — Run DOLPHOT (requires DOLPHOT on PATH).
69
+ - **`--scrape-dolphot`** — Extract photometry at the target from DOLPHOT output.
70
+
71
+ **DOLPHOT catalog → HDF5:** Optional helper **`hst123.utils.dolphot_catalog_hdf5.write_dolphot_catalog_hdf5`** writes the DOLPHOT table to a single **HDF5** file (columnar datasets + metadata). Requires **`h5py`** (`pip install h5py` or **`pip install .[hdf5]`**).
72
+
73
+ Run in a directory that will hold (or already holds) your images. Without `--download`, hst123 uses existing files in the working directory. Full option list: **`hst123 --help`**.
74
+
75
+ ---
76
+
77
+ ## Supported instruments
78
+
79
+ | Instrument | File types |
80
+ | ---------- | ------------------------- |
81
+ | WFPC2 | c0m.fits, c1m.fits (both) |
82
+ | ACS/WFC | flc.fits |
83
+ | ACS/HRC | flt.fits |
84
+ | WFC3/UVIS | flc.fits |
85
+ | WFC3/IR | flt.fits |
86
+
87
+ You can provide **`--reference`** or let hst123 build one from the data. Alignment: **tweakreg** (default) or **jhat** (**`--align-with`**). Photometry is reported in AB mag by default; see `docs/zeropoints.md`.
88
+
89
+ ---
90
+
91
+ ## Options (summary)
92
+
93
+ - **Run environment:** `--work-dir`, `--raw-dir`, `--archive`, `--cleanup`, `--keep-drizzle-artifacts`, `--by-visit`
94
+ - **Filters/dates:** `--before`, `--after`, `--only-filter`, `--only-wide`
95
+ - **Reference:** `--reference` / `--ref`, `--reference-filter`, `--reference-instrument`, `--avoid-wfpc2`
96
+ - **Alignment:** `--tweak-search`, `--tweak-min-obj`, `--tweak-thresh`, `--skip-tweakreg`, `--align-with`, `--hierarchical`
97
+ - **Drizzle / parallelism:** `--drizzle-all`, `--drizzle-dim`, `--drizzle-scale`, `--sky-sub`, `--redrizzle`, `--fix-zpt`, `--no-rotation`, `--max-cores` (AstroDrizzle `num_cores` and DOLPHOT prep thread pool, capped by exposure count; default min(8, CPU count); `--max-cores 1` forces serial prep and single-worker drizzle)
98
+ - **DOLPHOT:** `--run-dolphot`, `--dolphot` / `--dp`, `--dolphot-lim`, `--do-fake`, `--add-crmask`, `--include-all-splits`
99
+ - **Scraping:** `--scrape-dolphot` / `--sd`, `--scrape-all`, `--scrape-radius`, `--no-cuts`, `--brightest`
100
+
101
+ ---
102
+
103
+ ## Documentation
104
+
105
+ - **Online:** [charliekilpatrick.github.io/hst123](https://charliekilpatrick.github.io/hst123/) (API reference, user guide, changelog, zero points).
106
+ - **Local build:** `pip install -e ".[docs]"` then `cd docs && make html` → `docs/build/html/index.html`.
107
+ - **Sources:** `docs/index.rst`, `docs/user_guide.rst`, `docs/api.rst`, plus `docs/changelog.md` and `docs/zeropoints.md` (MyST).
108
+
109
+ ---
110
+
111
+ ## Citing and contact
112
+
113
+ **Citation:** C. D. Kilpatrick, *hst123: HST download, alignment, drizzle, and DOLPHOT photometry pipeline*, GitHub (or project URL). If a DOI (e.g. Zenodo) is assigned to a release, cite that. We welcome notice of papers that use hst123.
114
+
115
+ **Suggested references for citing hst123:** If you cite this software in a paper or proposal, you may also reference the following peer-reviewed works that use *Hubble Space Telescope* data heavily and describe the use of **hst123**:
116
+
117
+ - Kilpatrick et al., “A cool and inflated progenitor candidate for the Type Ib supernova 2019yvr at 2.6 yr before explosion,” *MNRAS* **504**, 2073 (2021). [doi:10.1093/mnras/stab838](https://doi.org/10.1093/mnras/stab838) · [arXiv:2101.03185](https://arxiv.org/abs/2101.03185)
118
+ - Kilpatrick et al., “Hubble Space Telescope Observations of GW170817: Complete Light Curves and the Properties of the Galaxy Merger of NGC 4993,” *ApJ* **926**, 49 (2022). [doi:10.3847/1538-4357/ac3e59](https://doi.org/10.3847/1538-4357/ac3e59) · [arXiv:2109.06211](https://arxiv.org/abs/2109.06211)
119
+ - Kilpatrick et al., “Type II-P supernova progenitor star initial masses and SN 2020jfo: direct detection, light-curve properties, nebular spectroscopy, and local environment,” *MNRAS* **524**, 2161 (2023). [doi:10.1093/mnras/stad1954](https://doi.org/10.1093/mnras/stad1954) · [arXiv:2307.00550](https://arxiv.org/abs/2307.00550)
120
+
121
+ **Contact:** Charlie Kilpatrick, ckilpatrick@northwestern.edu. **Bugs and feature requests:** please open an issue on the repository.
@@ -0,0 +1,14 @@
1
+ # Minimal Sphinx Makefile; output goes to build/html for GitHub Pages publish_dir.
2
+ SPHINXOPTS =
3
+ SPHINXBUILD = sphinx-build
4
+ SPHINXPROJ = hst123
5
+ SOURCEDIR = .
6
+ BUILDDIR = build
7
+
8
+ .PHONY: help Makefile
9
+
10
+ help:
11
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
12
+
13
+ %: Makefile
14
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
File without changes
@@ -0,0 +1,17 @@
1
+ /* hst123 documentation — tweaks on sphinx_rtd_theme (Swift_host_subtraction style) */
2
+
3
+ .wy-table-responsive table td,
4
+ .wy-table-responsive table th {
5
+ white-space: normal;
6
+ }
7
+
8
+ .wy-table-responsive {
9
+ margin-bottom: 24px;
10
+ max-width: 100%;
11
+ overflow: visible;
12
+ }
13
+
14
+ /* Slightly clearer admonitions in RTD */
15
+ .rst-content .admonition {
16
+ border-radius: 4px;
17
+ }
File without changes
@@ -0,0 +1,2 @@
1
+ {% extends "!layout.html" %}
2
+ {% set css_files = css_files + ['_static/hst123-docs.css'] %}
@@ -0,0 +1,77 @@
1
+ .. _api_reference:
2
+
3
+ API reference
4
+ =============
5
+
6
+ This section documents the public Python API: the CLI entry point, the main
7
+ :class:`~hst123._pipeline.hst123` orchestration class, CLI registration in
8
+ :mod:`hst123.utils.options`, path helpers, optional HDF5 export for DOLPHOT
9
+ tables, and shared primitive utilities.
10
+
11
+ Entry point
12
+ -----------
13
+
14
+ .. autofunction:: hst123._pipeline.main
15
+
16
+ Pipeline class
17
+ --------------
18
+
19
+ The class :class:`~hst123._pipeline.hst123` holds pipeline state (options,
20
+ coordinates, input lists, reference path) and delegates to **primitives**
21
+ (``_fits``, ``_phot``, ``_astrom``, ``_dolphot``, ``_scrape_dolphot``) for
22
+ instrument-specific work.
23
+
24
+ .. autoclass:: hst123._pipeline.hst123
25
+ :members:
26
+ :exclude-members: __weakref__
27
+
28
+ CLI options and redo helpers
29
+ ----------------------------
30
+
31
+ .. automodule:: hst123.utils.options
32
+ :members: add_options, want_redo_astrometry, want_redo_astrodrizzle
33
+
34
+ Path helpers
35
+ ------------
36
+
37
+ .. automodule:: hst123.utils.paths
38
+ :members:
39
+ :undoc-members:
40
+
41
+ Parallel BLAS / OpenMP guard
42
+ ----------------------------
43
+
44
+ .. automodule:: hst123.utils.stdio
45
+ :members:
46
+ :undoc-members:
47
+
48
+ Work directory cleanup
49
+ ----------------------
50
+
51
+ After AstroDrizzle or TweakReg, the pipeline can remove scratch FITS and replay
52
+ external logs into the session log. Use ``--keep-drizzle-artifacts`` to retain
53
+ intermediates.
54
+
55
+ .. automodule:: hst123.utils.workdir_cleanup
56
+ :members: remove_files_matching_globs, cleanup_after_astrodrizzle, cleanup_after_tweakreg, remove_superseded_instrument_mask_reference_drizzle
57
+
58
+ DOLPHOT catalog → HDF5
59
+ ----------------------
60
+
61
+ .. automodule:: hst123.utils.dolphot_catalog_hdf5
62
+ :members:
63
+ :undoc-members:
64
+
65
+ Data model
66
+ ----------
67
+
68
+ .. automodule:: hst123.datamodels.hst_model
69
+ :members:
70
+ :undoc-members:
71
+
72
+ Primitives base class
73
+ ---------------------
74
+
75
+ .. autoclass:: hst123.primitives.base.BasePrimitive
76
+ :members:
77
+ :show-inheritance:
@@ -0,0 +1,27 @@
1
+ # Changelog
2
+
3
+ Notable changes to hst123. Version numbering follows semantic versioning for full releases.
4
+
5
+ ## Pre-releases (historical)
6
+
7
+ - **v1.00** (2019-02-07) — Base: download, tweakreg, drizzle, dolphot parameters.
8
+ - **v1.01** (2019-02-15) — Run dolphot and scrape dolphot output.
9
+ - **v1.02** (2019-02-22) — Fake star injection.
10
+ - **v1.03** (2019-06-02) — Drizzle-all options and option/syntax cleanup.
11
+ - **v1.04** (2020-02-10) — Python 3.7.
12
+ - **v1.05** (2020-03-04) — Sanitizing reference images for tweakreg/dolphot.
13
+ - **v1.06** (2020-03-07) — Archiving (`--archive`) for large-volume analysis.
14
+ - **v1.07** (2020-03-08) — Archiving updates; `construct_hst_archive.py` helper.
15
+
16
+ ## Documentation (Sphinx)
17
+
18
+ - Expanded sources: `installation.rst` (Python 3.12, Conda, DrizzlePac, DOLPHOT helper), `user_guide.rst` (work-directory layout, CLI overview, redo flags, output formats), `api.rst` (CLI entry point, full `hst123` pipeline class, `options`, `paths`, `stdio`, `workdir_cleanup`, `dolphot_catalog_hdf5`, `datamodels`, `BasePrimitive`).
19
+
20
+ ## Releases
21
+
22
+ - **Unreleased** — **Python:** **3.12** only (``requires-python`` ``>=3.12,<3.13``; NumPy 1.x / Astropy 5.x / DrizzlePac stack). **Documentation:** Sphinx uses **MyST** (Markdown) + reStructuredText, **sphinx_rtd_theme**, custom CSS/layout (Swift_host_subtraction-style), intersphinx (Python/NumPy/Astropy), and GitHub Pages via CI; README badges for build, docs workflow, and site. `hst123.utils.dolphot_catalog_hdf5`: parse DOLPHOT ``*.columns`` / ``*.param`` / ``*.info`` / ``*.data`` / ``*.warnings`` and write **HDF5** (`pip install h5py` or `pip install .[hdf5]`) with the full numeric catalog plus descriptive column names and JSON metadata (merged per ``imgNNNN`` when possible). ``get_dolphot_column`` uses ``parse_column_index_and_description`` for robust column index parsing. `install_psfs` ends with `relocate_all_legacy_psf_into_canonical_layout`: merges legacy `dolphot2.0/...` **`*.psf`** into the canonical tree for **ACS**, **WFC3** (`wfc3/data`, `wfc3/IR`, `wfc3/UVIS`), and **WFPC2** (`wfpc2/data`), including **sibling** `dolphot2.0/` next to `dolphot3.1/` (common conda layout). `relocate_acs_psf_into_canonical_layout` remains for ACS-only use. `hst123-install-dolphot` applies `apply_dolphot_source_patches` before `make`: patches upstream `dolphot.c` (`main` stack buffer 82→4096 bytes) to avoid macOS `sprintf` overflow / SIGTRAP on long absolute output paths; `--no-source-patches` opts out. `tests/test_dolphot_c_python_parity.py` documents C vs Python parity for calcsky, splitgroups, acsmask, wfc3mask, wfpc2mask (optional binaries + DOLPHOT tree; marker `dolphot_parity`). `hst123.utils.progress_log.LoggedProgress`: throttled `logger.info` progress lines (`#---` bar, %, counts, elapsed, est. total duration, remaining) for reuse; wired to calcsky stage 1 in `write_sky_fits_fallback` / `compute_sky_map_dolphot` (Python per-row updates; **Numba: one full parallel pass** then a single progress completion—no sequential batched kernels that ruined throughput). Disable with `HST123_CALCSKY_PROGRESS=0` or `HST123_PROGRESS_LOG=0`. Optional **`pip install .[perf]`** adds `numba`; `environment.yml` includes `numba` for conda users. `*drc.noise.fits` (sky copy for drizzled stacks) removed in `run_dolphot` and `get_dolphot_photometry` primitive cleanup with `respect_keep_artifacts=False` so they are still removed when `--keep-drizzle-artifacts` is set (not in per-filter astrodrizzle cleanup, which would delete prior filters’ noise). Same glob listed in `settings.pipeline_products` for scripted cleanup; see `tests/test_pipeline_cleanup_validation.py`. Removed legacy CLI `--make-clean`, `--no-large-reduction`, `--large-num` and `hst123.make_clean` / `check_large_reduction`. CI: workflow uses `pip install -e ".[test]"`; `_psf_already_satisfied` treats ACS WFC PAM as present if either `make_root` or `source_dir` has a valid `acs/data` payload; scrape-dolphot unit tests supply minimal `pipeline.options`. Pure-Python DOLPHOT `splitgroups` (`hst123.utils.dolphot_splitgroups`); `HST123_DOLPHOT_SPLITGROUPS_EXTERNAL=1` forces the C binary. `DOLPHOT_REQUIRED_SCRIPTS` no longer lists `splitgroups`. DOLPHOT installer: `ACS_WFC_PAM.tar.gz` extracts under `dolphot2.0/acs/data/`; files are now copied to `acs/data/` and `dolphot_acs_data_dir` prefers directories that contain both PAM FITS. Python `calcsky` port: vectorized second pass (summed-area table); Numba first pass uses precomputed annulus offsets and a per-row scratch buffer (no per-pixel `calloc`).
23
+
24
+ - **v1.1.0** (2025-03-02) — Post–v1.07: refactored pipeline (utils, primitives), setuptools-scm versioning, tests and docs updates.
25
+
26
+ *Full releases are added here when tagging. Run from the repo root:*
27
+ *`python scripts/update_changelog.py "Brief summary of changes"`*