From 868404a023d0993260463feb72585f1e9cc67934 Mon Sep 17 00:00:00 2001 From: Konstantin Malanchev Date: Mon, 16 Sep 2024 16:42:58 -0400 Subject: [PATCH 1/7] overampled_observations fixture # Conflicts: # tests/tdastro/conftest.py --- tests/tdastro/astro_utils/test_opsim.py | 13 +++++++++++++ tests/tdastro/conftest.py | 17 +++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/tests/tdastro/astro_utils/test_opsim.py b/tests/tdastro/astro_utils/test_opsim.py index 372d44ae..effe47e8 100644 --- a/tests/tdastro/astro_utils/test_opsim.py +++ b/tests/tdastro/astro_utils/test_opsim.py @@ -285,3 +285,16 @@ def test_oversample_opsim(opsim_shorten): oversampled["skyBrightness"].unique().size >= oversampled["filter"].unique().size ), "there should be at least as many skyBrightness values as bands" assert oversampled["skyBrightness"].isna().sum() == 0, "skyBrightness has NaN values" + + +def test_fixture_oversampled_observations(oversampled_observations): + """Test the fixture oversampled_observations.""" + assert len(oversampled_observations) == 3000 + assert set(oversampled_observations["filter"]) == {"g", "r"} + assert oversampled_observations["skyBrightness"].isna().sum() == 0 + assert oversampled_observations["skyBrightness"].unique().size >= 2 + assert np.all(oversampled_observations["observationStartMJD"] >= 61000.0) + assert np.all(oversampled_observations["observationStartMJD"] <= 61030.0) + np.testing.assert_allclose(oversampled_observations["fieldRA"], 0.0) + np.testing.assert_allclose(oversampled_observations["fieldDec"], 0.0) + np.testing.assert_allclose(np.diff(oversampled_observations["observationStartMJD"]), 0.01) diff --git a/tests/tdastro/conftest.py b/tests/tdastro/conftest.py index 1116e9ad..06b17294 100644 --- a/tests/tdastro/conftest.py +++ b/tests/tdastro/conftest.py @@ -36,6 +36,23 @@ def opsim_shorten(test_data_dir): return os.path.join(test_data_dir, "opsim_shorten.db") +@pytest.fixture +def oversampled_observations(opsim_shorten): + """Return an OpSim object with 0.01 day cadence spanning 30 days.""" + from tdastro.astro_utils.opsim import OpSim, oversample_opsim + + base_opsim = OpSim.from_db(opsim_shorten) + return oversample_opsim( + base_opsim, + pointing=(0.0, 0.0), + search_radius=180.0, + delta_t=0.01, + time_range=(61000.0, 61030.0), + bands=None, + strategy="darkest_sky", + ) + + @pytest.fixture def passbands_dir(test_data_dir): """Return the file path for passbands directory.""" From 6c557c6e3733cee68086c24643a04fd41175f993 Mon Sep 17 00:00:00 2001 From: Konstantin Malanchev Date: Mon, 16 Sep 2024 16:52:50 -0400 Subject: [PATCH 2/7] Change oversampled_observations to cover a year --- docs/notebooks/test_snia.ipynb | 336 +++++++++++++++++++++--- tests/tdastro/astro_utils/test_opsim.py | 6 +- tests/tdastro/conftest.py | 4 +- tests/tdastro/sources/test_snia.py | 11 +- 4 files changed, 319 insertions(+), 38 deletions(-) diff --git a/docs/notebooks/test_snia.ipynb b/docs/notebooks/test_snia.ipynb index e884b9f9..bdd976f0 100644 --- a/docs/notebooks/test_snia.ipynb +++ b/docs/notebooks/test_snia.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "1bd86f47-7061-4aff-a7e0-be226219b139", "metadata": {}, "outputs": [], @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "4bf6fe10-59dc-439e-9371-c0cc15755f62", "metadata": {}, "outputs": [], @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "817f5d23-925d-4ef7-bc22-ad110020e57d", "metadata": {}, "outputs": [], @@ -41,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "c87c4488-9368-4a0a-8400-1596bb15492a", "metadata": {}, "outputs": [], @@ -51,19 +51,40 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "3285d471-c454-4c7a-b7cb-b8a79ab7ec98", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No overlap time in opsim for (ra,dec)=(13.97,-16.46)\n", + "No overlap time in opsim for (ra,dec)=(4.94,-22.46)\n", + "No overlap time in opsim for (ra,dec)=(19.36,-7.72)\n", + "No overlap time in opsim for (ra,dec)=(22.53,-22.70)\n", + "No overlap time in opsim for (ra,dec)=(10.15,-28.54)\n", + "No overlap time in opsim for (ra,dec)=(4.44,-16.64)\n", + "No overlap time in opsim for (ra,dec)=(22.77,-16.70)\n", + "No overlap time in opsim for (ra,dec)=(16.49,-28.33)\n", + "No overlap time in opsim for (ra,dec)=(25.60,-13.52)\n", + "No overlap time in opsim for (ra,dec)=(25.76,-25.61)\n", + "No overlap time in opsim for (ra,dec)=(22.55,-19.69)\n" + ] + } + ], "source": [ "res = test_snia_end2end(\n", - " None, opsim_db_file=None, opsim=False, nsample=10, return_result=True, phase_rest=np.linspace(-15, 45, 20)\n", + " '/Users/hombit/projects/lincc-frameworks/tdastro/tests/tdastro/data/opsim_small.db', opsim_db_file=None, opsim=True, nsample=100, return_result=True,\n", + " # phase_rest=np.linspace(-15, 45, 20),\n", + " phase_rest=None,\n", + " passbands_dir='/Users/hombit/projects/lincc-frameworks/tdastro/tests/tdastro/data/passbands',\n", ")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "id": "c60e849f-8529-4714-92e1-345182a12a68", "metadata": {}, "outputs": [], @@ -79,20 +100,63 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "id": "57607e1e-e18a-4408-a7b9-ec400c72c9a8", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(array([16., 7., 11., 12., 6., 9., 4., 11., 6., 7.]),\n", + " array([ 7.15518603, 7.63812131, 8.12105658, 8.60399185, 9.08692712,\n", + " 9.5698624 , 10.05279767, 10.53573294, 11.01866821, 11.50160349,\n", + " 11.98453876]),\n", + " )" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Ma55oVCId955J+rq6vZ5bubx8fGPfzz69esX27Zt67V/27ZtMXLkyN3Oz+Vykcvleu372Mc+9oHWGjJkiD+oibnm6bnmpeG6p+eap5f1Nd/XHY/3ZP6G0/79+8fnPve5WLVqVc++7u7uWLVqVZx22mlZLwcAlJmi/Nhl9uzZ0djYGCeddFKccsopsXDhwujo6Ijp06cXYzkAoIwUJT4uvfTS+Oc//xnXX399bN26NU444YRYuXLlbm9C3V+5XC5uuOGG3X5cQ/G45um55qXhuqfnmqdX6mteVfggn4kBAMiI73YBAJISHwBAUuIDAEhKfAAASZVNfIwePTqqqqp222bOnFnq0SpWV1dXNDc3x5gxY2LgwIFx5JFHxo033viBfm8/H84777wTs2bNisMPPzwGDhwYp59+eqxdu7bUY1WMNWvWxNSpU6Ouri6qqqpixYoVvY4XCoW4/vrro7a2NgYOHBiTJk2KjRs3lmbYCrKv6/7II4/EOeec0/MbrtevX1+SOSvJ3q75rl27Yu7cuTFu3LgYNGhQ1NXVxZe+9KV44403ij5X2cTH2rVr4x//+EfP9sQTT0RExMUXX1ziySrXggULYvHixXH33XfHyy+/HAsWLIjbbrst7rrrrlKPVvG+8pWvxBNPPBH33ntv/PnPf45zzjknJk2aFK+//nqpR6sIHR0dMX78+Fi0aNEej992221x5513xpIlS+L555+PQYMGxeTJk+Pdd99NPGll2dd17+joiDPPPDMWLFiQeLLKtbdrvnPnzmhtbY3m5uZobW2NRx55JDZs2BDnnXde8QcrlKlrr722cOSRRxa6u7tLPUrFmjJlSmHGjBm99l144YWFadOmlWiig8POnTsL/fr1Kzz66KO99p944omF6667rkRTVa6IKCxfvrzncXd3d2HkyJGFH/zgBz373n777UIulys88MADJZiwMv3vdf//Nm/eXIiIwksvvZR0pkq3t2v+nhdeeKEQEYUtW7YUdZayufPx//373/+OX/ziFzFjxoz3/fI5PrzTTz89Vq1aFa+88kpERPzxj3+MZ555JhoaGko8WWX7z3/+E11dXTFgwIBe+wcOHBjPPPNMiaY6eGzevDm2bt0akyZN6tlXU1MTp556ajz77LMlnAyKr729Paqqqj7wd6ztr5J/q+3+WLFiRbz99tvx5S9/udSjVLR58+ZFPp+PsWPHRr9+/aKrqytuvvnmmDZtWqlHq2iDBw+O0047LW688cY45phjYsSIEfHAAw/Es88+G5/61KdKPV7F27p1a0TEbr+RecSIET3HoBK9++67MXfu3Lj88suL/gV/ZXnn46c//Wk0NDR8oK/tZf89/PDDcd9998X9998fra2tsWzZsrj99ttj2bJlpR6t4t17771RKBTik5/8ZORyubjzzjvj8ssvj0MOKcu/ssABbteuXXHJJZdEoVCIxYsXF329srvzsWXLlnjyySfjkUceKfUoFW/OnDkxb968uOyyyyIiYty4cbFly5ZoaWmJxsbGEk9X2Y488sj43e9+Fx0dHZHP56O2tjYuvfTSOOKII0o9WsUbOXJkRERs27Ytamtre/Zv27YtTjjhhBJNBcXzXnhs2bIlnnrqqaLf9Ygowzsf99xzTwwfPjymTJlS6lEq3s6dO3f7P+1+/fpFd3d3iSY6+AwaNChqa2vjrbfeiscffzzOP//8Uo9U8caMGRMjR46MVatW9ezL5/Px/PPPx2mnnVbCySB774XHxo0b48knn4xhw4YlWbes7nx0d3fHPffcE42NjVFdXVajl6WpU6fGzTffHPX19XHcccfFSy+9FHfccUfMmDGj1KNVvMcffzwKhUIcffTRsWnTppgzZ06MHTs2pk+fXurRKsKOHTti06ZNPY83b94c69evj6FDh0Z9fX3MmjUrbrrppjjqqKNizJgx0dzcHHV1dXHBBReUbugKsK/r/uabb8Zrr73W83smNmzYEBH/vRv13h0p+mZv17y2tjYuuuiiaG1tjUcffTS6urp63tc0dOjQ6N+/f/EGK+pnaTL2+OOPFyKisGHDhlKPclDI5/OFa6+9tlBfX18YMGBA4Ygjjihcd911hc7OzlKPVvEeeuihwhFHHFHo379/YeTIkYWZM2cW3n777VKPVTFWr15diIjdtsbGxkKh8N+P2zY3NxdGjBhRyOVyhbPPPtt/dzKwr+t+zz337PH4DTfcUNK5y9nervl7H2ne07Z69eqizlVVKPh1lQBAOmX3ng8AoLyJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKT+D2sZqnCt8P1ZAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.hist(hostmass)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "id": "561c6c8c-84d9-484d-9759-56b020a018d6", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.8667836289546758\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.hist(x1)\n", "print(np.std(x1))" @@ -100,50 +164,266 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "8addd896-8f21-4813-8053-b75debf114b2", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(array([ 3., 6., 10., 13., 9., 17., 19., 8., 2., 2.]),\n", + " array([-0.04299508, -0.03385037, -0.02470566, -0.01556095, -0.00641624,\n", + " 0.00272847, 0.01187318, 0.02101789, 0.0301626 , 0.03930731,\n", + " 0.04845202]),\n", + " )" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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p9V9OnfufNQ3fHJycmAfv9+vvLw8Pfnkk+rZs2dU5t7RROtafF9paamWLl2qO+64IyLzjnW1tbVqbm4O/ATrI9r6M/R4PG2OP/LPcI55qovGdfi+b775RtOnT1deXt4p+wv6jke0rsXjjz+u+Ph43XPPPZGfdAwhWL5nxowZcjgcbS7bt2+P2tcvKChQ//79dfPNN0fta8SK9r4W37V161aNGTNGs2fP1rXXXntSviZgg6amJt14440yxmjRokXtPZ1TzqZNm/Tss8+qqKhIDoejvafTrqLyu4Ri2f33369bb721zTG9e/eW2+3WwYMHg9b/5z//0Zdffim32x1yP7fbrcbGRtXV1QX9n31NTU1gn9WrV2vLli164403JP33ExOS1K1bN/3mN7/R3LlzT/DMYk97X4sjtm3bphEjRuiOO+7QzJkzT+hcOqJu3bqpU6dOR33KLdSf4RFut7vN8Uf+WVNTo5SUlKAxgwcPjuDsO45oXIcjjsTKnj17tHr1al5dOYZoXIsPPvhABw8eDHrFvbm5Wffff7/mz5+vqqqqyJ6Ezdr7JppYdeRGz/Ly8sC6v//978d1o+cbb7wRWLd9+/agGz137dpltmzZElgWL15sJJnS0tJW7zI/1UXrWhhjzNatW02PHj3Mgw8+GL0TiGFDhw4106ZNCzxubm425557bps3GP70pz8NWpeVlXXUTbdPPfVUYLvX6+Wm22OI9HUwxpjGxkYzduxYM2DAAHPw4MHoTLwDivS1qK2tDXpO2LJli0lNTTXTp08327dvj96JWIhg+QFGjhxpLr30UrNhwwazbt0606dPn6CP0u7bt8/07dvXbNiwIbDuzjvvND179jSrV6825eXlJisry2RlZbX6Nd577z0+JXQconEttmzZYrp3725uvvlmc+DAgcDCf7y/tWTJEuN0Ok1RUZHZtm2bueOOO0xSUpLxeDzGGGNuueUWM2PGjMD4Dz/80MTHx5unnnrKfP7552b27NkhP9aclJRkli9fbj799FMzZswYPtZ8DJG+Do2Njea6664z5513nqmoqAj6++/3+9vlHGNFNL4nvu9U/ZQQwfIDHDp0yOTl5ZkzzzzTJCYmmkmTJpnDhw8HtldWVhpJ5r333gus+/rrr83dd99tzjrrLHP66aebcePGmQMHDrT6NQiW4xONazF79mwj6ailV69eJ/HM7Pfcc8+Znj17ms6dO5uhQ4ea9evXB7ZdffXVZuLEiUHjX3/9dXPRRReZzp07mwEDBpgVK1YEbW9paTEPP/ywSU5ONk6n04wYMcLs2LHjZJxKTIvkdTjy/RJq+e73EEKL9PfE952qweIw5n83SQAAAFiKTwkBAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA6xEsAADAegQLAACwHsECAACs9/+eboqRwxZJnwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.hist(c)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "id": "bd1bbdd5-f236-4e6d-84f3-161ab6cca4fd", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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OjrU0tKiRYsW6bXXXjMzWEeUO+aPPfaYLrvsMk2dOlWpVEq9vb1GxumaUsf93Xff1YoVK3TOOedo8uTJmjlzpr7+9a/r4MGDkY8rkUHk5ZdfVn9//+jXM888I0m66qqrDI/MXevWrdP69et133336a9//avWrVun73//+7r33ntND81p3/zmN/XMM8/oZz/7mf7yl7/osssu06JFi3TgwAHTQ3PGsWPHdO655+r+++8v+Pff//739aMf/UgPPPCAXnrpJU2ePFmf+9znNDg4GPNI3VHumB87dkwLFizQunXrYh6Z20od93feeUc9PT1atWqVenp69Nhjj+nVV1/V5z//+egHFjjgpptuCmbPnh3kcjnTQ3HWFVdcEVx//fVjvvfFL34x+NrXvmZoRO575513gsbGxuCpp54a8/3zzz8/+O53v2toVG6TFDz++OOjf87lckF7e3tw1113jX7vrbfeCpqamoJHHnnEwAjdM/6Yn6ivry+QFPzpT3+KdUw+KHXc83bs2BFICvbu3RvpWBI5I3Ki48ePa+PGjbr++usL3hgP9XHxxRdry5Yt+tvf/iZJ+vOf/6xt27bp8ssvNzwyd7333nsaHh5Wc3PzmO+3tLRo27Zthkbll76+Pg0MDGjRokWj30un07rwwgu1fft2gyMDopfJZJRKpfShD30o0uex+qZ3YTzxxBN66623tHTpUtNDcdptt92mbDars88+W42NjRoeHtadd96pr33ta6aH5qwpU6Zo/vz5uuOOO/Txj39cM2bM0COPPKLt27frzDPPND08LwwMDEiSZsyYMeb7M2bMGP07wEWDg4NasWKFrr766shvPpj4GZGf/OQnuvzyyzVz5kzTQ3Har371K/385z/XL37xC/X09Ojhhx/W3XffrYcfftj00Jz2s5/9TEEQ6NRTT1VTU5N+9KMf6eqrry57W20AqNa7776rL3/5ywqCQOvXr4/8+RI9I7J37149++yzeuyxx0wPxXnf+c53dNttt+mrX/2qJOmcc87R3r17tXbtWl177bWGR+eu2bNn6/nnn9exY8eUzWbV0dGhr3zlK5o1a5bpoXmhvb1dknTo0CF1dHSMfv/QoUOaO3euoVEB0cmHkL1792rr1q2Rz4ZICZ8R2bBhg6ZPn64rrrjC9FCc984770y4Cm9sbFQulzM0Ir9MnjxZHR0d+sc//qGnn35aV155pekheaGrq0vt7e3asmXL6Pey2axeeuklzZ8/3+DIgPrLh5DXXntNzz77rKZOnRrL8yZ2RiSXy2nDhg269tprddJJif1nJMaSJUt055136vTTT9cnPvEJ/elPf9IPfvADXX/99aaH5rSnn35aQRDorLPO0u7du/Wd73xHZ599tq677jrTQ3PG22+/rd27d4/+ua+vT729vWpra9Ppp5+um2++Wf/2b/+mj370o+rq6tKqVas0c+ZMfeELXzA36IQrd8yPHDmiffv2jfawePXVVyWNzFDlZ6lQuVLHvaOjQ1/60pfU09Ojp556SsPDw6N1UG1tbZo0aVJ0A4t0T06Enn766UBS8Oqrr5oeihey2Wxw0003BaeffnrQ3NwczJo1K/jud78bDA0NmR6a0375y18Gs2bNCiZNmhS0t7cHN9xwQ/DWW2+ZHpZTnnvuuUDShK9rr702CIKRLbyrVq0KZsyYETQ1NQWf/exn+dypUbljvmHDhoJ/v3r1aqPjTrpSxz2/VbrQ13PPPRfpuFJBQGtMAABgRqJrRAAAQLIRRAAAgDEEEQAAYAxBBAAAGEMQAQAAxhBEAACAMQQRAABgDEEEAAAYQxABAADGEEQAAIAxBBEAAGAMQQQAABjz/wAzqMjBd0kJLAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.scatter(hostmass, x1)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "151bd30a-26f4-40eb-ba99-611f82d61edf", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(array([[0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],\n", + " [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],\n", + " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", + " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.]]),\n", + " array([8.21565342e-07, 1.06546873e-06, 1.30937213e-06, 1.55327552e-06,\n", + " 1.79717891e-06, 2.04108230e-06, 2.28498569e-06, 2.52888909e-06,\n", + " 2.77279248e-06, 3.01669587e-06, 3.26059926e-06]),\n", + " )" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGvCAYAAACJsNWPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAfaklEQVR4nO3de3BW9Z348U9AkugoeKGEi1nxsnKpCAgLG1xH3U2lLcsuf6xlbVcYVtnVJTNoZq1QlejaJdopSGc2LSuW0r240OrCdgrFpdFo1XRYgUyxi3gXSk2AsSUSbXCT8/vDH7GRgHkC4duE12vm/JHzfM853+fkjL45zyV5WZZlAQCQSJ/UEwAATm1iBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkjot9QQ6o7W1NX75y1/GWWedFXl5eamnAwB0QpZl8e6778bQoUOjT5+j3//oETHyy1/+MoqLi1NPAwDogt27d8f5559/1Md7RIycddZZEfHhk+nfv3/i2QAAndHY2BjFxcVt/x8/mh4RI4dfmunfv78YAYAe5pPeYuENrABAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABIKucYeeaZZ2L69OkxdOjQyMvLi3Xr1n3iNjU1NXHFFVdEQUFBXHLJJbFq1aouTBUA6I1yjpGmpqYYO3ZsVFVVdWr8G2+8EdOmTYtrr7026urq4rbbboubb745nnjiiZwnCwD0Pjn/obzPfe5z8bnPfa7T45cvXx4XXnhhLFmyJCIiRo0aFc8++2w89NBDMXXq1FwPDwD0Mt3+npHa2tooLS1tt27q1KlRW1t71G2am5ujsbGx3QIA9E7dHiP19fVRVFTUbl1RUVE0NjbG+++/3+E2lZWVMWDAgLaluLi4u6d5hCUz//SYj1fd8mTnd3bvgNgxclTOx+iqe++99xPHDH6qLiI+fB6/WPCTtvU7Ro6KXyz4SVQ/eXEMX7A+Ij6cZ/WTFx91X931PLrTmO+O6ZZ9Hr4uDp/fiPjo/N47oMv7/vjvtDO/49+e1wn1Cc/j8HVzPD6+j4///NvnN5dzcTxzyMWSmX/aNq/uuNZ+JxzH9cyJdaz/PvcUv5Ofplm4cGEcOHCgbdm9e3fqKQEA3STn94zkavDgwdHQ0NBuXUNDQ/Tv3z9OP/30DrcpKCiIgoKC7p4aAPA7oNvvjJSUlER1dXW7dZs2bYqSkpLuPjQA0APkHCMHDx6Murq6qKuri4gPP7pbV1cXu3btiogPX2KZNWtW2/hbbrklXn/99fjyl78cL730Unzzm9+M733ve3H77befmGcAAPRoOcfICy+8EOPHj4/x48dHRER5eXmMHz8+Fi1aFBERb7/9dluYRERceOGFsX79+ti0aVOMHTs2lixZEo888oiP9QIAEdGF94xcc801kWXZUR/v6NtVr7nmmti2bVuuhwIATgG/k5+mAQBOHWIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgqS7FSFVVVQwfPjwKCwtj8uTJsXnz5mOOX7ZsWYwYMSJOP/30KC4ujttvvz1+85vfdGnCAEDvknOMrFmzJsrLy6OioiK2bt0aY8eOjalTp8bevXs7HP/oo4/GggULoqKiInbs2BHf/va3Y82aNfGVr3zluCcPAPR8OcfI0qVLY+7cuTFnzpwYPXp0LF++PM4444xYuXJlh+Off/75uPLKK+OLX/xiDB8+PK677rq44YYbPvFuCgBwasgpRg4dOhRbtmyJ0tLSj3bQp0+UlpZGbW1th9tMmTIltmzZ0hYfr7/+emzYsCE+//nPH/U4zc3N0djY2G4BAHqn03IZvH///mhpaYmioqJ264uKiuKll17qcJsvfvGLsX///vijP/qjyLIs/u///i9uueWWY75MU1lZGffdd18uUwMAeqhu/zRNTU1NLF68OL75zW/G1q1b4z//8z9j/fr1cf/99x91m4ULF8aBAwfalt27d3f3NAGARHK6MzJw4MDo27dvNDQ0tFvf0NAQgwcP7nCbe+65J2688ca4+eabIyJizJgx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p07txpn1bp0570899VQWEdmvfvWrkzKnU8XevXuziMiefvrpo475whe+kE2bNq3dusmTJ2d/+7d/293T67U6c96/853vZAMGDDh5kzqFnHPOOdkjjzzS4WOu985xZySx2traKC0tbbdu6tSpUVtbm2hGp5Zx48bFkCFD4jOf+Uw899xzqafT4x04cCAiIs4999yjjnHNn3idOe8REQcPHowLLrggiouLj/mveTqnpaUlVq9eHU1NTUf9Eyeu984RI4nV19e3fXvtYUVFRdHY2Bjvv/9+oln1fkOGDInly5fH448/Ho8//ngUFxfHNddcE1u3bk09tR6rtbU1brvttrjyyiuP+Q3LR7vmvV+nazp73keMGBErV66M//qv/4p/+7d/i9bW1pgyZUr84he/OImz7R22b98eZ555ZhQUFMQtt9wSa9eujdGjR3c41vXeOTl/HTz0BiNGjIgRI0a0/TxlypR47bXX4qGHHop//dd/TTiznmvevHnx4osvxrPPPpt6KqeUzp73kpKSdv96nzJlSowaNSr++Z//Oe6///7unmavMmLEiKirq4sDBw7EY489FrNnz46nn376qEHCJ3NnJLHBgwdHQ0NDu3UNDQ3Rv3//OP300xPN6tQ0adKkePXVV1NPo0cqKyuLH/7wh/HUU0/F+eeff8yxR7vmBw8e3J1T7JVyOe8f169fvxg/frxrvgvy8/PjkksuiQkTJkRlZWWMHTs2vvGNb3Q41vXeOWIksZKSkqiurm63btOmTUd9/ZHuU1dXF0OGDEk9jR4ly7IoKyuLtWvXxpNPPhkXXnjhJ27jmj9+XTnvH9fS0hLbt293zZ8Ara2t0dzc3OFjrvdOSv0O2t7m3XffzbZt25Zt27Yti4hs6dKl2bZt27K33nory7IsW7BgQXbjjTe2jX/99dezM844I7vjjjuyHTt2ZFVVVVnfvn2zjRs3pnoKPVKu5/2hhx7K1q1bl73yyivZ9u3bs/nz52d9+vTJfvzjH6d6Cj3Srbfemg0YMCCrqanJ3n777bblvffeaxtz4403ZgsWLGj7+bnnnstOO+207Otf/3q2Y8eOrKKiIuvXr1+2ffv2FE+hR+rKeb/vvvuyJ554InvttdeyLVu2ZH/5l3+ZFRYWZj//+c9TPIUea8GCBdnTTz+dvfHGG9nPfvazbMGCBVleXl723//931mWud67SoycYIc/MvrxZfbs2VmWZdns2bOzq6+++ohtxo0bl+Xn52cXXXRR9p3vfOekz7uny/W8P/jgg9nFF1+cFRYWZueee252zTXXZE8++WSayfdgHZ3ziGh3DV999dVtv4fDvve972WXXnpplp+fn33605/O1q9ff3In3sN15bzfdttt2e/93u9l+fn5WVFRUfb5z38+27p168mffA/313/919kFF1yQ5efnZ5/61KeyP/mTP2kLkSxzvXdVXpZl2cm7DwMA0J73jAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBAB6iWeeeSamT58eQ4cOjby8vFi3bl23H3PPnj3xV3/1V3HeeefF6aefHmPGjIkXXnghp32IEQDoJZqammLs2LFRVVV1Uo73q1/9Kq688sro169f/OhHP4r//d//jSVLlsQ555yT0358AysA9EJ5eXmxdu3amDFjRtu65ubmuOuuu+I//uM/4te//nVcdtll8eCDD8Y111zTpWMsWLAgnnvuufjJT35yXHN1ZwQAThFlZWVRW1sbq1evjp/97Gdx/fXXx2c/+9l45ZVXurS/H/zgBzFx4sS4/vrrY9CgQTF+/PhYsWJFzvtxZwQAeqGP3xnZtWtXXHTRRbFr164YOnRo27jS0tKYNGlSLF68OOdjFBYWRkREeXl5XH/99fE///M/MX/+/Fi+fHnMnj270/s5LecjAwA9zvbt26OlpSUuvfTSduubm5vjvPPOi4iIl156KUaNGnXM/dx5553xwAMPREREa2trTJw4sS1kxo8fHy+++KIYAQCOdPDgwejbt29s2bIl+vbt2+6xM888MyIiLrrootixY8cx93M4XCIihgwZEqNHj273+KhRo+Lxxx/PaW5iBABOAePHj4+WlpbYu3dvXHXVVR2Oyc/Pj5EjR3Z6n1deeWXs3Lmz3bqXX345LrjggpzmJkYAoJc4ePBgvPrqq20/v/HGG1FXVxfnnntuXHrppfGlL30pZs2aFUuWLInx48fHvn37orq6Oi6//PKYNm1azse7/fbbY8qUKbF48eL4whe+EJs3b46HH344Hn744Zz24w2sANBL1NTUxLXXXnvE+tmzZ8eqVavigw8+iK9+9avxL//yL7Fnz54YOHBg/OEf/mHcd999MWbMmC4d84c//GEsXLgwXnnllbjwwgujvLw85s6dm9M+xAgAkJTvGQEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASf0/Aa3xM+Jsfd0AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.hist(x0)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "id": "3b9e3896-c530-419c-8bb0-a9c1984eae0d", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(array([ 5., 9., 16., 12., 11., 7., 8., 9., 6., 6.]),\n", + " array([0.01004894, 0.01099313, 0.01193732, 0.01288152, 0.01382571,\n", + " 0.01476991, 0.0157141 , 0.0166583 , 0.01760249, 0.01854669,\n", + " 0.01949088]),\n", + " )" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.hist(z)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "id": "b31893a6-be21-4c69-8e6c-4cfec316d309", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5529420789745707\n" + ] + }, + { + "ename": "ValueError", + "evalue": "x and y must be the same size", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[13], line 10\u001b[0m\n\u001b[1;32m 7\u001b[0m mb \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m2.5\u001b[39m \u001b[38;5;241m*\u001b[39m np\u001b[38;5;241m.\u001b[39mlog10(x0)\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28mprint\u001b[39m(np\u001b[38;5;241m.\u001b[39mstd(mb \u001b[38;5;241m-\u001b[39m distmod))\n\u001b[0;32m---> 10\u001b[0m \u001b[43mplt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mscatter\u001b[49m\u001b[43m(\u001b[49m\u001b[43mz\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmb\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mdistmod\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 11\u001b[0m plt\u001b[38;5;241m.\u001b[39mshow()\n\u001b[1;32m 13\u001b[0m alpha \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0.14\u001b[39m\n", + "File \u001b[0;32m~/.virtualenvs/tdastro/lib/python3.12/site-packages/matplotlib/pyplot.py:3903\u001b[0m, in \u001b[0;36mscatter\u001b[0;34m(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, edgecolors, plotnonfinite, data, **kwargs)\u001b[0m\n\u001b[1;32m 3884\u001b[0m \u001b[38;5;129m@_copy_docstring_and_deprecators\u001b[39m(Axes\u001b[38;5;241m.\u001b[39mscatter)\n\u001b[1;32m 3885\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mscatter\u001b[39m(\n\u001b[1;32m 3886\u001b[0m x: \u001b[38;5;28mfloat\u001b[39m \u001b[38;5;241m|\u001b[39m ArrayLike,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 3901\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m 3902\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m PathCollection:\n\u001b[0;32m-> 3903\u001b[0m __ret \u001b[38;5;241m=\u001b[39m \u001b[43mgca\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mscatter\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3904\u001b[0m \u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3905\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3906\u001b[0m \u001b[43m \u001b[49m\u001b[43ms\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3907\u001b[0m \u001b[43m \u001b[49m\u001b[43mc\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mc\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3908\u001b[0m \u001b[43m \u001b[49m\u001b[43mmarker\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmarker\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3909\u001b[0m \u001b[43m \u001b[49m\u001b[43mcmap\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcmap\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3910\u001b[0m \u001b[43m \u001b[49m\u001b[43mnorm\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnorm\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3911\u001b[0m \u001b[43m \u001b[49m\u001b[43mvmin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvmin\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3912\u001b[0m \u001b[43m \u001b[49m\u001b[43mvmax\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvmax\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3913\u001b[0m \u001b[43m \u001b[49m\u001b[43malpha\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43malpha\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3914\u001b[0m \u001b[43m \u001b[49m\u001b[43mlinewidths\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlinewidths\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3915\u001b[0m \u001b[43m \u001b[49m\u001b[43medgecolors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43medgecolors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3916\u001b[0m \u001b[43m \u001b[49m\u001b[43mplotnonfinite\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mplotnonfinite\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3917\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdata\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m}\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3918\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3919\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3920\u001b[0m sci(__ret)\n\u001b[1;32m 3921\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m __ret\n", + "File \u001b[0;32m~/.virtualenvs/tdastro/lib/python3.12/site-packages/matplotlib/__init__.py:1473\u001b[0m, in \u001b[0;36m_preprocess_data..inner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1470\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 1471\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minner\u001b[39m(ax, \u001b[38;5;241m*\u001b[39margs, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 1472\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m data \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1473\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1474\u001b[0m \u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1475\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mmap\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msanitize_sequence\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1476\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[43mk\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43msanitize_sequence\u001b[49m\u001b[43m(\u001b[49m\u001b[43mv\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1478\u001b[0m bound \u001b[38;5;241m=\u001b[39m new_sig\u001b[38;5;241m.\u001b[39mbind(ax, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 1479\u001b[0m auto_label \u001b[38;5;241m=\u001b[39m (bound\u001b[38;5;241m.\u001b[39marguments\u001b[38;5;241m.\u001b[39mget(label_namer)\n\u001b[1;32m 1480\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m bound\u001b[38;5;241m.\u001b[39mkwargs\u001b[38;5;241m.\u001b[39mget(label_namer))\n", + "File \u001b[0;32m~/.virtualenvs/tdastro/lib/python3.12/site-packages/matplotlib/axes/_axes.py:4787\u001b[0m, in \u001b[0;36mAxes.scatter\u001b[0;34m(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, edgecolors, plotnonfinite, **kwargs)\u001b[0m\n\u001b[1;32m 4785\u001b[0m y \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mma\u001b[38;5;241m.\u001b[39mravel(y)\n\u001b[1;32m 4786\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m x\u001b[38;5;241m.\u001b[39msize \u001b[38;5;241m!=\u001b[39m y\u001b[38;5;241m.\u001b[39msize:\n\u001b[0;32m-> 4787\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx and y must be the same size\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 4789\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m s \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 4790\u001b[0m s \u001b[38;5;241m=\u001b[39m (\u001b[38;5;241m20\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m mpl\u001b[38;5;241m.\u001b[39mrcParams[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_internal.classic_mode\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;28;01melse\u001b[39;00m\n\u001b[1;32m 4791\u001b[0m mpl\u001b[38;5;241m.\u001b[39mrcParams[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlines.markersize\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m \u001b[38;5;241m2.0\u001b[39m)\n", + "\u001b[0;31mValueError\u001b[0m: x and y must be the same size" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# cosmo = FlatLambdaCDM(H0=73, Om0=0.3)\n", "# distmod = cosmo.distmod(z).value\n", @@ -239,14 +519,6 @@ " plt.show()" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "d95053a7-1e5c-4d36-8579-82b3dd8b9cbb", - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": null, @@ -258,7 +530,7 @@ ], "metadata": { "kernelspec": { - "display_name": "tdastro", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -272,7 +544,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.14" + "version": "3.12.6" } }, "nbformat": 4, diff --git a/tests/tdastro/astro_utils/test_opsim.py b/tests/tdastro/astro_utils/test_opsim.py index effe47e8..746a1024 100644 --- a/tests/tdastro/astro_utils/test_opsim.py +++ b/tests/tdastro/astro_utils/test_opsim.py @@ -289,12 +289,12 @@ def test_oversample_opsim(opsim_shorten): def test_fixture_oversampled_observations(oversampled_observations): """Test the fixture oversampled_observations.""" - assert len(oversampled_observations) == 3000 + assert len(oversampled_observations) == 36_500 assert set(oversampled_observations["filter"]) == {"g", "r"} assert oversampled_observations["skyBrightness"].isna().sum() == 0 assert oversampled_observations["skyBrightness"].unique().size >= 2 - assert np.all(oversampled_observations["observationStartMJD"] >= 61000.0) - assert np.all(oversampled_observations["observationStartMJD"] <= 61030.0) + assert np.all(oversampled_observations["observationStartMJD"] >= 61406.0) + assert np.all(oversampled_observations["observationStartMJD"] <= 61771.0) np.testing.assert_allclose(oversampled_observations["fieldRA"], 0.0) np.testing.assert_allclose(oversampled_observations["fieldDec"], 0.0) np.testing.assert_allclose(np.diff(oversampled_observations["observationStartMJD"]), 0.01) diff --git a/tests/tdastro/conftest.py b/tests/tdastro/conftest.py index 06b17294..b16676bd 100644 --- a/tests/tdastro/conftest.py +++ b/tests/tdastro/conftest.py @@ -38,7 +38,7 @@ def opsim_shorten(test_data_dir): @pytest.fixture def oversampled_observations(opsim_shorten): - """Return an OpSim object with 0.01 day cadence spanning 30 days.""" + """Return an OpSim object with 0.01 day cadence spanning year 2027.""" from tdastro.astro_utils.opsim import OpSim, oversample_opsim base_opsim = OpSim.from_db(opsim_shorten) @@ -47,7 +47,7 @@ def oversampled_observations(opsim_shorten): pointing=(0.0, 0.0), search_radius=180.0, delta_t=0.01, - time_range=(61000.0, 61030.0), + time_range=(61406.0, 61771.0), bands=None, strategy="darkest_sky", ) diff --git a/tests/tdastro/sources/test_snia.py b/tests/tdastro/sources/test_snia.py index 16530736..2cfd861c 100644 --- a/tests/tdastro/sources/test_snia.py +++ b/tests/tdastro/sources/test_snia.py @@ -151,6 +151,8 @@ def test_snia_end2end( if wavelengths_rest is None: wavelengths_rest = np.linspace(3000, 8000, 200) + any_valid_results = False + for _n in range(0, nsample): res = draw_single_random_sn( source, @@ -161,10 +163,15 @@ def test_snia_end2end( opsim_data=opsim_data, ) + if res is None: + continue + any_valid_results = True + state = res["state"] + p = {} for parname in ["t0", "x0", "x1", "c", "redshift", "ra", "dec"]: - p[parname] = source.get_param(state, parname) + p[parname] = float(source.get_param(state, parname)) for parname in ["hostmass"]: p[parname] = host.get_param(state, parname) for parname in ["distmod"]: @@ -191,5 +198,7 @@ def test_snia_end2end( res_list.append(res) + assert any_valid_results, f"No valid results found over all {nsample} samples." + if return_result: return res_list From 2fba726d7ec9820e5ff2c3af1381538cc8142acf Mon Sep 17 00:00:00 2001 From: Konstantin Malanchev Date: Wed, 25 Sep 2024 09:16:47 -0400 Subject: [PATCH 3/7] Use oversampled opsim in Ia test --- docs/notebooks/test_snia.ipynb | 367 ++++------------------------- tests/tdastro/sources/test_snia.py | 45 +--- 2 files changed, 57 insertions(+), 355 deletions(-) diff --git a/docs/notebooks/test_snia.ipynb b/docs/notebooks/test_snia.ipynb index bdd976f0..a4603daa 100644 --- a/docs/notebooks/test_snia.ipynb +++ b/docs/notebooks/test_snia.ipynb @@ -2,8 +2,8 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, - "id": "1bd86f47-7061-4aff-a7e0-be226219b139", + "execution_count": null, + "id": "f2dc23f31b3601e1", "metadata": {}, "outputs": [], "source": [ @@ -13,8 +13,8 @@ }, { "cell_type": "code", - "execution_count": 2, - "id": "4bf6fe10-59dc-439e-9371-c0cc15755f62", + "execution_count": null, + "id": "4e459a387df01a7c", "metadata": {}, "outputs": [], "source": [ @@ -22,15 +22,17 @@ "from pathlib import Path\n", "import tdastro\n", "\n", - "sys.path.append(\n", - " str((Path(tdastro.__file__).parent / \"..\" / \"..\" / \"tests\" / \"tdastro\" / \"sources\").resolve())\n", - ")" + "test_path = Path(tdastro.__file__).parent.parent.parent / \"tests\" / \"tdastro\"\n", + "test_data_path = test_path / 'data'\n", + "test_source_path = test_path / \"sources\"\n", + "\n", + "sys.path.append(str(test_source_path).resolve())" ] }, { "cell_type": "code", - "execution_count": 3, - "id": "817f5d23-925d-4ef7-bc22-ad110020e57d", + "execution_count": null, + "id": "824593e5f3032eb6", "metadata": {}, "outputs": [], "source": [ @@ -41,8 +43,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "id": "c87c4488-9368-4a0a-8400-1596bb15492a", + "execution_count": null, + "id": "3742a30a04a1b62c", "metadata": {}, "outputs": [], "source": [ @@ -51,31 +53,13 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "3285d471-c454-4c7a-b7cb-b8a79ab7ec98", + "execution_count": null, + "id": "58a2bc03f3a3a3a0", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No overlap time in opsim for (ra,dec)=(13.97,-16.46)\n", - "No overlap time in opsim for (ra,dec)=(4.94,-22.46)\n", - "No overlap time in opsim for (ra,dec)=(19.36,-7.72)\n", - "No overlap time in opsim for (ra,dec)=(22.53,-22.70)\n", - "No overlap time in opsim for (ra,dec)=(10.15,-28.54)\n", - "No overlap time in opsim for (ra,dec)=(4.44,-16.64)\n", - "No overlap time in opsim for (ra,dec)=(22.77,-16.70)\n", - "No overlap time in opsim for (ra,dec)=(16.49,-28.33)\n", - "No overlap time in opsim for (ra,dec)=(25.60,-13.52)\n", - "No overlap time in opsim for (ra,dec)=(25.76,-25.61)\n", - "No overlap time in opsim for (ra,dec)=(22.55,-19.69)\n" - ] - } - ], + "outputs": [], "source": [ "res = test_snia_end2end(\n", - " '/Users/hombit/projects/lincc-frameworks/tdastro/tests/tdastro/data/opsim_small.db', opsim_db_file=None, opsim=True, nsample=100, return_result=True,\n", + " , opsim_db_file=None, opsim=True, nsample=100, return_result=True,\n", " # phase_rest=np.linspace(-15, 45, 20),\n", " phase_rest=None,\n", " passbands_dir='/Users/hombit/projects/lincc-frameworks/tdastro/tests/tdastro/data/passbands',\n", @@ -84,8 +68,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "id": "c60e849f-8529-4714-92e1-345182a12a68", + "execution_count": null, + "id": "5c4b0574aec01df4", "metadata": {}, "outputs": [], "source": [ @@ -100,63 +84,20 @@ }, { "cell_type": "code", - "execution_count": 16, - "id": "57607e1e-e18a-4408-a7b9-ec400c72c9a8", + "execution_count": null, + "id": "aaefb2f29d444cf2", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(array([16., 7., 11., 12., 6., 9., 4., 11., 6., 7.]),\n", - " array([ 7.15518603, 7.63812131, 8.12105658, 8.60399185, 9.08692712,\n", - " 9.5698624 , 10.05279767, 10.53573294, 11.01866821, 11.50160349,\n", - " 11.98453876]),\n", - " )" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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Ma55oVCId955J+rq6vZ5bubx8fGPfzz69esX27Zt67V/27ZtMXLkyN3Oz+Vykcvleu372Mc+9oHWGjJkiD+oibnm6bnmpeG6p+eap5f1Nd/XHY/3ZP6G0/79+8fnPve5WLVqVc++7u7uWLVqVZx22mlZLwcAlJmi/Nhl9uzZ0djYGCeddFKccsopsXDhwujo6Ijp06cXYzkAoIwUJT4uvfTS+Oc//xnXX399bN26NU444YRYuXLlbm9C3V+5XC5uuOGG3X5cQ/G45um55qXhuqfnmqdX6mteVfggn4kBAMiI73YBAJISHwBAUuIDAEhKfAAASZVNfIwePTqqqqp222bOnFnq0SpWV1dXNDc3x5gxY2LgwIFx5JFHxo033viBfm8/H84777wTs2bNisMPPzwGDhwYp59+eqxdu7bUY1WMNWvWxNSpU6Ouri6qqqpixYoVvY4XCoW4/vrro7a2NgYOHBiTJk2KjRs3lmbYCrKv6/7II4/EOeec0/MbrtevX1+SOSvJ3q75rl27Yu7cuTFu3LgYNGhQ1NXVxZe+9KV44403ij5X2cTH2rVr4x//+EfP9sQTT0RExMUXX1ziySrXggULYvHixXH33XfHyy+/HAsWLIjbbrst7rrrrlKPVvG+8pWvxBNPPBH33ntv/PnPf45zzjknJk2aFK+//nqpR6sIHR0dMX78+Fi0aNEej992221x5513xpIlS+L555+PQYMGxeTJk+Pdd99NPGll2dd17+joiDPPPDMWLFiQeLLKtbdrvnPnzmhtbY3m5uZobW2NRx55JDZs2BDnnXde8QcrlKlrr722cOSRRxa6u7tLPUrFmjJlSmHGjBm99l144YWFadOmlWiig8POnTsL/fr1Kzz66KO99p944omF6667rkRTVa6IKCxfvrzncXd3d2HkyJGFH/zgBz373n777UIulys88MADJZiwMv3vdf//Nm/eXIiIwksvvZR0pkq3t2v+nhdeeKEQEYUtW7YUdZayufPx//373/+OX/ziFzFjxoz3/fI5PrzTTz89Vq1aFa+88kpERPzxj3+MZ555JhoaGko8WWX7z3/+E11dXTFgwIBe+wcOHBjPPPNMiaY6eGzevDm2bt0akyZN6tlXU1MTp556ajz77LMlnAyKr729Paqqqj7wd6ztr5J/q+3+WLFiRbz99tvx5S9/udSjVLR58+ZFPp+PsWPHRr9+/aKrqytuvvnmmDZtWqlHq2iDBw+O0047LW688cY45phjYsSIEfHAAw/Es88+G5/61KdKPV7F27p1a0TEbr+RecSIET3HoBK9++67MXfu3Lj88suL/gV/ZXnn46c//Wk0NDR8oK/tZf89/PDDcd9998X9998fra2tsWzZsrj99ttj2bJlpR6t4t17771RKBTik5/8ZORyubjzzjvj8ssvj0MOKcu/ssABbteuXXHJJZdEoVCIxYsXF329srvzsWXLlnjyySfjkUceKfUoFW/OnDkxb968uOyyyyIiYty4cbFly5ZoaWmJxsbGEk9X2Y488sj43e9+Fx0dHZHP56O2tjYuvfTSOOKII0o9WsUbOXJkRERs27Ytamtre/Zv27YtTjjhhBJNBcXzXnhs2bIlnnrqqaLf9Ygowzsf99xzTwwfPjymTJlS6lEq3s6dO3f7P+1+/fpFd3d3iSY6+AwaNChqa2vjrbfeiscffzzOP//8Uo9U8caMGRMjR46MVatW9ezL5/Px/PPPx2mnnVbCySB774XHxo0b48knn4xhw4YlWbes7nx0d3fHPffcE42NjVFdXVajl6WpU6fGzTffHPX19XHcccfFSy+9FHfccUfMmDGj1KNVvMcffzwKhUIcffTRsWnTppgzZ06MHTs2pk+fXurRKsKOHTti06ZNPY83b94c69evj6FDh0Z9fX3MmjUrbrrppjjqqKNizJgx0dzcHHV1dXHBBReUbugKsK/r/uabb8Zrr73W83smNmzYEBH/vRv13h0p+mZv17y2tjYuuuiiaG1tjUcffTS6urp63tc0dOjQ6N+/f/EGK+pnaTL2+OOPFyKisGHDhlKPclDI5/OFa6+9tlBfX18YMGBA4Ygjjihcd911hc7OzlKPVvEeeuihwhFHHFHo379/YeTIkYWZM2cW3n777VKPVTFWr15diIjdtsbGxkKh8N+P2zY3NxdGjBhRyOVyhbPPPtt/dzKwr+t+zz337PH4DTfcUNK5y9nervl7H2ne07Z69eqizlVVKPh1lQBAOmX3ng8AoLyJDwAgKfEBACQlPgCApMQHAJCU+AAAkhIfAEBS4gMASEp8AABJiQ8AICnxAQAkJT4AgKT+D2sZqnCt8P1ZAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.hist(hostmass)" ] }, { "cell_type": "code", - "execution_count": 17, - "id": "561c6c8c-84d9-484d-9759-56b020a018d6", + "execution_count": null, + "id": "b86d82fe1a518d5a", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.8667836289546758\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.hist(x1)\n", "print(np.std(x1))" @@ -164,266 +105,50 @@ }, { "cell_type": "code", - "execution_count": 9, - "id": "8addd896-8f21-4813-8053-b75debf114b2", + "execution_count": null, + "id": "edc24806f5752b25", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(array([ 3., 6., 10., 13., 9., 17., 19., 8., 2., 2.]),\n", - " array([-0.04299508, -0.03385037, -0.02470566, -0.01556095, -0.00641624,\n", - " 0.00272847, 0.01187318, 0.02101789, 0.0301626 , 0.03930731,\n", - " 0.04845202]),\n", - " )" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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p9V9OnfufNQ3fHJycmAfv9+vvLw8Pfnkk+rZs2dU5t7RROtafF9paamWLl2qO+64IyLzjnW1tbVqbm4O/ATrI9r6M/R4PG2OP/LPcI55qovGdfi+b775RtOnT1deXt4p+wv6jke0rsXjjz+u+Ph43XPPPZGfdAwhWL5nxowZcjgcbS7bt2+P2tcvKChQ//79dfPNN0fta8SK9r4W37V161aNGTNGs2fP1rXXXntSviZgg6amJt14440yxmjRokXtPZ1TzqZNm/Tss8+qqKhIDoejvafTrqLyu4Ri2f33369bb721zTG9e/eW2+3WwYMHg9b/5z//0Zdffim32x1yP7fbrcbGRtXV1QX9n31NTU1gn9WrV2vLli164403JP33ExOS1K1bN/3mN7/R3LlzT/DMYk97X4sjtm3bphEjRuiOO+7QzJkzT+hcOqJu3bqpU6dOR33KLdSf4RFut7vN8Uf+WVNTo5SUlKAxgwcPjuDsO45oXIcjjsTKnj17tHr1al5dOYZoXIsPPvhABw8eDHrFvbm5Wffff7/mz5+vqqqqyJ6Ezdr7JppYdeRGz/Ly8sC6v//978d1o+cbb7wRWLd9+/agGz137dpltmzZElgWL15sJJnS0tJW7zI/1UXrWhhjzNatW02PHj3Mgw8+GL0TiGFDhw4106ZNCzxubm425557bps3GP70pz8NWpeVlXXUTbdPPfVUYLvX6+Wm22OI9HUwxpjGxkYzduxYM2DAAHPw4MHoTLwDivS1qK2tDXpO2LJli0lNTTXTp08327dvj96JWIhg+QFGjhxpLr30UrNhwwazbt0606dPn6CP0u7bt8/07dvXbNiwIbDuzjvvND179jSrV6825eXlJisry2RlZbX6Nd577z0+JXQconEttmzZYrp3725uvvlmc+DAgcDCf7y/tWTJEuN0Ok1RUZHZtm2bueOOO0xSUpLxeDzGGGNuueUWM2PGjMD4Dz/80MTHx5unnnrKfP7552b27NkhP9aclJRkli9fbj799FMzZswYPtZ8DJG+Do2Njea6664z5513nqmoqAj6++/3+9vlHGNFNL4nvu9U/ZQQwfIDHDp0yOTl5ZkzzzzTJCYmmkmTJpnDhw8HtldWVhpJ5r333gus+/rrr83dd99tzjrrLHP66aebcePGmQMHDrT6NQiW4xONazF79mwj6ailV69eJ/HM7Pfcc8+Znj17ms6dO5uhQ4ea9evXB7ZdffXVZuLEiUHjX3/9dXPRRReZzp07mwEDBpgVK1YEbW9paTEPP/ywSU5ONk6n04wYMcLs2LHjZJxKTIvkdTjy/RJq+e73EEKL9PfE952qweIw5n83SQAAAFiKTwkBAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA6xEsAADAegQLAACwHsECAACs9/+eboqRwxZJnwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.hist(c)" ] }, { "cell_type": "code", - "execution_count": 10, - "id": "bd1bbdd5-f236-4e6d-84f3-161ab6cca4fd", + "execution_count": null, + "id": "35ab73410bd98ac1", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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OjrU0tKiRYsW6bXXXjMzWEeUO+aPPfaYLrvsMk2dOlWpVEq9vb1GxumaUsf93Xff1YoVK3TOOedo8uTJmjlzpr7+9a/r4MGDkY8rkUHk5ZdfVn9//+jXM888I0m66qqrDI/MXevWrdP69et133336a9//avWrVun73//+7r33ntND81p3/zmN/XMM8/oZz/7mf7yl7/osssu06JFi3TgwAHTQ3PGsWPHdO655+r+++8v+Pff//739aMf/UgPPPCAXnrpJU2ePFmf+9znNDg4GPNI3VHumB87dkwLFizQunXrYh6Z20od93feeUc9PT1atWqVenp69Nhjj+nVV1/V5z//+egHFjjgpptuCmbPnh3kcjnTQ3HWFVdcEVx//fVjvvfFL34x+NrXvmZoRO575513gsbGxuCpp54a8/3zzz8/+O53v2toVG6TFDz++OOjf87lckF7e3tw1113jX7vrbfeCpqamoJHHnnEwAjdM/6Yn6ivry+QFPzpT3+KdUw+KHXc83bs2BFICvbu3RvpWBI5I3Ki48ePa+PGjbr++usL3hgP9XHxxRdry5Yt+tvf/iZJ+vOf/6xt27bp8ssvNzwyd7333nsaHh5Wc3PzmO+3tLRo27Zthkbll76+Pg0MDGjRokWj30un07rwwgu1fft2gyMDopfJZJRKpfShD30o0uex+qZ3YTzxxBN66623tHTpUtNDcdptt92mbDars88+W42NjRoeHtadd96pr33ta6aH5qwpU6Zo/vz5uuOOO/Txj39cM2bM0COPPKLt27frzDPPND08LwwMDEiSZsyYMeb7M2bMGP07wEWDg4NasWKFrr766shvPpj4GZGf/OQnuvzyyzVz5kzTQ3Har371K/385z/XL37xC/X09Ojhhx/W3XffrYcfftj00Jz2s5/9TEEQ6NRTT1VTU5N+9KMf6eqrry57W20AqNa7776rL3/5ywqCQOvXr4/8+RI9I7J37149++yzeuyxx0wPxXnf+c53dNttt+mrX/2qJOmcc87R3r17tXbtWl177bWGR+eu2bNn6/nnn9exY8eUzWbV0dGhr3zlK5o1a5bpoXmhvb1dknTo0CF1dHSMfv/QoUOaO3euoVEB0cmHkL1792rr1q2Rz4ZICZ8R2bBhg6ZPn64rrrjC9FCc984770y4Cm9sbFQulzM0Ir9MnjxZHR0d+sc//qGnn35aV155pekheaGrq0vt7e3asmXL6Pey2axeeuklzZ8/3+DIgPrLh5DXXntNzz77rKZOnRrL8yZ2RiSXy2nDhg269tprddJJif1nJMaSJUt055136vTTT9cnPvEJ/elPf9IPfvADXX/99aaH5rSnn35aQRDorLPO0u7du/Wd73xHZ599tq677jrTQ3PG22+/rd27d4/+ua+vT729vWpra9Ppp5+um2++Wf/2b/+mj370o+rq6tKqVas0c+ZMfeELXzA36IQrd8yPHDmiffv2jfawePXVVyWNzFDlZ6lQuVLHvaOjQ1/60pfU09Ojp556SsPDw6N1UG1tbZo0aVJ0A4t0T06Enn766UBS8Oqrr5oeihey2Wxw0003BaeffnrQ3NwczJo1K/jud78bDA0NmR6a0375y18Gs2bNCiZNmhS0t7cHN9xwQ/DWW2+ZHpZTnnvuuUDShK9rr702CIKRLbyrVq0KZsyYETQ1NQWf/exn+dypUbljvmHDhoJ/v3r1aqPjTrpSxz2/VbrQ13PPPRfpuFJBQGtMAABgRqJrRAAAQLIRRAAAgDEEEQAAYAxBBAAAGEMQAQAAxhBEAACAMQQRAABgDEEEAAAYQxABAADGEEQAAIAxBBEAAGAMQQQAABjz/wAzqMjBd0kJLAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.scatter(hostmass, x1)" ] }, { "cell_type": "code", - "execution_count": 11, - "id": "151bd30a-26f4-40eb-ba99-611f82d61edf", + "execution_count": null, + "id": "2b56df734bccfe1b", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(array([[0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", - " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],\n", - " [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],\n", - " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],\n", - " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", - " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],\n", - " [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", - " [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],\n", - " [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.]]),\n", - " array([8.21565342e-07, 1.06546873e-06, 1.30937213e-06, 1.55327552e-06,\n", - " 1.79717891e-06, 2.04108230e-06, 2.28498569e-06, 2.52888909e-06,\n", - " 2.77279248e-06, 3.01669587e-06, 3.26059926e-06]),\n", - " )" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGvCAYAAACJsNWPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAfaklEQVR4nO3de3BW9Z348U9AkugoeKGEi1nxsnKpCAgLG1xH3U2lLcsuf6xlbVcYVtnVJTNoZq1QlejaJdopSGc2LSuW0r240OrCdgrFpdFo1XRYgUyxi3gXSk2AsSUSbXCT8/vDH7GRgHkC4duE12vm/JHzfM853+fkjL45zyV5WZZlAQCQSJ/UEwAATm1iBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkjot9QQ6o7W1NX75y1/GWWedFXl5eamnAwB0QpZl8e6778bQoUOjT5+j3//oETHyy1/+MoqLi1NPAwDogt27d8f5559/1Md7RIycddZZEfHhk+nfv3/i2QAAndHY2BjFxcVt/x8/mh4RI4dfmunfv78YAYAe5pPeYuENrABAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABIKucYeeaZZ2L69OkxdOjQyMvLi3Xr1n3iNjU1NXHFFVdEQUFBXHLJJbFq1aouTBUA6I1yjpGmpqYYO3ZsVFVVdWr8G2+8EdOmTYtrr7026urq4rbbboubb745nnjiiZwnCwD0Pjn/obzPfe5z8bnPfa7T45cvXx4XXnhhLFmyJCIiRo0aFc8++2w89NBDMXXq1FwPDwD0Mt3+npHa2tooLS1tt27q1KlRW1t71G2am5ujsbGx3QIA9E7dHiP19fVRVFTUbl1RUVE0NjbG+++/3+E2lZWVMWDAgLaluLi4u6d5hCUz//SYj1fd8mTnd3bvgNgxclTOx+iqe++99xPHDH6qLiI+fB6/WPCTtvU7Ro6KXyz4SVQ/eXEMX7A+Ij6cZ/WTFx91X931PLrTmO+O6ZZ9Hr4uDp/fiPjo/N47oMv7/vjvtDO/49+e1wn1Cc/j8HVzPD6+j4///NvnN5dzcTxzyMWSmX/aNq/uuNZ+JxzH9cyJdaz/PvcUv5Ofplm4cGEcOHCgbdm9e3fqKQEA3STn94zkavDgwdHQ0NBuXUNDQ/Tv3z9OP/30DrcpKCiIgoKC7p4aAPA7oNvvjJSUlER1dXW7dZs2bYqSkpLuPjQA0APkHCMHDx6Murq6qKuri4gPP7pbV1cXu3btiogPX2KZNWtW2/hbbrklXn/99fjyl78cL730Unzzm9+M733ve3H77befmGcAAPRoOcfICy+8EOPHj4/x48dHRER5eXmMHz8+Fi1aFBERb7/9dluYRERceOGFsX79+ti0aVOMHTs2lixZEo888oiP9QIAEdGF94xcc801kWXZUR/v6NtVr7nmmti2bVuuhwIATgG/k5+mAQBOHWIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgqS7FSFVVVQwfPjwKCwtj8uTJsXnz5mOOX7ZsWYwYMSJOP/30KC4ujttvvz1+85vfdGnCAEDvknOMrFmzJsrLy6OioiK2bt0aY8eOjalTp8bevXs7HP/oo4/GggULoqKiInbs2BHf/va3Y82aNfGVr3zluCcPAPR8OcfI0qVLY+7cuTFnzpwYPXp0LF++PM4444xYuXJlh+Off/75uPLKK+OLX/xiDB8+PK677rq44YYbPvFuCgBwasgpRg4dOhRbtmyJ0tLSj3bQp0+UlpZGbW1th9tMmTIltmzZ0hYfr7/+emzYsCE+//nPH/U4zc3N0djY2G4BAHqn03IZvH///mhpaYmioqJ264uKiuKll17qcJsvfvGLsX///vijP/qjyLIs/u///i9uueWWY75MU1lZGffdd18uUwMAeqhu/zRNTU1NLF68OL75zW/G1q1b4z//8z9j/fr1cf/99x91m4ULF8aBAwfalt27d3f3NAGARHK6MzJw4MDo27dvNDQ0tFvf0NAQgwcP7nCbe+65J2688ca4+eabIyJizJgx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p07txpn1bp0570899VQWEdmvfvWrkzKnU8XevXuziMiefvrpo475whe+kE2bNq3dusmTJ2d/+7d/293T67U6c96/853vZAMGDDh5kzqFnHPOOdkjjzzS4WOu985xZySx2traKC0tbbdu6tSpUVtbm2hGp5Zx48bFkCFD4jOf+Uw899xzqafT4x04cCAiIs4999yjjnHNn3idOe8REQcPHowLLrggiouLj/mveTqnpaUlVq9eHU1NTUf9Eyeu984RI4nV19e3fXvtYUVFRdHY2Bjvv/9+oln1fkOGDInly5fH448/Ho8//ngUFxfHNddcE1u3bk09tR6rtbU1brvttrjyyiuP+Q3LR7vmvV+nazp73keMGBErV66M//qv/4p/+7d/i9bW1pgyZUr84he/OImz7R22b98eZ555ZhQUFMQtt9wSa9eujdGjR3c41vXeOTl/HTz0BiNGjIgRI0a0/TxlypR47bXX4qGHHop//dd/TTiznmvevHnx4osvxrPPPpt6KqeUzp73kpKSdv96nzJlSowaNSr++Z//Oe6///7unmavMmLEiKirq4sDBw7EY489FrNnz46nn376qEHCJ3NnJLHBgwdHQ0NDu3UNDQ3Rv3//OP300xPN6tQ0adKkePXVV1NPo0cqKyuLH/7wh/HUU0/F+eeff8yxR7vmBw8e3J1T7JVyOe8f169fvxg/frxrvgvy8/PjkksuiQkTJkRlZWWMHTs2vvGNb3Q41vXeOWIksZKSkqiurm63btOmTUd9/ZHuU1dXF0OGDEk9jR4ly7IoKyuLtWvXxpNPPhkXXnjhJ27jmj9+XTnvH9fS0hLbt293zZ8Ara2t0dzc3OFjrvdOSv0O2t7m3XffzbZt25Zt27Yti4hs6dKl2bZt27K33nory7IsW7BgQXbjjTe2jX/99dezM844I7vjjjuyHTt2ZFVVVVnfvn2zjRs3pnoKPVKu5/2hhx7K1q1bl73yyivZ9u3bs/nz52d9+vTJfvzjH6d6Cj3Srbfemg0YMCCrqanJ3n777bblvffeaxtz4403ZgsWLGj7+bnnnstOO+207Otf/3q2Y8eOrKKiIuvXr1+2ffv2FE+hR+rKeb/vvvuyJ554InvttdeyLVu2ZH/5l3+ZFRYWZj//+c9TPIUea8GCBdnTTz+dvfHGG9nPfvazbMGCBVleXl723//931mWud67SoycYIc/MvrxZfbs2VmWZdns2bOzq6+++ohtxo0bl+Xn52cXXXRR9p3vfOekz7uny/W8P/jgg9nFF1+cFRYWZueee252zTXXZE8++WSayfdgHZ3ziGh3DV999dVtv4fDvve972WXXnpplp+fn33605/O1q9ff3In3sN15bzfdttt2e/93u9l+fn5WVFRUfb5z38+27p168mffA/313/919kFF1yQ5efnZ5/61KeyP/mTP2kLkSxzvXdVXpZl2cm7DwMA0J73jAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBAB6iWeeeSamT58eQ4cOjby8vFi3bl23H3PPnj3xV3/1V3HeeefF6aefHmPGjIkXXnghp32IEQDoJZqammLs2LFRVVV1Uo73q1/9Kq688sro169f/OhHP4r//d//jSVLlsQ555yT0358AysA9EJ5eXmxdu3amDFjRtu65ubmuOuuu+I//uM/4te//nVcdtll8eCDD8Y111zTpWMsWLAgnnvuufjJT35yXHN1ZwQAThFlZWVRW1sbq1evjp/97Gdx/fXXx2c/+9l45ZVXurS/H/zgBzFx4sS4/vrrY9CgQTF+/PhYsWJFzvtxZwQAeqGP3xnZtWtXXHTRRbFr164YOnRo27jS0tKYNGlSLF68OOdjFBYWRkREeXl5XH/99fE///M/MX/+/Fi+fHnMnj270/s5LecjAwA9zvbt26OlpSUuvfTSduubm5vjvPPOi4iIl156KUaNGnXM/dx5553xwAMPREREa2trTJw4sS1kxo8fHy+++KIYAQCOdPDgwejbt29s2bIl+vbt2+6xM888MyIiLrrootixY8cx93M4XCIihgwZEqNHj273+KhRo+Lxxx/PaW5iBABOAePHj4+WlpbYu3dvXHXVVR2Oyc/Pj5EjR3Z6n1deeWXs3Lmz3bqXX345LrjggpzmJkYAoJc4ePBgvPrqq20/v/HGG1FXVxfnnntuXHrppfGlL30pZs2aFUuWLInx48fHvn37orq6Oi6//PKYNm1azse7/fbbY8qUKbF48eL4whe+EJs3b46HH344Hn744Zz24w2sANBL1NTUxLXXXnvE+tmzZ8eqVavigw8+iK9+9avxL//yL7Fnz54YOHBg/OEf/mHcd999MWbMmC4d84c//GEsXLgwXnnllbjwwgujvLw85s6dm9M+xAgAkJTvGQEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASf0/Aa3xM+Jsfd0AAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.hist(x0)" ] }, { "cell_type": "code", - "execution_count": 12, - "id": "3b9e3896-c530-419c-8bb0-a9c1984eae0d", + "execution_count": null, + "id": "1140a75e38023d80", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(array([ 5., 9., 16., 12., 11., 7., 8., 9., 6., 6.]),\n", - " array([0.01004894, 0.01099313, 0.01193732, 0.01288152, 0.01382571,\n", - " 0.01476991, 0.0157141 , 0.0166583 , 0.01760249, 0.01854669,\n", - " 0.01949088]),\n", - " )" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.hist(z)" ] }, { "cell_type": "code", - "execution_count": 13, - "id": "b31893a6-be21-4c69-8e6c-4cfec316d309", + "execution_count": null, + "id": "75b49a8b4f8fa1b4", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.5529420789745707\n" - ] - }, - { - "ename": "ValueError", - "evalue": "x and y must be the same size", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[13], line 10\u001b[0m\n\u001b[1;32m 7\u001b[0m mb \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m2.5\u001b[39m \u001b[38;5;241m*\u001b[39m np\u001b[38;5;241m.\u001b[39mlog10(x0)\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28mprint\u001b[39m(np\u001b[38;5;241m.\u001b[39mstd(mb \u001b[38;5;241m-\u001b[39m distmod))\n\u001b[0;32m---> 10\u001b[0m \u001b[43mplt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mscatter\u001b[49m\u001b[43m(\u001b[49m\u001b[43mz\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmb\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mdistmod\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 11\u001b[0m plt\u001b[38;5;241m.\u001b[39mshow()\n\u001b[1;32m 13\u001b[0m alpha \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0.14\u001b[39m\n", - "File \u001b[0;32m~/.virtualenvs/tdastro/lib/python3.12/site-packages/matplotlib/pyplot.py:3903\u001b[0m, in \u001b[0;36mscatter\u001b[0;34m(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, edgecolors, plotnonfinite, data, **kwargs)\u001b[0m\n\u001b[1;32m 3884\u001b[0m \u001b[38;5;129m@_copy_docstring_and_deprecators\u001b[39m(Axes\u001b[38;5;241m.\u001b[39mscatter)\n\u001b[1;32m 3885\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mscatter\u001b[39m(\n\u001b[1;32m 3886\u001b[0m x: \u001b[38;5;28mfloat\u001b[39m \u001b[38;5;241m|\u001b[39m ArrayLike,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 3901\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m 3902\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m PathCollection:\n\u001b[0;32m-> 3903\u001b[0m __ret \u001b[38;5;241m=\u001b[39m \u001b[43mgca\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mscatter\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3904\u001b[0m \u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3905\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3906\u001b[0m \u001b[43m \u001b[49m\u001b[43ms\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3907\u001b[0m \u001b[43m \u001b[49m\u001b[43mc\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mc\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3908\u001b[0m \u001b[43m \u001b[49m\u001b[43mmarker\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmarker\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3909\u001b[0m \u001b[43m \u001b[49m\u001b[43mcmap\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcmap\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3910\u001b[0m \u001b[43m \u001b[49m\u001b[43mnorm\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnorm\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3911\u001b[0m \u001b[43m \u001b[49m\u001b[43mvmin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvmin\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3912\u001b[0m \u001b[43m \u001b[49m\u001b[43mvmax\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvmax\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3913\u001b[0m \u001b[43m \u001b[49m\u001b[43malpha\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43malpha\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3914\u001b[0m \u001b[43m \u001b[49m\u001b[43mlinewidths\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlinewidths\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3915\u001b[0m \u001b[43m \u001b[49m\u001b[43medgecolors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43medgecolors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3916\u001b[0m \u001b[43m \u001b[49m\u001b[43mplotnonfinite\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mplotnonfinite\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3917\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdata\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m}\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3918\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3919\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3920\u001b[0m sci(__ret)\n\u001b[1;32m 3921\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m __ret\n", - "File \u001b[0;32m~/.virtualenvs/tdastro/lib/python3.12/site-packages/matplotlib/__init__.py:1473\u001b[0m, in \u001b[0;36m_preprocess_data..inner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1470\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 1471\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minner\u001b[39m(ax, \u001b[38;5;241m*\u001b[39margs, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 1472\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m data \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1473\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1474\u001b[0m \u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1475\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mmap\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msanitize_sequence\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1476\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[43mk\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43msanitize_sequence\u001b[49m\u001b[43m(\u001b[49m\u001b[43mv\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1478\u001b[0m bound \u001b[38;5;241m=\u001b[39m new_sig\u001b[38;5;241m.\u001b[39mbind(ax, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 1479\u001b[0m auto_label \u001b[38;5;241m=\u001b[39m (bound\u001b[38;5;241m.\u001b[39marguments\u001b[38;5;241m.\u001b[39mget(label_namer)\n\u001b[1;32m 1480\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m bound\u001b[38;5;241m.\u001b[39mkwargs\u001b[38;5;241m.\u001b[39mget(label_namer))\n", - "File \u001b[0;32m~/.virtualenvs/tdastro/lib/python3.12/site-packages/matplotlib/axes/_axes.py:4787\u001b[0m, in \u001b[0;36mAxes.scatter\u001b[0;34m(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, edgecolors, plotnonfinite, **kwargs)\u001b[0m\n\u001b[1;32m 4785\u001b[0m y \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mma\u001b[38;5;241m.\u001b[39mravel(y)\n\u001b[1;32m 4786\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m x\u001b[38;5;241m.\u001b[39msize \u001b[38;5;241m!=\u001b[39m y\u001b[38;5;241m.\u001b[39msize:\n\u001b[0;32m-> 4787\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx and y must be the same size\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 4789\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m s \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 4790\u001b[0m s \u001b[38;5;241m=\u001b[39m (\u001b[38;5;241m20\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m mpl\u001b[38;5;241m.\u001b[39mrcParams[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_internal.classic_mode\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;28;01melse\u001b[39;00m\n\u001b[1;32m 4791\u001b[0m mpl\u001b[38;5;241m.\u001b[39mrcParams[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlines.markersize\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m \u001b[38;5;241m2.0\u001b[39m)\n", - "\u001b[0;31mValueError\u001b[0m: x and y must be the same size" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# cosmo = FlatLambdaCDM(H0=73, Om0=0.3)\n", "# distmod = cosmo.distmod(z).value\n", @@ -450,7 +175,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d7443d9e-7bbd-4087-b31e-8a4030c32b16", + "id": "98996d76d56cb7b9", "metadata": {}, "outputs": [], "source": [ @@ -463,7 +188,7 @@ { "cell_type": "code", "execution_count": null, - "id": "494d4400-c7ef-453d-bfa3-4abea973997e", + "id": "320e5ddcec3fcdd", "metadata": {}, "outputs": [], "source": [ @@ -474,7 +199,7 @@ { "cell_type": "code", "execution_count": null, - "id": "55a3c72f-a231-4108-b518-779e37502cd7", + "id": "4dce3f1ba8792c87", "metadata": {}, "outputs": [], "source": [ @@ -497,7 +222,7 @@ { "cell_type": "code", "execution_count": null, - "id": "acdcbb01-ead0-4a20-b479-3324ccd7e562", + "id": "6e1d0698de0bfaaa", "metadata": {}, "outputs": [], "source": [ @@ -530,7 +255,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "tdastro", "language": "python", "name": "python3" }, @@ -544,7 +269,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.6" + "version": "3.10.14" } }, "nbformat": 4, diff --git a/tests/tdastro/sources/test_snia.py b/tests/tdastro/sources/test_snia.py index 2cfd861c..cc2c812d 100644 --- a/tests/tdastro/sources/test_snia.py +++ b/tests/tdastro/sources/test_snia.py @@ -1,7 +1,6 @@ import numpy as np import sncosmo from astropy import units as u -from tdastro.astro_utils.opsim import OpSim from tdastro.astro_utils.passbands import PassbandGroup from tdastro.astro_utils.snia_utils import DistModFromRedshift, HostmassX1Func, X0FromDistMod from tdastro.astro_utils.unit_utils import flam_to_fnu @@ -12,12 +11,9 @@ def draw_single_random_sn( source, + opsim, wavelengths_rest=None, - phase_rest=None, passbands=None, - opsim=False, - opsim_data=None, - randseed=None, ): """ Draw a single random SN realiztion @@ -28,17 +24,15 @@ def draw_single_random_sn( z = source.get_param(state, "redshift") wave_obs = passbands.waves wavelengths_rest = wave_obs / (1.0 + z) - phase_obs = phase_rest * (1.0 + z) - res = {"wavelengths_rest": wavelengths_rest, "phase_rest": phase_rest} + res = {"wavelengths_rest": wavelengths_rest} t0 = source.get_param(state, "t0") - times = t0 + phase_obs if opsim: ra = source.get_param(state, "ra") dec = source.get_param(state, "dec") - obs = opsim_data.get_observations(ra, dec, radius=1.75, cols=["time", "filter"]) + obs = opsim.get_observations(ra, dec, radius=1.75, cols=["time", "filter"]) times = obs["time"] phase_obs = times - t0 @@ -71,10 +65,8 @@ def draw_single_random_sn( def test_snia_end2end( - opsim_small, + oversampled_observations, passbands_dir, - opsim_db_file=None, - opsim=True, nsample=1, return_result=False, phase_rest=None, @@ -82,19 +74,13 @@ def test_snia_end2end( ): """Test that we can sample and create SN Ia simulation using the salt3 model.""" - opsim_data = OpSim.from_db(opsim_db_file if opsim_db_file else opsim_small) if opsim else None - - ra_min = opsim_data["fieldRA"].min() if opsim_data else 0.0 - ra_max = opsim_data["fieldRA"].max() if opsim_data else 360.0 - dec_min = opsim_data["fieldDec"].min() if opsim_data else -90.0 - dec_max = opsim_data["fieldDec"].max() if opsim_data else 33.5 - t_min = opsim_data["observationStartMJD"].min() if opsim_data else 60796.0 - t_max = opsim_data["observationStartMJD"].max() if opsim_data else 64448.0 + t_min = oversampled_observations["observationStartMJD"].min() + t_max = oversampled_observations["observationStartMJD"].max() - # Create a host galaxy anywhere on the sky. + # Create a host galaxy. host = SNIaHost( - ra=NumpyRandomFunc("uniform", low=ra_min, high=ra_max), - dec=NumpyRandomFunc("uniform", low=dec_min, high=dec_max), + ra=NumpyRandomFunc("uniform", low=-0.5, high=0.5), # all pointings RA = 0.0 + dec=NumpyRandomFunc("uniform", low=-0.5, high=0.5), # all pointings Dec = 0.0 hostmass=NumpyRandomFunc("uniform", low=7, high=12), redshift=NumpyRandomFunc("uniform", low=0.01, high=0.02), ) @@ -146,8 +132,6 @@ def test_snia_end2end( res_list = [] - if phase_rest is None: - phase_rest = np.array([-5.0, 0.0, 10.0]) if wavelengths_rest is None: wavelengths_rest = np.linspace(3000, 8000, 200) @@ -156,11 +140,9 @@ def test_snia_end2end( for _n in range(0, nsample): res = draw_single_random_sn( source, + opsim=oversampled_observations, wavelengths_rest=wavelengths_rest, - phase_rest=phase_rest, passbands=passbands, - opsim=opsim, - opsim_data=opsim_data, ) if res is None: @@ -181,13 +163,8 @@ def test_snia_end2end( saltpars = {"x0": p["x0"], "x1": p["x1"], "c": p["c"], "z": p["redshift"], "t0": p["t0"]} model = sncosmo.Model(sncosmo_modelname) model.update(saltpars) - z = p["redshift"] wave = passbands.waves - if opsim is None: - time = phase_rest * (1 + z) + p["t0"] - assert np.allclose(res["times"], time) - else: - time = res["times"] + time = res["times"] flux_sncosmo = model.flux(time, wave) assert np.allclose(res["flux_flam"] * 1e10, flux_sncosmo * 1e10) From dcaf0da2b712ec48794bd372388d8a948e3e09ad Mon Sep 17 00:00:00 2001 From: Konstantin Malanchev Date: Thu, 26 Sep 2024 11:42:58 -0400 Subject: [PATCH 4/7] Refactor test_snia_end2end with oversampled opsim --- docs/notebooks/test_snia.ipynb | 167 ++++++++++++++++++++++------- tests/tdastro/conftest.py | 29 +++-- tests/tdastro/sources/test_snia.py | 44 ++++---- 3 files changed, 170 insertions(+), 70 deletions(-) diff --git a/docs/notebooks/test_snia.ipynb b/docs/notebooks/test_snia.ipynb index a4603daa..37c40bf0 100644 --- a/docs/notebooks/test_snia.ipynb +++ b/docs/notebooks/test_snia.ipynb @@ -4,18 +4,28 @@ "cell_type": "code", "execution_count": null, "id": "f2dc23f31b3601e1", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:20.170140Z", + "start_time": "2024-09-26T15:38:20.167668Z" + } + }, "outputs": [], "source": [ - "%load_ext autoreload\n", - "%autoreload 2" + "# %load_ext autoreload\n", + "# %autoreload 2" ] }, { "cell_type": "code", "execution_count": null, "id": "4e459a387df01a7c", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:20.177116Z", + "start_time": "2024-09-26T15:38:20.174746Z" + } + }, "outputs": [], "source": [ "import sys\n", @@ -23,17 +33,20 @@ "import tdastro\n", "\n", "test_path = Path(tdastro.__file__).parent.parent.parent / \"tests\" / \"tdastro\"\n", - "test_data_path = test_path / 'data'\n", - "test_source_path = test_path / \"sources\"\n", "\n", - "sys.path.append(str(test_source_path).resolve())" + "sys.path.append(str(test_path.resolve()))" ] }, { "cell_type": "code", "execution_count": null, "id": "824593e5f3032eb6", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:20.667800Z", + "start_time": "2024-09-26T15:38:20.233254Z" + } + }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", @@ -45,24 +58,34 @@ "cell_type": "code", "execution_count": null, "id": "3742a30a04a1b62c", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:20.797258Z", + "start_time": "2024-09-26T15:38:20.672792Z" + } + }, "outputs": [], "source": [ - "from test_snia import test_snia_end2end" + "import conftest\n", + "from sources.test_snia import test_snia_end2end" ] }, { "cell_type": "code", "execution_count": null, "id": "58a2bc03f3a3a3a0", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:47.963561Z", + "start_time": "2024-09-26T15:38:20.802799Z" + } + }, "outputs": [], "source": [ - "res = test_snia_end2end(\n", - " , opsim_db_file=None, opsim=True, nsample=100, return_result=True,\n", - " # phase_rest=np.linspace(-15, 45, 20),\n", - " phase_rest=None,\n", - " passbands_dir='/Users/hombit/projects/lincc-frameworks/tdastro/tests/tdastro/data/passbands',\n", + "res, passbands = test_snia_end2end(\n", + " conftest.oversampled_observations(conftest.opsim_shorten(conftest.test_data_dir())),\n", + " passbands_dir=conftest.passbands_dir(conftest.test_data_dir()),\n", + " nsample=20,\n", ")" ] }, @@ -70,7 +93,12 @@ "cell_type": "code", "execution_count": null, "id": "5c4b0574aec01df4", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:47.971555Z", + "start_time": "2024-09-26T15:38:47.969424Z" + } + }, "outputs": [], "source": [ "hostmass = [x[\"parameter_values\"][\"hostmass\"] for x in res]\n", @@ -86,7 +114,12 @@ "cell_type": "code", "execution_count": null, "id": "aaefb2f29d444cf2", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:48.053565Z", + "start_time": "2024-09-26T15:38:47.976849Z" + } + }, "outputs": [], "source": [ "plt.hist(hostmass)" @@ -96,7 +129,12 @@ "cell_type": "code", "execution_count": null, "id": "b86d82fe1a518d5a", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:48.225753Z", + "start_time": "2024-09-26T15:38:48.093211Z" + } + }, "outputs": [], "source": [ "plt.hist(x1)\n", @@ -107,7 +145,12 @@ "cell_type": "code", "execution_count": null, "id": "edc24806f5752b25", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:48.299469Z", + "start_time": "2024-09-26T15:38:48.236483Z" + } + }, "outputs": [], "source": [ "plt.hist(c)" @@ -117,7 +160,12 @@ "cell_type": "code", "execution_count": null, "id": "35ab73410bd98ac1", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:48.352012Z", + "start_time": "2024-09-26T15:38:48.305324Z" + } + }, "outputs": [], "source": [ "plt.scatter(hostmass, x1)" @@ -127,7 +175,12 @@ "cell_type": "code", "execution_count": null, "id": "2b56df734bccfe1b", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:48.411671Z", + "start_time": "2024-09-26T15:38:48.362721Z" + } + }, "outputs": [], "source": [ "plt.hist(x0)" @@ -137,7 +190,12 @@ "cell_type": "code", "execution_count": null, "id": "1140a75e38023d80", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:48.467349Z", + "start_time": "2024-09-26T15:38:48.417896Z" + } + }, "outputs": [], "source": [ "plt.hist(z)" @@ -147,7 +205,12 @@ "cell_type": "code", "execution_count": null, "id": "75b49a8b4f8fa1b4", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:48.583009Z", + "start_time": "2024-09-26T15:38:48.498730Z" + } + }, "outputs": [], "source": [ "# cosmo = FlatLambdaCDM(H0=73, Om0=0.3)\n", @@ -176,7 +239,12 @@ "cell_type": "code", "execution_count": null, "id": "98996d76d56cb7b9", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:48.700933Z", + "start_time": "2024-09-26T15:38:48.618682Z" + } + }, "outputs": [], "source": [ "plt.scatter(z, mb)\n", @@ -189,7 +257,12 @@ "cell_type": "code", "execution_count": null, "id": "320e5ddcec3fcdd", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:48.751128Z", + "start_time": "2024-09-26T15:38:48.706426Z" + } + }, "outputs": [], "source": [ "plt.scatter(hostmass, mu - distmod)\n", @@ -200,7 +273,12 @@ "cell_type": "code", "execution_count": null, "id": "4dce3f1ba8792c87", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:48.887113Z", + "start_time": "2024-09-26T15:38:48.757687Z" + } + }, "outputs": [], "source": [ "for i in range(0, 3):\n", @@ -209,7 +287,7 @@ " except Exception:\n", " continue\n", " saltpars = {\"x0\": x0[i], \"x1\": x1[i], \"c\": c[i], \"z\": z[i], \"t0\": t0[i]}\n", - " model = sncosmo.Model(\"salt2-h17\")\n", + " model = sncosmo.Model(\"salt3\")\n", " model.update(saltpars)\n", " print(saltpars)\n", " print(model.parameters)\n", @@ -223,23 +301,31 @@ "cell_type": "code", "execution_count": null, "id": "6e1d0698de0bfaaa", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:49.434973Z", + "start_time": "2024-09-26T15:38:48.893241Z" + } + }, "outputs": [], "source": [ "for i in range(0, 3):\n", - " phase_obs = res[i][\"phase_rest\"] * (1 + z[i])\n", " times = res[i][\"times\"]\n", - " colors = \"gr\"\n", - " for color, f in zip(\"gr\", colors):\n", - " plt.plot(\n", - " times, res[i][\"bandfluxes\"][\"LSST_\" + f], \"-\", marker=\"o\", label=f, color=color, alpha=0.6, lw=2\n", - " )\n", + " colors = [\"red\", \"brown\"]\n", + " for f, color in zip(\"ri\", colors):\n", + " band_name = f\"LSST_{f}\"\n", + " plt.plot(times, res[i][\"bandfluxes\"][band_name], \"-\", label=f, color=color, alpha=0.6, lw=2)\n", " saltpars = {\"x0\": x0[i], \"x1\": x1[i], \"c\": c[i], \"z\": z[i], \"t0\": t0[i]}\n", - " model = sncosmo.Model(\"salt2-h17\")\n", + " model = sncosmo.Model(\"salt3\")\n", " model.update(saltpars)\n", " print(saltpars)\n", - " flux = model.bandflux(\"lsst\" + f, times, zpsys=\"ab\", zp=8.9 + 2.5 * 9) # -48.6)\n", + " sncosmo_band = sncosmo.Bandpass(\n", + " *passbands.passbands[band_name].processed_transmission_table.T, name=band_name\n", + " )\n", + " flux = model.bandflux(sncosmo_band, times, zpsys=\"ab\", zp=8.9 + 2.5 * 9) # -48.6)\n", " plt.plot(times, flux, \"--\", label=f, color=color)\n", + " plt.xlabel(\"MJD\")\n", + " plt.ylabel(\"Flux, nJy\")\n", " plt.legend()\n", " plt.show()" ] @@ -248,7 +334,12 @@ "cell_type": "code", "execution_count": null, "id": "dc680d32-cc9c-428f-90c4-944649999d9f", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-26T15:38:49.443348Z", + "start_time": "2024-09-26T15:38:49.441986Z" + } + }, "outputs": [], "source": [] } diff --git a/tests/tdastro/conftest.py b/tests/tdastro/conftest.py index b16676bd..664ac90a 100644 --- a/tests/tdastro/conftest.py +++ b/tests/tdastro/conftest.py @@ -6,37 +6,52 @@ TEST_DIR = os.path.dirname(__file__) -@pytest.fixture +def fixture(func): + """Decorator to make a function a fixture. + + We use to make it to use fixtures as regular functions when we have to. + """ + func_name = func.__name__ + fixture_func_name = f"{func_name}_fixture" + + fixture_func = pytest.fixture(func, name=func_name) + fixture_func.__name__ = fixture_func_name + globals()[fixture_func_name] = fixture_func + + return func + + +@fixture def test_data_dir(): """Return the base test data directory.""" return os.path.join(TEST_DIR, DATA_DIR_NAME) -@pytest.fixture +@fixture def grid_data_good_file(test_data_dir): """Return the file path for the good grid input file.""" return os.path.join(test_data_dir, "grid_input_good.ecsv") -@pytest.fixture +@fixture def grid_data_bad_file(test_data_dir): """Return the file path for the bad grid input file.""" return os.path.join(test_data_dir, "grid_input_bad.txt") -@pytest.fixture +@fixture def opsim_small(test_data_dir): """Return the file path for the bad grid input file.""" return os.path.join(test_data_dir, "opsim_small.db") -@pytest.fixture +@fixture def opsim_shorten(test_data_dir): """Return the file path for the bad grid input file.""" return os.path.join(test_data_dir, "opsim_shorten.db") -@pytest.fixture +@fixture def oversampled_observations(opsim_shorten): """Return an OpSim object with 0.01 day cadence spanning year 2027.""" from tdastro.astro_utils.opsim import OpSim, oversample_opsim @@ -53,7 +68,7 @@ def oversampled_observations(opsim_shorten): ) -@pytest.fixture +@fixture def passbands_dir(test_data_dir): """Return the file path for passbands directory.""" return os.path.join(test_data_dir, "passbands") diff --git a/tests/tdastro/sources/test_snia.py b/tests/tdastro/sources/test_snia.py index cc2c812d..6eff7804 100644 --- a/tests/tdastro/sources/test_snia.py +++ b/tests/tdastro/sources/test_snia.py @@ -12,8 +12,7 @@ def draw_single_random_sn( source, opsim, - wavelengths_rest=None, - passbands=None, + passbands, ): """ Draw a single random SN realiztion @@ -68,9 +67,6 @@ def test_snia_end2end( oversampled_observations, passbands_dir, nsample=1, - return_result=False, - phase_rest=None, - wavelengths_rest=None, ): """Test that we can sample and create SN Ia simulation using the salt3 model.""" @@ -82,7 +78,7 @@ def test_snia_end2end( ra=NumpyRandomFunc("uniform", low=-0.5, high=0.5), # all pointings RA = 0.0 dec=NumpyRandomFunc("uniform", low=-0.5, high=0.5), # all pointings Dec = 0.0 hostmass=NumpyRandomFunc("uniform", low=7, high=12), - redshift=NumpyRandomFunc("uniform", low=0.01, high=0.02), + redshift=NumpyRandomFunc("uniform", low=0.001, high=0.002), ) distmod_func = DistModFromRedshift(host.redshift, H0=73.0, Omega_m=0.3) @@ -99,7 +95,7 @@ def test_snia_end2end( m_abs=m_abs_func, ) - sncosmo_modelname = "salt2-h17" + sncosmo_modelname = "salt3" source = SncosmoWrapperModel( sncosmo_modelname, @@ -115,33 +111,28 @@ def test_snia_end2end( passbands = PassbandGroup( passband_parameters=[ { - "survey": "LSST", - "filter_name": "u", - "table_path": f"{passbands_dir}/LSST/u.dat", - "units": "nm", - }, - { - "survey": "LSST", "filter_name": "r", "table_path": f"{passbands_dir}/LSST/r.dat", - "units": "nm", + }, + { + "filter_name": "i", + "table_path": f"{passbands_dir}/LSST/u.dat", }, ], + survey="LSST", + units="nm", + trim_quantile=0.001, delta_wave=1, ) res_list = [] - if wavelengths_rest is None: - wavelengths_rest = np.linspace(3000, 8000, 200) - any_valid_results = False for _n in range(0, nsample): res = draw_single_random_sn( source, opsim=oversampled_observations, - wavelengths_rest=wavelengths_rest, passbands=passbands, ) @@ -167,15 +158,18 @@ def test_snia_end2end( time = res["times"] flux_sncosmo = model.flux(time, wave) - assert np.allclose(res["flux_flam"] * 1e10, flux_sncosmo * 1e10) + np.testing.assert_allclose(res["flux_flam"], flux_sncosmo, atol=1e-30, rtol=1e-5) - for f in passbands.passbands: - bandflux_sncosmo = model.bandflux(f.replace("_", ""), time, zpsys="ab", zp=8.9 + 2.5 * 9) - assert np.allclose(res["bandfluxes"][f], bandflux_sncosmo, rtol=0.1) + for f, passband in passbands.passbands.items(): + # Skip test for negative fluxes + if np.any(flux_sncosmo < 0): + continue + sncosmo_band = sncosmo.Bandpass(*passband.processed_transmission_table.T, name=f) + bandflux_sncosmo = model.bandflux(sncosmo_band, time, zpsys="ab", zp=8.9 + 2.5 * 9) + np.testing.assert_allclose(res["bandfluxes"][f], bandflux_sncosmo, rtol=1e-1, err_msg=f"band {f}") res_list.append(res) assert any_valid_results, f"No valid results found over all {nsample} samples." - if return_result: - return res_list + return res_list, passbands From 35a0f3ce749387b39cdf048ffecd3646a40bc669 Mon Sep 17 00:00:00 2001 From: Konstantin Malanchev Date: Thu, 26 Sep 2024 14:12:14 -0400 Subject: [PATCH 5/7] snia e2e: Restore original redshift range --- docs/notebooks/test_snia.ipynb | 72 +++++++++++++++--------------- tests/tdastro/sources/test_snia.py | 2 +- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/docs/notebooks/test_snia.ipynb b/docs/notebooks/test_snia.ipynb index 37c40bf0..b12d4aff 100644 --- a/docs/notebooks/test_snia.ipynb +++ b/docs/notebooks/test_snia.ipynb @@ -6,8 +6,8 @@ "id": "f2dc23f31b3601e1", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:20.170140Z", - "start_time": "2024-09-26T15:38:20.167668Z" + "end_time": "2024-09-26T18:10:25.986845Z", + "start_time": "2024-09-26T18:10:25.982521Z" } }, "outputs": [], @@ -22,8 +22,8 @@ "id": "4e459a387df01a7c", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:20.177116Z", - "start_time": "2024-09-26T15:38:20.174746Z" + "end_time": "2024-09-26T18:10:25.995745Z", + "start_time": "2024-09-26T18:10:25.992519Z" } }, "outputs": [], @@ -43,8 +43,8 @@ "id": "824593e5f3032eb6", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:20.667800Z", - "start_time": "2024-09-26T15:38:20.233254Z" + "end_time": "2024-09-26T18:10:26.007699Z", + "start_time": "2024-09-26T18:10:26.005835Z" } }, "outputs": [], @@ -60,8 +60,8 @@ "id": "3742a30a04a1b62c", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:20.797258Z", - "start_time": "2024-09-26T15:38:20.672792Z" + "end_time": "2024-09-26T18:10:26.016738Z", + "start_time": "2024-09-26T18:10:26.015042Z" } }, "outputs": [], @@ -76,8 +76,8 @@ "id": "58a2bc03f3a3a3a0", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:47.963561Z", - "start_time": "2024-09-26T15:38:20.802799Z" + "end_time": "2024-09-26T18:10:56.578886Z", + "start_time": "2024-09-26T18:10:26.023246Z" } }, "outputs": [], @@ -95,8 +95,8 @@ "id": "5c4b0574aec01df4", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:47.971555Z", - "start_time": "2024-09-26T15:38:47.969424Z" + "end_time": "2024-09-26T18:10:56.595273Z", + "start_time": "2024-09-26T18:10:56.589976Z" } }, "outputs": [], @@ -116,8 +116,8 @@ "id": "aaefb2f29d444cf2", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:48.053565Z", - "start_time": "2024-09-26T15:38:47.976849Z" + "end_time": "2024-09-26T18:10:56.712236Z", + "start_time": "2024-09-26T18:10:56.601978Z" } }, "outputs": [], @@ -131,8 +131,8 @@ "id": "b86d82fe1a518d5a", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:48.225753Z", - "start_time": "2024-09-26T15:38:48.093211Z" + "end_time": "2024-09-26T18:10:56.771308Z", + "start_time": "2024-09-26T18:10:56.719033Z" } }, "outputs": [], @@ -147,8 +147,8 @@ "id": "edc24806f5752b25", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:48.299469Z", - "start_time": "2024-09-26T15:38:48.236483Z" + "end_time": "2024-09-26T18:10:56.832246Z", + "start_time": "2024-09-26T18:10:56.777555Z" } }, "outputs": [], @@ -162,8 +162,8 @@ "id": "35ab73410bd98ac1", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:48.352012Z", - "start_time": "2024-09-26T15:38:48.305324Z" + "end_time": "2024-09-26T18:10:56.892230Z", + "start_time": "2024-09-26T18:10:56.838414Z" } }, "outputs": [], @@ -177,8 +177,8 @@ "id": "2b56df734bccfe1b", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:48.411671Z", - "start_time": "2024-09-26T15:38:48.362721Z" + "end_time": "2024-09-26T18:10:56.949151Z", + "start_time": "2024-09-26T18:10:56.899465Z" } }, "outputs": [], @@ -192,8 +192,8 @@ "id": "1140a75e38023d80", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:48.467349Z", - "start_time": "2024-09-26T15:38:48.417896Z" + "end_time": "2024-09-26T18:10:57.012781Z", + "start_time": "2024-09-26T18:10:56.956603Z" } }, "outputs": [], @@ -207,8 +207,8 @@ "id": "75b49a8b4f8fa1b4", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:48.583009Z", - "start_time": "2024-09-26T15:38:48.498730Z" + "end_time": "2024-09-26T18:10:57.111919Z", + "start_time": "2024-09-26T18:10:57.020201Z" } }, "outputs": [], @@ -241,8 +241,8 @@ "id": "98996d76d56cb7b9", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:48.700933Z", - "start_time": "2024-09-26T15:38:48.618682Z" + "end_time": "2024-09-26T18:10:57.206103Z", + "start_time": "2024-09-26T18:10:57.118280Z" } }, "outputs": [], @@ -259,8 +259,8 @@ "id": "320e5ddcec3fcdd", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:48.751128Z", - "start_time": "2024-09-26T15:38:48.706426Z" + "end_time": "2024-09-26T18:10:57.252874Z", + "start_time": "2024-09-26T18:10:57.212412Z" } }, "outputs": [], @@ -275,8 +275,8 @@ "id": "4dce3f1ba8792c87", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:48.887113Z", - "start_time": "2024-09-26T15:38:48.757687Z" + "end_time": "2024-09-26T18:10:57.388666Z", + "start_time": "2024-09-26T18:10:57.259232Z" } }, "outputs": [], @@ -303,8 +303,8 @@ "id": "6e1d0698de0bfaaa", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:49.434973Z", - "start_time": "2024-09-26T15:38:48.893241Z" + "end_time": "2024-09-26T18:10:57.917869Z", + "start_time": "2024-09-26T18:10:57.394956Z" } }, "outputs": [], @@ -336,8 +336,8 @@ "id": "dc680d32-cc9c-428f-90c4-944649999d9f", "metadata": { "ExecuteTime": { - "end_time": "2024-09-26T15:38:49.443348Z", - "start_time": "2024-09-26T15:38:49.441986Z" + "end_time": "2024-09-26T18:10:57.925337Z", + "start_time": "2024-09-26T18:10:57.924252Z" } }, "outputs": [], diff --git a/tests/tdastro/sources/test_snia.py b/tests/tdastro/sources/test_snia.py index 6eff7804..0640dae0 100644 --- a/tests/tdastro/sources/test_snia.py +++ b/tests/tdastro/sources/test_snia.py @@ -78,7 +78,7 @@ def test_snia_end2end( ra=NumpyRandomFunc("uniform", low=-0.5, high=0.5), # all pointings RA = 0.0 dec=NumpyRandomFunc("uniform", low=-0.5, high=0.5), # all pointings Dec = 0.0 hostmass=NumpyRandomFunc("uniform", low=7, high=12), - redshift=NumpyRandomFunc("uniform", low=0.001, high=0.002), + redshift=NumpyRandomFunc("uniform", low=0.01, high=0.02), ) distmod_func = DistModFromRedshift(host.redshift, H0=73.0, Omega_m=0.3) From 39fea63095914dbdb62cbb2786c251f2bc705f15 Mon Sep 17 00:00:00 2001 From: Jeremy Kubica <104161096+jeremykubica@users.noreply.github.com> Date: Fri, 27 Sep 2024 08:46:28 -0400 Subject: [PATCH 6/7] Make suggested changes to the PR Removes the conftest changes and uses a few manual strings in the notebook instead. --- docs/notebooks/test_snia.ipynb | 87 +++++++++++++++++----------- src/tdastro/__init__.py | 6 ++ src/tdastro/astro_utils/passbands.py | 3 + tests/tdastro/conftest.py | 35 +++-------- tests/tdastro/sources/test_snia.py | 37 +++++++++--- 5 files changed, 98 insertions(+), 70 deletions(-) diff --git a/docs/notebooks/test_snia.ipynb b/docs/notebooks/test_snia.ipynb index b12d4aff..113b8ac3 100644 --- a/docs/notebooks/test_snia.ipynb +++ b/docs/notebooks/test_snia.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "id": "f2dc23f31b3601e1", "metadata": { "ExecuteTime": { @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "id": "4e459a387df01a7c", "metadata": { "ExecuteTime": { @@ -28,51 +28,65 @@ }, "outputs": [], "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import os\n", + "import sncosmo\n", "import sys\n", - "from pathlib import Path\n", "import tdastro\n", "\n", - "test_path = Path(tdastro.__file__).parent.parent.parent / \"tests\" / \"tdastro\"\n", + "# Append the path to the test directory so we can import run_snia_end2end\n", + "test_path = tdastro._TDASTRO_TEST_DIR\n", + "sys.path.append(str(test_path.resolve()))\n", "\n", - "sys.path.append(str(test_path.resolve()))" + "from sources.test_snia import run_snia_end2end" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "824593e5f3032eb6", - "metadata": { - "ExecuteTime": { - "end_time": "2024-09-26T18:10:26.007699Z", - "start_time": "2024-09-26T18:10:26.005835Z" - } - }, - "outputs": [], + "cell_type": "markdown", + "id": "a26e33f8", + "metadata": {}, "source": [ - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import sncosmo" + "### Create the data we will use for this test\n", + "\n", + "Load a sample opsim file (opsim_shorten.db) from the test's data directory and use the `oversample_opsim()` function to sample every 0.01 days from MJD=61406.0 to MJD=61771.0." ] }, { "cell_type": "code", - "execution_count": null, - "id": "3742a30a04a1b62c", - "metadata": { - "ExecuteTime": { - "end_time": "2024-09-26T18:10:26.016738Z", - "start_time": "2024-09-26T18:10:26.015042Z" - } - }, + "execution_count": 17, + "id": "89adedae", + "metadata": {}, "outputs": [], "source": [ - "import conftest\n", - "from sources.test_snia import test_snia_end2end" + "from tdastro.astro_utils.opsim import oversample_opsim, OpSim\n", + "\n", + "opsim_name = os.path.join(tdastro._TDASTRO_TEST_DATA_DIR, \"opsim_shorten.db\")\n", + "base_opsim = OpSim.from_db(opsim_name)\n", + "oversampled_observations = oversample_opsim(\n", + " base_opsim,\n", + " pointing=(0.0, 0.0),\n", + " search_radius=180.0,\n", + " delta_t=0.01,\n", + " time_range=(61406.0, 61771.0),\n", + " bands=None,\n", + " strategy=\"darkest_sky\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "1c96e021", + "metadata": {}, + "source": [ + "### Run the test\n", + "\n", + "Run the end to end test using the `run_snia_end2end()` to generate 20 samples." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "58a2bc03f3a3a3a0", "metadata": { "ExecuteTime": { @@ -82,16 +96,19 @@ }, "outputs": [], "source": [ - "res, passbands = test_snia_end2end(\n", - " conftest.oversampled_observations(conftest.opsim_shorten(conftest.test_data_dir())),\n", - " passbands_dir=conftest.passbands_dir(conftest.test_data_dir()),\n", + "passbands_dir = os.path.join(tdastro._TDASTRO_TEST_DATA_DIR, \"passbands\")\n", + "res, passbands = run_snia_end2end(\n", + " oversampled_observations,\n", + " passbands_dir=passbands_dir,\n", " nsample=20,\n", - ")" + ")\n", + "\n", + "print(f\"Produced {len(res)} samples.\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "5c4b0574aec01df4", "metadata": { "ExecuteTime": { @@ -360,7 +377,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.14" + "version": "3.10.4" } }, "nbformat": 4, diff --git a/src/tdastro/__init__.py b/src/tdastro/__init__.py index e69de29b..4f5f9584 100644 --- a/src/tdastro/__init__.py +++ b/src/tdastro/__init__.py @@ -0,0 +1,6 @@ +from pathlib import Path + +# Define some global directory paths to use for testing, notebooks, etc. +_TDASTRO_BASE_DIR = Path(__file__).parent.parent.parent +_TDASTRO_TEST_DIR = _TDASTRO_BASE_DIR / "tests" / "tdastro" +_TDASTRO_TEST_DATA_DIR = _TDASTRO_TEST_DIR / "data" diff --git a/src/tdastro/astro_utils/passbands.py b/src/tdastro/astro_utils/passbands.py index 024e0647..4d3091f1 100644 --- a/src/tdastro/astro_utils/passbands.py +++ b/src/tdastro/astro_utils/passbands.py @@ -78,6 +78,9 @@ def __str__(self) -> str: f"{', '.join(self.passbands.keys())}" ) + def __len__(self) -> int: + return len(self.passbands) + def _load_preset(self, preset: str, **kwargs) -> None: """Load a pre-defined set of passbands. diff --git a/tests/tdastro/conftest.py b/tests/tdastro/conftest.py index 664ac90a..259d28c1 100644 --- a/tests/tdastro/conftest.py +++ b/tests/tdastro/conftest.py @@ -1,57 +1,40 @@ import os.path import pytest +from tdastro import _TDASTRO_TEST_DATA_DIR -DATA_DIR_NAME = "data" -TEST_DIR = os.path.dirname(__file__) - -def fixture(func): - """Decorator to make a function a fixture. - - We use to make it to use fixtures as regular functions when we have to. - """ - func_name = func.__name__ - fixture_func_name = f"{func_name}_fixture" - - fixture_func = pytest.fixture(func, name=func_name) - fixture_func.__name__ = fixture_func_name - globals()[fixture_func_name] = fixture_func - - return func - - -@fixture +@pytest.fixture def test_data_dir(): """Return the base test data directory.""" - return os.path.join(TEST_DIR, DATA_DIR_NAME) + return _TDASTRO_TEST_DATA_DIR -@fixture +@pytest.fixture def grid_data_good_file(test_data_dir): """Return the file path for the good grid input file.""" return os.path.join(test_data_dir, "grid_input_good.ecsv") -@fixture +@pytest.fixture def grid_data_bad_file(test_data_dir): """Return the file path for the bad grid input file.""" return os.path.join(test_data_dir, "grid_input_bad.txt") -@fixture +@pytest.fixture def opsim_small(test_data_dir): """Return the file path for the bad grid input file.""" return os.path.join(test_data_dir, "opsim_small.db") -@fixture +@pytest.fixture def opsim_shorten(test_data_dir): """Return the file path for the bad grid input file.""" return os.path.join(test_data_dir, "opsim_shorten.db") -@fixture +@pytest.fixture def oversampled_observations(opsim_shorten): """Return an OpSim object with 0.01 day cadence spanning year 2027.""" from tdastro.astro_utils.opsim import OpSim, oversample_opsim @@ -68,7 +51,7 @@ def oversampled_observations(opsim_shorten): ) -@fixture +@pytest.fixture def passbands_dir(test_data_dir): """Return the file path for passbands directory.""" return os.path.join(test_data_dir, "passbands") diff --git a/tests/tdastro/sources/test_snia.py b/tests/tdastro/sources/test_snia.py index 0640dae0..a686146c 100644 --- a/tests/tdastro/sources/test_snia.py +++ b/tests/tdastro/sources/test_snia.py @@ -63,13 +63,26 @@ def draw_single_random_sn( return res -def test_snia_end2end( - oversampled_observations, - passbands_dir, - nsample=1, -): - """Test that we can sample and create SN Ia simulation using the salt3 model.""" - +def run_snia_end2end(oversampled_observations, passbands_dir, nsample=1): + """Test that we can sample and create SN Ia simulation using the salt3 model. + + Parameters + ---------- + oversampled_observations : OpSim + The opsim data to use. + passbands_dir : str + The name of the directory holding the passband information. + nsample : int + The number of samples to test. + Default: 1 + + Returns + ------- + res_list : dict + A dictionary of lists of sampling and result information. + passbands : PassbandGroup + The passbands used. + """ t_min = oversampled_observations["observationStartMJD"].min() t_max = oversampled_observations["observationStartMJD"].max() @@ -126,9 +139,7 @@ def test_snia_end2end( ) res_list = [] - any_valid_results = False - for _n in range(0, nsample): res = draw_single_random_sn( source, @@ -173,3 +184,11 @@ def test_snia_end2end( assert any_valid_results, f"No valid results found over all {nsample} samples." return res_list, passbands + + +def test_snia_end2end(oversampled_observations, passbands_dir): + """Test that the end to end run works.""" + num_samples = 1 + res_list, passbands = run_snia_end2end(oversampled_observations, passbands_dir, nsample=num_samples) + assert len(res_list) == num_samples + assert len(passbands) == 2 From a8013a54e282a2c66ae24d169f0cee33d2712c6d Mon Sep 17 00:00:00 2001 From: Jeremy Kubica <104161096+jeremykubica@users.noreply.github.com> Date: Fri, 27 Sep 2024 08:56:28 -0400 Subject: [PATCH 7/7] Clear notebook output --- docs/notebooks/test_snia.ipynb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/notebooks/test_snia.ipynb b/docs/notebooks/test_snia.ipynb index 113b8ac3..b618aa5f 100644 --- a/docs/notebooks/test_snia.ipynb +++ b/docs/notebooks/test_snia.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "f2dc23f31b3601e1", "metadata": { "ExecuteTime": { @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "id": "4e459a387df01a7c", "metadata": { "ExecuteTime": { @@ -54,7 +54,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "id": "89adedae", "metadata": {}, "outputs": [], @@ -86,7 +86,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "id": "58a2bc03f3a3a3a0", "metadata": { "ExecuteTime": { @@ -108,7 +108,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "id": "5c4b0574aec01df4", "metadata": { "ExecuteTime": {