From 86daee9aad337a0760407d2d9c814e926b6cbf67 Mon Sep 17 00:00:00 2001 From: Benoit Carry Date: Tue, 9 Apr 2024 14:08:21 +0200 Subject: [PATCH] data to cds --- notebooks/ReadMe | 144 +++ notebooks/Z_data_to_CDS.ipynb | 1786 +++++++++++++++++++++++++++++++++ 2 files changed, 1930 insertions(+) create mode 100644 notebooks/ReadMe create mode 100644 notebooks/Z_data_to_CDS.ipynb diff --git a/notebooks/ReadMe b/notebooks/ReadMe new file mode 100644 index 0000000..52dc2cf --- /dev/null +++ b/notebooks/ReadMe @@ -0,0 +1,144 @@ + (B.Carry, 2024) +================================================================================ +FINK SSOFT + B.Carry, J. Peloton, R. Le Montagner, M. Mahlke, J. Berthier + =References ? +================================================================================ +Keywords: + + +Abstract: + Large sky surveys provide numerous non-targeted observations of small bodies + of the Solar System. The upcoming Legacy Survey of Space and Time (LSST) of + the Vera C. Rubin observatory will be the largest source of small body + photometry in the next decade. With non-coordinated epochs of observation, + colors, and therefore taxonomy and composition, can only be computed by + comparing absolute magnitudes obtained in each filter by solving the phase + function (evolution of brightness of the small body against the solar phase + angle). Current models in use in the community (HG, HG12* , HG1G2) however + fail to reproduce the long-term photometry of many targets due to the change + in aspect angle between apparitions. We aim at deriving a generic yet + simple phase function model accounting for the variable geometry of the small + bodies over multiple apparitions. As a spinoff of the HG1 G2 model, + we propose the sHG1 G2 phase function model in which we introduce a term + describing the brightness changes due to spin orientation and polar + oblateness. We apply this new model to 13,245,908 observations of 122,675 + SSOs. These observations were acquired in the g and r filters with the Zwicky + Transient Facility between 2019/11/01 and 2023/12/01. We retrieve them and + implement the new sHG1 G2 model in Fink, a broker of alerts designed for the + LSST. The sHG1 G2 model leads to smaller residuals than other phase + function models, providing a better description of the photometry of + asteroids. We determine the absolute magnitude H and phase function + coefficients (G1 , G2 ) in each filter, the spin orientation (α0 , δ0 ), and + the polar-to-equatorial oblateness R for 95,593 Solar System Objects (SSOs), + which constitutes about a tenfold increase in the number of characterized + objects compared to current census. The application of the sHG1 + G2 model on ZTF alert data using the FINK broker shows that the model is + appropriate to extract physical properties of asteroids from multi-band and + sparse photometry, such as the forthcoming LSST survey. + +Description: + ZTF photometry, FINK broker + +File Summary: +-------------------------------------------------------------------------------- + FileName Lrecl Records Explanations +-------------------------------------------------------------------------------- +ReadMe 80 . this file +fink_cds.cds 564 122675 Published version of FINK SSOFT + + +-------------------------------------------------------------------------------- +Byte-by-byte Description of file: ../fink_cds.csv.cds +-------------------------------------------------------------------------------- + Bytes Format Units Label Explanations +-------------------------------------------------------------------------------- + 1- 6 I6 --- sso_number Official IAU number + 8- 24 A17 --- sso_name Official IAU designation + 26- 28 I3 --- n_obs Total number of observations + 30- 32 I3 --- n_obs_g Number of observations in g filter + 34- 36 I3 --- n_obs_r Number of observations in r filter + 38- 43 F6.2 --- min_phase Minimum phase angle of obserations + 45- 50 F6.2 --- min_phase_g Minimum phase angle of obserations in g filter + 52- 57 F6.2 --- min_phase_r Minimum phase angle of obserations in r filter + 59- 65 F7.2 --- max_phase Maximum phase angle of obserations + 67- 73 F7.2 --- max_phase_g Maximum phase angle of obserations in g filter + 75- 81 F7.2 --- max_phase_r Maximum phase angle of obserations in r filter + 83- 88 F6.1 --- n_days Number of days covered by observations + 90- 95 F6.1 --- n_days_g Number of days covered by observations in g filter + 97-102 F6.1 --- n_days_r Number of days covered by observations in r filter +104-109 F6.2 --- HG_H_g Absolute magnitude H in HG model in g filter +111-116 F6.2 --- HG_dH_g Uncertainty on the absolute magnitude H in HG model in g filter +118-122 F5.2 --- HG_G_g Phase slope G in HG model in g filter +124-129 F6.2 --- HG_dG_g Uncertainty on phase slope G in HG model in g filter +131-136 F6.2 --- HG_H_r Absolute magnitude H in HG model in r filter +138-142 F5.2 --- HG_dH_r Uncertainty on the absolute magnitude H in HG model in r filter +144-148 F5.2 --- HG_G_r Phase slope G in HG model in r filter +150-155 F6.2 --- HG_dG_r Uncertainty on phase slope G in HG model in r filter +157-161 F5.2 --- HG_rms RMS residuals of HG model +163-167 F5.2 --- HG_rms_g RMS residuals of HG model in g filter +169-173 F5.2 --- HG_rms_r RMS residuals of HG model in r filter +175-182 F8.2 --- HG_chi2red Chi-square of HG model +184-185 I2 --- HG_status Fit status of HG model +187-187 I1 --- HG_fit Quality code of the fit of HG model +189-194 F6.2 --- HG1G2_H_g Absolute magnitude H in HG1G2 model in g filter +196-206 F11.2 --- HG1G2_dH_g Uncertainty on the absolute magnitude H in HG1G2 model in g filter +208-212 F5.2 --- HG1G2_G1_g Phase slope G1 in HG1G2 model in g filter +214-224 F11.2 --- HG1G2_dG1_g Uncertainty on phase slope G1 in HG1G2 model in g filter +226-230 F5.2 --- HG1G2_G2_g Phase slope G2 in HG1G2 model in g filter +232-242 F11.2 --- HG1G2_dG2_g Uncertainty on phase slope G2 in HG1G2 model in g filter +244-249 F6.2 --- HG1G2_H_r Absolute magnitude H in HG1G2 model in r filter +251-261 F11.2 --- HG1G2_dH_r Uncertainty on the absolute magnitude H in HG1G2 model in g filter +263-267 F5.2 --- HG1G2_G1_r Phase slope G1 in HG1G2 model in r filter +269-279 F11.2 --- HG1G2_dG1_r Uncertainty on phase slope G1 in HG1G2 model in r filter +281-285 F5.2 --- HG1G2_G2_r Phase slope G2 in HG1G2 model in r filter +287-296 F10.2 --- HG1G2_dG2_r Uncertainty on phase slope G2 in HG1G2 model in r filter +298-302 F5.2 --- HG1G2_rms RMS residuals of HG1G2 model +304-308 F5.2 --- HG1G2_rms_g RMS residuals of HG1G2 model in g filter +310-314 F5.2 --- HG1G2_rms_r RMS residuals of HG1G2 model in r filter +316-323 F8.2 --- HG1G2_chi2red Chi-square of HG1G2 model +325-326 I2 --- HG1G2_status Fit status of HG1G2 model +328-328 I1 --- HG1G2_fit Quality code of the fit of HG1G2 model +330-335 F6.2 --- SHG1G2_H_g Absolute magnitude H in sHG1G2 model in g filter +337-347 F11.2 --- SHG1G2_dH_g Uncertainty on absolute magnitude H in sHG1G2 model in g filter +349-353 F5.2 --- SHG1G2_G1_g Phase slope G1 in sHG1G2 model in g filter +355-365 F11.2 --- SHG1G2_dG1_g Uncertainty on phase slope G1 in sHG1G2 model in g filter +367-371 F5.2 --- SHG1G2_G2_g Phase slope G2 in sHG1G2 model in g filter +373-383 F11.2 --- SHG1G2_dG2_g Uncertainty on phase slope G2 in sHG1G2 model in g filter +385-390 F6.2 --- SHG1G2_H_r Absolute magnitude H in sHG1G2 model in r filter +392-402 F11.2 --- SHG1G2_dH_r Uncertainty on absolute magnitude H in sHG1G2 model in r filter +404-408 F5.2 --- SHG1G2_G1_r Phase slope G1 in sHG1G2 model in r filter +410-419 F10.2 --- SHG1G2_dG1_r Uncertainty on phase slope G1 in sHG1G2 model in r filter +421-425 F5.2 --- SHG1G2_G2_r Phase slope G2 in sHG1G2 model in r filter +427-436 F10.2 --- SHG1G2_dG2_r Uncertainty on phase slope G2 in sHG1G2 model in r filter +438-442 F5.2 --- SHG1G2_R Oblateness +444-450 F7.2 --- SHG1G2_dR Uncertainty on oblateness +452-458 F7.2 --- SHG1G2_alpha0 Right Ascension of the spin vector (deg.) +460-465 F6.2 --- SHG1G2_delta0 Declination of the spin vector (deg.) +467-473 F7.2 --- SHG1G2_alpha0_alt Right Ascension of the spin vector (deg.), symmetric solution +475-480 F6.2 --- SHG1G2_delta0_alt Declination of the spin vector (deg.), symmetric solution +482-494 F13.2 --- SHG1G2_dalpha0 Uncertainty on the Right Ascension of the spin vector (deg.) +496-506 F11.2 --- SHG1G2_ddelta0 Uncertainty on the Declination of the spin vector (deg.) +508-514 F7.2 --- SHG1G2_obliquity Obliquity of the target (deg) +516-520 F5.2 --- SHG1G2_min_cos_lambda Minimum cosine of the aspect angle Lambda +522-526 F5.2 --- SHG1G2_mean_cos_lambda Mean cosine of the aspect angle Lambda +528-532 F5.2 --- SHG1G2_max_cos_lambda Maximum cosine of the aspect angle Lambda +534-538 F5.2 --- SHG1G2_rms RMS residuals of sHG1G2 model +540-544 F5.2 --- SHG1G2_rms_g RMS residuals of sHG1G2 model in g filter +546-550 F5.2 --- SHG1G2_rms_r RMS residuals of sHG1G2 model in g filter +552-559 F8.2 --- sHG1G2_chi2red Chi-square of sHG1G2 model +561-562 I2 --- sHG1G2_status Fit status of sHG1G2 model +564-564 I1 --- sHG1G2_fit Quality code of the fit of sHG1G2 model + +-------------------------------------------------------------------------------- + + + +See also: +None + +Acknowledgements: + +References: +================================================================================ + (prepared by author / pyreadme ) diff --git a/notebooks/Z_data_to_CDS.ipynb b/notebooks/Z_data_to_CDS.ipynb new file mode 100644 index 0000000..e40610f --- /dev/null +++ b/notebooks/Z_data_to_CDS.ipynb @@ -0,0 +1,1786 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c67cc7b8-e6e2-44d4-9be9-ddafd36bca34", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import rocks\n", + "\n", + "rocks.set_log_level(\"error\")\n", + "\n", + "import matplotlib.pyplot as plt\n", + "from figure_mask import compute_mask, print_statistics, compute_mask_spin" + ] + }, + { + "cell_type": "markdown", + "id": "6198a3d1-286c-4c4b-806e-5c085aabc386", + "metadata": {}, + "source": [ + "# Get SSOFT" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b76b0d15-20ce-4b38-907d-6ce100dfd15f", + "metadata": {}, + "outputs": [], + "source": [ + "# Local Configuration\n", + "data_fink = \"../\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ca033440-e54f-4997-a212-e419f377ed07", + "metadata": {}, + "outputs": [], + "source": [ + "# # Threshold for selection (of non-zero values)\n", + "# thres = 1e-3\n", + "\n", + "# # Minimum phase angle to consider\n", + "# min_phase = 3" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5ea808c9-ac69-4b19-9c98-8e41113a8fd6", + "metadata": {}, + "outputs": [], + "source": [ + "# # ZTF filters 1: g, 2: r\n", + "# filters = {\"1\": \"g\", \"2\": \"r\"}\n", + "\n", + "# fink_colors = [\"#15284F\", \"#F5622E\"]\n", + "\n", + "# color_fink = \"#15284F\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6b4db0c1-36bc-4db9-b2d2-751e97ba0d35", + "metadata": {}, + "outputs": [], + "source": [ + "data = pd.read_parquet(os.path.join(data_fink, \"data\", \"ztf\", \"sso_ZTF.parquet\"))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6fc9a4aa", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "7506e32d-fccc-4007-b27a-6bda182f0989", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "above 90: 0 \n", + "below 90: 0 \n" + ] + } + ], + "source": [ + "# data[\"SHG1G2_dSpin\"] = np.sqrt(\n", + "# (data[\"SHG1G2_dalpha0\"] * np.cos(np.radians(data[\"SHG1G2_delta0\"]))) ** 2\n", + "# + data[\"SHG1G2_ddelta0\"] ** 2\n", + "# )\n", + "\n", + "\n", + "# # Remove solutions above 90 deg of latitude\n", + "cond = data.SHG1G2_delta0 > 90\n", + "data.loc[cond, \"SHG1G2_delta0\"] = 90\n", + "print(f\"above 90: {len(data[cond])} \")\n", + "\n", + "cond = data.SHG1G2_delta0 < -90\n", + "data.loc[cond, \"SHG1G2_delta0\"] = -90\n", + "print(f\"below 90: {len(data[cond])} \")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "9a2e63c8-6e42-41aa-86bf-6c3ded183f6b", + "metadata": {}, + "outputs": [], + "source": [ + "# mask_SHG1G2_union = compute_mask(data, model=\"SHG1G2\", kind=\"union\")\n", + "# mask_HG1G2_union = compute_mask(data, model=\"HG1G2\", kind=\"union\")\n", + "# mask_HG_union = compute_mask(data, model=\"HG\", kind=\"union\")\n", + "\n", + "# mask_SHG1G2_inter = compute_mask(data, model=\"SHG1G2\", kind=\"inter\")\n", + "# mask_HG1G2_inter = compute_mask(data, model=\"HG1G2\", kind=\"inter\")\n", + "# mask_HG_inter = compute_mask(data, model=\"HG\", kind=\"inter\")\n", + "\n", + "# maskFINK_inter = compute_mask(data, R_min=0.305, model=\"FINK\", kind=\"inter\")\n", + "# maskFINK_union = compute_mask(data, R_min=0.305, model=\"FINK\", kind=\"union\")\n", + "\n", + "# for model in [\"HG\", \"HG1G2\", \"SHG1G2\", \"FINK\"]:\n", + "# print_statistics(data, model)\n", + "# print()" + ] + }, + { + "cell_type": "markdown", + "id": "576e8adb", + "metadata": {}, + "source": [ + "# Check RMS of SSOs with shape models" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "096e4875", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2003 RK07'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2003 RK07'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2016 VM04'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2016 VM04'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2020 FW03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2020 FW03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2003 VD01'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2003 VD01'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2005 YV02'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2005 YV02'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2011 YQ04'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2011 YQ04'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2021 NX07'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2021 NX07'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2001 YU03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2001 YU03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2020 AV02'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2020 AV02'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2002 TA09'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2002 TA09'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2008 YF02'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2008 YF02'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2002 NS07'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2002 NS07'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2013 PY06'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2013 PY06'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2003 YM01'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2003 YM01'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '1998 UQ01'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'1998 UQ01'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2004 XM00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2004 XM00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2007 OR01'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2007 OR01'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2015 WV01'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2015 WV01'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2015 MO01'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2015 MO01'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2018 LM04'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2018 LM04'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2016 VW01'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2016 VW01'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2010 WQ07'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2010 WQ07'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2016 QP01'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2016 QP01'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2004 MJ03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2004 MJ03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2014 RH00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2014 RH00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2016 OQ02'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2016 OQ02'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2014 KL05'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2014 KL05'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2010 VH95'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2010 VH95'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2014 RP00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2014 RP00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2017 RM00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2017 RM00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2003 NM03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2003 NM03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2011 AJ05'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2011 AJ05'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2009 CC03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2009 CC03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2020 PC05'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2020 PC05'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2001 BO02'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2001 BO02'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2016 WQ05'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2016 WQ05'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2003 VA03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2003 VA03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2017 YH03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2017 YH03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2003 UR00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2003 UR00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2016 OK00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2016 OK00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2018 XV05'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2018 XV05'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2009 CD04'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2009 CD04'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2007 TG08'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2007 TG08'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2002 XZ04'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2002 XZ04'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2019 AQ03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2019 AQ03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2020 OL03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2020 OL03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2015 JO05'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2015 JO05'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2007 LX00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2007 LX00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2012 UA00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2012 UA00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2017 HJ04'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2017 HJ04'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2001 RD02'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2001 RD02'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2020 KU04'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2020 KU04'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2020 ML03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2020 ML03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2002 GZ08'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2002 GZ08'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2020 KJ06'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2020 KJ06'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2010 LS00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2010 LS00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2009 PA09'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2009 PA09'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2007 AS01'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2007 AS01'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2007 WJ07'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2007 WJ07'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2016 XB07'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2016 XB07'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2018 KG02'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2018 KG02'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2020 PD01'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2020 PD01'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2016 XE01'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2016 XE01'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2013 WJ00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2013 WJ00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2020 JQ00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2020 JQ00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2011 LZ05'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2011 LZ05'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2007 UT07'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2007 UT07'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2020 NA00'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2020 NA00'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '1999 UK05'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'1999 UK05'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2016 OF02'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2016 OF02'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2020 OW03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2020 OW03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2006 QB03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2006 QB03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '28P'.                                                                         \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'28P'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
ERROR    [rocks] Could not identify '2007 XC03'.                                                                   \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mERROR \u001b[0m \u001b[1m[\u001b[0mrocks\u001b[1m]\u001b[0m Could not identify \u001b[32m'2007 XC03'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "nn = rocks.id(data.ssnamenr)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2a2b9a89", + "metadata": {}, + "outputs": [], + "source": [ + "data[\"sso_name\"] = [n[0] for n in nn]\n", + "data[\"sso_number\"] = [n[1] for n in nn]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d186116a", + "metadata": {}, + "outputs": [], + "source": [ + "cols_id = [\"sso_number\", \"sso_name\"]\n", + "\n", + "cols_obs = [\n", + " \"n_obs\",\n", + " \"n_obs_g\",\n", + " \"n_obs_r\",\n", + " \"min_phase\",\n", + " \"min_phase_g\",\n", + " \"min_phase_r\",\n", + " \"max_phase\",\n", + " \"max_phase_g\",\n", + " \"max_phase_r\",\n", + " \"n_days\",\n", + " \"n_days_g\",\n", + " \"n_days_r\",\n", + "]\n", + "\n", + "cols_HG = [\n", + " \"HG_H_g\",\n", + " \"HG_dH_g\",\n", + " \"HG_G_g\",\n", + " \"HG_dG_g\",\n", + " \"HG_H_r\",\n", + " \"HG_dH_r\",\n", + " \"HG_G_r\",\n", + " \"HG_dG_r\",\n", + " \"HG_rms\",\n", + " \"HG_rms_g\",\n", + " \"HG_rms_r\",\n", + " \"HG_chi2red\",\n", + " \"HG_status\",\n", + " \"HG_fit\",\n", + "]\n", + "\n", + "cols_HG1G2 = [\n", + " \"HG1G2_H_g\",\n", + " \"HG1G2_dH_g\",\n", + " \"HG1G2_G1_g\",\n", + " \"HG1G2_dG1_g\",\n", + " \"HG1G2_G2_g\",\n", + " \"HG1G2_dG2_g\",\n", + " \"HG1G2_H_r\",\n", + " \"HG1G2_dH_r\",\n", + " \"HG1G2_G1_r\",\n", + " \"HG1G2_dG1_r\",\n", + " \"HG1G2_G2_r\",\n", + " \"HG1G2_dG2_r\",\n", + " \"HG1G2_rms\",\n", + " \"HG1G2_rms_g\",\n", + " \"HG1G2_rms_r\",\n", + " \"HG1G2_chi2red\",\n", + " \"HG1G2_status\",\n", + " \"HG1G2_fit\",\n", + "]\n", + "\n", + "\n", + "cols_sHG1G2 = [\n", + " \"SHG1G2_H_g\",\n", + " \"SHG1G2_dH_g\",\n", + " \"SHG1G2_G1_g\",\n", + " \"SHG1G2_dG1_g\",\n", + " \"SHG1G2_G2_g\",\n", + " \"SHG1G2_dG2_g\",\n", + " \"SHG1G2_H_r\",\n", + " \"SHG1G2_dH_r\",\n", + " \"SHG1G2_G1_r\",\n", + " \"SHG1G2_dG1_r\",\n", + " \"SHG1G2_G2_r\",\n", + " \"SHG1G2_dG2_r\",\n", + " \"SHG1G2_R\",\n", + " \"SHG1G2_dR\",\n", + " \"SHG1G2_alpha0\",\n", + " \"SHG1G2_delta0\",\n", + " \"SHG1G2_alpha0_alt\",\n", + " \"SHG1G2_delta0_alt\",\n", + " \"SHG1G2_dalpha0\",\n", + " \"SHG1G2_ddelta0\",\n", + " \"SHG1G2_obliquity\",\n", + " \"SHG1G2_min_cos_lambda\",\n", + " \"SHG1G2_mean_cos_lambda\",\n", + " \"SHG1G2_max_cos_lambda\",\n", + " \"SHG1G2_rms\",\n", + " \"SHG1G2_rms_g\",\n", + " \"SHG1G2_rms_r\",\n", + " \"SHG1G2_chi2red\",\n", + " \"SHG1G2_status\",\n", + " \"SHG1G2_fit\",\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f885125f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sso_numbersso_namen_obsn_obs_gn_obs_rmin_phasemin_phase_gmin_phase_rmax_phasemax_phase_g...SHG1G2_obliquitySHG1G2_min_cos_lambdaSHG1G2_mean_cos_lambdaSHG1G2_max_cos_lambdaSHG1G2_rmsSHG1G2_rms_gSHG1G2_rms_rSHG1G2_chi2redSHG1G2_statusSHG1G2_fit
0966981999 JA808536492.4596982.7417092.45969826.84380923.247072...79.0430412.040673e-010.7762080.9846560.1059450.0976770.1116300.89334220
1902812003 DQ158029510.4925740.4925740.50856236.86445632.727764...146.1680005.279006e-010.5473490.5672550.1285900.1316540.1268152.14248220
2988682001 BS57424502.8031092.8031092.86944222.41328622.412022...157.8029032.898007e-070.1679560.3365820.1219940.1210180.1224591.07032320
3931522000 ST839540550.4596140.4596140.48439726.64325126.643251...43.5232131.263210e-010.3863910.5584580.2279690.2183680.2347044.20284420
4977642000 JO226729383.3992615.7079933.39926123.53560621.140776...33.3438974.599765e-070.0967600.4583140.0562950.0566500.0560220.33866340
..................................................................
12267018175Jenniferchoy10037630.6327170.6834420.63271720.38477520.384775...91.3743931.605013e-070.2841220.9998830.1418680.1550020.1335542.39344530
122671162944758 P-L8932570.9316880.9316880.94059721.73099921.488237...37.7307822.437234e-010.3144260.5149080.1595720.1533720.1629502.21881220
122672153101993 FT1914968812.5485262.5485262.54919532.72575432.725754...113.3287962.740669e-020.5347350.9272610.0851270.1005940.0695340.90255820
1226731062072000 UU2954173711.69269111.73862011.69269130.71134027.314415...174.1525486.336122e-030.1891850.2769500.0881830.0759150.0932810.40936820
1226741381202000 ED55414403.0593153.0593153.07748523.67296220.197599...81.2094502.934563e-010.8362470.9987380.0788720.0858440.0762820.44042320
\n", + "

122675 rows × 76 columns

\n", + "
" + ], + "text/plain": [ + " sso_number sso_name n_obs n_obs_g n_obs_r min_phase \\\n", + "0 96698 1999 JA80 85 36 49 2.459698 \n", + "1 90281 2003 DQ15 80 29 51 0.492574 \n", + "2 98868 2001 BS5 74 24 50 2.803109 \n", + "3 93152 2000 ST83 95 40 55 0.459614 \n", + "4 97764 2000 JO22 67 29 38 3.399261 \n", + "... ... ... ... ... ... ... \n", + "122670 18175 Jenniferchoy 100 37 63 0.632717 \n", + "122671 16294 4758 P-L 89 32 57 0.931688 \n", + "122672 15310 1993 FT19 149 68 81 2.548526 \n", + "122673 106207 2000 UU29 54 17 37 11.692691 \n", + "122674 138120 2000 ED5 54 14 40 3.059315 \n", + "\n", + " min_phase_g min_phase_r max_phase max_phase_g ... \\\n", + "0 2.741709 2.459698 26.843809 23.247072 ... \n", + "1 0.492574 0.508562 36.864456 32.727764 ... \n", + "2 2.803109 2.869442 22.413286 22.412022 ... \n", + "3 0.459614 0.484397 26.643251 26.643251 ... \n", + "4 5.707993 3.399261 23.535606 21.140776 ... \n", + "... ... ... ... ... ... \n", + "122670 0.683442 0.632717 20.384775 20.384775 ... \n", + "122671 0.931688 0.940597 21.730999 21.488237 ... \n", + "122672 2.548526 2.549195 32.725754 32.725754 ... \n", + "122673 11.738620 11.692691 30.711340 27.314415 ... \n", + "122674 3.059315 3.077485 23.672962 20.197599 ... \n", + "\n", + " SHG1G2_obliquity SHG1G2_min_cos_lambda SHG1G2_mean_cos_lambda \\\n", + "0 79.043041 2.040673e-01 0.776208 \n", + "1 146.168000 5.279006e-01 0.547349 \n", + "2 157.802903 2.898007e-07 0.167956 \n", + "3 43.523213 1.263210e-01 0.386391 \n", + "4 33.343897 4.599765e-07 0.096760 \n", + "... ... ... ... \n", + "122670 91.374393 1.605013e-07 0.284122 \n", + "122671 37.730782 2.437234e-01 0.314426 \n", + "122672 113.328796 2.740669e-02 0.534735 \n", + "122673 174.152548 6.336122e-03 0.189185 \n", + "122674 81.209450 2.934563e-01 0.836247 \n", + "\n", + " SHG1G2_max_cos_lambda SHG1G2_rms SHG1G2_rms_g SHG1G2_rms_r \\\n", + "0 0.984656 0.105945 0.097677 0.111630 \n", + "1 0.567255 0.128590 0.131654 0.126815 \n", + "2 0.336582 0.121994 0.121018 0.122459 \n", + "3 0.558458 0.227969 0.218368 0.234704 \n", + "4 0.458314 0.056295 0.056650 0.056022 \n", + "... ... ... ... ... \n", + "122670 0.999883 0.141868 0.155002 0.133554 \n", + "122671 0.514908 0.159572 0.153372 0.162950 \n", + "122672 0.927261 0.085127 0.100594 0.069534 \n", + "122673 0.276950 0.088183 0.075915 0.093281 \n", + "122674 0.998738 0.078872 0.085844 0.076282 \n", + "\n", + " SHG1G2_chi2red SHG1G2_status SHG1G2_fit \n", + "0 0.893342 2 0 \n", + "1 2.142482 2 0 \n", + "2 1.070323 2 0 \n", + "3 4.202844 2 0 \n", + "4 0.338663 4 0 \n", + "... ... ... ... \n", + "122670 2.393445 3 0 \n", + "122671 2.218812 2 0 \n", + "122672 0.902558 2 0 \n", + "122673 0.409368 2 0 \n", + "122674 0.440423 2 0 \n", + "\n", + "[122675 rows x 76 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "out = data[cols_id + cols_obs + cols_HG + cols_HG1G2 + cols_sHG1G2].astype(\n", + " {\n", + " \"sso_number\": \"Int64\",\n", + " \"n_obs\": \"Int64\",\n", + " \"n_obs_g\": \"Int64\",\n", + " \"n_obs_r\": \"Int64\",\n", + " \"HG_status\": \"Int64\",\n", + " \"HG1G2_status\": \"Int64\",\n", + " \"SHG1G2_status\": \"Int64\",\n", + " \"HG_fit\": \"Int64\",\n", + " \"HG1G2_fit\": \"Int64\",\n", + " \"SHG1G2_fit\": \"Int64\",\n", + " }\n", + ")\n", + "out" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "13b0d9a0", + "metadata": {}, + "outputs": [], + "source": [ + "out.to_csv(\"../fink_cds.csv\", index=False, float_format=\"%.2f\")" + ] + }, + { + "cell_type": "markdown", + "id": "a37d32cc", + "metadata": {}, + "source": [ + "# Build CDS readme" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "86e3540d", + "metadata": {}, + "outputs": [], + "source": [ + "import cdspyreadme" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "2bb799a7", + "metadata": {}, + "outputs": [], + "source": [ + "tablemaker = cdspyreadme.CDSTablesMaker()\n", + "\n", + "# add a table\n", + "table = tablemaker.addTable(\"../fink_cds.csv\", description=\"my CSV table\")\n", + "# write table in CDS-ASCII aligned format (required)\n", + "tablemaker.writeCDSTables()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "36d73da2", + "metadata": {}, + "outputs": [], + "source": [ + "# Customize ReadMe output\n", + "tablemaker.title = \"FINK SSOFT\"\n", + "tablemaker.author = 'B.Carry'\n", + "tablemaker.date = 2024\n", + "tablemaker.abstract = \"\"\"\n", + "Large sky surveys provide numerous non-targeted observations of small bodies of the Solar System. The\n", + "upcoming Legacy Survey of Space and Time (LSST) of the Vera C. Rubin observatory will be the largest source of\n", + "small body photometry in the next decade. With non-coordinated epochs of observation, colors, and therefore taxonomy\n", + "and composition, can only be computed by comparing absolute magnitudes obtained in each filter by solving the phase\n", + "function (evolution of brightness of the small body against the solar phase angle). Current models in use in the\n", + "community (HG, HG⋆12 , HG1 G2 ) however fail to reproduce the long-term photometry of many targets due to the change in\n", + "aspect angle between apparitions.\n", + "Aims. We aim at deriving a generic yet simple phase function model accounting for the variable geometry of the small\n", + "bodies over multiple apparitions.\n", + "Methods. As a spinoff of the HG1 G2 model, we propose the sHG1 G2 phase function model in which we introduce a term\n", + "describing the brightness changes due to spin orientation and polar oblateness. We apply this new model to 13,245,908\n", + "observations of 122,675 SSOs. These observations were acquired in the g and r filters with the Zwicky Transient Facility\n", + "between 2019/11/01 and 2023/12/01. We retrieve them and implement the new sHG1 G2 model in Fink, a broker of\n", + "alerts designed for the LSST.\n", + "Results. The sHG1 G2 model leads to smaller residuals than other phase function models, providing a better description\n", + "of the photometry of asteroids. We determine the absolute magnitude H and phase function coefficients (G1 , G2 ) in each\n", + "filter, the spin orientation (α0 , δ0 ), and the polar-to-equatorial oblateness R for 95,593 Solar System Objects (SSOs),\n", + "which constitutes about a tenfold increase in the number of characterized objects compared to current census.\n", + "Conclusions. The application of the sHG1 G2 model on ZTF alert data using the FINK broker shows that the model is\n", + "appropriate to extract physical properties of asteroids from multi-band and sparse photometry, such as the forthcoming\n", + "LSST survey.\n", + "\"\"\"\n", + "# tablemaker.more_description = \"Additional information of the data context.\"\n", + "# tablemaker.putRef(\"II/246\", \"2mass catalogue\")\n", + "# tablemaker.putRef(\"http://...\", \"external link\")\n", + "\n", + "# Print ReadMe\n", + "tablemaker.makeReadMe()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5170c188", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "# Save ReadMe into a file\n", + "with open(\"ReadMe\", \"w\") as fd:\n", + " tablemaker.makeReadMe(out=fd)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d219ded4", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}