diff --git a/.gitignore b/.gitignore
index bbbd82e..b79c34b 100755
--- a/.gitignore
+++ b/.gitignore
@@ -155,6 +155,9 @@ cython_debug/
# GUI runtime outputs (generated by ql-gui)
quicklook/app/static/outputs/
+# Local test run artifacts (HDF5 outputs produced by manual TLS runs in tests/)
+tests/*.h5
+
# MkDocs build output
site/
diff --git a/README.md b/README.md
index a715aaf..e8f7ce2 100755
--- a/README.md
+++ b/README.md
@@ -12,6 +12,7 @@ Although `quicklook` is optimized to find transiting exoplanets, it can also det
## Features
- **Multi-pipeline support** -- SPOC, TESS-SPOC, QLP, CDIPS, PATHOS, TGLC, TASOC
+- **Flux / light-curve type** -- PDCSAP or SAP for SPOC; aperture or PSF photometry for TGLC, with an automatic best-quality default
- **Automated detrending** -- biweight, cosine, median, GP, and other [wotan](https://github.com/hippke/wotan) methods
- **Stellar rotation** -- Generalized Lomb-Scargle (GLS) periodogram
- **Transit detection** -- Transit Least Squares (TLS) periodogram
@@ -92,6 +93,12 @@ print(f"TLS period: {ql.tls_results.period:.4f} days")
print(f"TLS SDE: {ql.tls_results.SDE:.1f}")
```
+For **SPOC**, `flux_type` selects `"pdcsap"` or `"sap"`. For **TGLC**, the same
+argument selects the photometry method -- `"aperture"` or `"psf"`; any other
+value (including the default) uses automatic selection of the less-contaminated,
+lower-scatter light curve. TGLC light curves absent from MAST are extracted
+locally via effective-PSF (ePSF) photometry.
+
### Web GUI
```bash
diff --git a/README_DEV.md b/README_DEV.md
index 3e0630f..e1a193b 100644
--- a/README_DEV.md
+++ b/README_DEV.md
@@ -57,3 +57,13 @@ def test_tql_runtime(benchmark, planet_inputs):
```bash
tox -r
```
+
+- **Check minimum Python required by dependencies**:
+
+`check_pyproject_deps.py` reads `pyproject.toml`, looks up each dependency's
+`Requires-Python` in the currently installed environment, and prints the
+overall minimum Python version needed.
+
+```bash
+python check_pyproject_deps.py
+```
diff --git a/check_pyproject_deps.py b/check_pyproject_deps.py
new file mode 100644
index 0000000..7bda14c
--- /dev/null
+++ b/check_pyproject_deps.py
@@ -0,0 +1,88 @@
+import sys
+import os
+from packaging.version import parse as parse_version
+from packaging.specifiers import SpecifierSet
+
+# For Python ≥3.11
+try:
+ import tomllib
+except ImportError:
+ import tomli as tomllib # pip install tomli
+
+try:
+ from importlib.metadata import distributions
+except ImportError:
+ from importlib_metadata import distributions # pip install importlib-metadata
+
+
+def read_pyproject(file_path="pyproject.toml"):
+ with open(file_path, "rb") as f:
+ data = tomllib.load(f)
+ # Poetry dependencies
+ poetry_deps = data.get("tool", {}).get("poetry", {}).get("dependencies", {})
+ # PEP 621 dependencies
+ pep621_deps = data.get("project", {}).get("dependencies", {})
+ # Merge, remove python itself
+ deps = {}
+ if poetry_deps:
+ deps.update({k: v for k, v in poetry_deps.items() if k.lower() != "python"})
+ if pep621_deps:
+ # pep621_deps can be list like ["requests>=2.0"]
+ for item in pep621_deps:
+ name = item.split()[0].split(">=")[0].split("==")[0].split("<=")[0]
+ deps[name] = item
+ return list(deps.keys())
+
+
+def get_requires_python(pkg_name):
+ try:
+ dist = next(d for d in distributions() if d.metadata["Name"].lower() == pkg_name.lower())
+ requires_python = dist.metadata.get("Requires-Python")
+ return requires_python or "Any"
+ except StopIteration:
+ return "Not installed / metadata missing"
+
+
+def min_python_from_specifier(spec):
+ """Return the lowest Python version that satisfies a specifier string."""
+ if spec in (None, "Any"):
+ return None
+ try:
+ spec_set = SpecifierSet(spec)
+ # Find the lowest version manually (best-effort)
+ for major in range(2, 4):
+ for minor in range(0, 20):
+ v = f"{major}.{minor}"
+ if parse_version(v) in spec_set:
+ return v
+ except Exception:
+ return None
+ return None
+
+
+def main(pyproject_file="pyproject.toml"):
+ packages = read_pyproject(pyproject_file)
+ results = []
+
+ for pkg in packages:
+ req_python = get_requires_python(pkg)
+ min_py = min_python_from_specifier(req_python)
+ results.append((pkg, req_python, min_py))
+
+ print(f"{'Package':25} | {'Requires-Python':20} | {'Min Python'}")
+ print("-" * 70)
+ min_versions = []
+ for pkg, spec, min_py in results:
+ print(f"{pkg:25} | {spec:20} | {min_py or 'Unknown'}")
+ if min_py:
+ min_versions.append(parse_version(min_py))
+
+ if min_versions:
+ overall_min = str(min(min_versions))
+ print("\nOverall minimum Python version to satisfy all dependencies:", overall_min)
+ else:
+ print("\nCould not determine overall minimum Python version (check metadata).")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/notebook/window_length.ipynb b/notebook/window_length.ipynb
new file mode 100644
index 0000000..7bb6739
--- /dev/null
+++ b/notebook/window_length.ipynb
@@ -0,0 +1,499 @@
+{
+ "cells": [
+ {
+ "cell_type": "raw",
+ "id": "42481fec-9ecf-4c23-9a81-458fbc969d2a",
+ "metadata": {},
+ "source": [
+ "from transitleastsquares.transit import reference_transit"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "5f2c1739-9c25-4149-bd22-fd28f7e5d693",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from quicklook.inject import (\n",
+ " InjectionParams,\n",
+ " run_grid,\n",
+ " select_best_window\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "313fd0e5-4c77-47a6-a52f-4c97ef334748",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "SearchResult containing 4 data products.\n",
+ "\n",
+ "
\n",
+ "| # | mission | year | author | exptime | target_name | distance |
\n",
+ " | | | | s | | arcsec |
\n",
+ "| 0 | TESS Sector 10 | 2019 | TGLC | 1800 | 460205581 | 0.0 |
\n",
+ "| 1 | TESS Sector 11 | 2019 | TGLC | 1800 | 460205581 | 0.0 |
\n",
+ "| 2 | TESS Sector 10 | 2019 | TGLC | 1800 | 847769574 | 0.0 |
\n",
+ "| 3 | TESS Sector 11 | 2019 | TGLC | 1800 | 847769574 | 0.0 |
\n",
+ "
"
+ ],
+ "text/plain": [
+ "SearchResult containing 4 data products.\n",
+ "\n",
+ " # mission year author exptime target_name distance\n",
+ " s arcsec \n",
+ "--- -------------- ---- ------ ------- ----------- --------\n",
+ " 0 TESS Sector 10 2019 TGLC 1800 460205581 0.0\n",
+ " 1 TESS Sector 11 2019 TGLC 1800 460205581 0.0\n",
+ " 2 TESS Sector 10 2019 TGLC 1800 847769574 0.0\n",
+ " 3 TESS Sector 11 2019 TGLC 1800 847769574 0.0"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import lightkurve as lk\n",
+ "\n",
+ "res = lk.search_lightcurve(\"TOI-837\", author=\"tglc\")\n",
+ "res"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "1d10d862-9fea-4914-8048-309063071c67",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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d+/eGDp0KG644QZJ63r11VeRlZUFAPjiiy/QrFkzs9+zs7ORkpJic/no6Gi8++67ZtOWL1+Or776yuG2586di44dO5pNu379OlavXo3du3ejsLAQYWFh6NKlC8aMGYOmTZvaXFdGRgY2bdqEc+fOoX79+oiOjsbIkSNxxx132Fzm6NGjWLVqFXJyclBdXY2bbroJCQkJiIuLc5h2U5YjTY4bNw7Dhg0z/m0rP4KDg9GqVSvExsZiyJAhCA4OBuA4z62Ji4vD//3f/yEjIwMLFy40/i0Sp5tq0KABQkND0bp1a0RHR6N///645ZZbnNquI+K+WKZHa7755ht89tlnxr/F+wqRv2NAT0SyWAumjh07hvz8fLRt2xZt27Y1+y08PNxdSdOMnTt34sMPPwQA3HTTTejRowcqKipw7NgxLF++HLt27cLcuXPRuHFju+vJyMhAVlYWAgIC4Ghw71atWlkNjlu1alVnWtu2bW0GxcXFxTh48CAaNGiAdu3amf1WVVWFmTNnIicnB02aNEHPnj1RUFCAjIwM7N+/H++++y5atmxZZ52ffvop1q9fj6CgIHTu3Bl6vR4HDx7Eb7/9hldeeQW9evWqs8yePXswb948CIKADh06IDw8HFlZWXjvvfdw+vRpPPXUU3bzwxpxn20FxabnryAIKCoqwtGjR7F06VLs3bsXb7/9NoKDg9G4cWOr+ffjjz+isrISXbp0qXNs77zzTklpND2O1dXVKCkpQV5eHg4fPoyvv/4a/fr1w7PPPouQkBCpu+0TbrrpJmOeZ2Zmejg1RNrBgJ6IZLFWivfee+8hPz8f99xzD0aPHm1zuevXr9stxfUV9evXx4ABAzBkyBDcdNNNxunFxcV44403kJeXh08//RRTp061uY6rV6/i888/R+fOnXH+/HmzEmZr7rjjDsklrL169bIaRANAWloaDh48iF69etX5irBy5Urk5OSgffv2ePPNN42/r1u3DosXL8bChQsxd+5cs2UOHjyI9evXIywsDO+++y5at24NADh+/DhmzJiBhQsXolOnTmjYsKFxmWvXruH999+HwWDAjBkz0Lt3bwDA5cuXMX36dKxbtw49evRAp06dJO2vyFH+WDt/L168iKlTp+LUqVPYsmULhg4diptuusnqug4fPozKykokJyc7nTaRteMoCAL279+PRYsWYceOHfjzzz8xe/Zs1K/vP4/yLl26oEuXLgAY0BOZYh16InKryMhI3HTTTX4RhNx33314/vnnzYJ5AGjSpAmeffZZAMDevXuh1+ttruPTTz/F9evXjfO7gyAI2LlzJwCgf//+Zr/p9Xp8++23AIBnnnnGLNgfOnQooqKicPjwYZw8edJsuXXr1gEARo4caQzmAaB9+/YYNGgQysrKsHXrVrNlvv/+e5SXl6Nnz57GYB4AIiIiMG7cOADA2rVrXdxbaVq2bIkBAwYAqA3YPSEgIAA9evTAv//9bzRp0gSHDx/Gpk2bPJIWItIW33+iEpGm2KpDn5iYiMjISHzyySdYvXo1MjMzUVRUhMjISAwfPhz3338/ACArKwsrV67EyZMnodPp0KNHD4wfP95qlZ6amhp89913yMzMxO+//46amhq0adMG9913HxISElCvXj237belqKgoALUB8rVr19CkSZM68/z666/YuXMnxowZY7XKjFqys7Px559/IiIiAjExMWa/HTt2DGVlZWjVqlWdqjgAEBsbizNnzmDfvn247bbbANTWtz906JDxd2vLbNiwAfv27cNDDz1knL5//36by3Tr1g1BQUHIyspCVVUVgoKC5O+wRGL1mZqaGtW35Sgdjz76KD744ANs3LgRSUlJkpc9e/YsvvzySxw+fBgGgwFt27bFww8/bDP/iouLsX37duzfvx/5+fkoKSlBw4YNcccddyA5ORm33367cV69Xo8nnngC169fx//+9z+zry2iY8eOYdq0aejQoQPefvttAH+9QG7atAn5+fkoKytDo0aN0KZNG/Tq1QuDBw92MoeI/A9L6IlIU9555x2sW7cOt9xyCzp06IBLly5h4cKFyMjIwJ49e/D666+jpqYGXbp0QXBwMLZv3445c+bUqVt+/fp1zJo1Cx999BEuXLiA6Oho3H333bh8+TI+++wzzJ07FwaDwUN7CVy6dAlAbbWcsLCwOr9XVlYiNTUVN954o1nDTUfy8/Pxv//9Dx9++CGWLFmCX375xen93LFjBwCgT58+dV56Tp8+DQC49dZbrS4rBvlnzpwxTjt//jz0ej0aNWpUpzGvrWVM/7b24hAYGIibb74ZVVVVOH/+vMN9UsKJEycAoM4XF0+49957odPpkJ+fjz///FPSMidOnMDUqVPx888/o1mzZujevTuqqqrwxhtv4IcffrC6zM8//4y0tDRcuXIFUVFRuOeee9CkSRPs3bsX06dPx4EDB4zzBgYG4r777kNVVZXxC4+l7777DgAwcOBA47QvvvgC//73v3Hy5ElERUWhV69eaN26Nc6cOYM1a9ZIzRIiv8YSeiLSjIKCAtxwww1YtGgRGjVqBAA4dOgQZs6ciS+//BJ6vR4zZ85E9+7dAQDl5eWYOnUqjh49iuzsbNx1113GdX3++ec4dOgQ/v73v+O5555DaGiocZn58+fj559/xnfffYdBgwa5f0cBrF+/HkBtneDAwMA6vy9btgwFBQX417/+ZfV3W44dO4Zjx46ZTYuKisKMGTPMqrrYUlVVhR9//BFA3eo2AFBYWAgAVgNz0+mmdf3FZWy1mwgODkZoaChKS0tRXl6OkJAQlJeXo6yszOG2Tp48icLCwjqNsJViMBhQXFyMHTt2YMeOHQgNDcWDDz6oyracERISghYtWiA/Px+///67zTwSCYKA9957DxUVFXjkkUfw6KOPGn/79ttv8fHHH1td7o477sCHH35YpwHxgQMHMHv2bHz88cdYtGgRAgICANQG6t988w2+++67OiXr5eXl+OGHH9CwYUNjFaqqqips3LgRN9xwA95//32zxtQ1NTU4fvy49Ewh8mMsoSciTZkwYYIxmAeAu+66C7feeiuKi4vRtWtXYzAP1AY11uo1X7lyBd9//z2aNWuGF1980RjMi8tMmjQJ9evX91j9419++QVbt25F/fr1MWbMmDq/nzx5EuvXr0dcXJzkRpUhISEYNmwY3n33XSxfvhzLly/HW2+9hejoaJw5cwavvfaaMUC25+eff0ZZWRluvvlmqyXjlZWVAGq7UrRGnF5RUWGcJv7f1jIAjF1BivOaLm9rOXGZ8vJym+uV46uvvkJiYiISExMxZMgQjBs3Dv/73/8QExNjswcfTxCrmUk5rtnZ2Th37hxatmyJRx55xOy3wYMHIzo62upyUVFRVnsD6tKlC+69917k5+fj7Nmzxult2rRBp06dcPr0aeTm5pots3PnTly/fh39+/c3VvEpLy+HXq9Hq1at6uRrvXr10KFDB4f7RkQsoSciDalfv36d/s6B2gaJeXl56Ny5s9XfgNq6vqLs7GxUV1eja9euVoPBiIgItG7dGmfPnsX169ftBppKO3fuHP79739DEASMGzeuTslyTU0NPvjgA4SG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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "lc = res[0].download()\n",
+ "lc.scatter()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "193ec823-ba79-4f34-968f-50859f144ae5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "time, flux = lc.time.value, lc.flux.value\n",
+ "\n",
+ "np.random.default_rng(1)\n",
+ "baseline = time[-1]-time[0]\n",
+ "half_baseline = baseline/2\n",
+ "Nmodels = 5\n",
+ "t0s = np.random.uniform(low=0, high=half_baseline, size=Nmodels)\n",
+ "periods = np.random.uniform(low=0.1, high=half_baseline, size=Nmodels)\n",
+ "durations = np.random.uniform(low=0.05, high=0.5, size=Nmodels)\n",
+ "depths = np.random.uniform(low=0.005, high=0.05, size=Nmodels)"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "id": "8d1adc7b-56b5-47b6-8d8a-5a77678564d9",
+ "metadata": {},
+ "source": [
+ "for i in [t0s,periods,durations,depths]:\n",
+ " fig = plt.figure()\n",
+ " plt.hist(i)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "221e5aad-72ca-49a4-934c-0cd035fe5142",
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "window: 0%| | 0/5 [00:00, ?it/s]\n",
+ "transit: 0%| | 0/5 [00:00, ?it/s]\u001b[A/ut3/jerome/miniconda3/envs/ql/lib/python3.10/site-packages/transitleastsquares/stats.py:458: RuntimeWarning: divide by zero encountered in double_scalars\n",
+ " snr_pink_per_transit[i] = (1 - mean_flux) / pinknoise\n",
+ "\n",
+ "transit: 20%|██████████████████████████████████ | 1/5 [00:09<00:37, 9.33s/it]\u001b[A\n",
+ "transit: 40%|████████████████████████████████████████████████████████████████████ | 2/5 [00:17<00:26, 8.69s/it]\u001b[A/ut3/jerome/miniconda3/envs/ql/lib/python3.10/site-packages/numpy/core/_methods.py:265: RuntimeWarning: Degrees of freedom <= 0 for slice\n",
+ " ret = _var(a, axis=axis, dtype=dtype, out=out, ddof=ddof,\n",
+ "/ut3/jerome/miniconda3/envs/ql/lib/python3.10/site-packages/numpy/core/_methods.py:223: RuntimeWarning: invalid value encountered in divide\n",
+ " arrmean = um.true_divide(arrmean, div, out=arrmean, casting='unsafe',\n",
+ "/ut3/jerome/miniconda3/envs/ql/lib/python3.10/site-packages/numpy/core/_methods.py:257: RuntimeWarning: invalid value encountered in double_scalars\n",
+ " ret = ret.dtype.type(ret / rcount)\n",
+ "/ut3/jerome/miniconda3/envs/ql/lib/python3.10/site-packages/transitleastsquares/main.py:411: UserWarning: 1 of 2 transits without data. The true period may be twice the given period.\n",
+ " warnings.warn(text)\n",
+ "\n",
+ "transit: 60%|██████████████████████████████████████████████████████████████████████████████████████████████████████ | 3/5 [00:25<00:16, 8.39s/it]\u001b[A\n",
+ "transit: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4/5 [00:33<00:08, 8.35s/it]\u001b[A\n",
+ "transit: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:42<00:00, 8.53s/it]\u001b[A\n",
+ "window: 20%|██████████████████████████████████▏ | 1/5 [00:42<02:51, 42.76s/it]\u001b[A\n",
+ "transit: 0%| | 0/5 [00:00, ?it/s]\u001b[A\n",
+ "transit: 20%|██████████████████████████████████ | 1/5 [00:07<00:31, 7.97s/it]\u001b[A\n",
+ "transit: 40%|████████████████████████████████████████████████████████████████████ | 2/5 [00:15<00:23, 7.69s/it]\u001b[A\n",
+ "transit: 60%|██████████████████████████████████████████████████████████████████████████████████████████████████████ | 3/5 [00:23<00:15, 7.66s/it]\u001b[A\n",
+ "transit: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4/5 [00:29<00:07, 7.34s/it]\u001b[A/ut3/jerome/miniconda3/envs/ql/lib/python3.10/site-packages/transitleastsquares/main.py:411: UserWarning: 1 of 3 transits without data. The true period may be twice the given period.\n",
+ " warnings.warn(text)\n",
+ "\n",
+ "transit: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:37<00:00, 7.25s/it]\u001b[A\n",
+ "window: 40%|████████████████████████████████████████████████████████████████████▍ | 2/5 [01:19<01:58, 39.39s/it]\u001b[A\n",
+ "transit: 0%| | 0/5 [00:00, ?it/s]\u001b[A\n",
+ "transit: 20%|██████████████████████████████████ | 1/5 [00:07<00:29, 7.40s/it]\u001b[A\n",
+ "transit: 40%|████████████████████████████████████████████████████████████████████ | 2/5 [00:14<00:21, 7.29s/it]\u001b[A\n",
+ "transit: 60%|██████████████████████████████████████████████████████████████████████████████████████████████████████ | 3/5 [00:21<00:14, 7.30s/it]\u001b[A\n",
+ "transit: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4/5 [00:29<00:07, 7.23s/it]\u001b[A\n",
+ "transit: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:35<00:00, 7.09s/it]\u001b[A\n",
+ "window: 60%|██████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3/5 [01:55<01:15, 37.79s/it]\u001b[A\n",
+ "transit: 0%| | 0/5 [00:00, ?it/s]\u001b[A\n",
+ "transit: 20%|██████████████████████████████████ | 1/5 [00:07<00:28, 7.19s/it]\u001b[A\n",
+ "transit: 40%|████████████████████████████████████████████████████████████████████ | 2/5 [00:14<00:21, 7.17s/it]\u001b[A\n",
+ "transit: 60%|██████████████████████████████████████████████████████████████████████████████████████████████████████ | 3/5 [00:21<00:14, 7.07s/it]\u001b[A\n",
+ "transit: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4/5 [00:28<00:07, 7.29s/it]\u001b[A\n",
+ "transit: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:36<00:00, 7.54s/it]\u001b[A\n",
+ "window: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 4/5 [02:32<00:37, 37.45s/it]\u001b[A\n",
+ "transit: 0%| | 0/5 [00:00, ?it/s]\u001b[A\n",
+ "transit: 20%|██████████████████████████████████ | 1/5 [00:07<00:30, 7.60s/it]\u001b[A\n",
+ "transit: 40%|████████████████████████████████████████████████████████████████████ | 2/5 [00:14<00:21, 7.24s/it]\u001b[A\n",
+ "transit: 60%|██████████████████████████████████████████████████████████████████████████████████████████████████████ | 3/5 [00:21<00:14, 7.29s/it]\u001b[A\n",
+ "transit: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4/5 [00:29<00:07, 7.46s/it]\u001b[A\n",
+ "transit: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:37<00:00, 7.54s/it]\u001b[A\n",
+ "window: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [03:09<00:00, 37.99s/it]\u001b[A"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Selected window length: 0.5\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "/mnt_ut2/raid_ut2/home/jerome/github/research/project/quicklook/quicklook/inject.py:143: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " good[\"score\"] = (\n"
+ ]
+ }
+ ],
+ "source": [
+ "windows = np.linspace(0.1, 0.5, 5)\n",
+ "\n",
+ "# Several injection epochs for robustness\n",
+ "injections = []\n",
+ "for t0, p, dur, depth in zip(t0s,periods,durations,depths):\n",
+ " injections.append(InjectionParams(t0=time[0] + t0, period=p, duration=dur, depth=depth))\n",
+ "\n",
+ "# Run grid\n",
+ "method = 'biweight'\n",
+ "df = run_grid(time, flux, windows, injections, method=method)\n",
+ "\n",
+ "# Select optimal window\n",
+ "best_window, valid = select_best_window(df)\n",
+ "print(\"Selected window length:\", best_window)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "6b149b7e-4bfa-421d-a323-23b5162b1e1e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from wotan import flatten"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "1ad4333f-48b1-4315-b99f-9e629cda57d5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "flat, trend = flatten(\n",
+ " time,\n",
+ " flux,\n",
+ " method=\"biweight\",\n",
+ " window_length=best_window,\n",
+ " return_trend=True,\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "638bd5b6-39de-436c-a961-9e3d3c2b44fd",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "\n",
+ "ax = lc.scatter()\n",
+ "ax.plot(time, trend, c='C3')\n",
+ "# ax.plot(time, trend2, c='C0')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "e2b57510-5c72-41a1-9864-d12525fdfa95",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2374/2374 periods | 00:06<00:00\n"
+ ]
+ }
+ ],
+ "source": [
+ "from transitleastsquares import transitleastsquares\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Run TLS\n",
+ "tls = transitleastsquares(time, flat)\n",
+ "results = tls.power(verbose=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "5254da95-4963-4ca0-a132-1c9e494081a8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "results['Porb_min'] = 1\n",
+ "results['Porb_max'] = 13"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "1b530d59-37a3-4021-80c4-61e2500a42f8",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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8uXLMXv2bHz77bf429/+ho0bN+LWW2+FIAi49NJL0dTUhOuvvx7//ve/EY/Hcdttt+FPf/oTFi1ahA8//BDPPfccBg4cqDp3NpvFunXrcPnll2Pr1q341a9+hUMPPdTQ36+//nrceeed+OUvf4kjjzwSe++9NxYsWAAAaGtrw+DBgx05N74XHslYBFN2bbB9jJPjvJ7bTYJqN0EQRFDo7e3Fv/71L6xcuRJXXnklWltb8eabbyIcDuPwww/Haaedhtdeew3vvPMOIpEIRFHEJZdcgl133RV33XUXAOCss84qCmtcddVVmDx5MpYuXYqnnnoKsVgMs2fPxgcffJA/Ztu2bap///nPf44bb7wRW7ZswdFHH42PPvoIY8aMwWeffYb99tsPkiTh/fffd+T9+154ZAURrT0ZDKyOIRpWfwo3coyT47ye202CajdBEERQ2H///cFxHMaNG4cVK1agu7s7H0Jpb29HS0sLbrrpJlxwwQWoqqrCTTfdVDTH448/rjp3X18f9t57b+y2224AgGg0Cp7nEYnklvuGhgbVvzMPytChQzFu3Dhs2LABr732Gg477DDceOONmDdvHm655Rbccccdtt+/71eWrhSPf3++FV0p7b4SRo5xcpzXc7tJUO0mCIIICkuXLoUkSfjiiy8wceJE7LvvvnjttdewYMECLF26FMOGDcMRRxyBRx55BEcccQQeeOABRKNRCMLOPJSzzjor3wGV/ffqq6+iqqoKgwYNQnt7O3p6epBOp/OiA4Dm3zs7OwHkvDErV67E8OHDIUlSPrwyePBgdHR0OPL+fe/xIAiCIAg3iUVCmHNA6e3czRCPaD/X19fXY/bs2diyZQseeughbN68GccccwxCoRCGDBmCp59+GieddBLS6TR4nsef/vQnjB49GldffTVOPfVUPPjgg5oeDwD49a9/jdmzZyOTyeS9JXPnzsXYsWMxffp01b//4he/wCeffAJBEHDNNdegqqoKZ555Jk4//XTMmzcPgiDgoYcecuTckPAgCIIg+jUcx2kmgjqN2j4tkyZNwnHHHVfwu3/9619FY9966y1Dr3HooYdi4cKFBb8777zzdP+utjttfX09Xn31VUOvaQbfh1oIgvAfH731utcmEAQRUHwvPEIckIyFEdIphzZyjJPjvJ7bTYJqN1FeXntmrtcmEAQRUHwfamlIxnDS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5MTDfvvthwsvvBBTpkzB//3f/wEAli9fjkMPPRT77LMPzj33XPT19QHY6Q1ZunQp/vznP+Pxxx/HlClTcPPNN4PneRx33HGYOnUq9ttvP5x55pno6ekxZXM4HMbRRx+NL774AkBu+4CDDz4YBxxwAA4//HAsW7YMADB37lzMmjULP/jBDzBx4kS8//77mDlzZn7bga1bt2LOnDmYOHEiJkyYgL/85S/511i0aBGmTJmCCRMm4Pzzzy8ptuSsXLkShx56KPbbbz+cdNJJ6OzszP/tiSeewMEHH4z9998fkydPxj/+8Q8AwIcffoh9990X8qbOhx56KF555RW0tLTg2GOPxcSJEzFp0iScf/75ps4XQRDk8SAI37BkyRKMGTMGgwYNKvj99OnTsX79erS0tAAAPv/8c/zxj3/EQw89BAB4+eWX8d5772Hx4sVIJpM46aST8Nvf/hbXXHNNfo4pU6bg4osvRnt7ez4sI0kSnnjiCQwaNAiSJOGnP/0pfv/73+Oqq64ybHNfXx+ef/55TJ8+He+88w6am5vx1ltvIR6PY+HChTjzzDPx6aefAgDee+89LFmyRHXTtUsvvRRjx47Fc889h61bt+LAAw/E5MmTccABB+D000/H3//+dxx99NF47bXXTIVKzjnnHFx88cW48MIL8cknn2Dq1Kk488wzAQDHHXccmpqawHEc1q1bh0MOOQRff/01pk6dikGDBuH111/HscceiyVLlqClpQXHH3887r33Xuyxxx547bXXAACtra2GbSEIIgd5PAgiYOy555444ogjCn532mmnoba2FuFwGBdeeCHmz59fch5JkvDb3/4W+++/PyZNmoSXX37ZcJji8ccfx/77749DDz0U48ePx1VXXYUXXngBy5Ytw8EHH4wpU6bg0ksvRWtra977cuihh2ru9Dp//nz85Cc/AQDssssumDNnDubPn4+VK1ciEong6KOPBgAce+yx2HPPPQ3Z2NnZiaVLl+K8884DAEycOBGHHXZY/u9r167FCSecgAkTJuCkk05Ca2sr1q5dCwC47LLLcP/99wMA/vCHP+CnP/0pOI7DIYccgldeeQWXX345XnjhhbxniiAI45DwIAifsP/++2P16tXYvn17we/fffdd7LrrrhgyZAgAoKampuRcRnINnnjiCbzxxhv4z3/+g08++QRXXHEFUqmUIVvPOussLFmyBEuWLMG9996LqqoqSJKEc889F0uXLs3/t3nzZlRVVRm224j9dvIo5GPPOOMM/OhHP8KKFSuwdOlS1NTU5N//nDlzsHz5cixZsgQvvvhiPqQyffp0LF26FAcffDCee+45TJs2DYIgWLaHIPojJDwIwieMGTMGs2fPxkUXXYTe3l4AwLp163D55Zfj+uuv1x07b948dHd3QxCEfFhCSV1dHTo6OvI/t7W1YfDgwairq0NXV5ftao/GxkY89thj+OabbwAAoijiww8/NDT26KOPxoMPPggAaGlpwXPPPYdjjjkG++67L3iez1e/zJ8/H1999ZWhOevq6rD//vvjkUceAQB8+umnePvtt/N/b2trwx577AEAeOyxxwoqcyKRCC6++GI0Njbi5JNPRkNDA4Ccl6SmpgannXYafv/732PVqlXo7u42ZA9BEDkox4MgfMQjjzyC6667DhMnTkQsFkM4HMYvfvELXHDBBbrjpk2bhuOOOw4tLS2YPn06/vu//7vomJNPPhmPPvoopkyZgjlz5uCyyy7DCy+8gLFjx2LIkCGYMWMGvv76a8u2z5gxA7/5zW9w8skng+d5ZDIZnHjiiZg6dWrJsffddx8uueQSTJw4EZIk4dprr8XBBx8MAHjqqafw05/+FIIgYNq0aZg8ebJhmx555BGcf/75uPvuuzFmzBgcfvjh+b/97ne/wymnnIKGhgYceeSR2G233QrGXnjhhbjmmmvws5/9LP+7BQsW4J577kE4HAbP87jzzjtRX19v2B6CIABOkqduEwRBBJQFCxbgv//7vx0rp503bx7+9Kc/4d///rfhMRzHoa2tLe8hIQiiGAq1EARREcRiMWzfvl23gZhRjj/+eFx55ZW45557DB3PGogNHToUoRDdVglCD/J4EARBEARRNkiaEwRBEARRNkh4EARBEARRNkh4EARBEARRNkh4EARBEARRNkh4EARBEARRNkh4EARBEARRNkh4EARBEARRNkh4EARBEARRNkh4EARBEARRNv4/+vcVUFwIRUsAAAAASUVORK5CYII=",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from quicklook.tql import plot_tls\n",
+ "\n",
+ "ax = plot_tls(results, period_min=1, period_max=13)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "3b78db23-7446-402f-b5ed-6c4dd9315f26",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "lc_flat = lc.copy()\n",
+ "lc_flat['flux'] = flat"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "7cac2b87-f90d-4f72-91bd-abccc750d494",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(-0.2, 0.2)"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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XLhQ8+fPV6tWrfTGG2/YdJ0AAMBx8vLyyn34LXbixAndddddKigo0IMPPqiYmJjaCc5G6enpkmQd7mKLjz/+WMHBwbruuuvKLZORkaF9+/bp4MGD+sc//qGGDRvq008/1dSpU/X222+rWbNmysrKkqRS37wXf/77g3ix/Px8zZ07V23atNEVV1xh3Z6VlVXqWNLZBKH4XJLUqVMn9e3bVyEhITpx4oQWL16s2NhYPffcc9YhRO7u7ho4cKC6desmb29vJSYm6tNPP9Uff/yhl156SQ0anH1M7t27t86cOaMXX3zRmhx26dJFjz322AXbsS5y2p6DU6dO6ZNPPtGhQ4fUunXrKtefPXu2li5dqsjISI0fP15Go1HTpk3Tjh07qlW22PHjx/XZZ59d8AcKAABwTq+88oquvfbaUivT/J3BYLAOGbnQ0BGLxaK1a9fq999/t1uctvr7MJ3KOnjwoL788kv93//9X4XlLBaLcnNzravydO/eXbGxsbJYLFqxYoVN5y72xhtv6NixY5o0aZJN1zFq1Cj169dPHTt21HXXXafnnntOfn5++uSTT6xl/Pz8dP/996tXr17q3Lmzhg8frkcffVRJSUlav369tdzPP/+s999/XyNGjNCzzz6rRx55REeOHNHzzz9fYliRq3Da5MDPz0/z5s3T3LlzS00AuZDExEStXbtWd955p8aNG6cBAwZoxowZCgoKUnx8vM1lzzd37lyFhYXpkksuseHqAACAo61du1bS2bH1FfH19dWHH36oF198UaNGjaqw7FdffaVJkybp7rvv1h9//GGvUKukeFJuWlqaTfXnzp2r8PBwBQUFKSsrS1lZWSoqKlJBQYH1z9LZb+ubNGlS4kvcJk2aqE2bNvrzzz+tZaSzw5TOl52dbS3/dx9++KF++OEHTZ48WRdffHGJfY0bNy51LOlsj0Lxucri6emp7t27a9++fRVee/fu3eXp6WktZ7FYNGfOHN144426/fbb1blzZ/Xt21f//Oc/9euvv9bYPAdHctrkwN3dXb6+vjbVXbdunYxGowYMGGDd5uHhoX79+mn37t0l/rFUpWyx7du3a926dRo/frxN8QEAAMd74okn1KdPH02ZMuWCZdu2bavevXvLzc2twnLFPQsGg8Hmb+6rKyAgQMHBwfrf//5nU/3Dhw/r+++/18iRI63/HT9+XF9//bVGjhyp5ORkSVKrVq3KPYbZbJZ0dqnVBg0alJoPUPz57/MHli9frs8++0wTJkwoc85Ey5YtSx0rOztbGRkZpY5lD5mZmcrMzCw1iqV4snRKSordz+loTjvnoDqSkpJkMplKrcl76aWXSpL2799vHYdXlbLS2eWy3n77bfXv31+hoaE1eBUAAKAm9ejRQz169LDrMW+88UY1adJEPj4+atu2rV2PXRVDhgzRW2+9pe+++07XX399iX1FRUXavHmzrrzyyjLrPvbYY9aH+2IvvPCC2rdvr8GDB1ufi6666iqtXr1aSUlJ1oflU6dOKSkpSYMHD5Z09svezp07a926ddZtkvTjjz/qoosuKvHegR9++EHvvvuu7rzzTvXt27fM2K688kp99tlnJXoKfvrpJxkMhgrniubl5WnTpk0XHPGxadMm5eXlqV27dpIkHx8fNWzYUPv27SsRU3HPAhOS64gTJ06U2etQvK14ok5Vy0rSqlWrlJaWpmeeecaeIQMAABdgMBic4q24N910k3bu3KlXX31Vu3btUs+ePeXp6anDhw9r1apVCgoKKjc5KGvNfw8PD/n7+5d4WVivXr3Url07zZw5U2PGjJGHh4c+++wzNWjQQDfffLO13IgRIzRlyhTNmTNH1113nbZu3aoffvhBjz/+uLXMtm3bNHv2bF1++eXq1KmTdu/ebd0XEBCggIAASdLAgQO1YsUKzZgxQ7feeqtOnDihDz74QAMHDrQOp9qxY4cWL16sq6++WkFBQTpx4oSWLFmijIwMTZ482Xrc999/XwaDQWFhYWrcuLESExP12Wef6ZJLLlGvXr0knf37vPHGG7Vy5Up5eXmpU6dOSktL00cffaRWrVqVmCy9d+9epaamKjMzU5Ks19C0adMS7ebsXDI5yM/PL/EK7WIeHh7W/baUPXXqlBYsWKARI0aUepV3RdLT0xUXF1epshERESXefAgAAFBVBoNBjz76qLp27apvvvlGa9euldlsVvPmzdWjRw/dcsst1T6H0WjUv/71L7333nt64403ZDab1bFjR82cObPEF68dO3bUlClTNH/+fH377bcKDAzUQw89pGuvvdZaZtu2bSooKNDvv/9eajL3yJEjdccdd0g6O+fgmWee0dtvv60ZM2bIy8tL/fv315gxY6zlfX19VVBQoHnz5un06dNq2LChOnTooAce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evXqpV69etkrHqBcfIMFAEDtIkGsf2yac7B9+3bt3LnzguWSk5O1fft2W04BlMLYVwAAgJplU3IwZcoUPfnkk3rmmWeUl5dXbrnPPvtMTz31lM3BAedjtRkAroJJngCclU3JgSQZDAZt3LhRjz32mFJTU+0ZE1AmVpsB4CroCQXgrGxODiIjIzVo0CAdPHhQ//znPxk+BABAJdET6rzo1UF9Z3NyYDQaNX78eD3wwAPKyspSbGysVq1aZc/YAABwSfSEOi96dVDf2ZwcFLvxxhv1zDPPyNvbW2+++abefvttFRUV2SM2AACAWkWvDuq7aicHktSxY0f95z//UatWrbRy5Ur961//UlZWlj0ODVQK3cAAAHugVwf1nV2SA0kKCgrSrFmz1LNnT/3++++aNGmSUlJS7HV4oEJ0AwMAAFRftV6C9neenp6aMmWK5s+fr08//VTHjh2z+Vi5ublavHixEhMTlZiYqKysLE2cOFE33HBDpeqbzWYtWLBACQkJysrKUmhoqEaPHq2uXbvWWlnUHt7gCACui5dgArXHpp6Dvn376rLLLit3/+jRo/XYY48pKChIgYGBNgV26tQpffLJJzp06JBat25d5fqzZ8/W0qVLFRkZqfHjx8toNGratGnasWNHrZV1BXVluA7dwADguugdBmqPTcnBww8/rH79+lVY5rrrrtO7776r9957z6bA/Pz8NG/ePM2dO1djx46tUt3ExEStXbtWd955p8aNG6cBAwZoxowZCgoKKvWDpabKugp+IANVV1eSaqCuYJIwUHvsNufA3tzd3eXr62tT3XXr1sloNGrAgAHWbR4eHurXr592796ttLS0Gi/rKviBDFQdSTVgX87SO0zij/qgUnMOil9wdumll8rDw6PKLzzr1KlT1SOrhqSkJJlMJnl5eZXYfumll0qS9u/fbx3uVFNlq8tZxldGR0c7/IcxUNcwBwZwTecn/vxuhKuqVHIwZcoUGQwGzZkzRyaTyfq5sr744gubA7TFiRMnyux1KN6Wnp5e42XPt3v3bk2dOrUKVyCtWbNGeXl5mj17trZu3VqlugAcr1u3btq6dWut/vst/rn89///fVt4eLj69u1ba3HVFfn5+Xr99deVnZ0ti8Uii8VSYn/x57L2oX7w9/fXyZMn5e/vX+Xf64Ct3N3da/V8lUoO+vTpI4PBYP3GvPiz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mIwMAOWzac4BAMC1FD8sF4/Hd2UkBwBQPrslB1lZWcrKyrLX4QAAtcjf318NGzasF5OSSQ4AoHw2DSsq9uuvv2rZsmXatWuX8vPzJUkeHh667LLLNGjQIHXv3t0uQdZ16enpiouLK7U9IiJCkZGRDogIAEoyGAz1YsUis9msY8eOkRwAQDlsTg7effddrVixQhaLRZLk5eUlg8Gg7Oxsbd68WVu2bNGgQYN0zz332C3Yusrf31+xsbGODgMAKlQfkoOUlBQVFRWRHABAOWxKDn788UctX75cPj4+GjFihPr06SNvb29JUk5OjhISErRw4UItX75cYWFhuu666+waNADA/lq2bKn169c7Oowa9cknn0iStm7dqh49ejg4GgBwPjbNOfjyyy/l7u6umTNnKioqypoYSGd7EG6++WY999xzatCggVauXGm3YAEANcdkMunIkSMqKipydCg15quvvpIkLVmyxMGRAIBzsik5OHDggC6//PIKu2VNJpMuv/xy7d+/3+bgAAC1x2QyKT8/X8ePH3d0KDWmQ4cOcnNz09ixYx0dCgA4JZuSA7PZLE9PzwuW8/T0lNlstuUUAIBaVvyFjyvPO/D29taVV16p6OhoR4cCAE7JpuQgODhY27dvV15eXrll8vLytH37dgUHB9scHACg9oSEhEhy7eSAZUwBoGI2JQfXXnutMjMzNWPGDB05cqTU/qNHj+q5557TqVOnmIwMAHWEp6enAgICXDY5sFgsOnz4MMkBAFTAptWKbrnlFm3YsEG///677r//frVt21ZBQUGSpLS0NP3xxx8qKirSJZdcoqFDh9ozXgBADTKZTC77luRTp04pOztbLVu2dHQoAOC0bEoOGjZsqGeffVbz5s3Tt99+q71792rv3r3W/R4eHurXr5/uvPNONWzY0G7BAgBqlisnB8U9IvQcAED5bH4JWqNGjXTvvffqrrvu0r59+3TixAlJkp+fn9q2bVupCcsAAOdiMpm0YcMGR4dRI0gOAODCbE4Oinl6eqpjx472iAUA4GAmk0np6enKy8tzuS95kpOT1aRJEzVt2tTRoQCA06p2clCTzGazFixYoISEBGVlZSk0NFSjR49W165dL1j3jz/+0Icffqhdu3ZJksLCwjR27Fi1adOmWmWPHDmi+fPna+fOnTp9+rQCAwMVGRmpW265xeV+kQKof4rH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PB06dEiZmZmSpMLCQr3wwgvavXu3Jk+eXOEbAKtynrqmOm1YVWXV279/vzZu3KiuXbvKaKy7/xxqsx1d+X6Uqt+WVanvCvdkZa+3um3FfWefdnSFe64i1WnHmjhPXVZbbck9WXY7OvI5kZ6DaggLC1N4eLjmzZunzMxMBQcHa82aNUpNTdWECRNKlN27d6+mTJmikSNH6o477tDcuXO1YcMG9ejRQ6dPn1ZCQkKJ8n369LHpPHVNddqw2IoVK5SdnW3tUtu4caP1z1FRUfL29pYkvfDCC/Lw8FD79u3VrFkz/fnnn/r666/VsGFD3XXXXbV0xTWjNtvRle9HqfptWZX6rnBPVvZ6q9tW3Hdncc9VrDrtKPFz8Hy11Zbck2c503MiyUE1TZo0SfPnz1dCQoKysrIUGhqqqVOnqlOnThXWS0pKknT2H8vGjRtL7T//L70656kLqnttS5YsUWpqqvXz+vXrtX79eklS7969rT+AevbsqR9++EFffPGFcnJy5OPjo6uvvlojR45USEiI/S+sltVWO9rjXM6uutdX2fquck9Wp72qUpf7rvp1XeWeq0h12pGfgyXVRltyT5bNkc+JBovFYqlyLQAAAAAup24P5AIAAABgNyQHAAAAACSRHAAAAAA4h+QAAAAAgCSSAwAAAADnkBwAAAAAkERyAAAAAOAckgMAAAAAknhDMgDUOYMGDSrx2WAwyMvLSxdffLH69u2r/v37y2AwWPe//PLLWrNmjZ599ll17ty5tsOtcR999JE+/vhj6+dWrVrpjTfesH4+duyY7rnnHgUFBen9998vtf18DRo0kLe3twICAnTJJZcoPDxcXbp0KdGexbKysjRy5MgS21y1jQHUHyQHAFBH9e3bV5JUVFSklJQU7dq1Szt37tTWrVv12GOPOTi62tehQwcFBwcrICCgSvU8PT11zTXXSDrbltnZ2Tp48KC+/vprff3117rkkkv06KOPymQylajXoEED69/Brl27dPToUftcCAA4EMkBANRRjzzySInPmzdv1rRp07R27VpFRkaqR48eDorMMfr3768bbrihyvWaNm1aqi0laf/+/Xrvvfe0detWTZ48Wf/5z38UGBho3e/p6Wmt9/LLL5McAHAJzDkAABfRtWtX9enTR5L0yy+/ODiauq9169aaPn26unbtqpMnT+rdd991dEgAUOPo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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fold = lc_flat.fold(results['period'], results['T0'])\n",
+ "ax = fold.scatter()\n",
+ "ax.plot((results.model_folded_phase - 0.5) * results.period,\n",
+ " results.model_folded_model)\n",
+ "ax.set_xlim(-0.2,0.2)"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "id": "7d5cb526-7183-4621-8928-661cd5b8a6c6",
+ "metadata": {
+ "scrolled": true
+ },
+ "source": [
+ "# Run grid\n",
+ "method2 = 'biweight'\n",
+ "df2 = run_grid(time, flux, windows, injections, method=method2)\n",
+ "\n",
+ "# Select optimal window\n",
+ "best_window2, valid = select_best_window(df2)\n",
+ "print(\"Selected window length:\", best_window2)"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "id": "0844119e-ff3c-464c-bff0-8bf46d41d8f2",
+ "metadata": {},
+ "source": [
+ "flat2, trend2 = flatten(\n",
+ " time,\n",
+ " flux,\n",
+ " method=\"biweight\",\n",
+ " window_length=best_window2,\n",
+ " return_trend=True,\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "id": "fa6332ff-36d0-491c-bd10-7ca140050d63",
+ "metadata": {},
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Run TLS\n",
+ "tls2 = transitleastsquares(time, flat2)\n",
+ "results2 = tls2.power()"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "id": "9f77ef39-c0d5-4df2-ba57-8a956b212eab",
+ "metadata": {},
+ "source": [
+ "results2['Porb_min'] = 0.1\n",
+ "results2['Porb_max'] = 13"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "id": "3a030504-f8e3-4cb7-83c9-13fa021a67bf",
+ "metadata": {},
+ "source": [
+ "lc_flat2 = lc.copy()\n",
+ "lc_flat2['flux'] = flat2"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "id": "404b7962-0da4-4f6a-9c4f-07f610b1a3b7",
+ "metadata": {},
+ "source": [
+ "fold2 = lc_flat2.fold(results['period'], results['T0'])\n",
+ "ax = fold2.scatter()\n",
+ "ax.plot((results2.model_folded_phase - 0.5) * results2.period,\n",
+ " results2.model_folded_model, label='model1', c='C0')\n",
+ "ax.plot((results2.model_folded_phase - 0.5) * results2.period,\n",
+ " results2.model_folded_model, label='model2', c='C3')\n",
+ "ax.set_xlim(-0.2,0.2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "27e59fe4-4a88-4a6b-b073-4300c3310837",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "ql",
+ "language": "python",
+ "name": "ql"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.12"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/quicklook/app/app.py b/quicklook/app/app.py
index 1d2495e..9de3b58 100644
--- a/quicklook/app/app.py
+++ b/quicklook/app/app.py
@@ -16,7 +16,8 @@
from flask import Flask, render_template, request, jsonify
from flask_sock import Sock
from loguru import logger
-from quicklook.tql import TessQuickLook, ALL_TESS_PIPELINES
+from quicklook.tql import TessQuickLook
+from quicklook.pipelines import ALL_TESS_PIPELINES, HLSP_PIPELINES
from quicklook.cli.ql import sanitize_target_name
from quicklook.exceptions import QuickLookError
from quicklook.utils import get_available_pipelines, get_available_sectors
@@ -83,48 +84,25 @@ def encoding(self):
# ---------------------------------------------------------------------------
-# SQLite job history
+# SQLite job history (schema + CRUD live in quicklook.app.jobs_db)
# ---------------------------------------------------------------------------
-def _init_db():
- conn = sqlite3.connect(str(DB_PATH))
- conn.execute(
- """CREATE TABLE IF NOT EXISTS job_history (
- name TEXT PRIMARY KEY,
- status TEXT NOT NULL,
- error TEXT DEFAULT '',
- params TEXT DEFAULT '{}',
- submitted_at REAL,
- finished_at REAL,
- step_times TEXT DEFAULT '{}'
- )"""
- )
- conn.commit()
- conn.close()
-
+from quicklook.app.jobs_db import JobsDB # noqa: E402
-_init_db()
+_jobs_db = JobsDB(DB_PATH)
def _save_job_history(
name, status, error="", params=None, submitted_at=None, finished_at=None, step_times=None
):
- conn = sqlite3.connect(str(DB_PATH))
- conn.execute(
- "INSERT OR REPLACE INTO job_history "
- "(name, status, error, params, submitted_at, finished_at, step_times) "
- "VALUES (?, ?, ?, ?, ?, ?, ?)",
- (
- name,
- status,
- error,
- json.dumps(params or {}),
- submitted_at,
- finished_at,
- json.dumps(step_times or {}),
- ),
+ _jobs_db.save(
+ name=name,
+ status=status,
+ error=error,
+ params=params,
+ submitted_at=submitted_at,
+ finished_at=finished_at,
+ step_times=step_times,
)
- conn.commit()
- conn.close()
_avg_step_cache = {"data": {}, "ts": 0}
@@ -137,18 +115,12 @@ def _get_avg_step_times():
with _avg_step_lock:
if now - _avg_step_cache["ts"] < 60:
return dict(_avg_step_cache["data"])
- conn = sqlite3.connect(str(DB_PATH))
- rows = conn.execute(
- "SELECT step_times FROM job_history WHERE status='done' "
- "ORDER BY finished_at DESC LIMIT 20"
- ).fetchall()
- conn.close()
- if not rows:
+ step_dicts = _jobs_db.recent_step_times(limit=20)
+ if not step_dicts:
return {}
totals: dict[str, float] = {}
counts: dict[str, int] = {}
- for (st_json,) in rows:
- st = json.loads(st_json) if st_json else {}
+ for st in step_dicts:
for step, dur in st.items():
totals[step] = totals.get(step, 0) + dur
counts[step] = counts.get(step, 0) + 1
@@ -185,12 +157,17 @@ def _job_worker():
_worker_thread = Thread(target=_job_worker, daemon=True)
_worker_thread.start()
+# Label for the TGLC local ePSF-extraction step. Kept as a named constant
+# because the websocket handler matches on it for fine-grained sub-progress.
+EPSF_STEP_LABEL = "Extracting ePSF light curve"
+
# Pipeline step definitions for progress tracking.
PIPELINE_STEPS = [
(r"Generating quicklook", "Initializing"),
(r"Catalog names:|TIC \d+", "Resolving target"),
(r"Available sectors:|All available lightcurves", "Searching lightcurves"),
(r"Downloading|search_lightcurve|Using .+ TPF", "Downloading data"),
+ (r"ePSF fitting", EPSF_STEP_LABEL),
(r"Plotting raw light curve|raw lc", "Raw light curve"),
(r"flatten|biweight|cosine|Flattening", "Flattening light curve"),
(r"Lomb-Scargle|GLS|Generalized Lomb", "Lomb-Scargle periodogram"),
@@ -681,10 +658,7 @@ def delete_job(target):
# Drop the SQLite history row (best-effort).
try:
- conn = sqlite3.connect(str(DB_PATH))
- conn.execute("DELETE FROM job_history WHERE name = ?", (target,))
- conn.commit()
- conn.close()
+ _jobs_db.delete(target)
except sqlite3.DatabaseError as e:
logger.warning(f"Failed to delete job_history row for {target}: {e}")
@@ -813,6 +787,15 @@ def ws_log(ws, target):
step_label = PIPELINE_STEPS[step_idx][1] if step_idx >= 0 else "Starting"
pct = int(((step_idx + 1) / step_total) * 100) if step_idx >= 0 else 0
+ # Fine-grained sub-progress within the long TGLC ePSF step:
+ # interpolate the bar from the "ePSF fitting: N/M (X%)" log lines.
+ if step_idx >= 0 and PIPELINE_STEPS[step_idx][1] == EPSF_STEP_LABEL:
+ epsf_pcts = re.findall(r"ePSF fitting: \d+/\d+ \((\d+)%\)", full_log)
+ if epsf_pcts:
+ frac = int(epsf_pcts[-1]) / 100.0
+ pct = int(((step_idx + frac) / step_total) * 100)
+ step_label = f"{EPSF_STEP_LABEL} ({epsf_pcts[-1]}%)"
+
# Record step timing transitions
if step_idx > last_step_idx:
now = time.time()
@@ -935,7 +918,6 @@ def _parse_tls_filename(stem):
recoverable.
"""
SPOC_FLUX = {"pdcsap", "sap"}
- HLSP_PIPELINES = {"qlp", "tglc", "tasoc", "cdips", "pathos", "tess-spoc", "t16"}
# Trailing "_tls" already stripped by Path.stem callers
if stem.endswith("_tls"):
stem = stem[: -len("_tls")]
diff --git a/quicklook/app/jobs_db.py b/quicklook/app/jobs_db.py
new file mode 100644
index 0000000..f4e2d58
--- /dev/null
+++ b/quicklook/app/jobs_db.py
@@ -0,0 +1,114 @@
+"""Tiny persistence layer for the GUI job-history SQLite database.
+
+One module owns the schema, the version pragma, and the CRUD it needs.
+The app code talks to ``JobsDB`` instead of cracking open sqlite3
+inline, so future schema changes ship from one place — bump
+``SCHEMA_VERSION``, add a migration branch in ``_migrate``, and the
+next process start handles it.
+"""
+
+from __future__ import annotations
+
+import json
+import sqlite3
+from pathlib import Path
+from typing import Any
+
+SCHEMA_VERSION = 1
+
+
+def _connect(path: Path) -> sqlite3.Connection:
+ return sqlite3.connect(str(path))
+
+
+def _migrate(conn: sqlite3.Connection) -> None:
+ current = conn.execute("PRAGMA user_version").fetchone()[0]
+ if current == SCHEMA_VERSION:
+ return
+ if current == 0:
+ conn.execute(
+ """CREATE TABLE IF NOT EXISTS job_history (
+ name TEXT PRIMARY KEY,
+ status TEXT NOT NULL,
+ error TEXT DEFAULT '',
+ params TEXT DEFAULT '{}',
+ submitted_at REAL,
+ finished_at REAL,
+ step_times TEXT DEFAULT '{}'
+ )"""
+ )
+ conn.execute(f"PRAGMA user_version = {SCHEMA_VERSION}")
+ conn.commit()
+ return
+ # Future versions: add elif current == N branches that migrate
+ # forward to SCHEMA_VERSION. Never silently downgrade.
+ raise RuntimeError(
+ f"jobs.db user_version={current} is newer than SCHEMA_VERSION={SCHEMA_VERSION}; "
+ "refusing to run against an unknown future schema."
+ )
+
+
+class JobsDB:
+ """Thin wrapper around the job_history table. Stateless per call."""
+
+ def __init__(self, path: Path):
+ self.path = path
+ self.init()
+
+ def init(self) -> None:
+ conn = _connect(self.path)
+ try:
+ _migrate(conn)
+ finally:
+ conn.close()
+
+ def save(
+ self,
+ name: str,
+ status: str,
+ error: str = "",
+ params: dict[str, Any] | None = None,
+ submitted_at: float | None = None,
+ finished_at: float | None = None,
+ step_times: dict[str, float] | None = None,
+ ) -> None:
+ conn = _connect(self.path)
+ try:
+ conn.execute(
+ "INSERT OR REPLACE INTO job_history "
+ "(name, status, error, params, submitted_at, finished_at, step_times) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?)",
+ (
+ name,
+ status,
+ error,
+ json.dumps(params or {}),
+ submitted_at,
+ finished_at,
+ json.dumps(step_times or {}),
+ ),
+ )
+ conn.commit()
+ finally:
+ conn.close()
+
+ def recent_step_times(self, limit: int = 20) -> list[dict[str, float]]:
+ """Return parsed step_times dicts from the most recent successful jobs."""
+ conn = _connect(self.path)
+ try:
+ rows = conn.execute(
+ "SELECT step_times FROM job_history WHERE status='done' "
+ "ORDER BY finished_at DESC LIMIT ?",
+ (limit,),
+ ).fetchall()
+ finally:
+ conn.close()
+ return [json.loads(st) if st else {} for (st,) in rows]
+
+ def delete(self, name: str) -> None:
+ conn = _connect(self.path)
+ try:
+ conn.execute("DELETE FROM job_history WHERE name = ?", (name,))
+ conn.commit()
+ finally:
+ conn.close()
diff --git a/quicklook/app/templates/base.html b/quicklook/app/templates/base.html
new file mode 100644
index 0000000..50c8a7b
--- /dev/null
+++ b/quicklook/app/templates/base.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ {% block title %}TESS QuickLook{% endblock %}
+
+
+ {% block head %}{% endblock %}
+
+
+{% block before_topbar %}{% endblock %}
+{% set current = self.topbar_current()|trim %}
+{% include 'partials/topbar.html' %}
+{% block content %}{% endblock %}
+
+{% block scripts %}{% endblock %}
+
+
+{# Pages override topbar_current to highlight the active nav link.
+ Values: home | gallery | compare | summary #}
+{% block topbar_current %}{% endblock %}
diff --git a/quicklook/app/templates/compare.html b/quicklook/app/templates/compare.html
index 6b0e4c4..d64aeab 100644
--- a/quicklook/app/templates/compare.html
+++ b/quicklook/app/templates/compare.html
@@ -1,11 +1,8 @@
-
-
-
-
-
- TESS QuickLook - Compare
-
-
+{% extends "base.html" %}
+{% import 'partials/_components.html' as components %}
+{% block topbar_current %}compare{% endblock %}
+{% block title %}TESS QuickLook - Compare{% endblock %}
+{% block head %}
-
-
+{% endblock %}
+
+{% block before_topbar %}
+{% endblock %}
- {% set current = 'compare' %}
- {% include 'partials/topbar.html' %}
-
+{% block content %}
Compare Results
@@ -164,7 +161,9 @@ Compare Results
-
+{% endblock %}
+
+{% block scripts %}
-
-
-
-
- Loading TLS Summary…
- Scanning saved results
-
-
-
-
-
+ {{ components.page_loading('Loading TLS Summary…', 'Scanning saved results') }}
+{% endblock %}
diff --git a/quicklook/app/templates/gallery.html b/quicklook/app/templates/gallery.html
index 2e45eb8..ee64c7a 100644
--- a/quicklook/app/templates/gallery.html
+++ b/quicklook/app/templates/gallery.html
@@ -1,11 +1,8 @@
-
-
-
-
-
- TESS QuickLook Gallery
-
-
+{% extends "base.html" %}
+{% import 'partials/_components.html' as components %}
+{% block topbar_current %}gallery{% endblock %}
+{% block title %}TESS QuickLook Gallery{% endblock %}
+{% block head %}
-
-
+{% endblock %}
+
+{% block before_topbar %}
+{% endblock %}
-{% set current = 'home' %}
-{% include 'partials/topbar.html' %}
-
+{% block content %}
@@ -341,8 +337,8 @@ TESS QuickLook
-
- ?
+
+ ?
+{% endblock %}
-
+{% block scripts %}
-
-
-
-
- Loading TLS Summary…
- Scanning saved results
-
-
-
-
-
-
+{{ components.page_loading('Loading TLS Summary…', 'Scanning saved results') }}
+{% endblock %}
diff --git a/quicklook/app/templates/partials/_components.html b/quicklook/app/templates/partials/_components.html
new file mode 100644
index 0000000..26c3965
--- /dev/null
+++ b/quicklook/app/templates/partials/_components.html
@@ -0,0 +1,15 @@
+{# Shared Jinja macros for repeated UI patterns. Import with:
+ {% import 'partials/_components.html' as components %}
+#}
+
+{% macro page_loading(title='Loading…', subtitle='', subtitle_id=None) %}
+
+
+
+
+ {{ title }}
+ {{ subtitle }}
+
+
+
+{% endmacro %}
diff --git a/quicklook/app/templates/tls_summary.html b/quicklook/app/templates/tls_summary.html
index 3480565..20520c7 100644
--- a/quicklook/app/templates/tls_summary.html
+++ b/quicklook/app/templates/tls_summary.html
@@ -1,11 +1,8 @@
-
-
-
-
-
- TLS Results Summary
-
-
+{% extends "base.html" %}
+{% import 'partials/_components.html' as components %}
+{% block topbar_current %}summary{% endblock %}
+{% block title %}TLS Results Summary{% endblock %}
+{% block head %}
-
-
-
-{% set current = 'summary' %}
-{% include 'partials/topbar.html' %}
+{% endblock %}
+{% block content %}
@@ -430,7 +424,9 @@
TLS Results Summary
{% endif %}
-
+{% endblock %}
+
+{% block scripts %}
-
-
-
-
- Loading TLS results…
-
-
-
-
+{{ components.page_loading('Loading TLS results…', subtitle_id='pageLoadingPath') }}
@@ -909,5 +897,4 @@
Browse for TLS results directory
});
})();
-
-
+{% endblock %}
diff --git a/quicklook/inject.py b/quicklook/inject.py
index c7660f2..5a0d8cb 100644
--- a/quicklook/inject.py
+++ b/quicklook/inject.py
@@ -16,6 +16,7 @@
import matplotlib.pyplot as plt
from wotan import flatten
from transitleastsquares import transitleastsquares
+from loguru import logger
# --------------------------------------------------------------------
@@ -164,7 +165,7 @@ def select_best_window(df, depth_min=0.9, duration_tol=0.2, asym_max=0.002):
# Select optimal window
best_window, valid = select_best_window(df)
- print("Selected window length:", best_window)
+ logger.info(f"Selected window length: {best_window}")
# Run grid with different flatten method
# method2 = 'rspline'
diff --git a/quicklook/pipelines.py b/quicklook/pipelines.py
new file mode 100644
index 0000000..6a93f47
--- /dev/null
+++ b/quicklook/pipelines.py
@@ -0,0 +1,56 @@
+"""Single source of truth for the TESS light-curve pipelines we support.
+
+Two orthogonal classifications live here:
+
+* ``FULL_FRAME_TESS_PIPELINES`` — pipelines that derive light curves from
+ Full Frame Images (FFI). These need separate handling in the analysis
+ path (cadence detection, aperture choice, etc.).
+* ``HLSP_PIPELINES`` — pipelines whose saved output filenames follow the
+ HLSP naming convention ``
_s__``. This
+ set drives the filename → pipeline reverse-lookup used by the GUI.
+
+These overlap but are not identical: TASOC is not full-frame derived but
+its output filenames use the HLSP convention, so it appears in
+``HLSP_PIPELINES`` only.
+
+Adding a new pipeline:
+ 1. Append the lowercase name to ``ALL_TESS_PIPELINES`` (preserves the
+ order shown in the GUI form).
+ 2. If it derives from FFI, add to ``FULL_FRAME_TESS_PIPELINES``.
+ 3. If its saved-file stems embed the pipeline name as the lctype
+ token, add to ``HLSP_PIPELINES``.
+"""
+
+from __future__ import annotations
+
+# Order is meaningful — the GUI form renders pipelines in this order.
+FULL_FRAME_TESS_PIPELINES: list[str] = [
+ "tess-spoc",
+ "qlp",
+ "tglc",
+ "cdips",
+ "pathos",
+ "eleanor",
+ "t16",
+ "gsfc-eleanor-lite",
+ "tequila",
+ "tica",
+ "diamante",
+]
+
+ALL_TESS_PIPELINES: list[str] = ["spoc", "tasoc"] + FULL_FRAME_TESS_PIPELINES
+
+# Pipelines whose saved-file stems put the pipeline name as the lctype
+# token (e.g. "TIC123_s12_qlp_lc_tls.h5"). Used by app.py's filename
+# parser when recovering pipeline/cadence from a stem.
+HLSP_PIPELINES: frozenset[str] = frozenset(
+ {
+ "qlp",
+ "tglc",
+ "tasoc",
+ "cdips",
+ "pathos",
+ "tess-spoc",
+ "t16",
+ }
+)
diff --git a/quicklook/plot.py b/quicklook/plot.py
index a796e53..4dc6354 100755
--- a/quicklook/plot.py
+++ b/quicklook/plot.py
@@ -255,7 +255,7 @@ def plot_periodogram(
ax.set_xlim(xmin, period_max)
ax.legend(title="Prot peaks [d]")
if verbose:
- print(pg.show_properties())
+ logger.info(pg.show_properties())
return pg
@@ -495,7 +495,7 @@ def plot_gaia_sources_on_tpf(
survey image and Gaia DR2 positions
"""
if verbose:
- print("Plotting nearby Gaia sources on tpf.")
+ logger.info("Plotting nearby Gaia sources on tpf.")
assert target_gaiaid is not None
img = np.nanmedian(tpf.flux, axis=0)
# make aperture mask
@@ -509,7 +509,7 @@ def plot_gaia_sources_on_tpf(
if gaia_sources is None:
if verbose:
- print("Querying Gaia sources around the target.")
+ logger.info("Querying Gaia sources around the target.")
target_coord = SkyCoord(
ra=tpf.get_header()["RA_OBJ"],
dec=tpf.get_header()["DEC_OBJ"],
@@ -541,9 +541,9 @@ def plot_gaia_sources_on_tpf(
# sources_inside_aperture.append(isinside)
min_gmag = gaia_sources.loc[isinside, "phot_g_mean_mag"].min()
if (target_gmag - min_gmag) != 0:
- print(
- f"target Gmag={target_gmag:.2f} is not the brightest \
- within aperture (Gmag={min_gmag:.2f})"
+ logger.warning(
+ f"target Gmag={target_gmag:.2f} is not the brightest "
+ f"within aperture (Gmag={min_gmag:.2f})"
)
else:
min_gmag = gaia_sources.phot_g_mean_mag.min() # brightest
@@ -695,7 +695,7 @@ def plot_gaia_sources_on_survey(
errmsg = f"{survey} not in {list(dss_description.keys())}"
assert survey in list(dss_description.keys()), errmsg
if verbose:
- print("Plotting nearby Gaia sources on survey image.")
+ logger.info("Plotting nearby Gaia sources on survey image.")
assert target_gaiaid is not None
ny, nx = tpf.flux.shape[1:]
if fov_rad is None:
@@ -704,7 +704,7 @@ def plot_gaia_sources_on_survey(
target_coord = SkyCoord(ra=tpf.ra * u.deg, dec=tpf.dec * u.deg)
if gaia_sources is None:
if verbose:
- print("Querying Gaia sources around the target.")
+ logger.info("Querying Gaia sources around the target.")
gaia_sources = Catalogs.query_region(
target_coord,
radius=fov_rad,
@@ -722,7 +722,7 @@ def plot_gaia_sources_on_survey(
extent = np.array([-1, nx, -1, ny])
if verbose:
- print(f"Querying {survey} ({fov_rad:.2f} x {fov_rad:.2f}) archival image...")
+ logger.info(f"Querying {survey} ({fov_rad:.2f} x {fov_rad:.2f}) archival image...")
# -----------create figure---------------#
if (ax is None) or (hdu is None):
# get img hdu for subplot projection
diff --git a/quicklook/tglc.py b/quicklook/tglc.py
index fac23e4..1789d0e 100644
--- a/quicklook/tglc.py
+++ b/quicklook/tglc.py
@@ -34,6 +34,15 @@
Gaia.ROW_LIMIT = -1
Gaia.MAIN_GAIA_TABLE = "gaiadr3.gaia_source" # TODO: dr3 MJD = 2457388.5, TBJD = 388.5
+# astroquery's MAST service connection imposes a 600 s (10 min) request
+# timeout by default, which aborts large TESScut FFI-cutout downloads and
+# slow catalog queries mid-run. Raise it so TGLC jobs are not cut off.
+_MAST_TIMEOUT = 3600
+for _mast_client in (Catalogs, Tesscut):
+ _conn = getattr(_mast_client, "_service_api_connection", None)
+ if _conn is not None:
+ _conn.TIMEOUT = _MAST_TIMEOUT
+
def _gaia_async_query(query_str, max_retries=3, timeout=120):
"""Run a Gaia TAP async query with retries and a timeout."""
@@ -1117,8 +1126,11 @@ def fit_lc(
A_cut, e_psf[j]
)
aperture = aperture.reshape((len(source.time), up - down, right - left))
- target_5x5 = np.dot(A_target, np.nanmedian(e_psf, axis=0)).reshape(cut_size, cut_size)
- field_stars_5x5 = np.dot(A_cut, np.nanmedian(e_psf, axis=0)).reshape(cut_size, cut_size)
+ # Reshape to the actual cut-region shape, which is smaller than 5x5 when
+ # the star sits near a cutout edge; the block below pads it back to 5x5.
+ region_shape = (up - down, right - left)
+ target_5x5 = np.dot(A_target, np.nanmedian(e_psf, axis=0)).reshape(region_shape)
+ field_stars_5x5 = np.dot(A_cut, np.nanmedian(e_psf, axis=0)).reshape(region_shape)
if target_5x5.shape != (cut_size, cut_size):
# Pad with nans to get to 5x5 shape
# Pad amount in a direction is (expected_num_pix) - (actual_num_pix)
@@ -1141,7 +1153,7 @@ def fit_lc(
over_size = psf_size * factor + 1
if near_edge: # TODO: near_edge
psf_lc = np.zeros(len(source.time))
- psf_lc[:] = np.NaN
+ psf_lc[:] = np.nan
e_psf_1d = np.nanmedian(e_psf[:, : over_size**2], axis=0).reshape(over_size, over_size)
portion = (
(36 / 49) * np.nansum(e_psf_1d[8:15, 8:15]) / np.nansum(e_psf_1d)
@@ -1293,7 +1305,7 @@ def fit_lc_float_field(
over_size = psf_size * factor + 1
if near_edge: # TODO: near_edge
psf_lc = np.zeros(len(source.time))
- psf_lc[:] = np.NaN
+ psf_lc[:] = np.nan
e_psf_1d = np.nanmedian(e_psf[:, : over_size**2], axis=0).reshape(over_size, over_size)
portion = (
(36 / 49) * np.nansum(e_psf_1d[8:15, 8:15]) / np.nansum(e_psf_1d)
@@ -1537,6 +1549,25 @@ def bg_mod(
return local_bg, aper_lc, psf_lc, cal_aper_lc, cal_psf_lc
+def _fit_epsf_series(A, source, over_size, bg_dof, power=0.8, no_progress_bar=False):
+ """Fit the effective PSF at every cadence.
+
+ Shows a tqdm status bar in interactive terminals and additionally emits
+ a loguru progress line every ~5% of cadences, so progress stays visible
+ when stdout is captured to a log file (e.g. the web GUI job log) where
+ the tqdm bar does not render.
+ """
+ ntime = len(source.time)
+ e_psf = np.zeros((ntime, over_size**2 + bg_dof))
+ log_every = max(1, ntime // 20)
+ for i in trange(ntime, desc="Fitting ePSF", disable=no_progress_bar):
+ e_psf[i] = fit_psf(A, source, over_size, power=power, time=i)
+ done = i + 1
+ if not no_progress_bar and (done % log_every == 0 or done == ntime):
+ logger.info(f"ePSF fitting: {done}/{ntime} ({100 * done // ntime}%)")
+ return e_psf
+
+
def epsf(
source,
psf_size=11,
@@ -1583,7 +1614,7 @@ def epsf(
)
lc_directory = f"{local_directory}lc/{source.camera}-{source.ccd}/"
epsf_loc = f"{local_directory}epsf/{source.camera}-{source.ccd}/epsf_{target}_sector_{sector}_{source.camera}-{source.ccd}.npy"
- if isinstance(Source_cut, source):
+ if isinstance(source, Source_cut):
bg_dof = 3
lc_directory = f"{local_directory}lc/"
epsf_loc = f"{local_directory}epsf/epsf_{target}_sector_{sector}.npy"
@@ -1600,9 +1631,9 @@ def epsf(
e_psf = np.load(epsf_loc)
logger.info(f"Loaded ePSF {target} from directory.")
else:
- e_psf = np.zeros((len(source.time), over_size**2 + bg_dof))
- for i in trange(len(source.time), desc="Fitting ePSF", disable=no_progress_bar):
- e_psf[i] = fit_psf(A, source, over_size, power=power, time=i)
+ e_psf = _fit_epsf_series(
+ A, source, over_size, bg_dof, power=power, no_progress_bar=no_progress_bar
+ )
if np.isnan(e_psf).any():
logger.warning(
f"TESS FFI cut includes NaN values. Please shift the center of the cutout to remove NaN near edge. Target: {target}"
@@ -1618,7 +1649,7 @@ def epsf(
index_1 = np.where(np.array(source.quality) == 0)[0]
index_2 = np.where(quality_raw == 0)[0]
index = np.intersect1d(index_1, index_2)
- if isinstance(Source_cut, source):
+ if isinstance(source, Source_cut):
in_frame = np.where(np.invert(np.isnan(source.flux[0])))
x_left = np.min(in_frame[1]) - 0.5
x_right = source.size - np.max(in_frame[1]) + 0.5
@@ -1811,36 +1842,238 @@ def epsf(
)
-def get_tglc_lc(target_name, sector=None, size=50, limit_mag=16, verbose=True):
+def _point_to_point_scatter(flux):
+ """Robust white-noise estimate: MAD of successive flux differences / sqrt(2).
+
+ Unlike a plain MAD of the light curve, the first-difference scatter
+ isolates high-frequency (instrumental / photon) noise and is *not*
+ inflated by genuine astrophysical variability. This makes it safe to use
+ when picking the less-noisy of two light curves: a plain MAD would
+ systematically penalise the light curve of a truly variable star.
+
+ Parameters
+ ----------
+ flux : np.ndarray
+ Light curve flux (NaNs allowed).
+
+ Returns
+ -------
+ float
+ Point-to-point scatter, or ``np.nan`` if there are <3 finite points.
+ """
+ finite = flux[np.isfinite(flux)]
+ if finite.size < 3:
+ return np.nan
+ diff = np.diff(finite)
+ return 1.4826 * np.nanmedian(np.abs(diff - np.nanmedian(diff))) / np.sqrt(2)
+
+
+def _choose_photometry(
+ cal_aper_lc,
+ cal_psf_lc,
+ near_edge,
+ contamination,
+ tess_mag,
+ contam_high=1.0,
+ contam_low=0.05,
+ bright_mag=12.0,
+ faint_mag=13.0,
+ margin=0.05,
+):
+ """Decide whether the aperture or PSF light curve is the better product.
+
+ The decision is deterministic and applied in priority order:
+
+ 1. Hard eliminations -- if the PSF light curve is undefined (target near
+ a CCD edge) or has too few valid cadences, aperture is the only option.
+ 2. Crowding -- a high contamination ratio favours PSF photometry, whose
+ explicit forward model decontaminates better than a fixed 3x3 aperture;
+ a bright, isolated star favours the simpler aperture photometry.
+ 3. Precision -- otherwise pick the light curve with the lower
+ point-to-point scatter, requiring a margin to avoid noise-driven
+ flip-flopping (see :func:`_point_to_point_scatter`).
+ 4. Soft default -- faint stars favour PSF; otherwise aperture, which is
+ the upstream convention (TGLC plotting helpers default to
+ ``cal_aper_flux``).
+
+ Returns
+ -------
+ tuple(str, str, dict)
+ ``(choice, reason, metrics)`` where ``choice`` is ``"aperture"`` or
+ ``"psf"``, ``reason`` is a human-readable explanation, and ``metrics``
+ holds the scalar values behind the decision.
+ """
+ aper_p2p = _point_to_point_scatter(cal_aper_lc)
+ psf_p2p = _point_to_point_scatter(cal_psf_lc)
+ aper_valid = int(np.sum(np.isfinite(cal_aper_lc)))
+ psf_valid = int(np.sum(np.isfinite(cal_psf_lc)))
+ metrics = {
+ "APER_P2P": aper_p2p,
+ "PSF_P2P": psf_p2p,
+ "APER_NVALID": aper_valid,
+ "PSF_NVALID": psf_valid,
+ "CONTAMRT": contamination,
+ }
+
+ # 1. Hard eliminations: PSF unusable -> must use aperture.
+ if near_edge:
+ return "aperture", "near edge: PSF light curve is undefined", metrics
+ if psf_valid == 0 or not np.isfinite(psf_p2p):
+ return "aperture", "PSF light curve has no valid cadences", metrics
+ if aper_valid > 0 and psf_valid < 0.5 * aper_valid:
+ return (
+ "aperture",
+ f"PSF has too few valid cadences ({psf_valid} < 50% of {aper_valid})",
+ metrics,
+ )
+
+ # 2. Crowding: explicit forward model decontaminates better.
+ if np.isfinite(contamination) and contamination >= contam_high:
+ return (
+ "psf",
+ f"high contamination ({contamination:.3f} >= {contam_high})",
+ metrics,
+ )
+ if (
+ np.isfinite(contamination)
+ and contamination <= contam_low
+ and np.isfinite(tess_mag)
+ and tess_mag <= bright_mag
+ ):
+ return (
+ "aperture",
+ f"bright (T={tess_mag:.1f}) and isolated "
+ f"(contamination {contamination:.3f} <= {contam_low})",
+ metrics,
+ )
+
+ # 3. Precision tie-break on point-to-point scatter.
+ if np.isfinite(aper_p2p) and np.isfinite(psf_p2p):
+ if psf_p2p < aper_p2p * (1.0 - margin):
+ return (
+ "psf",
+ f"lower point-to-point scatter " f"(PSF {psf_p2p:.5f} < aperture {aper_p2p:.5f})",
+ metrics,
+ )
+ if aper_p2p < psf_p2p * (1.0 - margin):
+ return (
+ "aperture",
+ f"lower point-to-point scatter " f"(aperture {aper_p2p:.5f} < PSF {psf_p2p:.5f})",
+ metrics,
+ )
+
+ # 4. Soft default: faint stars favour PSF; otherwise aperture.
+ if np.isfinite(tess_mag) and tess_mag >= faint_mag:
+ return "psf", f"faint star (T={tess_mag:.1f}); metrics within margin", metrics
+ return "aperture", "default (aperture, upstream convention)", metrics
+
+
+def get_tglc_lc(
+ target_name,
+ sector=None,
+ size=50,
+ limit_mag=16,
+ photometry="auto",
+ cache_dir=None,
+ use_cache=True,
+ verbose=True,
+):
"""Run the TGLC ePSF pipeline for a single target and return a TessLightCurve.
This function downloads an FFI cutout via TESScut, runs the TGLC effective
- PSF photometry pipeline, and packages the calibrated PSF light curve as a
- ``lightkurve.TessLightCurve`` object.
+ PSF photometry pipeline, and packages the light curve as a
+ ``lightkurve.TessLightCurve`` object. Both the aperture and PSF products
+ are attached as extra columns; ``photometry`` selects which one becomes
+ the primary ``flux`` column.
Parameters
----------
target_name : str
Target identifier resolved by MAST (e.g. "TIC 12345", "TOI-1234").
sector : int or None
- TESS sector. ``None`` uses the first available sector.
+ TESS sector to extract. ``None`` selects the first available
+ sector, ``-1`` the latest available sector, and a positive
+ integer that specific sector.
size : int
- Side length in pixels of the TESScut FFI cutout (default 25).
+ Side length in pixels of the TESScut FFI cutout (default 50).
limit_mag : float
Faintest TESS magnitude to include in the PSF model (default 16).
+ photometry : str
+ Which light curve becomes the primary ``flux`` column:
+ ``"auto"`` (default) lets :func:`_choose_photometry` decide,
+ ``"aperture"`` or ``"psf"`` force a specific product.
+ cache_dir : str or None
+ Directory for cached FFI cutouts and ePSF models. ``None`` uses
+ ``~/.tglc``. Re-running the same target/sector/size reloads the
+ cached ``Source_cut`` pickle and ``e_psf`` array instead of
+ re-downloading and re-fitting (the ePSF fit dominates runtime).
+ use_cache : bool
+ Read from and write to ``cache_dir`` (default ``True``). Set
+ ``False`` to force a fresh download and ePSF fit.
verbose : bool
Print progress information.
Returns
-------
lightkurve.TessLightCurve
- Calibrated PSF light curve with BTJD times and normalized flux.
+ Calibrated light curve with BTJD times and normalized flux. The
+ primary ``flux`` column is the chosen product; ``cal_aper_flux``,
+ ``cal_psf_flux``, ``aperture_flux`` and ``psf_flux`` are attached as
+ extra columns. ``meta`` records the selection (``FLUX_ORIGIN``,
+ ``PHOT_SEL``, ``PHOT_RSN``, ``CONTAMRT``, ``APER_P2P``, ``PSF_P2P``).
"""
+ valid_modes = ("auto", "aperture", "psf")
+ if photometry not in valid_modes:
+ raise ValueError(f"photometry must be one of {valid_modes}, got {photometry!r}")
import lightkurve as lk
from astropy.time import Time
- # 1. Build the Source_cut object (downloads FFI cutout + Gaia catalog)
- source = Source_cut(target_name, size=size, sector=sector, limit_mag=limit_mag)
+ # Resolve cache locations. Re-running the same target/sector/size reuses
+ # the cached FFI cutout and ePSF model instead of re-downloading and
+ # re-fitting.
+ if cache_dir is None:
+ cache_dir = os.path.expanduser("~/.tglc")
+ source_dir = os.path.join(cache_dir, "source")
+ epsf_dir = os.path.join(cache_dir, "epsf")
+ if use_cache:
+ os.makedirs(source_dir, exist_ok=True)
+ os.makedirs(epsf_dir, exist_ok=True)
+ slug = target_name.replace(" ", "")
+ # Resolve the sector request. None -> first available, -1 -> latest
+ # available (matching the GUI's "-1 = latest" convention), a positive
+ # integer -> that specific sector. Passing "first"/"last" (rather than
+ # None) makes TESScut download only that one sector's cutout instead of
+ # one cutout per observed sector.
+ if sector is None:
+ source_sector_arg = "first"
+ sector_tag = "first"
+ elif int(sector) == -1:
+ source_sector_arg = "last"
+ sector_tag = "last"
+ else:
+ source_sector_arg = int(sector)
+ sector_tag = f"s{int(sector)}"
+ source_pkl = os.path.join(source_dir, f"source_{slug}_{sector_tag}_size{size}.pkl")
+
+ # 1. Build (or load) the Source_cut object (downloads FFI cutout + Gaia).
+ source = None
+ if use_cache and exists(source_pkl) and os.path.getsize(source_pkl) > 0:
+ try:
+ with open(source_pkl, "rb") as fh:
+ source = pickle.load(fh)
+ if verbose:
+ logger.info(f"Loaded cached TGLC source from {source_pkl}")
+ except (pickle.UnpicklingError, EOFError, AttributeError, ImportError) as e:
+ logger.warning(f"Cached source unreadable ({e}); rebuilding.")
+ source = None
+ if source is None:
+ source = Source_cut(target_name, size=size, sector=source_sector_arg, limit_mag=limit_mag)
+ if use_cache:
+ try:
+ with open(source_pkl, "wb") as fh:
+ pickle.dump(source, fh, pickle.HIGHEST_PROTOCOL)
+ except Exception as e: # cache write is best-effort
+ logger.warning(f"Could not cache source ({e}).")
# 2. Build the PSF model
A, star_info, over_size, x_round, y_round = get_psf(source)
@@ -1848,10 +2081,31 @@ def get_tglc_lc(target_name, sector=None, size=50, limit_mag=16, verbose=True):
# Determine background degrees of freedom
bg_dof = 3
- # 3. Fit the ePSF at every cadence
- e_psf = np.zeros((len(source.time), over_size**2 + bg_dof))
- for i in trange(len(source.time), desc="Fitting ePSF", disable=not verbose):
- e_psf[i] = fit_psf(A, source, over_size, power=0.8, time=i)
+ # 3. Fit (or load) the ePSF at every cadence. Keyed on the resolved
+ # sector so explicit and "auto" sector requests share the cache.
+ epsf_npy = os.path.join(epsf_dir, f"epsf_{slug}_s{source.sector}_size{size}.npy")
+ expected_shape = (len(source.time), over_size**2 + bg_dof)
+ e_psf = None
+ if use_cache and exists(epsf_npy) and os.path.getsize(epsf_npy) > 0:
+ try:
+ cached = np.load(epsf_npy)
+ if cached.shape == expected_shape:
+ e_psf = cached
+ if verbose:
+ logger.info(f"Loaded cached ePSF from {epsf_npy}")
+ else:
+ logger.warning("Cached ePSF shape mismatch; refitting.")
+ except (OSError, ValueError, EOFError) as e:
+ logger.warning(f"Cached ePSF unreadable ({e}); refitting.")
+ if e_psf is None:
+ e_psf = _fit_epsf_series(
+ A, source, over_size, bg_dof, power=0.8, no_progress_bar=not verbose
+ )
+ if use_cache:
+ try:
+ np.save(epsf_npy, e_psf)
+ except Exception as e: # cache write is best-effort
+ logger.warning(f"Could not cache ePSF ({e}).")
# 4. Quality flags
quality_raw = np.zeros(len(source.time), dtype=np.int16)
@@ -1878,7 +2132,7 @@ def get_tglc_lc(target_name, sector=None, size=50, limit_mag=16, verbose=True):
)
# 6. Extract the light curve for the target star
- aperture, psf_lc, star_y, star_x, portion, _, _ = fit_lc(
+ aperture, psf_lc, star_y, star_x, portion, target_5x5, field_stars_5x5 = fit_lc(
A,
source,
star_info=star_info,
@@ -1919,8 +2173,36 @@ def get_tglc_lc(target_name, sector=None, size=50, limit_mag=16, verbose=True):
star_num=star_idx,
)
- # 8. Build the TessLightCurve
- flux = cal_psf_lc # cal_aper_lc
+ # 8. Choose between aperture and PSF photometry
+ contamination = float(np.nansum(field_stars_5x5[1:4, 1:4]) / np.nansum(target_5x5[1:4, 1:4]))
+ tess_mag = float(source.gaia[star_idx]["tess_mag"])
+
+ if photometry == "auto":
+ choice, reason, metrics = _choose_photometry(
+ cal_aper_lc, cal_psf_lc, near_edge, contamination, tess_mag
+ )
+ else:
+ choice = photometry
+ reason = f"user-specified photometry='{photometry}'"
+ metrics = {
+ "APER_P2P": _point_to_point_scatter(cal_aper_lc),
+ "PSF_P2P": _point_to_point_scatter(cal_psf_lc),
+ }
+
+ if choice == "psf":
+ flux = cal_psf_lc
+ flux_origin = "cal_psf_flux"
+ else:
+ flux = cal_aper_lc
+ flux_origin = "cal_aper_flux"
+
+ if choice == "psf" and not np.any(np.isfinite(cal_psf_lc)):
+ logger.warning(
+ "Selected PSF light curve has no valid cadences (target near edge?); "
+ "use photometry='aperture' or 'auto'."
+ )
+
+ # 9. Build the TessLightCurve
flux_err = np.full_like(flux, 1.4826 * np.nanmedian(np.abs(flux - np.nanmedian(flux))))
# BTJD times (TESS Barycentric Julian Date, BJD - 2457000)
@@ -1937,14 +2219,26 @@ def get_tglc_lc(target_name, sector=None, size=50, limit_mag=16, verbose=True):
"CAMERA": source.camera,
"CCD": source.ccd,
"EXPOSURE": exposure_time,
- "FLUX_ORIGIN": "cal_psf_flux",
+ "FLUX_ORIGIN": flux_origin,
+ "PHOT_SEL": photometry,
+ "PHOT_RSN": reason,
+ "CONTAMRT": contamination,
+ "NEAREDGE": near_edge,
+ "APER_P2P": metrics["APER_P2P"],
+ "PSF_P2P": metrics["PSF_P2P"],
},
)
+ # Keep both photometry products available on the returned light curve.
+ lc["cal_aper_flux"] = cal_aper_lc
+ lc["cal_psf_flux"] = cal_psf_lc
+ lc["aperture_flux"] = aper_lc / portion
+ lc["psf_flux"] = psf_lc
lc.sector = source.sector
if verbose:
logger.info(
- f"TGLC light curve for {target_name} (sector {source.sector}): {len(lc)} cadences"
+ f"TGLC light curve for {target_name} (sector {source.sector}): "
+ f"{len(lc)} cadences; photometry={choice} ({reason})"
)
return lc
@@ -1957,13 +2251,12 @@ def get_tglc_lc(target_name, sector=None, size=50, limit_mag=16, verbose=True):
sector = None
prior = None
transient = None
- if not exists():
- os.makedirs("~/.tglc")
- data_path = f"~/.tglc/{target.replace(' ', '')}"
- os.makedirs(data_path + "logs/", exist_ok=True)
- os.makedirs(data_path + "lc/", exist_ok=True)
- os.makedirs(data_path + "epsf/", exist_ok=True)
- os.makedirs(data_path + "source/", exist_ok=True)
+
+ # Output directory ~/.tglc// -- the trailing separator is required
+ # because the pipeline builds sub-paths via f-string concatenation.
+ data_path = os.path.join(os.path.expanduser("~/.tglc"), target.replace(" ", ""), "")
+ for _sub in ("logs", "lc", "epsf", "source"):
+ os.makedirs(os.path.join(data_path, _sub), exist_ok=True)
target_ = Catalogs.query_object(target, radius=42 * 0.707 / 3600, catalog="Gaia", version=2)
ra = target_[0]["ra"]
diff --git a/quicklook/tql.py b/quicklook/tql.py
index 2e3fabb..ad8e56d 100755
--- a/quicklook/tql.py
+++ b/quicklook/tql.py
@@ -54,20 +54,12 @@
warnings.filterwarnings("ignore", category=Warning, message=".*datfix.*")
warnings.filterwarnings("ignore", category=Warning, message=".*obsfix.*")
-FULL_FRAME_TESS_PIPELINES = [
- "tess-spoc",
- "qlp",
- "tglc",
- "cdips",
- "pathos",
- "eleanor",
- "t16",
- "gsfc-eleanor-lite",
- "tequila",
- "tica",
- "diamante",
-]
-ALL_TESS_PIPELINES = ["spoc", "tasoc"] + FULL_FRAME_TESS_PIPELINES
+# Pipeline registry is centralized in quicklook.pipelines; these
+# re-exports preserve the old import path for callers (and notebooks).
+from quicklook.pipelines import ( # noqa: E402
+ ALL_TESS_PIPELINES,
+ FULL_FRAME_TESS_PIPELINES,
+)
DATA_PATH = files("quicklook").joinpath("data")
@@ -229,9 +221,8 @@ def parse_exofop_info(self):
"""
self.star_names = np.array(self.exofop_data.get("basic_info")["star_names"].split(", "))
if self.verbose:
- print("Catalog names:")
- for n in self.star_names:
- print(f"\t{n}")
+ names_block = "\n".join(f"\t{n}" for n in self.star_names)
+ logger.info(f"Catalog names:\n{names_block}")
self.gaia_name = self.star_names[
np.array([i[:4].lower() == "gaia" for i in self.star_names])
][0]
@@ -427,8 +418,8 @@ def get_lc(self, **kwargs: dict) -> lk.TessLightCurve:
# Display available light curves
cols = ["author", "mission", "t_exptime"]
if self.verbose:
- print("All available lightcurves:")
- print(search_result_all_lcs.table.to_pandas()[cols])
+ lc_table = search_result_all_lcs.table.to_pandas()[cols]
+ logger.info(f"All available lightcurves:\n{lc_table.to_string()}")
# Validate the requested sector. If the user asked for a specific
# sector that the MAST search did not return (e.g. a stale value
@@ -437,7 +428,7 @@ def get_lc(self, **kwargs: dict) -> lk.TessLightCurve:
# than killing the job, and the warning still surfaces in the log.
if kwargs.get("sector") is None:
if self.verbose:
- print(f"Available sectors: {self.all_sectors}")
+ logger.info(f"Available sectors: {self.all_sectors}")
else:
if kwargs.get("sector") not in self.all_sectors:
logger.warning(
@@ -492,8 +483,11 @@ def get_lc(self, **kwargs: dict) -> lk.TessLightCurve:
# Download and return light curve
if sector_orig == "all":
if self.verbose:
- print(f"Filtered lightcurves based on query ({kwargs}):")
- print(search_result.table.to_pandas()[cols])
+ filtered_table = search_result.table.to_pandas()[cols]
+ logger.info(
+ f"Filtered lightcurves based on query ({kwargs}):\n"
+ f"{filtered_table.to_string()}"
+ )
msg = f"Downloading all {kwargs.get('author')} lcs..."
if self.verbose:
logger.info(msg)
@@ -537,9 +531,15 @@ def get_lc(self, **kwargs: dict) -> lk.TessLightCurve:
logger.info(msg)
self.sector = lc.sector
- # Select flux type for SPOC data
- if lc.meta["AUTHOR"].lower() == "spoc":
+ # Select flux type / photometry for pipelines that expose a choice.
+ author = lc.meta["AUTHOR"].lower()
+ if author == "spoc":
lc = lc.select_flux(self.flux_type + "_flux")
+ elif author == "tglc" and self.flux_type in ("aperture", "psf"):
+ # MAST TGLC HLSP files carry both calibrated flux columns.
+ tglc_col = {"aperture": "cal_aper_flux", "psf": "cal_psf_flux"}[self.flux_type]
+ if tglc_col in lc.colnames:
+ lc = lc.select_flux(tglc_col)
# Set exposure time and cadence
if self.exptime is None:
@@ -644,10 +644,16 @@ def _get_tglc_lc_fallback(self, sector):
logger.info("No TGLC products on MAST; running local ePSF extraction...")
self.pipeline = "tglc"
self.all_pipelines = {"TGLC"}
- sector_arg = None if sector in (None, -1) else int(sector)
+ # Pass the request through to get_tglc_lc unchanged: None -> first
+ # available, -1 -> latest available, positive int -> that sector.
+ sector_arg = None if sector is None else int(sector)
+ # flux_type carries the GUI's aperture/psf choice for TGLC; anything
+ # else (e.g. a stale "pdcsap") falls back to automatic selection.
+ photometry = self.flux_type if self.flux_type in ("aperture", "psf", "auto") else "auto"
lc = get_tglc_lc(
self.query_name,
sector=sector_arg,
+ photometry=photometry,
verbose=self.verbose,
)
self.sector = lc.sector
@@ -689,8 +695,8 @@ def get_tpf(self, **kwargs: dict) -> lk.targetpixelfile.TargetPixelFile:
cols = ["author", "mission", "t_exptime"]
if self.verbose:
- print("All available TPFs:")
- print(search_result_all_tpfs.table.to_pandas()[cols])
+ tpf_table = search_result_all_tpfs.table.to_pandas()[cols]
+ logger.info(f"All available TPFs:\n{tpf_table.to_string()}")
tpf_authors = search_result_all_tpfs.table.to_pandas()["author"].unique()
if kwargs.get("author").upper() not in tpf_authors:
if self.verbose:
@@ -787,7 +793,7 @@ def get_toi_ephem(self, params=["epoch", "per", "dur"]) -> list:
if planet_params is None:
return (None, None, None, None)
if self.verbose:
- print(f"Parameters for {planet_params.get('name', 'unknown')}:")
+ logger.info(f"Parameters for {planet_params.get('name', 'unknown')}:")
# Initialize variables
toi_epoch = None
@@ -803,7 +809,7 @@ def get_toi_ephem(self, params=["epoch", "per", "dur"]) -> list:
err = planet_params.get(p + "_e")
err = float(err) if err else 0.1
if self.verbose:
- print(f"{p}: {val}, {err} {unit}")
+ logger.info(f"{p}: {val}, {err} {unit}")
if p == "epoch":
toi_epoch = np.array((val, err))
toi_epoch[0] -= TESS_TIME_OFFSET
@@ -1545,7 +1551,7 @@ def plot_tql(self, return_fig_and_paths=False, **kwargs: dict) -> pl.Figure:
# Take a snapshot and find any unclosed resources
snapshot = tracemalloc.take_snapshot()
for stat in snapshot.statistics("lineno"):
- print(stat)
+ logger.debug(stat)
else:
fig = ql.plot_tql()
diff --git a/quicklook/utils.py b/quicklook/utils.py
index 1d0b43a..c1577e3 100755
--- a/quicklook/utils.py
+++ b/quicklook/utils.py
@@ -231,7 +231,7 @@ def get_tois(
msg += f"{keys} planets are removed.\n"
msg += f"Saved: {fp}\n"
if verbose:
- print(msg)
+ logger.info(msg)
return d.sort_values("TOI")
@@ -278,7 +278,7 @@ def get_tic_id(target_name: str) -> int:
def get_toi_ephem(target_name: str, idx=1, params=["epoch", "per", "dur"]) -> list:
- print(f"Querying ephemeris for {target_name}:")
+ logger.info(f"Querying ephemeris for {target_name}:")
r = get_exofop_json(target_name)
planet_params = r["planet_parameters"][idx]
vals = []
@@ -287,7 +287,7 @@ def get_toi_ephem(target_name: str, idx=1, params=["epoch", "per", "dur"]) -> li
val = float(val) if val else 0.1
err = planet_params.get(p + "_e")
err = float(err) if err else 0.1
- print(f" {p}: {val}, {err}")
+ logger.info(f" {p}: {val}, {err}")
vals.append((val, err))
return vals
@@ -332,13 +332,13 @@ def parse_aperture_mask(
"""Parse and make aperture mask"""
if verbose:
if sap_mask == "round":
- print("aperture photometry mask: {} (r={} pix)\n".format(sap_mask, aper_radius))
+ logger.info(f"aperture photometry mask: {sap_mask} (r={aper_radius} pix)")
elif sap_mask == "square":
- print("aperture photometry mask: {0} ({1}x{1} pix)\n".format(sap_mask, aper_radius))
+ logger.info(f"aperture photometry mask: {sap_mask} ({aper_radius}x{aper_radius} pix)")
elif sap_mask == "percentile":
- print("aperture photometry mask: {} ({}%)\n".format(sap_mask, percentile))
+ logger.info(f"aperture photometry mask: {sap_mask} ({percentile}%)")
else:
- print("aperture photometry mask: {}\n".format(sap_mask))
+ logger.info(f"aperture photometry mask: {sap_mask}")
median_img = np.nanmedian(tpf.flux, axis=0).value
if (sap_mask == "pipeline") or (sap_mask is None):
@@ -389,8 +389,8 @@ def make_round_mask(img, radius, xy_center=None):
xy_center = [x, y]
# check if near edge
if np.any([abs(x - xcen) > offset, abs(y - ycen) > offset]):
- print("Brightest star is detected far from the center.")
- print("Aperture mask is placed at the center instead.\n")
+ logger.info("Brightest star is detected far from the center.")
+ logger.info("Aperture mask is placed at the center instead.")
xy_center = [xcen, ycen]
Y, X = np.ogrid[: img.shape[0], : img.shape[1]]
@@ -426,8 +426,8 @@ def make_square_mask(img, size, xy_center=None):
xy_center = [x, y]
# check if near edge
if np.any([abs(x - xcen) > offset, abs(y - ycen) > offset]):
- print("Brightest star detected is far from the center.")
- print("Aperture mask is placed at the center instead.\n")
+ logger.info("Brightest star detected is far from the center.")
+ logger.info("Aperture mask is placed at the center instead.")
xy_center = [xcen, ycen]
mask = np.zeros_like(img, dtype=bool)
mask[ycen - size : ycen + size + 1, xcen - size : xcen + size + 1] = True # noqa
diff --git a/tests/test_tglc.py b/tests/test_tglc.py
new file mode 100644
index 0000000..8f2f30f
--- /dev/null
+++ b/tests/test_tglc.py
@@ -0,0 +1,56 @@
+import os
+import numpy as np
+import pytest
+import requests
+import lightkurve as lk
+from astroquery.exceptions import RemoteServiceError
+
+from quicklook.tglc import get_tglc_lc
+
+_NETWORK_ERRORS = (
+ RemoteServiceError,
+ requests.exceptions.HTTPError,
+ requests.exceptions.ConnectionError,
+ ConnectionError,
+ TimeoutError,
+)
+
+
+@pytest.fixture
+def tglc_inputs():
+ """Bright, isolated, single-target config for a fast TGLC smoke run.
+
+ pi Men (TIC 261136679) has short-cadence SPOC in sector 1 and enough
+ FFI coverage to exercise the ePSF pipeline end-to-end. A 15x15 cutout
+ is below TGLC's recommended 25x25 (the module will warn) but keeps the
+ TESScut payload small enough to stay under MAST timeouts in CI.
+ """
+ return {
+ "target_name": "TIC 261136679",
+ "sector": 1,
+ "size": 15,
+ "limit_mag": 13,
+ "verbose": False,
+ }
+
+
+@pytest.mark.network
+def test_get_tglc_lc(tglc_inputs):
+ """End-to-end TGLC ePSF pipeline smoke test.
+
+ Regression coverage for three bugs introduced in commit efbe476:
+ - lowercase 'designation' column from MAST gaiadr3
+ - missing f-string prefix on sector_{N}_x/y column writes
+ - swapped isinstance(Source, source) argument order
+ """
+ try:
+ lc = get_tglc_lc(**tglc_inputs)
+ except _NETWORK_ERRORS as e:
+ if os.getenv("CI", "false") == "true":
+ pytest.xfail(f"Network failure (not a bug): {e}")
+ raise
+
+ assert isinstance(lc, lk.LightCurve)
+ assert len(lc) > 0
+ assert np.isfinite(np.nanmedian(lc.flux.value))
+ assert lc.sector == tglc_inputs["sector"]