{ "cells": [ { "cell_type": "markdown", "id": "eda40e56", "metadata": {}, "source": [ "# 04 Integration time, frames and saturation\n", "\n", "The calculator treats an observation as `n_reads = ceil(total_time / frame_time)` detector frames. The frame time therefore sets the read-noise contribution and is bounded above by saturation. This notebook shows both effects and how to check them.\n", "\n", "> Requirements: an editable install (`pip install -e .`), as in notebook 01." ] }, { "cell_type": "code", "execution_count": 1, "id": "03f688ed", "metadata": { "execution": { "iopub.execute_input": "2026-10-13T04:03:37.248496Z", "iopub.status.busy": "2026-10-13T04:03:37.248379Z", "iopub.status.idle": "2026-10-13T04:03:42.161773Z", "shell.execute_reply": "2026-10-13T04:03:42.161427Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import astropy.units as u\n", "import matplotlib.pyplot as plt\n", "from esc_etc import Simulation, use_lazuli_style\n", "use_lazuli_style()\n", "\n", "sim = Simulation.from_default(hoststarmag=-0.353, planetdeltamag=20,\n", " contrast=1e-8, ppgain=10, separation=0.4)" ] }, { "cell_type": "markdown", "id": "1c307e22", "metadata": {}, "source": [ "## 1. Frame time and read noise\n", "\n", "Shorter frames mean more reads and more read noise, which matters most early in the integration before the speckle floor takes over. A single 600 s frame is allowed here because the saturation time is about 35,000 s (section 3); for a brighter host that will not be true. `plot_snr_vs_time` accepts `ax=` and `label=`, so several calls can share one axis." ] }, { "cell_type": "code", "execution_count": 2, "id": "62c562aa", "metadata": { "execution": { "iopub.execute_input": "2026-10-13T04:03:42.163857Z", "iopub.status.busy": "2026-10-13T04:03:42.163652Z", "iopub.status.idle": "2026-10-13T04:03:42.906861Z", "shell.execute_reply": "2026-10-13T04:03:42.906561Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SNR in 600 s with 10 s frames : 8.126\n", "SNR in 600 s with one frame : 9.164\n" ] }, { "data": { "image/png": "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X5WaNWtKaaGvWYuF7PnkOxHvohkhDqlx1UWmUIgjJCToXvePq9bLnVNmy77EpGy3R4SGmhG0B7u0k/DQUJ/0EQBQ+hDUgONef/11KVu2rJQvX958P3PmTDly5EjAHx8NZP/8849069bN3da9e3f5999/pX79+uIvkpKSJC4uzrwPGtRyo+Gsa9eu0r59e/nggw9M26+//mpe3+zZs6Vz587u++qI4dtvv21ev44g6s+2a9dOtmzZIs8995z7fqtXr5ZOnTrJ2LFj5fLLLzdtGto0+C1dulSqVq0qwS4z8ZjseO19iV+0LNttYZUqSL1H7pCyrVtIsNl1NEFunzwr15L759SvLR8M6SXNq8WWeN8AAKVbcP1ZFCiERYsWSYjHSEF0dLTUqlUr4I/pDTfcYEacvDVt2lQiIyPFX8TExJgpp6eccsoJ7/fkk0/K33//bUbQLL169ZKOHTvKtddeKxnHN19euXKljBgxQu68804T0pQG8YcfftgEsvnz57t//sorrzQjaVZIU48++qgcOHBAHnroIQl2SRu2yIa7nsgxpJU9vaU0eeu5oAtpTqdL3l/yt7Qc82mOIU03rR47qIfMvfESQhoAwCcYUYOby+UUV1pCoY+IKy1enKkle2AdEeXE4Sjc3x2CYfTMmwaViRMnmimdOdFQExYWOL8GdNRNR9Fat24tderUsd02YMAAE8J++uknGTx4sBmZ0ylt/fr1y3Y/pWFNv547d66sWLFC7rrrLtv9ypQpY6Zffvnll2YKrBX2goken8M/z5bd730hruMB183hMNUcq192oTiCrKrh+oOHTbGQuVt25nj7wOaNTEirWzFrdB0AAF8InDM0FDsNaXE/X1okjxUnJati/2/EEVmhQD/77rvvyvTp02X37t3mez3JV9dff705yf/ll1/k448/luuuu04OHjwoDzzwgBn10RG4tLQ0+d///ifbt2+X2NhYM0qjU/A0IGkASk9PN1Mov//+e/P4n3/+uRmhmTx5sllb9fTTT8utt94qc+bMMSNEy5Ytk1atWsk333xjG1nS53n++efNc27YsEEiIiLM2jntU270eTW0qDfeeMMENh0xGjJkiHlNX3zxhVnr9fPPP5v76PotXculfdWLTiPUsKP91hEr7dOxY8fk8ccflwkTJpg+PPXUU3LjjTfanlenIb755puyZ88e2bFj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QKtF6hooLYuv66G08qJWZMxN48aNzfW4ceNMuHn11VfN90ePHrVdez93Tn09WT91+wFdq6UBsm3btiYoaV87duxo9pnLbdNtb1bRkdzWl+lIlU5X9Jz7rZtW635ouom1dTzat29v+qPTEq2qjdpnrdyp1Tw9+/Pee++ZLQQ8R/107zctunKyKa36edG1oJ4jrdp3KzD6QuruvbLx/lGSvH6zrd0RES71H79LqpzfS4JFakaG3PPTHLngi0lyJPm/wj4qLCREXul/rky+crBUKZNzBVAAAPyWC0GjZcuW5uJrcXFxrkCycOFC1x133KHpzFxuvvlm18SJE81tn376qatJkyam/ZRTTnGNHTvW9vpeffVVV2xsrKtSpUquG2+80XXo0CHXvffe64qOjnZddtllru3bt7see+wx8/MhISGuF1980bVz507X3LlzXeeff75pr127tuv99993OZ1O15gxY1wVKlQw7VdddZVr2bJl5nm2bdvmuuiii1zly5c3t3fv3t01f/78PL2+K664whUTE+M677zzXFu3bnXNmTPHdc0115jnCA0NdY0cOdK1e/du81rr1q1r2gcNGmT6qH3VPlvH5uGHH3Zt2rTJ9fvvv7u6dOli2po2ber68ssvzXNlZma6nn32WVeDBg1ckZGRrhYtWrheeeUVV1paWp76+uGHH5rXZh0vfb4ZM2Zku9/evXtd1113nTnGt912m6t3796uX375JcfHfPPNN119+vRx3Xnnna5+/fqZ16v98f6cLl261Lwn+v5fffXVrqFDh7rWr19/0j4//fTTpr/dunUz77X26fXXX3f5yrF1G12rht/q+qvf5bbLqotuciWu+tcVTDYePOJq+9YXLnn0f9kuDV/6wPXH9t2uQBZov0tR+vAZhb+L84Pfo4U5P3fo//k6LKJo6J5XJ9uctyToKI1OAQP8WTB+TuOXrJBtz78lrtRUW3t4tSrS8OmHJKpu8FQ5/PavdXLTxF8lITVrZNrTsFObygdDeknF6NxHmwNBMH5GEVz4jMLfHfWD36OFOT+n6iMABIFD0+eY6o7ee6RFNaovDUc/IOGV/9sbL5AlpaXLPVPnyAdLs4rHeIoMC5UxA86TmzucFlTr7wAApRNBDQACmE6K0P3RdJ80b2XPONWsSQuNCY71WWv2HZKLv5kiq/dnrTn01KxKJfnu0oFy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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "for ft in [10, 100, 1000]:\n", " sim.plot_snr_vs_time(frame_time=ft * u.s, ax=ax, label=f'frame time {ft} s')\n", "ax.set_title('Read noise through the frame time');\n", "\n", "t_short = sim.get_snr(600, 10)['snr']\n", "t_long = sim.get_snr(600, 600)['snr']\n", "print('SNR in 600 s with 10 s frames :', round(t_short, 3))\n", "print('SNR in 600 s with one frame :', round(t_long, 3))\n", "assert t_short < t_long" ] }, { "cell_type": "markdown", "id": "40e3ec44", "metadata": {}, "source": [ "## 2. Inverting for integration time\n", "\n", "`get_int_time_for_snr` returns both the exact (`int_time_continuous`) and the frame-rounded (`int_time`) solution. It returns NaN when the target is above the plateau, which is the calculator telling you that no amount of time will get there." ] }, { "cell_type": "code", "execution_count": 3, "id": "b415688a", "metadata": { "execution": { "iopub.execute_input": "2026-10-13T04:03:42.908485Z", "iopub.status.busy": "2026-10-13T04:03:42.908359Z", "iopub.status.idle": "2026-10-13T04:03:43.133289Z", "shell.execute_reply": "2026-10-13T04:03:43.132990Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "round trip : 3600.0 s\n", "time to SNR 20 with a plateau at 10: nan s\n" ] } ], "source": [ "snr_1h = sim.get_snr(3600, 100)['snr']\n", "back = sim.get_int_time_for_snr(snr_1h, frame_time=100)\n", "print('round trip :', back['int_time'][0])\n", "assert abs(back['int_time'][0].value - 3600) < 1\n", "\n", "unreachable = sim.get_int_time_for_snr(20, frame_time=100)\n", "print('time to SNR 20 with a plateau at 10:', unreachable['int_time_continuous'][0])\n", "assert np.isnan(unreachable['int_time_continuous'][0].value)" ] }, { "cell_type": "markdown", "id": "32093ccd", "metadata": {}, "source": [ "## 3. Saturation\n", "\n", "`saturation_time` is the frame time at which the brightest pixel in the planet's photometric aperture reaches `headroom x well_depth`. It counts the planet, the speckles at the dark-hole contrast, the backgrounds and dark current. It does not model the stellar core behind the mask or the bright ring near the inner working angle, so for a bright host the true detector-safe frame time can be much shorter than this number. `is_saturated` compares a frame time against it, and `get_snr` warns when a frame would saturate." ] }, { "cell_type": "code", "execution_count": 4, "id": "528806c3", "metadata": { "execution": { "iopub.execute_input": "2026-10-13T04:03:43.134994Z", "iopub.status.busy": "2026-10-13T04:03:43.134864Z", "iopub.status.idle": "2026-10-13T04:03:43.428680Z", "shell.execute_reply": "2026-10-13T04:03:43.428331Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "saturation time : 47910.5453005843 s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "is_saturated(100 s) : False\n", "is_saturated(2 x t_sat): True\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "warning from get_snr : frame_time 95821.0906011686 s exceeds saturation_time 4.79e+ ...\n" ] } ], "source": [ "import warnings\n", "\n", "t_sat = sim.saturation_time()\n", "print('saturation time :', t_sat)\n", "print('is_saturated(100 s) :', bool(sim.is_saturated(100)))\n", "print('is_saturated(2 x t_sat):', bool(sim.is_saturated(2 * t_sat)))\n", "\n", "with warnings.catch_warnings(record=True) as caught:\n", " warnings.simplefilter('always')\n", " sim.get_snr(total_time=4 * t_sat, frame_time=2 * t_sat)\n", "print('warning from get_snr :', str(caught[0].message)[:60], '...')\n", "assert caught" ] }, { "cell_type": "markdown", "id": "77f67273", "metadata": {}, "source": [ "That is the whole calculator. The user guide in the documentation has the equations behind each term, and `esc_etc.plotting` has the raw-array form of every plot used here." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.13.5" } }, "nbformat": 4, "nbformat_minor": 5 }