From e82172a7f7563a75189be0e9cadfe3f96b99dc55 Mon Sep 17 00:00:00 2001 From: sgreenstreet Date: Tue, 16 Jun 2026 01:36:01 +0000 Subject: [PATCH 1/4] new notebook --- .../308_Solar_System/308_5_Image_stamps.ipynb | 1380 +++++++++++++++++ 1 file changed, 1380 insertions(+) create mode 100644 DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb diff --git a/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb b/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb new file mode 100644 index 0000000..0a2cc85 --- /dev/null +++ b/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb @@ -0,0 +1,1380 @@ +{ + "cells": [ + { + "attachments": { + "493ffa25-f8ce-4c58-9602-02028035a6f5.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABIYAAAJ4CAYAAAAQp+hTAAABYWlDQ1BJQ0MgUHJvZmlsZQAAKJF1kD9Lw1AUxU9qJWArKIg4OAR0Eau0sTq41SoidAi1WnUQ0jSmQto+kqi4ufkFxME/uInfoA4dVHAsCEIVQXB1Frpoifc1alvF+7icH4d737vvAr6gypjpB5AvOFZyfkZaWV2TxFf44YOIUQiqZrOYoiSoBN/aHrUqBK73Y/yu3vT2kHhcDVduUsvXJ88Df+vboiur2xrpB6WsMcsBhDCxsuMwznvEfRYNRXzA2fD4gnPG43KjJpWME98R92g5NUv8QhzKtPhGC+fNLe1rBj59UC8sLZL2Uw5iFnNI0JGgQEYUEUyRh396oo2eOIpg2IWFTRjIwaHuGDkMJnTiBRSgYRwhYhlhykm+6987bHr2ETAdoKcqTW/9FLi8pe/uN73hM6A7ApQfmWqpP5sVan57Y0L2OFACOg9d9y0NiCNA/cF130uuWz8HOp6Aq9oniOVjR+jaRx8AAABWZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAOShgAHAAAAEgAAAESgAgAEAAAAAQAABIagAwAEAAAAAQAAAngAAAAAQVNDSUkAAABTY3JlZW5zaG90QJiEVAAAAddpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NjMyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjExNTg8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KalGF1wAAQABJREFUeAHsveuTHNd5p3nYANGNa6PRFwLoBkEAvADUBaQtkZQEUVpZ1EjiyEFq1mHKdpgOx8basWNPxMb8A/40H3ZiIzZsx4bkLyuO7BnRliXaEmVbMOURBdkEJYukLAoACTQIAg2AfQHQ3WCjGyQa+/6ycZrZhbpkVmVmZVY+B1GorsrMk+c851RVnl++l1uuW3EUCEAAAhCAAAQgAAEIQAACEIAABCAAgdIR6Cpdj+kwBCAAAQhAAAIQgAAEIAABCEAAAhCAQEAAYYiJAAEIQAACEIAABCAAAQhAAAIQgAAESkoAYaikA0+3IQABCEAAAhCAAAQgAAEIQAACEIAAwhBzAAIQgAAEIAABCEAAAhCAAAQgAAEIlJQAwlBJB55uQwACEIAABCAAAQhAAAIQgAAEIAABhCHmAAQgAAEIQAACEIAABCAAAQhAAAIQKCkBhKGSDjzdhgAEIAABCEAAAhCAAAQgAAEIQAACCEPMAQhAAAIQgAAEIAABCEAAAhCAAAQgUFICCEMlHXi6DQEIQAACEIAABCAAAQhAAAIQgAAEEIaYAxCAAAQgAAEIQAACEIAABCAAAQhAoKQEEIZKOvB0GwIQgAAEIAABCEAAAhCAAAQgAAEIIAwxByAAAQhAAAIQgAAEIAABCEAAAhCAQEkJIAyVdODpNgQgAAEIQAACEIAABCAAAQhAAAIQQBhiDkAAAhCAAAQgAAEIQAACEIAABCAAgZISQBgq6cDTbQhAAAIQgAAEIAABCEAAAhCAAAQggDDEHIAABCAAAQhAAAIQgAAEIAABCEAAAiUlgDBU0oGn2xCAAAQgAAEIQAACEIAABCAAAQhAAGGIOQABCEAAAhCAAAQgAAEIQAACEIAABEpKAGGopANPtyEAAQhAAAIQgAAEIAABCEAAAhCAAMIQcwACEIAABCAAAQhAAAIQgAAEIAABCJSUAMJQSQeebkMAAhCAAAQgAAEIQAACEIAABCAAAYQh5gAEIAABCEAAAhCAAAQgAAEIQAACECgpAYShkg483YYABCAAAQhAAAIQgAAEIAABCEAAAghDzAEIQAACEIAABCAAAQhAAAIQgAAEIFBSAghDJR14ug0BCEAAAhCAAAQgAAEIQAACEIAABBCGmAMQgAAEIAABCEAAAhCAAAQgAAEIQKCkBBCGSjrwdBsCEIAABCAAAQhAAAIQgAAEIAABCCAMMQcgAAEIQAACEIAABCAAAQhAAAIQgEBJCSAMlXTg6TYEIAABCEAAAhCAAAQgAAEIQAACEEAYYg5AAAIQgAAEIAABCEAAAhCAAAQgAIGSEkAYKunA020IQAACEIAABCAAAQhAAAIQgAAEIIAwxByAAAQgAAEIQAACEIAABCAAAQhAAAIlJYAwVNKBp9sQgAAEIAABCEAAAhCAAAQgAAEIQABhiDkAAQhAAAIQgAAEIAABCEAAAhCAAARKSgBhqKQDT7chAAEIQAACEIAABCAAAQhAAAIQgADCEHMAAhCAAAQgAAEIQAACEIAABCAAAQiUlADCUEkHnm5DAAIQgAAEIAABCEAAAhCAAAQgAAGEIeYABCAAAQhAAAIQgAAEIAABCEAAAhAoKQGEoZIOPN2GAAQgAAEIQAACEIAABCAAAQhAAAIIQ8wBCEAAAhCAAAQgAAEIQAACEIAABCBQUgIIQyUdeLoNAQhAAAIQgAAEIAABCEAAAhCAAARWgwACEIAABCAAAQiUkcDkwoKbnF9Y7np/T7cb7O5eft1Jf/i+6nliYd4NdPcEfe3kPnfS+NEXCEAAAhCAQJoEEIbSpEvdEIAABCAAAQi0lUBYEDk6M+P0WkXPZ+bm3MK1a8vt6161yu3v2+weGxlx+3p7l98v+h/q99OnTrmXL1x084uLQZ/V156uLqfn7lVd7wlFJowNdK8Juox4VPSRp/0QgAAEIACBaAQQhqJxYi8IQAACEIAABHJIICz8yBJmauFqIProfb1euLYkhEgQmXnnnWUhyAsklV16fXbW3XqLCSU9SxY1lduL9lqi0FOjJ93Bc+fctPW/VlkhFJlgpLLiPcSjWuh4HwIQgAAEIFB4AghDhR9COgABCEAAAhDobAJh8cdb/VQTfmT9s3DDIqaW8NOIlMSj5ycm3P4tfe6RrVsb7Z777T+emmooCqkTATtZT7UoHqkuWRrt3bQpsDwK/u7d1LEueuovBQIQgAAEIFB0AghDRR9B2g8BCEAAAhDoIAJeBDo6O+OOTi+5fnmXr7DVT7PCTxRUo5cvu8OTU+6+vr5CCxpieWL2cl1LoSg8/D5RxCPtK0ujFyYnXfcNV7XeW29ddldDMPI0eYYABCAAAQjkhwDCUH7GgpZAAAIQgAAESkVAwoXEn7AVkBeB5PYk6500BaBasCWAhN3Oau2X9/flRjcfiqGUVXvFb7zKeRGMshoBzgMBCEAAAhCIRwBhKB4v9oYABCAAAQhAICYBbwUUCEEW80ZCkI//4wUgiQntEIFqdUUBmAfNJarIZcACSQ9arKS8lDiC0fC6dbij5WXgaAcEIAABCHQ8AYShjh9iOggBCEAAAhDIjoAXgeq5gkkMkkiQ13KPxcfZb25kytZV5KL2K8vaPuvPERPj8lqqCUY/n57GHS2vA0a7IAABCECg4wjcct1Kx/WKDkEAAhCAAAQgkAmBsBB0aHxiOQW8twTKkxVQFCCysvnt3bvcb9xxh1NsnKIXucQdPHfeMpON5locispZ7mhBzKJQ/CKJX0uxiyzoNYGuo6JkPwhAAAIQgMAyAYShZRT8AQEIQAACEIBAIwL1hKBxixmUZ0ugen2TIHRgcNB92jKR3W8ZyYZy5IJVr91RtkkceunCRXd4atJc+BbclD0mFq4uPc/PR6ki1/tsMgFvKcD1kmjk3dAkFiEU5XroaBwEIAABCOSEAMJQTgaCZkAAAhCAAATySKCoQpCEnoGQuKOYQcF7ev9G7KBwHCG5XUkMGrJtRXchqzaPFIh6+p2rbmFxMRDvvCWX3tcYLwlG88Gzji+yeOStirxghFBUbUbwHgQgAAEIQOA9AghD77HgLwhAAAIQgEDpCeRZCAqLPV7o0YAtCT5LQZa92CNxRwKBLz03XI98CnW939O1qiNFIN/nqM9B9rLFa4FgJOFIRZZfYfFI72luHJ2ZXhaP9J4EpKMzs24ix5ZHtYQizRVZFe3r7VVXKBCAAAQgAIHSEkAYKu3Q03EIQAACEIDA0mJ/ct4W97MzrjJGUDtcwyrFHx87Rov4EctU5cUeL/RoDBF7spnJYasjf0YJSEvBxJcEpbB4lFfRyAtFmjeyKtqzceNyBjSEIj+yPEMAAhCAQJkIIAyVabTpKwQgAAEIQMAIaPF+aGKirUKQF4C81Ybcu6qJP1q4ayGPdU8xpm5YPAqLRnkWjCqFot41twZCURCjCIuiYkw8WgkBCEAAAi0RQBhqCR8HQwACEIAABPJPQIvySqugcXP9SdsiqJb4M3gjjs+S4LNktYH4k/951EoLiyYY+fhEen5woH9ZKMLtrJVZwLEQgAAEIJBXAghDeR0Z2gUBCEAAAhBogUBYDHru/Hl35u25wOUnLTFIIpAyQFVz/ZLbF5Y/LQxmBx9aTTAam7uyIpbRsekZd2Rmpm0UwiKRdzs7MDhAbKK2jQgnhgAEIACBpAkgDCVNlPogAAEIQAACbSLgXcSO2kJ67MpcamKQtwTaq9gsFrjXu4ApZTgCUJsGv4NOGxaL1K2Zd95x01ffWRH8ul1ikXc7GzQh1ItEgcuZiaJ6jwIBCEAAAhAoIgGEoSKOGm2GAAQgAAEI3CBQKQa9emk6WEj7jFKtgqolAvkFsoQg4v+0SpnjoxAIC0ZeLFKWNFkTtUMoCn8GJIru79uMy1mUgWQfCEAAAhDIHQGEodwNCQ2CAAQgAAEI1CfgxSCfRUzxgrRQblUMQgSqz52t+SMQCEQ29yuFonZkRAu7nBGXKH9zhRZBAAIQgEBtAghDtdmwBQIQgAAEIJAbAtXEoFbjBYXjAskdxqeD9y5hWALlZvhpSEQCXijyGdFeuXgxsCjKWihCJIo4YOwGAQhAAAK5IIAwlIthoBEQgAAEIACBmwkkLQZVE4K8CNR76xpLC991cyN4BwIFJlApFPnA1kfN/ezozKybMGu7tEtYJPJxiQhenTZ16ocABCAAgTgEEIbi0GJfCEAAAhCAQMoEkhSDwq5hB4YGA4sghKCUB5Dqc03AxynygpEXiiYWFjKJU+TjEoWDVyMS5XrK0DgIQAACpSCAMFSKYaaTEIAABCCQZwISg5RJTFYMr1y66BRAulk3MYlBBwYHg2xhI2vXuuH165zEoKHuHiyC8jwJaFtbCHihaGFxMYhTdHhyMrNg1mGRiJhEbRl+TgoBCEAAAjcIIAwxFSAAAQhAAAJtIuCtg547f94dn728FEDXAukqPkrUUs09bKinJ0gbT4ygqBTZDwJLBLwlkZ5P2GdSWc+ycDsLu5tJJHpsZMTt6+1lWCAAAQhAAAKZEEAYygQzJ4EABCAAAQgsEfBiUDijWBzrINzDmEkQyIaAtybyYpEPZH3MrPuOmHVfWkUi0Y516xxWRGkRpl4IQAACEKgkgDBUSYTXEIAABCAAgRQIeEFI1kFxXcVwD0thQKgSAjEJeIFIz1m4nFVaER0YHDIX0U1O8YkoEIAABCAAgSQJIAwlSZO6IAABCEAAAiECXgxqxjrIi0E+aDTuYSGw/AmBNhNoh0ik7wDFC9vftxlXszaPP6eHAAQg0GkEEIY6bUTpDwQgAAEItJWAxKBmA0lXE4MIGt3W4eTkEGhIICwSZRGXCFezhkPCDhCAAAQgEJMAwlBMYOwOAQhAAAIQqEbAWwfFDSSNGFSNJu9BoJgEsoxLVOlqRsDqYs4ZWg0BCEAgDwQQhvIwCrQBAhCAAAQKSyAsCEWNHYQYVNjhpuEQiEXAWxO9ODnlnhodTS1otbci2rNxo9u7aZM7MDhAVrNYI8XOEIAABMpNAGGo3ONP7yEAAQhAoAkC3l3s0MSEe/niRTc+P+8aZRZDDGoCNIdAoEMIjF6+7P7k2GvuO2Njqfaoe9WqIA6RAlST9j5V1FQOAQhAoKMIIAx11HDSGQhAAAIQSJNA2Dro+OxlN2GC0LRlKKpVEINqkeF9CJSLgFzMvn7qlPvK8ePB90YWvfdWRAhEWdDmHBCAAASKTQBhqNjjR+shAAEIQCADAmFBqJG7GGJQBgPCKSBQQAJHpmfMauiYO3j+fKatDwtEcjPTY19vb6Zt4GQQgAAEIJBvAghD+R4fWgcBCEAAAm0kEFUQkhi0t3dpwXXf5j537+ZeRzaxNg4cp4ZADglEtRry3ye3WB+OzswmZmHkg1U/MNDvHuzvRyDK4RyhSRCAAATaRWB1u07MeSEAAQhAAAJ5JXB0ZsY9c/pMw/hB3jro01u3uj0bN7ilhdca172qK69do10QgECbCOh7YfeG9W547dq6Ys/su++6we4e9/iOEafg1a9YHLND4xMtB65WXUEw7HPvOAXD1vcVbmZtmgycFgIQgEDOCCAM5WxAaA4EIAABCLSHgLcO0gLsxOVZd/rtuarxg/zdfLljYB3UnrHirBAoKoHhdevciD0UtL5WWbh2zSyFZtxlE4g+OXSbu7+vzz06POwOT04GgvUR29ZK8QKR6jg9N2f1TiEQtQKUYyEAAQh0AAFcyTpgEOkCBCAAAQg0T8ALQs9Z3I968YOwDmqeMUdCAAJLBKK6kym72B/cfbf7/bvuXEYnQWdJyJkMrIeOWcyiVkUiX3k4DtFjIyPEIPJgeIYABCBQEgJYDJVkoOkmBCAAAQisJBBFEMI6aCUzXkEAAq0RkDvZAxbfR9Y/9YJQy2pozKx5JhYWzK2sOzipxJv3WdDoHWZxpGyIEoqStCJ6dXp6hQURgapbG2uOhgAEIFAkAlgMFWm0aCsEIAABCLRMIKogdGBw0BE7qGXcVAABCFQQiGo1pMxhf3jP3e4Ri2FWq6RlRbQUL+1WR6DqWuR5HwIQgEBnEcBiqLPGk95AAAIQgEANAo0EIayDaoDjbQhAIFECUYNQj16+HMT/uc9iDHmrocqGpGVF5OMQTROouhI5ryEAAQh0JAGEoY4cVjoFAQhAAAKeQBRBCOsgT4tnCEAgCwJRg1C/OLUUGLqe1ZDaK4FIDxW5mj04MBC4mSkGUSuxiLxApHoJVC0KFAhAAAKdSQBXss4cV3oFAQhAoPQE4ghC927udUOWHpo086WfNgCAQCYEorqTVQtCHbWBEnUUi2h01iyPpiYTSXmvc0uAWhKf+h2BqqOOBvtBAAIQyDcBLIbyPT60DgIQgAAEYhJoJAjdY2nmH98x4uSeMdTTgyAUky+7QwACrRNoJQh11LN7KyKJ3vt6NyWW8l6Ckw9ULeHpQQumrUDViolEgQAEIACBYhLAYqiY40arIQABCECggkBUQejB/gG3Y/0613vD7aKiGl5CAAIQyIRAVKuhKEGoozZYoo5Pef/M6TMtp7uX+KTvUoJURx0B9oMABCCQTwJYDOVzXGgVBCAAAQjEIPCjiQn39VOn3KuXpt24pXdWqmcVBZRW/KADQ4Nuz4aNCEIxmLIrBCCQLoEkg1BHbamEHJ/y3schakUg8jGIfJBqCURP7tqF9VDUAWE/CEAAAjkhgDCUk4GgGRCAAAQgEJ/AUQusqkXN8+Pj7s25uZsEIaWbJ35QfK4cAQEIZEMg6SDUUVudpkB0dHrGgl8TfyjqWLAfBCAAgTwQwJUsD6NAGyAAAQhAIBYBLwgpoOrpt+eCAKuqwFsIIQjFwsnOEIBAmwhEdSdrJQh1lK6l4WJGgOoo5NkHAhCAQD4IIAzlYxxoBQQgAAEIRCCAIBQBErtAAAKFInDELGz+5Ngxd/D8+brtfmLnTvef9t7jBs1FNq0SFohaTXWvNsoyCYEordGiXghAAALJEUAYSo4lNUEAAhCAQEoEfGDpZ8fOupcuXMBCKCXOVAsBCGRPIKrVUJJBqBv1UgKRMo69ODnlXjDLzGMmXkkoarYgEDVLjuMgAAEIZEOAGEPZcOYsEIAABCDQBAEvCD1nd9LDgaVxGWsCJodAAAK5JKAg1BJOuru66rZv9PJld9iEmvv6+lK1GlIj1B49erctZRxrVSCS0ORT3KsPxCCqO9RshAAEIJA5ASyGMkfOCSEAAQhAIAoBuY09bZnGfvDW+HKmsXs2bXKP7xgJFkZDPT1uqLvHaVFFgQAEIFBkAlHdybK0GgrzxIIoTIO/IQABCHQeASyGOm9M6REEIACBQhOQlZAyjT17dmw5sLQXhB7sHyDlfKFHt5yN15yenF9IrPP9Pd2pW4wk1lgqikRg94YNZkUz4F6+dMlNzM/XPEZWQydmL7tHttbcJZUN1SyInhodbdq9LGxBJJc1UtynMmxUCgEIQCAyAYShyKjYEQIQgAAE0iQQdhv76YWLbtwWR3IZe2xkxD06vN3dv2WL6zXXBgoEsiJQTdDRexMLSwv3qYWrTq/DJbzdv68YMgvXrvmXLT8rQ1UtS7kBs6LzwYn77fMz0L1mxflWbEdgWsGmnS80ng/095ur2GTdINSaR2NzczYHF5bHOct2hwWivb2bgvZKyG82/pAEooPnzjtS3Gc5ipwLAhCAwM0EcCW7mQnvQAACEIBAxgQq3cY2rl7tDgwOOtLOZzwQJTqdF328kONFHv9aKKoJOvOL74k8C6G/Pbrwdv9els8SjXpuxKoJBKSKuDU3bQ+5Yko02mvuml5M8iISFkrZjKDm25++9pr78uuv1z1hu9zJqjVKws5pE6okaLUiEKluiU5kMKtGmfcgAAEIpE8Ai6H0GXMGCEAAAhCoQUCL8LDb2K22iP3ctm0IQjV48XY0Al700d76W8Kjnv1rWfx40ccLOV7k8a+DnQv4nyxKlq2TbNEep0g0esEW+D4IsheRAoHJBKRloeiGJdLyayyP4mCuua+shobXrXWDFj+tkTtZVkGoazb2xgaJOe/r7b0h6Ay0JBDhXtaINtshAAEIpEcAi6H02FIzBCAAAQjUIKBF+qGJCadsY3IbW7x+HQuhGqx4uzoBL/6EhR/9HRZ9dKSEHi04vVhSdOGnOo1s3l0hFJmIu+J1DeFI7kbetS2bVhb7LHkPQt2IblIWRFgPNSLNdghAAALJEkAYSpYntUEAAhCAQAMCPzJB6OuWbcynn79j/Xr3xM6d7hO3DZFlrAG7sm72ItDR2ZkgFolenzH3FYk9YeEH0ae9M2SFUHRDOFJcMFnChN3Ugr8RjKoOlizZ9P34lePH61oNifUf3H23+/277qxaT7vfRCBq9whwfghAAALxCOBKFo8Xe0MAAhCAQJME5M4jt7Hnx8fdm7aolyD0f+66w5FprEmgHXiYF4D07N2/wiKQshdpwYkAlM/BX3Zjq+LCJiHDu6npbwlGw+vWLcc0QixaGtOiBKFuNAPDLma9t65xL0xNumPTM7GDVOvz/ur0dBDHiOxljaizHQIQgEDzBLAYap4dR0IAAhCAQAQCWtjLbezZsbPupQsXnOIIKbA0mcYiwOvgXbwIVAYrIGXXG7C4Mb5MyeWtTkpyv1+nP3uBSDGNlv9ug3WRn4t5CbJdxCDU9eaqxB2JOi9OTrlnz46Z6Dvb1PzHvaweZbZBAAIQaI0AwlBr/DgaAhCAAATqEAi7jS3afh+2lPNkGqsDrMM3yQro0PhEYA3kXcHyZAUUFnCUmUuvwyXYbpm7qhXtP1hjm6xAJHz4smRZo09E7SKxQinJ65UpC6Id3icQnBauuqILT8siUUgw8tZFyprWatwisVV6dM1HPfxc1Hk1VsE5dB57KANYO4rcyf742Gt1BRS1V264v2fuZEWI4ySBaNwE0cNTU+7pN07Fth7y44BA5EnwDAEIQCA5AghDybGkJghAAAIQCBH4mzNn3FdeP+7mLA4MglAITEn/lEj41dGT7hfmFiIxyAeDzgJHpeCzlJJ9SeAJCzphAUcp38NijtrpLVuqtbmna0lUqLatmfdkNTK/eK3uoYHAZMG1fdFr72an41XCAlNYSPIikvYpgpDkxSKJApVuaHEEHAlBT5vo8oJZr3hLlsq56M+h5wcH+t1jIyOZC0RFD0KteVWriHsSKe41Po9s2+qe3LUr8/Gp1TfehwAEIFBUAsQYKurI0W4IQAACOSewfvXqIKD0fZv73L2bewksnfPxSrt5Wuj+i6VCr1yEt3peL/pI4Ikq+GhB6UWfpAWdVvvjj18Sqbr8y+rP1o9GJSwwhYUkLyLp+OB9E5ICS5qZ6WUrJAlGzbr9NGpX3O1q47geN1zwfm4Co49ZFAg5a25dtvSpFa/Ii5NyaZU4WatIuNBDRQKG9s1afNi9YYOJUgPu5UuX6loNjV6+7E7MXnaPbK3Vm/y9r/HyKe73bNhoFkSTgSXhERPt4hSN0cFz5wPrr0oBT3NZLsyyUFSmwnDR94R/tMsiLNwe/oYABCCQBwJYDOVhFGgDBCAAgQ4koIv2eVvIKfCoFrmU8hLQIu1PzS3mL954oykI1cQfb+njrXxk4VMEwacpABkdJBFp+p2rbuGGFZLEmCXrrnyLRh5PIBDdEP1kVbS/b/OyWDh1dcF98/Rp99MLF2OLk6r3/i19Jg7tdh8fGvSnS/05qtWQ3HP/0z13F9Jqxs+5H5qA89ToaCLuZXLpfOXSxeXMl5rH4eLnye6NJr71D1jMu4FCsgv3ib8hAAEItEoAYahVghwPAQhAAAIQgEBdAlr8RUnBXUsAGrHsVbLwCYs/ebX0qQuiwBv9Ar5IopEXADR3AosjEygrRYKoQ6I6Pr31Nvd7d96ZmYgg5n/62mvuy6+/XreZ6ucO+4xUWs3UPShnG3UjISn3sh4bqyjuqhpTCYgS+7K2CMsZfpoDAQhAwCEMMQkgAAEIQAACEEidgKwfvnfuXHAnf8ICJKuE3b/0NwJQ6sOQyglqiUZjc1fMFW3JNS1PbmnNQpAA8yUL9vzknt2ZBXuOEoTa96dTBKKXzKrr2bNnA1ewLLL3iRuxivws4hkCECgrAYShso48/YYABCAAAQhkSMCLB4GL4Q1XJSyAMhyANpzKj7msjLxbWtHFIsWk+UNz23rE3LeyKFHdycJtCQtERYylo3kzbnGBnh8fbyl7WZhJo78RhxoRYjsEINDpBBCGOn2E6R8EIAABCEAAAhDICYGii0VyP/qDu+92v28p4rMo4hXFDbNaWyR2yFXqAcus9mB/fxBvqUjBlpNyL6vGptp74pW1RVi1dvAeBCAAgXYQICtZO6hzTghAAAIQgAAEIFBCAgoWPrSqZ0XP39+76B4y8aKaZZHSy+clM5oaLcunMctUNmHxiga7u1f0I40X4vWAiTqHLaPfwfPnY51Cwooe0+fecS9OTrmiBVuWUOOzlymJwbNnx1KdC2L1C3N91PhmMbaxBpOdIQABCKRMAGEoZcBUDwEIQAACEIAABCBQm0A9sSgQNmzB7l3Q8iAUeQGrdo+S3aLU9Xs2bowtDPlWeIFo3MQsuaY9OzZWqEDV3s1LWeYOT02l6l72ysVL7uWLF919fX0eH88QgAAESkFg1R9ZKUVP6SQEIAABCEAAAhCAQCEIrO66xa1fvdptMauc7WvXujvWb7BsYJsC65lPWXawu0woGejpdoP2uGLuVnPvvptZv2655ZbA+maPCTZZFLGYu/ZuYP3TSl+vXb/u3jZOsnY6cfmy+/HUBXfy7csWBF4cV1pxZdGvOOeQC5/mwh3r17sPm3XZrg3rnQKaT9ojySLRb3jtOvcBE6E0/ygQgAAEykKAb7yyjDT9hAAEIAABCEAAAgUl4K2Khm4IGBKGfEpyPb9iVh5HzO0si+xna0yoWdPVlSlJuZNJFJHFjCxajpnlj/rbbJEV0avT0zdSxE8VxoIo7F72jgldk6NXXdKZy8auzOFO1uzE4jgIQKCwBBCGCjt0NBwCEIAABCAAAQiUk4AEAj18qSYUHZqYSCUmTXfXKtedsTDk+yth7OGhocB6SHGHnjl9prQC0VB3TyrjoIDf8xZLigIBCECgTAQQhso02vQVAhCAAAQgAAEIdCABL5z4rkkoutdSy/+30ZNNx+bxdVU+B65XJkq0o4T7uWPdOrP0GQgCU7dDIJIb11GzXJqw1PIDxkMBm/vl3mfPFAhAAAIQKBYBhKFijRethQAEIAABCEAAAhBoQEACyo5161dYFTU4JPLm4XVr3YiJMu0u6qPP2pWGQCQXvco09xKDZIl1aHzCnbHsXd6dTzGAesyKSs8KEv3YyIjFhOptNyLODwEIQAACEQkgDEUExW4QgAAEIAABCEAAAsUhIMseiRODJmQkFYfmnk2bTPjoMwEk2xhD9ainJRAdPHc+SHP/gAV7lkA0tXDVvXLponv10rRThrOFGu5Wr8/OmhVTceIW1WPLNghAAAJlIYAwVJaRpp8QgAAEIAABCECgRAQk3ihos2LxHDx/PpGeq76HzH0rj6WaQKQA1c0GqvZp7qfPvRMIRMrY5S2E6vW/MrD1b+/e5b64Y0e9Q5rattdEun32kOVSkkXiH9ZOSRKlLghAoAgESFdfhFGijRCAAAQgAAEIQAACsQlILFllWcTefPvtllObSzD44u07Avet2A3J8AC5cylI9R6Ls3SfWTcNWvyfDbeudrdYG5pJ7y5BSGKPUt0r5X3UouMmzLJImeK2rl3rdlpWtSSLxvaStUvi15y1LYlSlDFOoq/UAQEIQCBMAGEoTIO/IQABCEAAAhCAAAQ6hsBqE4UkSixcX3Svz15uWkCQYPCkWb584rbbXI8JL0UoEoh6TTxRPKQkBKJm+3zRxJuFxWuBMDRoglVSRWOrDHES/UYvX06kWrnMfW77drele00i9VEJBCAAgaIQQBgqykjRTghAAAIQgAAEIACB2AQkkNxugahVTpqIENe6xItCn9m2LRBaYjegzQe0WyCSldFb8/OBiHOXCWzrVycXySJJqyGN86/dfrv7pS1bnEQnCgQgAIEyEUAYKtNo01cIQAACEIAABCBQQgISI3Zt2OD6zRLkrSvzkV2qPjY46P6Pu+9yB4aGCikKhYe6nQKR3MrmLFi13Mn22DgkVSTgbF+7lCGuGdHPt8OLf7+ydWuiwpWvn2cIQAACeSdwy3UreW8k7YMABCAAAQhAAAIQgECrBBQr57QFK1ZAaqVdPzozuyJjmTKZDZi704AJSAdMFHrYBCFZG+UpC1mrDPzxYqFg0i9aBrEXpiabDlLt62v0LGHqD+6+2/3+XXc22jX29vH5Bff1U6eCR9wMdF4UKqpFWGxYHAABCECgCgGEoSpQeAsCEIAABCAAAQhAoHMJSBQZN/empSxbi4EF0XV3PYjHIwGjp6vLKR6OYvR0eslSIHpi5073n/beYwGxuxPHKnHo4Plz7uk3TgUBqaOcAFEoCiX2gQAEykAAYagMo0wfIQABCEAAAhCAAARqEli4thhs60TLoJqdrtgQFoieGh2NLK5UVFP3pdLA/+E9d7tHzGUrjaI+eIuwZ06fqdoHWYXJGuzA0KC5tW10O9avK4UAmAZv6oQABDqHQHLR3zqHCT2BAAQgAAEIQAACECgRgTILQn6YFchZj95tt7rJqwtucvTqCjc7v18rz2ssJtAas8ZKq6j97zPxaYdlYntwYMCdsEx0EwsLK043Ylnq7t3c64a6ezrSRXBFZ3kBAQhAICIBhKGIoNgNAhCAAAQgAAEIQAACnU5A4kogmqQg4Ci9fHcK9VaOiReI7jSLoPnFays296gNq9ITp1acjBcQgAAECkIAYaggA0UzIQABCEAAAhCAAAQgAIHoBCQAIQJF58WeEIBAeQkgDJV37Ok5BCAAAQhAoCUCk+aiMWkBX1X6e7pTCSjbUgM5GAIQaIrA3k2b3D57nLEMbkkWxfcZNBcuCgQgAAEI5IsAwlC+xoPWQAACEIAABHJNwItBR2dn3HPnz7szby8tHJXJaX/fZvfYyIhTgFkKBCBQXAK7N2xwezZutCxf5xPtxPC6tUHmt0QrpTIIQAACEGiZAMJQywipAAIQgAAEINDZBCQGHZqYcEenZ9zYlblADFKa73F7f+Hae/E7Xp+dDdJ/P7lrF+JQZ08JetfhBOR+JRFnsKcnsQDUSg2/v68P164Onzt0DwIQKCYBhKFijhuthgAEOoyAt8LQ89GZGXfd+jfQvcYePW5v7yZcdDpsvIvQnUox6NVL006poOcXF1eIQeG+aPvBc+fdwJpuN2ALykFzG6FAAALFJLB/c5+7b/PmxKyGHujvdw9ZpjAKBCAAAQjkjwDCUP7GhBZBAAIlIyAh6OlTp9zLFy4Gi24trlWUuUXuOXvMpP9Xtm51B4YGWWiXbG5k3V0vBh0anwhii4zPzzcUgyrbqPn7i5lpN2axSRCGKunwGgLFISB3ss8Pbw++C47Y71QrRdZCDw70u17LeEaBAAQgAIH8EUAYyt+Y0CIIQKAkBPwi/Nmxs+6lCxcCF5xqXT9tC+xfTE+7ly9edE/svB0XnWqQeK9pAn4ehsWgShexuJUvXFt08yEXs7jHsz8EINB+AnIne3hoyCwEF91To6OuWXFIotCTu3dhLdT+IaUFEIAABGoSQBiqiYYNEIAABNIl8P3zb7kvv/76TXFaKs+qGC4Sh74zNuYWFq854rdUEuJ1XAJpiEFx28D+EIBA/glsMgufR7ZtDRrajDj0scFB9zsmCt2/ZQvWQvkfbloIAQiUmADCUIkHn65DAALtIyD3sR+MjweCT9RWEL8lKin2q0YgSzFIFgJkJqs2CrwHgeIR8OKQ4t0dnpx0z5w+09B6SGnpD5go9MUdO9wvmSgk6yMKBCAAAQjklwDCUH7HhpZBAAIdSkCi0FOjJ4ML7LhdlDj0vGWH2r+lzz1icYcoEKhHQGLQ5LwFNL+RWl4BpFt1E6t3Pm0jlkgjQmyHQPEISBx6X2+v27FuncW92+gOT026Cft+mbLHxMLV4Pn69euBGKR4eCO235AFoB+yBAqIQsUbb1oMAQiUjwDCUPnGnB5DAAJtJiBx5/Tc2zVjCjVq3ujly+7E7GUThhrtyfayEvDWQc+dP18ztXzSbLyFwKMWrFZuIxQIQKDzCEggUmaxfWY9tHAjQ2E4UyFiUOeNOT2CAATKQQBhqBzjTC8hAIEcEThmFkNHp5vP8KKYQ8r4pLu1ZH3K0cC2uSleDEoyiHS9LnkhaK9ZEQx0r8FCoB4stkGggwjIAmhoVU8H9YiuQAACEIAAwhBzAAIQgEDGBKbNYkiPVsrYlTnSgbcCsIOO9YKQrIPSdBWTEKQYI3stfpAe3lVEFgQ9XatwF+mgOUVXIAABCEAAAhAoFwGEoXKNN72FAATaTMDHfGm1GaQDb5VgsY/3YlCa1kESggYsRsjejRudjxnSayKQhKDeW9cgBBV7CtF6CEAAAhCAAAQgsEwAYWgZBX9AAAIQSJ/AxtW3uo22sKZAoBkCClwuMeiVSxcTtw6qJgR1r1oVpJgmgGwzo8UxEIAABCAAAQhAoBgEEIaKMU60EgIQ6BACis0wvG6tGzRLjIn5+aZ7RTrwptEV7sCwddCJy7Nu3LKMyRVRsaZaLeE4QSNr17rh9esQglqFyvEQgEDHEvBWv8r0qFiB/bKstBhrcq/dZ/HWKBCAAASKSgBhqKgjR7shAIHCEti/uc/dt3mzO2gxYZotcunRg9K5BLwglHTsIC8GefcwZREiTlDnzqMy9sx/dmRdd90AaNHO4r2MMyG5Pv9oYsJ96/QZd8YSP0iUlzivDKOyquzu6lpysV1zazDXHhsZQSRKDj01QQACGRFAGMoINKeBAAQg4Ans3rDBPWjpfl++dKkpqyFZCykIMKUzCfhFbZKCUDUxCPewzpw/Ze+V3C2fPnXK/eCtcTdumRtVXpicXF68PzjQHyzesfAo+0yJ1n99Hz9jgtA3T592b94QhVYcWZFI4ueXpgPR6MlduxCHVoDiBQQgkHcCCEN5HyHaBwEIdBwBuZM90N/vDttiJa7VkEShJ3fvcg+ZsETpLAJJC0KIQZ01P+hNNAI/nppy3z4ztiLz43jI7fK0Le59EHVEomhMy7qXFxm/d+68ufBGc/2WFdFB219uZp8f3u4e37HDDZq7GQUCEIBA3gkgDOV9hGgfBCDQkQRkNaSLRpmlH7E73FGKFvqP2jGf2bYNN7IowAqwjxeDksgupvlRmUVMbmJYBhVgItDERAhoIf/C5NQKUaiyYi3c9VBBJKqkw2tPQHPpqdGTJvKcqzuf/P7hZ82vV6en3aK9uct+6x/ZujW8mb8hAAEI5JIAwlAuh4VGQQACnU5AVkMPDw05ZSl79uxZd8jiF9QLRi1LoSd27jRRaCuiUAdMDi8IteouFhaDPm2LD4JHd8DkoAtNE9CCfPqdq5GPRySKjKp0O8ryrBlRKAxq9PJl9+zYmFNgfwJTh8nwNwQgkEcCCEN5HBXaBAEIlIKAAv7KJWz3xg1uf99m9/LFi27K4hkcnZl1169fD6w/fMDUB8317P4tWxCFCj4zkhSEDgwOOsSggk8Imp8oAQmlg909TdWJSNQUto48KIrlWZSOK0j1Dy0A+sjadcHvOS5lUaixDwQg0C4CCEPtIs95IQABCBgBWQ7tWLfOfWF4OLAg8tlOBEfZTnp8tpNb1wT7Aq2YBJIQhLTolRgUziaGm1gx5wOtTofAsC3AR+z7tNWCSNQqweIer+/q746dDWIAJtELzaXnzSJ4/5Y+XMqSAEodEIBAagQQhlJDS8UQgAAEohOQ9ZAelM4ikKQgJOugezf3EjOos6YIvUmQgIR2WV/uM9fbqLHbGp2+nkhEWvJG9Iq3fczi/v3C4gMpHX1SRS5lJ2YvmzCUVI3UAwEIQCB5AghDyTOlRghAAAIQKDmBVgUhrINKPoHoftMElPHxyd273QtTk+6YZYZKSiBSgypFosMW6JrMZk0PVS4PXFhcdPOL1xJtmyyBJThNmDUS7mSJoqUyCEAgQQIIQwnCpCoIQAACECg3gVYEIYlBe3s3ub1m7XDf5j6sg8o9leh9kwRkefmIBel/YKA/EHIOT04Gwf0Vu61egP+4p5NIpMxTlZnNsCKKSzJf++s7fHIhegDzqK2X4CSBiAIBCEAgrwQQhvI6MrQLAhCAAAQKQ6BVQcgHkt5jgci1sO0lplRhxp6G5o9A2DVXMdyUAVKuQa9YgH9lgExSJMKKKH/j30qLzs5dcWfMuifpMrkwb4LTQiIxsJJuG/VBAAIQEAGEIeYBBCAAAQhAoEkCzQpCuIo1CZzDIBCTQFgkumvjxhUikdzMknQ3w4oo5uDkcPcNt64OxPmJhK17Fq6Zi1rCdeYQH02CAAQKTABhqMCDR9MhAAEItEpAwsZRi8MxYXczp8x8/rpVONC9JqhWLk37entbPUVHHt+qIEQg6Y6cFnQq5wQqRSJZEUnMkbtZkiJRLSuiA4NDgbsocWbyO1G6u1a5bssGmnS5h9/TpJFSHwQgkDABhKGEgVIdBCAAgSIQ+JG5U/xwfMKNXZlzxy1bimIfKAaCir8o1iJqj91hl0B0YHAAkejGwB41K4OnT51yP3hr3I2bsBYlboS3EEIQugGRJwi0mUBYJJK7WVgkStLdLGxF9Lx95+7ZsMEyp/Xxndrm8a91+uCGiP3mJe1O1hu4CJN5tBZ33ocABNpPAGGo/WNACyAAAQhkRkCixjOnz7jnx03UmJ+37Cv1A2IetzS7L9jd9GfHxoLsO2UOrOrZHbZsR6ffnouUzhhBKLOpzYkg0DSBSpEoHJNI35dJZDbzVkQKVv2SxTriO7Xp4Ur1wPBcSOpE+h0Y6OlOqjrqgQAEIJAKAYShVLBSKQQgAIH8EZCV0FdHT7qXLlyIJGqoB7KGGdfDRCQtaHRX/cldu0plPSS3MS0Onz07FkkQ0iJA2cUUUPo+swwY6ulxQ909rntV8u4J+ZtltAgCxSYQFgYUk+jBgYFEXc0qv1N9yvsyi+55mjH6/pYL9aD9XiaVxW543VqCTudpkGkLBCBQlcAt161U3cKbEIAABDqEgASR8fkFd2Bo0JU1toMYfOX4cffTCxcjuT7VGnotmpQKugziUDiOkLhJHKtXwtZByi42aIKQ3AcoEIBAsQnI2ifsapZkPCKR0feq3NkeHOgPXHeJ79be+XLE4u79ybFj7uD58y03RLGFnty9y31m2zZ+D1qmSQUQgECaBLAYSpMudUMAAm0noMW94jrISkbZRh7ZurXtbcq6AUmJQmq3FkgHzy1dLHeyOBQnjlBYELp3cy/WQVlPcM4HgZQJhK2IKuMRJeFqFo5DJDH5AROIHuxfEolIAJDy4FapfrfFgfr88PYgzlCrboQP2DgiClWBzFsQgEDuCCAM5W5IaBAEIJAkgTFzfzoxOxsECdbFd9mKBI6/Pn26ZUuhMDcvDg2sUdyEno6ywooTRwhBKDwr+BsC5SBQKRIl6Wqm71Y9ps+9416cnEIgatOUktuv4kwpxfxTo6NNx5j6mLkT//vhYSyF2jSOnBYCEIhHAGEoHi/2hgAECkZg7MoVd8YeshySefjE0EJHCRmNhuPHU1PuecueFSVzVqO6wtu1eHne3NP2b+nrCCss7zb27NjZhjGYEITCM4G/IVBeAhKJ3mfxaJK2IkIgav+c0tjKbVolrjik34jHdoy4L+7Y4W5ft779naEFEIAABCIQQBiKAIldIACB4hI4O2fCkFkNSRjRxXbSAkmeycj65QW766zYGGmUUctYpsCpCrBc5NhNcrX7uqWff/XSdN308whCacwi6oRA8QnUsiJq1c0Mgai9c8OLQ0omcNiyc0YZT1kJfWnnTne/3TRR4gEKBCAAgaIQQBgqykjRTghAIDYBCSNKC+zFIL1WvIARC/JZhiJrIV3MplXE9UU7hwKmFjF2k3cbe3583L15QzysxgpBqBoV3qskIKuzSQtyHy56b2JhKWj51MLVwHIxvL3e3/1Kcd29pt4uy9sGLOtdpTjbb+mxK99bPqDNf1SyynNb46IKWxEl5WaGQBR3FJLbv3I8T8xedkdnpu1zveCmgs/3VbfXstftNcsxfV7vtWdZCZGFMrkxoCYIQCAbAghD2XDmLBCAQBsI6GJ6+p2ry2f2F9fLb3TwH2lbC3l0shrShfIjBYrpHdVtDEHIj3K5nsOihf7WZ0nP4aLXXvDx7yseiReh/Xvzi++9txD622+v99y9apXr7uqqt8vyNu3bU7FvcLzFSlHxwlGl2LT8fgYikpgdMuu8o+bSO3Zlzp15e25F+7WQVjYu/yh60OWwoBDOaBbF6mQZTMUf/jfMxyDSOSTMk+q+AlQKL/143rlho3vImPvPsz7jChiu7T1d9pm98ZlLoQlUCQEIQCBVAghDqeKlcghAoJ0EtBCZtLv0vuh1WeIMVYpinkHSz1oIK8C37p7m1TrB99kvTJ+zFMT13MYQhDyxzn0OvhvMukfPYeFHr73rqXqvRZ8+S/UEn9QoJegC6oWjSrFpxfs1RCSJR3KlaeXzLcZPm7vmDyzemXiGBbMwv5+bO6fPytUpWQ8lGOihspSSfiCyW1KYTfhvLxDpvdP2/SuXXgSiMKH0/pbwM7QKF7H0CFMzBCDQLgIIQ+0iz3khAIHUCfj4Qv5EWtxVW+T57Z30HCx8Q6JYmn3zd07TPEerdYcXpuO2+K9c6Kt+BKFWKefneC/8qEVh8Ud/y9LHW/dUCj+1BIv89Ky5lmi+B3M+gti0QiwyKyS9llijBXEgEplVj3dxiyIa6bP31OhJd/DcuYbxzrzgIYsYWRZ1mtjhrU6SEog0G8Ts1enpQCA6YRacD/YPuAODA67oFlfNzXSOggAEIACBZgkgDDVLjuMgAIFcE9BiJBxfyDdW75chzpBf+Pp+p/k8aQttLbjzGLtJ7ZL7Sr1sYwhCac6O9OsOhB8TEfTZ1t961LL66VThJ0nK9UQkiUQvWNwy7+LmRaNhi9smiyLvquYFI8VgiSoKhfsQFjtuvcUEKQvi24rFUrjuPPxdTSDS79Ixm8d6bqaImZINyCr2xOVZ1ykWV82w4BgIQAACEIhPAGEoPjOOgAAECkBAF8nh+EK+yUWMiePbntdniVDzZpGQtyKhwLuv1LISusesH56wDDKfuG3IDZnLDPEh8jaKK9sTCD/mAnZ01oQgWwB7EcjHcJGogfizklmSr8R3vMpn/edmsaIYRxKKJBp5wWhh8Zo7bbGEms2MqO/x503Y3W8ZnooY4L4R+7BAJEYvmrDzwtRk0wKRH5+D5853pMVVI55shwAEIACB5gkgDDXPjiMhAIEcEzhmooAWjpVFF85FiYlT2XZeRyMgsaCRlZAEocd3jARuFzvWrwtcZaLVzl5ZEaglAukz7IUgRKCsRqP+eTQmejgTN5IuEvOfHRtzI2vXdqx7lAQiPXq33eoesMDGrQpEYYurosUfqva577dsXwTYTvqTRX0QgAAEVhJAGFrJg1cQgEAHENCFpTJl1bpLrYw4Eoc6yTWhctgUA0QuUnKpSbvoPINmbZOH0shKCEEoD6NUvQ363ErM1Rjq4d3BEIGq8yrLuxKcfjg+4e7r6+tYYciPZaVAJIHnsLnuNZvJLCwQ5TH+kBeBgs9+nc+9rNDU/id37XYfHxr0uHiGAAQgAIEECSAMJQiTqiAAgXwQkOhTTxAZm7sSbNdCo1OLYn4o5s/LFy+m3sXhdWvbHl9IC4t6VkI+jtCjw9vd/Vu2YCGU+qyofwK/IKzlEiYxKLBAqV9NZls1fxTnplrxImz1bXZcDdFUx91i/5TRL1ymLGZX5Xt+u2L2TFQElQ/em5/3u3TkswQOif1FyH6YxAB4gUh1JRGoWvzyEH8oEICqiL+y/FMba33u9V2g9uu3+/GZEbP23NHRN3aSmEPUAQEIQCAuAYShuMTYHwIQyD0BZcmat9gWtcrYFQlDV2pt7oj3h9cuCUNpd0YWOPtNYGtnbJ5GVkIfGxx0X7I4Qvdu7iWOUNoTokb9YSHokFl/5MkaKCz6SKzZG2TdWhKB9FrWcJrfiptTrfjYOtW2+Xg71bb1dC3VV/ldpUWwvsOqFW3TIjpcgv0tzle4iLdEFC8yeUGpyCJSEbIfhscgqb8lEr2vtzcQiHpvXdN0DCLNE8WHyir+UPgzXy0eWC0RqBY3tf/47GwQzFwC0RM7b+94C7JaLHgfAhCAQBoEEIbSoEqdEIBAWwnUii/kG6ULzE6PM6SFrCx5Bs3KYSJFawKlsdajXeVHFpj2q5YK+6ULF25yHfRuYw8PDbnb161vq3jVLj7tPG/YOuCVSxfdmRtBiGsFAk+jrXFFH4k8Woh7EUjiTdqi5031J/B5CgLCmzgeiEYmJOnZx2PSNpVgfGaml62T8i4eSQAuQ0bJWp8DzctHtm1djkH07Nkxc7mcjf39HnYvSyr+UC0RSPMuaVfQcfs9+47FnFJgczKv1ZotvA8BCEAgPgGEofjMOAICEMgxAV2g1osv5Jv+yqVLgZtVJ2a68X3cv7nP3bd5szt4/rx/K9FnCS+PWQDnfXY3O+uicVbcjW+ePu3eNNdBLUB8wW3Mk8j+WeMilz5ZCCiW13Fz/6nnIpJEC734E7b2qWbp0w7RJ4n+NVPHkoVTl3N1RCYJRA9ZoGNvnVQpHmksj94QjiQaNSNCNNP2WsdoHulR5uJdzBSken/fZnd4aso9/capplLchwWiOPGHNC8mLTPg0vxoTzwwtV2WT2oDcYfK/Img7xCAQJIEEIaSpEldEIBA2wk0ii/kG1iGRcbuDRvc5y2mjtx2dKc96SJLIcW/yNpiSFZCXz91yv30wkWnu8fhIrGK9PNhIun+7ReJihXkXcQ0Jvp8eQuVJFvgRaC9Gze6vSZISgBSLC1Z+ISFnywsfZLsVzvqkng0tKp63CS1JywcecsPufB4sUj7HDMBMI3vFtVNqU3AC0RDZhGqWHmtBqiuF38oEIBuxAXS3xJ8Zf3XKC5Q7dYns0XfMT7u0MMTg2QtSwYrtUAAAiUmgDBU4sGn6xDoRAJB/CCLIdSo6AJ3wu56dnLRwk9uVGIyOXo1tstBPTbtsBbSmNWzEpL10qPbhx3p5+uNXOvbNA5hq6C0XMTqiUASI7U4RgBqfTxr1VBNOHp/70orIy3Op6++s8ItLS3rIomAmhOU9wjoM+DjDz04MNC0QCThLxx/aI8Jr8raqc+6bix4d7CwVdl7rWjfX2qP4g5JjFYbcS1r31hwZghAoPgEEIaKP4b0AAIQCBE4a3e062Uk87vqgrLT4wypr1o4PD6yI7j7LyubJOINSRR6cvcu95lt2zKzFvIBpr9n7gNhKyEtFA9YcOlPb91q2cb6nO6gU5In4MWgtKyCEIGSH7M0aqwmFuk8ldZF3z17LrDqS+L7xvejW/GeLAYU5WYCSQlEEvpenZ52xy01vCzw0rD6u7n1rb+jdsu1TAVxqHWe1AABCJSTAMJQOcedXkOgIwlIPHjJ0rNL9IlSyhBnSByGeroD96p+u+PebDwKzzNrUcgLEs+Onb0pwDRuY35U0nn27MNiUBKBoxGB0hmvdtZaKRjtWDeduIijz3s74pm1k2vcc4cFoj0bNloMosnAxTOuu59+Q6P+jsZtY5T9/XdEnCx6XhxSfDO5UJPSPgpp9oEABCDwHgGEofdY8BcEIFBwAoFbwztXI/dC++tRhiJx6AvDw4HrzVOjo7HjgnjLnEftgvv+LVsysRSSMPH0qTfdX7/5pgsLEmoLbmPpzNo0xSBZdiku0MjatW54/VJsKi1kcQdLZyzbWeteiTj2iGK9GaWdEoUetEDZWcczi9K2PO6jz9VD5lq2r3eTk0DUzH1FX58AAEAASURBVHd+lv3Sd/pea6vmjR4+btgrdqMnzs0M/Z7L4mnCfjtIaZ/lCHIuCECgEwggDHXCKNIHCEAgIKBF7eRCdGFI+x+xu4sTQwtBPIVOx6jFgtId6wI8arBSLwjJVevezb1uqLsn9fTdGodqrmPhtuA2luxs9YLQc5bB7tVL0yuEuGbOpLEaMLc+BYk+MDQYLPTk5ocQ1AzN4h2jwPeKefOyZX9Mwp3sgf7+QOgoHon2tdhbccX9zk+7xeHvhnAAeR83rPfWNcu/MbdbYHkF1/6uWYx+68yZyHNJ7saktE97JKkfAhDoNAIIQ502ovQHAiUmEDW+kEckU3ndYWynybxvS1bPWpiHg5WesHTi4SxDMt2/bo3RXdsBE4Fk3ZGlIOQFikrXMS0mfn3nTvcfbt+RmTiV1Zi06zyedVKuYl64q7QKykpMbBdHznszAYkSn9u+PQgI3GpsM6yFbuYb553K7/yoNwXinKPWvrVEIGUR9EJQPYtB3/ZB+y3avm5tbOsh4g7VGhnehwAEIHAzAYShm5nwDgQgUEACceML+S7qOMVfkOl6mYq/4L7T3AweMheNhcXFoPteJNP2pRTgFvDVFnlZFAkV1VzHPmYuSF8yUQgrodZHQYwVg0Pz/pVLF1uyDgoLQT5tPFZBrY9Rp9TgY5tNLsy7//HGqaa6JVFIge7lFkVpjYD/zt9hv3Wyynn27Jh9D8xGtsJpdPZWRaB69TfrCq0bPxKHiDtUjy7bIAABCCwRQBhiJkAAAh1BQBeA0zHiC/lOj1r2FVnNPLLVv1OuZ+9u0O5e13IdUyyhL+7Y4W5ftz4zgardLNI4v7cOkqvYcZvvS5+XeNZy4YUf7mFpjFLn1akFvYIAb1i9OnYQZAnCv2OiUFYxzTqPfvUeSSCSe9n+vs0WnHoqlhVOtRr1vaDvabkbR7UEqlZPo/d8u7VfnJhJ+q4j7lAjumyHAAQg4BzCELMAAhDoCALHzAJCdwXjFlnIlCFtfVwuWe7/o4kJ99XRkyuyjmEl1PoIeDGoFVcxLfp8UNj7NvctB43GPaz18SlLDfdu6nXD5pIaNQiyFxoQhNObIRJZ9JCFn2L4tOJeNvvuu+7clStunbmHpZ01zotD+k4i7lB684OaIQCBchK45bqVcnadXkMAAkUmEHaJkbXJTy9ecKffnmuqS7o4lnm97qD6rChpX+A21dAOO0hj+MzpM+6bp0+7N+fmglhPWhQqe5UWhb9k2c+ycmPrJLReEGolkLQfB1kB7Nm4IVhEhoPCdhIv+pINAVlunLbPeTiuWZCO3BIGyBXRf/fKrVffx/pepmRDQGMjl6s4ljjhlkmw0Zgpc9xjIyOpC0Q69/j8gjt4/lxsiycvLj25a1cm7Qxz4m8IQAACeSaAMJTn0aFtEIDAMgEtdiftQvDo7EzgkqA0yNN2MduMS8xypRV/6ILRB8TcY9mU/EJFdycHTbCgJEegmuuY4ok8YbGEPnHbEAGmm0AtphLaXrYUz8rKM26fGR8zKkp1XgwKu4lhGRSFHPvEIbBwbTFw+1VcM83PeXvu6epCfIwDMYV9vXDXivVQ1qJLs4JW1u1MYbioEgIQgEDiBBCGEkdKhRCAQBIEqglBWkRIDIq74G2mPeFYCRKLhu1uKEJRMyRvPqbSdcwLEo8ObyeeyM24Ir0jUegpc8c7eO5c8BmJdJDt5NkjBkUlxn4Q6GwCzYotnopElyyth9Tely5cdE+dPOl+OD7um9HwWe1UQoMnd+12Hx8abLg/O0AAAhDodAIIQ50+wvQPAgUi4F1gFCto7MqcO2OuYVkJQY0wVQpFuJ01Inbzdo1vpesYVkI3c2rmne+ePev++Nhr5qYz2/BwLwb5tPL3bu7FQqshNXaAQHkIFM16SFZop+fedt8yi8lvnTkTOdOaftfvtxhLcl2WOI5lcHnmOD2FAARuJoAwdDMT3oEABDIiEBaC9Lfcw+QCo4tSuRfEcYPJqMnLp9HdRu921rvm1vesicwdivhEy5iW/6h0HfPiBFZCy4ha+kMLoj8+diz4DNWqyDNX3CCJQZrDPV2riONUCxjvQ6DkBLw1zrMmPB+yJAET9vscp2RtldNM3CGJQ0PmKq7seU/csRNxKM4Asy8EINBRBBCGOmo46QwE8k1A4k9lnKCiCEGNyIaFIh+fyAdULbtQVOnmhJVQo9kUf/sRs7L7ExOGDlo6+nDxYhCuYmEq/A0BCEQlIGuc8YV597y5aT39xil3xNxW4xQJL3Ite9gscrIITC0xq5lA2gp2LtH8iZ23c3MnzgCzLwQg0DEEEIY6ZijpCATyScBbBfmU2VnGCWoXEe921n0joKoXioIYRSULZF0pCikN/e/s3kUsoYQnpxZvL1nQ6efH33ITJsBKENJ8U4YnLXgIIp0wcKqDQMkIePeyuGniPSbdPHlk21aL6ZN+NjBv6dRM3KGs2ui58AwBCEAgLwQQhvIyErQDAh1IwLsP/eCt8UwCRucVoReKdGH823ZR/CUzVy9DCQeZvtVEMtLQpzvq4WxPEiVJL58ub2qHQBkJNOOu5TnpN1DWQ5+3RANy3Uozpo8Xy//s+PHYQakRh/yI8QwBCJSJwKo/slKmDtNXCEAgOwJrbHF6+Z133aK77rasWeOumFXD3LvvZteAHJxJlhvKaKYAlw/fdpt7/+bNbtvatTloWXpNkJXY98yl6c/feMP9eOpCYLXyu3v2uF83QezOjRuJaZMS+tVdt7j1q1cHsa/0rNcUCEAAAkkS0HfLHevXu40m8oxZXEB930ctCxY7UBaNx2cvB8dtNWvGQXukUfT9N9jd45QoQm1+09oa5fpDbRybu+Jm7Vpl2H6r02pfGn2mTghAAAKtEMBiqBV6HAsBCDQkIJNuZRbzLmSvmLuLYhQcs5gocWMVNDxZTnbwcV181qfh9euWA1V3erBfLRKePvWm++s33wysxD60ZQuuYzmZlzQDAhCAQFIEvGvZ4cnJINtk3N/zLF3LZOX09VOngkfUANpZti+pMaEeCEAAAq0QQBhqhR7HQgACsQl4oSh4vvqOOzozXXihKIjnYrGDghhCobguurDsdCEoPAG86+D3zp13i9ev4zoWhsPfEIAABDqQgH7Lmwn2LBT6jbx/S5/FHdrtPm7BqdMszbjAZdm+NPtO3RCAAASiEEAYikKJfSAAgdQIhIWiE2ZeLqFIAsPRmdnYqXFTa2RFxRKCBsz8fa+5RflsT8up629dU0pXqXCQ6a1mfv/Ezp3uE7cNEfS4Yu7wEgIQgECnEdDv+Glz1WrGeijLrGXNiFi+fY/vGFmOiyTL2KNm9Txh2doGzF1tb8mSSnTa/KU/EIDAEgGEIWYCBCCQGwI+eK4Xi+TnnwehqJoQ5ANKk+3JBULeU6Mn7a7xOSdR6EnLOvaZbdsC97ncTC4aAgEIQAACqRJoRnjxDcrKdavZNiq7o2IF9qxa5c6YCOZd5P21QPeqrsBq+LGREdLd+0HlGQIQKBQBhKFCDReNhUC5CFQKRVnGJ6oVJwghaOUc9JnHTs+97T7Qu9k9atlm7re4QrKgokAAAhCAQLkISHh56cJF9+zZs+7QxEQsy9+8i0MSgVQUM7FaUfuVde3BgX6HQFSNEO9BAAJ5JoAwlOfRoW0QgMAKAt6SKHhOOD5RWAga6F4TZNLSHUJd6JUpTtAK4HVeyJReF/3fPH3avfn2XHAR/B9u34HrWB1mbIIABCBQBgK6qTNublbPj4+7p984FSvRhBdX0k5p7wWsp06ejJXOPsr4qQ9ZxU6K0h72gQAEIBCFwOooO7EPBCAAgTwQ0MWWHr68f3NvYM6tC7zvjp113zpzJtbdSV/PxwYH3ZcsJs69Vp/qRwjyZGo/f//8W+7Lr7/utpiI9r9ZKvrPbNvqJKRRIAABCECg3ATkViXLmS8MDwe/p0+NjkYWh/R7/ur0dJDWXu7kT+y8PRXXLP3WPzQwYDEBl6yAfmgiVlJFfXhhcsosixaDKtMOrJ1Uu6kHAhAoN4FVf2Sl3AjoPQQgUFQC3rdfgoQyjvzrhQtOF2Rxy2e3b7OLzzsCkUPxA1Z33RK3ilLtL2uh4xYofLCn231xxw4LMn2b67eA3BQIQAACEICAJ6Df6BETiHZt2OAu2m/zm2+/7Tc1fH773XfdKdt/1p6HLXbdYAo3HvRbP2jBo/f3bXbrV692b1rsoDk7XxLlmmXmnLDfyoXFa27n+vWptD+JdlIHBCAAAU8AYciT4BkCECg8gdHLl50ecco9ll7+Vy1YpJ4p0QisuqXLbV+3NgjEeefGTcEFdbQj2QsCEIAABMpEQOLQNhN2JL7cvn6dmzKxRDcXopSFxUUnq6GTJhD1rekOBJYox8XZR+LQFruxcZf9lqnoXEmKQ2/Nz7vurlXuLrvGkPhEgQAEIJBXAghDeR0Z2gUBCMQiILPw4yYK/cSshuKUPXYn8+GhoeCuZpzjyryvLqR1gasH1lVlngn0HQIQgEBjAl582bNxo9tov9VjZpkTRxw6b+LKzy5dcnPX3jVxaX0qAot+z2TZ1G/u0W9dmY/cvka9l7g1Z8GqZTWk6w0KBCAAgbwS6Mprw2gXBCAAgTgEFNNg2KxY4pqby1JoX29vnFOxbwoEtEiQ2T0FAhCAAAQ6k4Bu4Dxi8eie3L3b7YthpassYMdnZ91Toyfdnx57zR2xGERplCFzj77LxKtNa96LZZjEeeTi3oybexLnpg4IQAACUQkgDEUlxX4QgEDuCSgOgR5RizKR7dm4gdTqUYGluJ/uIL9y8SLiUIqMqRoCEIBAuwl4ceg/79vnHrcYdXFu5oyb5dB3xsacMomlJQ6lwUc3Po5Mz/D7lgZc6oQABBIjgDCUGEoqggAE2k1g2IJcKtBl1CILozj7R62X/eITkJuA7ga/bOIQBQIQgAAEOpeAzwj2h/fc7f7j3XfFsh6S5c3Bc+dTE4ck4kwuXE0Uviye1G49UyAAAQjklQDCUF5HhnZBAAKxCQyvjScMKSBkdxdfg7FBJ3zA0ZmZILXvSyYKHbYUv7iUJQyY6iAAAQjkjEA4pX1c17I0xaGzFuz6jFmwJl0mF5KLW5R026gPAhCAgAiwImIeQAACHUMgbpwh4gvlY+h/PDVlgtBkcDf1Rfsbq6F8jAutgAAEIJA2gbBr2cctEUTU4sWh//voUffD8YmohzXcb97Sy6dh2bNwbdHNYzHUkD87QAAC7SNA3sT2sefMEIBACgT2b+5z923e7A6eP1+3duIL1cWT2UZvLTRtZvYqo5ZZ7sTsZffI1syawIkgAAEIQKCNBLxrmdy7nx8ccM+cPuOOmCVpoyJx6AWzMpXoovLxocFGhzTcrmsDxT2asHhGSZag3u6eJKukLghAAAKJEsBiKFGcVAYBCLSbgC4w9WhUiC/UiFA223VhP/3Oe/EcdKdWgahxJ8uGP2eBAAQgkAcCsvi90zKC/a+33x4ra5l+M+SG/F9efdX92fHjLf92+JtLSTPhmiNpotQHAQgkTQBhKGmi1AcBCLSVgL/b16gRQTwii0lEaS+BY3ZX+KhlawmXVywQNe5kYSL8DQEIQKAcBLxrWZy4QxKHkkpnH/XmUpzR0HWJkmNI/KJAAAIQyCsBvqHyOjK0CwIQaIpA1DhD3L1rCm+iB1W6kfnK5U5GEGpPg2cIQAAC5SLQjDgkQkmks5eIs6+3N3AnS4o61xtJkaQeCEAgTQIIQ2nSpW4IQKAtBBqZgivo9P6+Pu7etWV03jtpEE/IRKDKoru/BKGupMJrCEAAAuUh0Kw45INSP3XypDsyPR0bmG4uPdDfH8QqjH1wlQN0vfHrO3e6++yagwIBCEAgzwQQhvI8OrQNAhBoikAjU/Bei0GkB6V9BCYXFtwrFy/VTAvsg1C3r4WcGQIQgAAE2knAi0P/ed8+CywdP2NZs+LQ7g0b3OeHt7t9Juq0WiQyfWbbNq45WgXJ8RCAQOoEyEqWOmJOAAEIZE1g2RR8YqJqZpEgDhHZQbIelhXnU4DpE7OzNdMCh4NQD5ppPwUCEIAABMpHQOLQQwMDFqNnrfuWCTXfOnOm6u96JRlvOaSbEE/u2h0rY5mshh42IWrsyhU3OXo10vkqz6/XshZ6cKAfUagaHN6DAARyRwBhKHdDQoMgAIFWCeiiTheT3V3VjSLx92+VcOvH/yxCgGkfhPqRreSub504NUAAAhAoJgH9pitjmQJSbzeB6Ok3TqWezl7XEI+P7HAbVq+OfD5PVzefDgwOukfN6uj+LVv82zxDAAIQyDWBVX9kJdctpHEQgAAEmiQgdyQ9wkV38H51ZCS4kxd+n7+zI6Cg0988fcb9okH8h9l333V9a9YEgUDX28U5BQIQgAAEyktAvwN3rF/vNppoI6tTWQM1KteuXw9S2J81659BsxTeacdHLf58u8y1bJXdaJq6etXN2e9SvaJrjN/ds8f9+h073d5NvY7frnq02AYBCOSJAFfaeRoN2gIBCCRGQDEC9tgdxoPnz6+ok/hCK3C05YVM/Kffudrw3HIn0756pkAAAhCAAAR83CGReGp0NJLlkH5DXrp40f3Z8eMBwI8PDUYG6V3Zdm/c4H5l620WG+9iIDRNmSh1dGbWXTfhaaCnx+21640DVu+eDRvdjvXrcB+LTJgdIQCBvBBAGMrLSNAOCEAgUQIyPZfL2KBdsE3Mzy/Xrbt5SkVLaR+BY2YxdHR6JlIDZF10xB4j69ZF2p+dIAABCECgswlkLQ7pemKH/QYNmcXR/ZZdbGFxMbhhMW03LlS6V60KhCBt174UCEAAAkUkgDBUxFGjzRCAQCQC3V2rboozhMVQJHSp7SSh54XJKbMYWrqgbnQiuQIetv2V6pcg1I1osR0CEIBAOQh4cUjxfJR97Ifj4w077i2H/surr7rHZ0bc4zt2xPpdkegztKqn4XnYAQIQgEARCSBrF3HUaDMEIBCJwF5ZB9nDF1kL7e1977V/n+fsCPx4asqEnsnIJ9SF/It2zMtmvk+BAAQgAAEIeALezet/v/POyOns9Zty3DJiPjV60n3dglhPRIhT5M/HMwQgAIFOJkDw6U4eXfoGgZIT0EXjcbM4+cmFCwGJPRZ3SClocUvKfmIoSOj3LN6Tgk6/8fbbsRqgINTXri+6KzdiDck9kAIBCEAAAhBY3XVLEFR6f9/mINDzmxaUulGAaFF7235XTt74LVL8IIJEM5cgAIGyE8CVrOwzgP5DoIMJVMYZylt8IYklhyYmgng7+ntiYSkW0oDFKZC100D3muC5qDGRfP8OjU+4M3axPm6xnsabuDurO7w/tDp+dvGSk9j34EC/pQIeCqy/cC/r4A8wXYMABCAQgYB+6306e8X7+fopswQKxRasVYV+k7SvyhOWRYzfk1qkeB8CECgDAYShMowyfYRAiQkMr13r9FDmkD12V1AxhtpdvGDynFnQvHppOsi8NX8jmKXapgvbF8zdqtvS43oh5LGRkUIEzVbfFFhasYReuXQx6J/EIIk7rRRlJ9ND5bSJTM+bUCQLsP0We+jA4EAh2LTSf46FAAQgAIH6BIZ6ut0TO3cGOyEO1WfFVghAAAKVBBCGKonwGgIQ6CgCw5ZJRK5j1+1fHlzIfmQWQrpglSBUSzCRiDIeElIkhCgAsyxl8ioQhcWu47OXAxFHAaZbFYSqTUYvEomLUhA/OzYWsJGVVRBXiqxz1bDxHgQgAIGOJ4A41PFDTAchAIGUCNxid9Gvp1Q31UIAAhBoO4GFa4uBEDN37V33G3fc0VaLIYlCXzl+3P30wsWmBBNZDz2ybat7cteuXFjIeDGo0lUsDTGo0UQSG1mDFc3CqlG/2A4BCEAAAvEJjM8vBL/9US2HdIYhi18niyPcyuLz5ggIQKD4BBCGij+G9AACEGhAQBeIziyGdNHXrtKqKOTbLeHjS3bh+uSe3W2Lh+AFIe8KV8vyybc562cx2mFWYrKwwoooa/qcDwIQgEA+COi3/+D5c+5pyz52xNyboxTEoSiU2AcCEOhEAghDnTiq9AkCEMgVAcXb+TOzFPreufNNWQpVdqYdF65eDMqDdVAlj1qvsSKqRYb3IQABCJSDgFyPD9pv71Ojo4hD5RhyegkBCDRJoKvJ4zgMAhCAAAQiEJAo9NToSff8W+OJiEI6pTKpHLTA1S9bfJ2silzyrrx7zZ2y9L7/euFCEAC6HS5jcfqrBYHiEL1lvM7bQzGPKBCAAAQgUB4CukEQuGDv3u32WRy6KMVnK/tHE5QoEIAABMpCYNUfWSlLZ+knBCAAgawJjF6+HJiyn7DnJMvsu++6vjVrglhD61enn0egu2uV275urXvA3LN2bVjvbrnFuSsmFs1ZO/JaBrq73We2bXO/u2eP++z2bW6nZTHrsYxvFAhAAAIQKA8BZfpU8omNJhKN2c0CWcA2Km/bb9ulq1fdVstqunP9+ka7sx0CEIBA4Qmkv5ooPCI6AAEIQKB5AsfMYkjp25MustaRRUxWVjvdq7rc0KqeIE6T4vc8PDQUWOC8YlZLz5w+E9lEP2kOlfVJDDowOOgODA0GCwG53Q119zi1nwIBCEAAAuUk4C2H1PuobmW/uOEGrmM+br8pFAhAAAKdTABhqJNHl75BAAJtJSA3shcszXxaLkyqXwE1dSc0y6ILbD1U7tq40YI8D7jDk5NBW46ZCBY1yGeSbfaC0Ke3bnX3bu5FDEoSLnVBAAIQ6AACccUh3Xh5yW5+KEagCuJQB0wCugABCNQkgDBUEw0bIAABCLRGQBY90+9cba2SOkfLTe3E7GX3yNY6O6W8SRfa7+vtDbKASQBTnyUSZWFF5MUgrINSHmSqhwAEINAhBBCHOmQg6QYEIJA4AYShxJFSIQQgAIElAopjMLmQnjCku5lZuZI1GlNdbOuhspQqPj0rIi8IYR3UaFTYDgEIQAAClQS8ODR51X6jR6+6CUtOUK+ELYd+NDER7Krf94mFeTdgrsp7Laj1QPeapb97N7lBc2mmQAACECgaAYShoo0Y7YUABApDQJm80hZuli5OF3J1IaqL7mpWRIfsgvrozGzDi/BqA+zFIKyDqtHhPQhAAAIQiENAv1OPj+yw3+hF9/VTpxr+Lnlx6Mj0dHCa+cWl33cFtn7BrGS7u7oslt0q90B/v3ti5+1BYog47WFfCEAAAu0mgDDU7hHg/BCAAARaILDx1tVu0+olS50WqknlUF1466HiA1Z/9+y5SBfh4QbdY3djn9i5033itiFiB4XB8DcEIAABCDRNYKinO/htUQVRxaHKmz16PW4PX5TqXkkZHrQMno+NjCAQeTA8QwACuSdAmpbcDxENhAAEikpgybQ8XZNypZEvQsYtCUR3WqDq+/s2u2FL/xun9AbHbgjEpSL0NU7f2BcCEIAABNpHwItDuvkwaFksWy2Ks/eqWRV9483T7qmTJ523MGq1Xo6HAAQgkDYBhKG0CVM/BCBQWgLDli0szYxhcq8asDueRSrNMJHF0D4LcE2BAAQgAAEIJE0gaXFI7ZNAdPDceffs2FmLRbSQdJOpDwIQgEDiBBCGEkdKhRCAAASWCAyvTVcYGl63NlXhKY1xFJP7+voi35mVKCSTfFkNUSAAAQhAAAJpEEhLHHreYuu9bK5lFAhAAAJ5J4AwlPcRon0QgEBhCcjtSeJNEubp1SB8cHNfILJU25bX98REwTnv27w5UhO170MDA5H2ZScIQAACEIBAswS8OPTprbc1W8VNx41evmxWQ2O4lN1EhjcgAIG8EUAYytuI0B4IQKCjCOyXeBNRBInT8SJb0uzesMHtsXhDjUqR+9iob2yHAAQgAIH8EbhgKeynFq4m1jAFpz4yPeNOmEBEgQAEIJBnAghDeR4d2gYBCBSegESQzw9vd/vMJSrJUmRLmqiWVHIfw4UsyVlDXRCAAAQgUI+AYgNNv5OcMKRzjV254s7MXal3WrZBAAIQaDsBhKG2DwENgAAEOpmARJCHh4bcoyPDibmUfWxw0P374eFCiyZRLKkIOt3Jnwz6BgEIQCB/BCYtUPRkghZD6qGshsbm5ghCnb/hpkUQgECIAMJQCAZ/QgACEEiDgFK1Pz6ywyWRDlei0O/dead7X8GzdMmS6kGLHVQr/hJuZGnMROqEAAQgAIF6BM6aZc8ZE3GSLguLi4FAlHS91AcBCEAgKQIIQ0mRpB4IQAACdQj4oJb/8e67mnIrU2r6x0ZGAlHol7ZscbJEKnJpFIS6yK5yRR4X2g4BCECgzATmF6+lIuBMLsybJRJp68s8t+g7BPJOYHXeG0j7IAABCHQKAYlDXzAXsJ6uVe6FqUl3zAJSHpmZadg9Wc/I2ugTtw25oe6ewotCvsM+CPXB8+f9W8Ez1kIrcPACAhCAAAQyIqCbMLJknZifT/SMC9cW3by5lFEgAAEI5JUAwlBeR4Z2QQACHUlAbmWPbNvqHhjodwpyeXhy0h2amLDYA1ctE8qCu379uhuwi1KVvZa568DQoNuzYaPbsX5doWMKVRvMcBDq8EU4Qaer0eI9CEAAAhBIm0C33bjp7kreIpeYeWmPHPVDAAKtEkAYapUgx0MAAhCISUDikB4qO9atC4JTz4fiD3SvWhVsk0DSSRZCQacq/vNBqMNWQ1xAV0DiJQQgAAEIZEJgr1noKoto0nGGuOGRyfBxEghAoAUCCEMtwONQCEAAAq0SCItErdZVxON9EOqXL10KTPdxIyviKNJmCEAAAp1BII3fZP2u7e3d1BmA6AUEINCxBJK3lexYVHQMAhCAAASSJiB3st0b1rvhtWuDqvdYtrI7zXWOAgEIQAACEMiagGIMyYVbVkNJFZIpJEWSeiAAgTQJYDGUJl3qhgAEIACBhgSGzZ1uxB4y3d/f1xf83fAgdoAABCAAAQgkTEA3Kx4eGnJjV664ydGrLQehxgo24QGiOghAIDUCWAylhpaKIQABCEAgCoHhtevcfSYISRTas3FDx2Rdi9J39oEABCAAgXwRkDvZw4ND7r7Nm1tqmEShJ3fvcg8NDLRUDwdDAAIQyILALZYB53oWJ+IcEIAABCAAgVoExucXLEvb1SBNsIJ0UiAAAQhAAALtIqD08gfPn3N/9vpxd2RmJnYz5JL22yYK/cYdd3RcRtHYMDgAAhAoBAGEoUIME42EAAQgAAEIQAACEIAABLIiMPPOO+60uTgfnpx0z5w+E1kgkqXQEzt3us9s2+qGenqyai7ngQAEINASAYShlvBxMAQgAAEIQAACEIAABCDQqQQkEB08d949e3bMHZ2ZrRp3SBZCAyYCHRgccI9uH3Y71q/DUqhTJwT9gkCHEkAY6tCBpVsQgAAEIAABCEAAAhCAQOsEJA6Nz8+7aXsem7tiAtG0m1hYcBKE9pqFkBIodK9a5YbsNVZCrfOmBghAIHsCCEPZM+eMEIAABCAAAQhAAAIQgEABCSj+0LTFxFtYXHTdXV1mGbSGpAkFHEeaDAEIrCSAMLSSB68gAAEIQAACEIAABCAAAQhAAAIQgEBpCJCuvjRDTUchAAEIQAACEIAABCAAAQhAAAIQgMBKAghDK3nwCgIQgAAEIAABCEAAAhCAAAQgAAEIlIYAwlBphpqOQgACEIAABCAAAQhAAAIQgAAEIACBlQQQhlby4BUEIAABCEAAAhCAAAQgAAEIQAACECgNAYSh0gw1HYUABCAAAQhAAAIQgAAEIAABCEAAAisJIAyt5MErCEAAAhCAAAQgAAEIQAACEIAABCBQGgIIQ6UZajoKAQhAAAIQgAAEIAABCEAAAhCAAARWEkAYWsmDVxCAAAQgAAEIQAACEIAABCAAAQhAoDQEEIZKM9R0FAIQgAAEIAABCEAAAhCAAAQgAAEIrCSAMLSSB68gAAEIQAACEIAABCAAAQhAAAIQgEBpCCAMlWao6SgEIAABCEAAAhCAAAQgAAEIQAACEFhJAGFoJQ9eQQACEIAABCAAAQhAAAIQgAAEIACB0hBAGCrNUNNRCEAAAhCAAAQgAAEIQAACEIAABCCwkgDC0EoevIIABCAAAQhAAAIQgAAEIAABCEAAAqUhgDBUmqGmoxCAAAQgAAEIQAACEIAABCAAAQhAYCUBhKGVPHgFAQhAAAIQgAAEIAABCEAAAhCAAARKQwBhqDRDTUchAAEIQAACEIAABCAAAQhAAAIQgMBKAghDK3nwCgIQgAAEIAABCEAAAhCAAAQgAAEIlIYAwlBphpqOQgACEIAABCAAAQhAAAIQgAAEIACBlQQQhlby4BUEIAABCEAAAhCAAAQgAAEIQAACECgNAYSh0gw1HYUABCAAAQhAAAIQgAAEIAABCEAAAisJIAyt5MErCEAAAhCAAAQgAAEIQAACEIAABCBQGgIIQ6UZajoKAQhAAAIQgAAEIAABCEAAAhCAAARWEli98iWvIAABCEAAAhCAQPYEpqam3OTk5PKJg9f2Xn9/vxuwhy/B64EB/5JnCEAAAhCAAAQgAIEWCSAMtQiQwyEAgfoEXnvtNXf02LH6O1Vs1cLvnrvvdgMpLv606Dxm7Zq056glTrua6XfUdrSyX5w++POk1ZdggX9jwR/8neJ4+74k9dzM/Kk8dzNjUVlHUV97fsfs+0EPCUILCwvBw/fJv+7u7nZ6+OJfSyy6+557lkWju+07Y6+9LnpJ+/PWjs9a3D6l8dnwcy7Od36zc6qZczUzb4OxtM9BlmOqz+vRo0cjN/f69evB7/m+ffsiH+N3bJZjs+Pmz1vrOQ/zuFbbeB8CEIBAqwQQhlolyPEQgEBdAiffeMP95V/91QpLgLoH2Mbt27e73/qN33Cf+tSnGu3a9PZ/+p//033tz/98xUK0UWUf+MAH3G/95m82FKx0Mfv3//AP7rt/93eNqsx8+yc/8Ql3x86dsc77k5/8xP03Y5V08Qt81au/h23c/UI/rQv7pPrQzPypPHcW87zynO18rc/FP//Lv7gf/fM/u7GxMTczM7P8kAgUt2jOHH7xxWXRaNOmTU4Picpf+MIXCikSpfnd4T9v/jksrKX9eYv7HRL1uzbOnPm3f/s397W/+Itg7kU5TmLLb9rvUDNiY9xzRWlPtX38WOr5g/b7dI8Jo2mP5UsvveS+9rWvuWuLi9WadNN7e/bscbcNDd30fpQ3zp496/7mb//WvfKzn0XZfXmfD33oQ8FvdTNjt1xJlT/izuNmfm+rnJa3IAABCGRCAGEoE8ycBALlJbDz9ttd/5Yt7uWXX44MYdEuOKdt0ZhW0eJLdzxPnDgR6xQPP/yw23XHHQ2P0SJ3YmLCnTlzpuG+We+gxXjcMjM7m0lffvGLXywv9LXA/7Bd3Gex0InLo9n5U3kezZGPfuQjLj35s/KM7XntBaHv/9M/uSNHjgSfjWaEoMrW+89Z5fuaR1u3bm1qQV9ZV9avfZ+y+O6QmOCFtbQ/b3G/QzR+ScyR8Pj5NkiUjFL0O9RsG+KeK0p7Gu2j3zMvjuq786Mf/WgqlreX7fdgzASbd999t1GTgu2DLViCNvt50O/cgF13SPxM0vLYj2ukjttOzfzeRq2b/SAAAQgkTQBhKGmi1AcBCKwg4C9UV7zZ4IUWkoGbl7mXJHlR50+ru5BRFwf+GN093r1rV3Dh7d/jOVkCfhHga9Xi2M8fLXTyYgXSzPzxfQo/q7+ah3KjSmOeh8/Vjr/TEoQa9UWLsenp6Ua7lX57rc9bWtYWpQeeMgDNey9E6Lvz0I9+5D70y7/sfu3Xfq2QImkruMThkFkmfvCDH0zV8riVNnIsBCAAgbwRQBjK24jQHgh0GAEJKrL60MI3HFi2Xje1YNGFnZ7TKGfPnQvueMapW24/w8PDcQ5h3xYJVC50ZEX2uc9+NpW74HGaKjeRuK4Nter/t5//3P3M3CTSdJusde4035co9I1vfMN962/+JjELoTTbS91L1g3+M6dYKnkSYxmfeAT8OMoqUb93n/t3/y6wIOpEAboWmZMnT7oXf/zjQBwqU79r8eB9CEAAAo0IkK6+ESG2QwACLRGQu4LuWu63O3dxymuvvx5YDcU5Juq+zVh8KOZF3D5EbQ/7NSaghc73v/9993/91//q/ipmzKrGtUffQ4LHqC041J4kihYvqq+TikSFL3/lK+7rf/mXgQtiWgJvJzHLU180t+WO961nnnF/bjF54iYPyFNfyt4WjeWLFofr//3yl4PvzzLx0PfOP3zve6Xrd5nGmL5CAALJEkAYSpYntUEAAlUIeHegKptqvpXWglmLVll7xFms4kZWc5gy3aBFjuJo/KVZorRLHGpGVKwHSfPQu5PV268o2/T5kpjw7He/G1gKFaXdtPNmAvq8SYxFHLqZTZHe0XeMXMv+5tvfdj8y97IyFVlMyaUOcbNMo05fIQCBZgkgDDVLjuMgAIHIBMLuZFEPSmvBrMXOTMz4I7iRRR21bPbTxb7EIS1asy7NuCE2aqN3J2u0X963e1HoH597LjGLqrz3udPbhzjUOSOshAvPWIavsokkP/nXf3V/bxlCo7qyd86I0xMIQAAC8QggDMXjxd4QgEATBOROJqshPccpaSyYtXiNe2GMG1mcUctm33bdCU7aYki00rKOy2Ykls6CKJQl7WzP5cUhFtfZck/6bLrZIouhso2j5q8CUSuWGwUCEIAABGoTQBiqzYYtEIBAggTuvuuu2JlRdEGXZNr6ZuLD4EaW4CRIuKqs7wRL/Ijrhhily2lZx0U5d1L7/OQnP3FYCiVFM3/1sLjO35g006KyjqPE97/7h3+IfVOoGcYcAwEIQKCoBMhKVtSRo90QKBiBXZbq/cMf/nCwsI5q0i0hJ8m09c1Ye+BGlt+J5hc5WaUkPvnGG250dDQVIN46rojZySSYvWjCkMajlSIRVtmDAtfTu+92A/a6skxduBC4hATfDXbeqN8llfXwOj4BLa7J8hSfW96O0Oc0yRsueetftfZ4a6nhbduC7xWylFWjxHsQgEDZCSAMlX0G0H8IZESgGXcyXcxpMTJ29mywYGy1qapPjzhlu11IDluq+rTLRz/yEferX/hCIv2s19bBwcHUz3G3LerVl7333FOzKeGF/TFb4EsAbKZ4N6xPNXNwzGPiCItiMGgih/oWRbzIsh8xu113d+9CpsxHzRYJQR/96Efdpz75STc8PBy4nNZyPfWfYT1rgatnP3/8c7PtKOpxjb479FnTHJSops9Z1DlZyUOsZaX3gAn8RRQwK/uTp9f6DHzBvjMP2OegXkniezOow+aB5kSZBJKsbyTUG0e2QQACEMgjAYShPI4KbYJAhxLw7mTKwhS1BMF+bf8kUsVrERs3vlBWFkO6QL///vuDhXFUNnndT4v6e++9N1hA1mqjFpkPPPBAsLDXBfuPzeLkby1rTlyBSPX4rF5pLnLiupF96EMfcp/+1KfcX/z3/+6eixAkO6t+1BqPZt/X2CnjkZ7jFi8g6rMtwVKPuHHIdE7NNZ1fDwlsEj7qiZJx25n3/Rt9d2hu+YcYye1PwdvjftbEQceXzdoki/HXvN+ze7d76KGH6p5O49jq96bqSPKGS90G52yj+i2Xsu0mQJfpOyJnw0BzIACBnBJAGMrpwNAsCHQiAbmT7baL3ygLZd9/WWkoaKTuUrey8Ndd0lG7KNTCJmrRwlWL1mYWq1HPUdb9xFRCgC8jIyOu1wSlr1mq87gL1izcsOK4kWnePGDCkPokkSxqyaIfUdsSdb9mxFbVLUa/9Zu/6T79K78Si1G1domx57xnz55g4cxn9j1SYuF5eAFOAfX//nvfc39rWaqiWLT52spqbeL73+7npL43F65ejW092+6+J3F+iWIKwP1Bm/8IQ0kQpQ4IQKCTCBB8upNGk75AIOcEdFErC5w4Ao8u5CTm6LmVEscNyJ9n1x13BEKWf81zegS0sJd7yuc/97lY80Mt8m5Y6bXOuTjzJxAqenuXYuWYO13U+Z5FP5JkJFGomdhCSYpClf3xC2cvFFVu57ULRDRZWX3+s5+NbYkZtjaBZfsJaJ7v378/sDZqf2uK0QJdT/y9WQ1JIKJAAAIQgMB7BBCG3mPBXxCAQAYEPvD+98dejLz2+uuxrUgquxK4pJn1UZySlRtZnDZ18r5a5HzMYmzEdRvUYnV+fj41NHHdyCR86G60RAr1Sc9Rivrh3eKi7N/ufeSSFDe2UJqiULt5FO38PiFAVOHS98+79/rXPLeXgH6nFIA/7ji2t9XtPfvRo0fdDw8dimUt194Wc3YIQAAC6RNAGEqfMWeAAARCBLw7Weithn8mYUkRx+JDDdICFjeyhkOT+A7NLlbl4hLHJSZOw5txI/MWKz6uVtTzeXeyqPu3a79mrYWC2EsJuI+1q9+ddF4Jlh/65V9uSoht1YKzkzi2uy9xBeh2tzcP59f8VSB1ualTIAABCEBgiQDCEDMBAhDIlIAuYptxJ2vFkiKuxYeAaGG/ydyBKNkSaHaRowv9tBarcUTFynkTVwhNQgTNYsTkjjEzPR3rVBJbFXvJi2axDmbnVAjEnZ+pNIJKWyYQVxjv37IlSNve8okLXIG+axWIOm5CigJ3maZDAAIQqEsAYaguHjZCAAJpEGjGnawVS4pmF7EEp0xj9BvXmadFS1xR0buR+V7GFUIlbrUigvrzpv2s1OeTZqUVp8haSBmVKPkhoPmpB6W4BCQK6TsjjjCOm7QLeCnO0N//3d+lZm1a3FlFyyEAgTISQBgq46jTZwi0mUAzd6kl7jSbJlmL+zh3BbFsaO8EydNiNY4bWX9/v9ttmfcqLWLiCqGtiKBZjVwcKyq1qRabrNrLeZIjICFCD0o+CMT9LOIm/d646bri0D//My5l7yHhLwhAoMQEEIZKPPh0HQLtIhDXikLt1EJEaczjxpHRcXHT1Fe6A7WLE+dtP4E4i65ad+HjCqF5dyfTZwoLhfbPzXa1YMOGDU4PSvsJ6KbHX33jG+6VGLFy+H1bOW64lK3kwSsIQKC8BBCGyjv29BwCbSUQ14pCZvK6uxfHXF4djLOw90Aq3YH8+zxnQ6AZN6U0WhbXjewDH/hA1UC+cYXQvLuTNfOZypMVWBpzpah1SuSLK7Yzlu0fbY3bt7/zHff//PEfu3987rngtzFKq2S599GPfCTImhhl/yLuoz7GydCm71tcyoo40rQZAhBImsDqpCukPghAAAJRCHgriue+//0ouwf7+LT1w8PDkY+Jm6a+XW5k6tv/99Wvuu6ensh9i7LjPXfd5T5qKeDjXChHqTfNfZoRHuIuBqK0P44bmerbtHHjTW5k/jxeCI0637072ac+9SlfRW6etZCKK9AituZm+FY0JC+ftRWNKukLCdF/++1v1+x9IOKZIKSicTty5IibmJiI9Vn8Xz75Sff4Y4/V/J6qefICbZBAv6qry0X9rlXXvEvZBz/4QZfH79wC4aepEIBAgQkgDBV48Gg6BIpMIGxF8f+z96ZBchxXnufLyrrvKlShCigABFAgcREASfASySXZlLopqZtSa1pHj6Se3m717PR+aesd610bm4/7bT+s2ezY7NqOrdQ2Ni2pD8p6JFEjkZREkSIJkiBA4iDusw7UfWXdeda+f2R5MZGIjMzIMzLr72QhMiMjPNx/Hof7P957nukba+Ni42ao7HbgUyoze9QNZc13evH3fk+O65TU5ZLcWumYehXCisHNuZNO+LDOK53pLtOUzbmead6l2M5JNCtFeXjMOIHz58+7ckPCXoW41jZ7e0D0eVVnyPrNm2+mRJEoyCZ+TrlD0g+4Rz3z9NPS3d2d9Etlfd2ze7ccOnhQhjUgN9zPM02455788EOBOFROL1IyrR+3IwESIIF0BCgMpSPE30mABApGwK0VBTrDZsamTDpu2YgM6Qb4hYKRTUc/k7Ig33JKp06dkpMnT7oqciHazO25g8HI3r17U5YbFk379++3BhyZCKFuz/WUBy7AD15x9StA1TZVljjHT+r1BmsJN6kQ15ub41fitrjeYf1TqIQ2+/a3vrUpZgWEcPm0CmCwFnbjKok2eO31160JBL7+9a8XqimYLwmQAAl4lkCVZ0vGgpEACVQ8AeNO5qaixsUmk30w4JkPBDLZ1NoGnefHdUptWHcwFZ/Ae++9Jz9/9VXXA9VCWHm5dSNLFXjaUMRg5VG13Dqmb6MzTW7O9UzzzMd2GEDhj6l8CUAU+v4PfuBahIXAaTfzXvmSqOySo71eeukl+eu/+iv53Gc/u2mebXgmPK0u1G7utzgTIM79RN35EHOIiQRIgAQ2GwFaDG22Fmd9ScBDBDBYxoAa1j+ZWFGg6G5cbNxaNhRCYPAQbs8WBYNUxNZ4+513ZHh42HU5C2HB4NaNDAMQnM9OyTq/XIiObs51p+OW+rdCxH8qdZ3K9fiwoDihAuwvVIA9c+aMaxE2nQBarlwqtdyIKfQX3/mO5T6W7v5UaQzw4umxxx6zXCUz7V+AweXLl61nkbHwrDQurA8JkAAJpCJAYSgVGa4nARIoCoFCupO5GdyjsoUQGIoC0WMHsQafJ07I2NiYY8mw3RUVhW7evGkJQm5dWpB5Iay83LqRZSooVoo7mRv3DLQRBqSbbVCKehcrGbEnHWNsd05jCmUTtNjUJdXMe+Z3Lr1F4P3335empibLauiAurJupoTrATH28Hz5p5dfzrjqsIY8dfq0PK6iEgNRZ4yNG5IACVQAAQpDFdCIrAIJlDMBt1YUqKtxsXHqtLkd3NNFIn9nEQS5n/z0p2nFAHTAIQbl4pb0qLr+Pf744/krvObk1o0sU0ERAxWc7+kG8ImVyeRcT9y+GJ/RXrm0WTHKuJmOgXNkYHAwbZVzvd4KIcKmLTQ3yIkAAjD/tx//WD7UWFKP6b0SbmWbSSBCoO0vf+lLckefSW7cw2Ct+QsNBr5dZ0DdTLxyOtm4MwmQQNkToDBU9k3ICpBAeRNwa0WB2kJMCKQJmOo2vhBdJPJ3HmEAWshAqqakhRqourE0c1uGB+6/3xpoIIh6JsmL7mTGNSxT9wxYquCPqTAErHtdmvthPo5cCBE2H+ViHs4EcH5cvHjRssrEcxNBqDeT2HHgwAH5H555xpqhLNN7Fp5hEJL6tm2TLo3TlMlkF86twF9JgARIwPsEGHza+23EEpJARROA9YTboLwYZGIaWqdOHiyGLruYqpYuEuV1mkGQKcQsO24tzTJ1IzN03QZcxwDFzMRn8ij1EtesG6sn1GF1dbXUxebxcyDgVgDN4VDctUAEIBC98cYbVtBxN8/GAhWnaNniXgWXshd+53dcHRO83lGX6HPnzrnajxuTAAmQQLkSoDBUri3HcpNABRFw606GgSY6bVjaJQhHN9UUHNtkkuhGlgkl72yD9vr8iy8WZJadQrmRGXoYpJiA62ZduqVxJ0u3HX8ngUIQKJQIW4iyMk9nAptVHDIuZZjG3k0yLmWbSUhzw4fbkgAJVBYBupJVVnuyNiRQlgSycSe7eu2aZTXUpzEAkpMbVyDs6wU3MuOek1yXXL9Xmgk8OH31q1+Vr/zhHxZk6mU35062VhRuA6570Z3M7XkJsRYWfpV2PrrlUG7bG1FoM011Xm5t5La8Rhzar1aXdClzpoeXT4kuZc5b81cSIAESKG8CFIbKu/1YehKoCAKwonAblNdpsDwyOmoFm8wUznaNI9C3fXummxdkO7iyfV0Fj3wPnME133kWBEAGmRpR6I+//nVr+uUMdnG1iVs3snA4LKM68xrcGt2kUCjkStTC4MS4k3mhLbd0dlpxNzKNkwQ2qEMqCz837Lht8QhQFCoea9zbEBj6maeeyuigRmidnpmRd9Xdye09COLQhx9+aE3nvlnEIeNS5naWMrCCS9nRo0czahtuRAIkQALlSoDCULm2HMtNAhVGwG1QXqfBshurD2D0gsVQa0uL9Pf3i50FVIU1dVbVKbQohEJhADAfCGRcPpxnP/jhD+WVn/0s433Mhm6Dcxt3MqeZ+EzehV6a6+Wsi9gbThZ+hS4v83dPgKKQCO45xRJiIVr0790rTz75ZEaNZYRWLOFW++rrr8tPdSZIp7h7yRkbt9nNIgyh/salLJtZyk6qkBaJRJIx8jsJkAAJVAwBCkMV05SsCAmUNwEE5X3ssccEg81MO7d2g2W3Vh8YAB3TN4HomDN5lwDaZ4e6DaJjX6jkNmA5BmXDw8OFKs5d+TpZyN21YRG+oC3cXi8Q3dLNJFiEovMQGRLYs3u3PHTsmCvLNqesjciS6b3dKa9i/ZbNeV6KsuGeiD+U9+WXX874+QlhG4GVH9fnbrEEsGLxcTpOtrOUvabiGxMJkAAJVDIBBp+u5NZl3UigjAigU5utO1liNd1afWAAtFff1DJ5m0AmM9HlUgOIQidPnco4YHkux8pm30QLuWz2z+c+ZpDvJs9Ct5+bsnDb9AQGBgfl9u3b6TfMcAu3Iotxlcow+4w2K0SeGR24CBtBGHpIX3C4cYnGPQXPSyw3U8K5mM0sZbDydGvpuZm4sq4kQALlT4DCUPm3IWtAAhVDwLiTZVohu8GyW6sP4xaT6TG5XWkIoK1PnT5dsKmD3QqKpaBgLORKcezEY2JghevGjZVBodsvsXz8nDsBWKjBdaZUFj44X/CXz1SIPPNZvlzzyuZZZollGhh+syUIac8884zs379/s1Wd9SUBEiCBlAToSpYSDX8gARIoNoF8uJPNLyxkbPVBN7LCtDC4Pq1BVLs0RkeqdEVnlTuhAT3dDDzNYBVBQN2IEqnKkLjeraCYuG+xPnvJncwEbPdK+xWrDbx4nEyutxPvv2/NrpRp+Y2QBzejUsS1gmCBv3ylcri+c62rW6ssHC+ogfDzLcDlWo9i7f/o8ePyxS98wTrP3NzHilU+HocESIAEik2AwlCxifN4JEACKQmgY+vWnSwxdonbzj/dyFI2RU4/oA0ff/xxK3ZTqowgciwtLsqv33gj1Sb3rC/UYBXnjZfdyAwI1N8rs5MZ6wQ3AagL1X6Gz2Zd4j6GAa5T4Hp/dbU1c5WbAXA+hVi3M9nl+1zPxiLQlHmznleVXm88p/ACA3GW3DyHKp0L60cCJLB5CdCVbPO2PWtOAp4k4NadDG+VMVUvBjxuO/9mcOtJEGVeKCPyofNt94cAoAg27tbyxwxW3Qxw06F0e96ky6+Qv3vFnQzXTjaWW2i/X7z2mlzWa5YpPwTSXWu4/mAdgSD7bpIR8jBwzjVlc6/N57nu9qUB6ptNmXPllMv+lluYPgeZMicAK2XM6kaXssyZcUsSIIHKJUBhqHLbljUjgbIkgI6am2DQZvDy//7n/yx/+1/+S8YDTrqRlfb0wGC21INVQyCbQaPZt9hLCCs39a/UKZf2e/fdd+X7P/hBxtdqqetaCcc3brqlEmKzEVnyJSK+99578vNXX83YxRjtjQDrsMDCeV4u6fz589asnuVSXi+UE+379NNPWxZ3bq8NL5SfZSABEiCBfBKgMJRPmsyLBEggZwLoqGEQ4aaThgHEz3/xC/nggw8y7vxbVixtbTmXlxlkT6DUg1WUvFzcyAzlRBcbs65US7ciriknLLTeUBfCQolDtJwwpD9d5iLk5SPoezb3dZzruYqIuL5//JOfyKVLlz6FkcGnbISsDLIt2CbZ3sfoLieWRStcytxa1BWsMZkxCZAACZSIAIWhEoHnYUmABFITOPLgg646aRhAYLCJZaYJFkMHOCNJprgKsl0ug1WIgXdGRnIuVzm5kZnK5tPFxuSZzTKbwb45TqI49NNXXsnZeghi0Cs/+5n8u3//7+Wv/+2/tYQncywu4wRKLcTifMGfm5R4nrhxPzTnw3/4j/9R3n7nHVfPBpQvm7K6qVe+tk2s58mTJ11nW24CmOsKZrgDrg26lGUIi5uRAAlULAEGn67YpmXFSKB8CRhLhEJifkj3AABAAElEQVQFhIQo9Pijj1pvCr1CCR38E+ry4Hbg5Lb8XhPEzGAVQYzdxA0y4kiub3mzcSPLN0O0/RW1bMi0/sad7AW3jV+A7Y2Im821agb9p06dkkf1esQMWHDh2a/Xp5PFIHiBleEGdgjKPTk5af1BIH5Cg58z3U0A9xa4b36o09C7aS/whNVQrjOUmfhxaCs3yZwnuFYf0/PkKbXuSHWOmPvoG7/5jWUlhHPCzQsDU658X+MmX6cl6geRNF2yzn+9BrBMPu/T7Zv4O+qI+2ehnzmJx/TqZzCAS9nI6ChnKfNqI7FcJEACBSdAYajgiHkAEiABtwTQSTPuZJkOlt0cw4tuZBA6BgYH3VQjq22/9c1vespSKtvBKgaLGOAigHW2ll/ZuF9gMPXtb33LGiRn1QA2O/3mzTfl9sCAzS/2qzDQ9crsZOZN+7AO9hEE3m1CO5o/CEQ4H3B99qk76ZaurnuyM4NhMMCf2Tebwf89mW+CFdkKsRAjT+r1lk3AcYM122Njf7TzxYsXZXh4WN7RGFV254g5NxIFQnNsN0tc48V+cYCyv6pB2XEvSJfMuW+W6bZP9bsXn4OpylqM9eDBWcqKQZrHIAES8CoBCkNebRmWiwQ2OYFcLBHSoSvF2+B0ZTID3HTb5fp7IBDINYu875/tgBFWDBCHshWGLOYueWBq8IeOHZMdO3bkjQOsICCKuLGkMBZTL7xQWruhfL1pTz7/IQIg7+SU62A4OT/zHaLs9evXJRwOm1V3Lfv7++X+ffvuWleOX7IVYsE9V6uhbI+dyDnxPEk+R/J1bljWa0W2OEPZIWgVK8Ey76nPfCbre2exylns4+QqdBe7vDweCZAACeSTAIWhfNJkXiRAAnkjgA4aZidz4/KQycFL8TY4k3Jt5m2yHTBikJiL1VA2bmSFiMmRzbnuJXeyQrxpz9cgP9PranFx0brXnDlz5p5d6mpr5Zv/8l9WhDCEymUrxObjnMvnwLsQ58hmeT7gPnbw4EFPuVPfc+GVYAWeRXQpKwF4HpIESMATBBh82hPNwEKQAAkkE0AHzbiTJf+Wy3eaz+dCr3D7msGqU2wZu6MbqyG735zWZetGVoiYHNmc6xgUG3cyp3oW6ze0H9wUMagqy7S2JrCmG1TLoeQ/uC8tLCyUZbXsCm2EWLfxuXDOndNYYG6CQCcf3wy8v/iFLzjGkUrerxjfIQpZbqJFthYqRt0Sj4F6fu2rX3U1wUPi/pX+2Qjdbq+PSufC+pEACVQ+AQpDld/GrCEJlC0B406WzwqgU5yt61E+y8G87iaAASPctBBbxk0yVkNuB6uWS4pLN7JCiorZnOvGncwNr0Jti/Y7pi523/mzPytfcahQcDyYb7GF2EQEXhx4w7UKs1J97rOfrWgrGiN+VXo9E8+3bD4by7b9nLk0G3zchwRIoEwJUBgq04ZjsUlgMxBA5wzuZPlK6BQXO6hovsq+GfI5cuSIHFVxwW3KxmooGzeyQoqK2ZzrxrXHLa9CbU9xqFBk858v2gozlLm1ishWiE2uAc53r1iYQRT6qlrQfOUP/5CiUHJDbdLvuD5g/ehFy7ZN2iSsNgmQQBEIUBgqAmQeggRIIDsC6Jzl052skBYf2dWQeyUSQPsgELPbt7QYrN68eTPj6d6zdSMrpKiYzbnuNXcytCXqAcuh/+1v/kb+V/1z25aJ5wM/F5ZANmIkSpSNEJtck8Tz5M///M9L5lYGsfcv/82/kT/++telu7s7uZgV852WQu6b0ouWbe5rwT1IgARIIHMCFIYyZ8UtSYAESkAgGxebVMUspMVHqmNyvTsCsGJ4PIsYH27cqrzmRmYIZXOuu6m3OU6hlxj0YxYvWGD8ybe+ZU0B7TZ2VKHLyPzjIh6s9NyKd/myGjLnCc6R/1nFGbflyLUNjVjy+1/8YsWKQrCGeumll+Sv/+qvKt5NLtfzwW5/iKdwMSz2uWlXFq4jARIggUIT4KxkhSbM/EmABHIiYFn5qCVJrgkd5L3ayUN+TN4lgPZBO0FImJqayrigcKs6qVPXHz16NK31gdfcyEwljQWHm5n4jDvZCyYTDy3Rli+88IJAfDh16pT8049+JFeuXCloCXGd49yhEJUZZiPEum0XYzWUj3htsNT5ggajxnnyoZ4nP33llYKdJzg/nnrqKXlap2qHm/KOHTsq8pkA0etpredRZYrZx8AYQhyTOwJgxlnK3DHj1iRAAuVLgMJQ+bYdS04Cm4IAOvJ4W+dWKEiGU4hpxpOPwe/5IWAsZ9wIJHCrwmD18cces8SIVCXxohuZKSsGIcZ1MlNRLNGdzItiiBF2MTDFwB9C1pWrV62BP5aZ1tMwSl4aIciyBtTBsLnOK9ktKJlBLt+zFWKN1dBjer3lQxxCOQ4dOmQJNXAnhUAEscqcK7nUMfEceeH55ytKKDF1Ax9zDWAdRC9cA+BKQSiXs0cshhDZMCOfm2dSbkfl3iRAAiRQfAK+NU3FPyyPSAIkQAKZE5icnBRMGY1BcLYJHeRivR1GOVFelNtrqU/fkO/UPzcJdcFfpilX1tnywwAIbewkCmBAi7pgmWnKtT6ZHgfbZXOuo76odzkMANG2YG/+zp0/f5d1yPT0tEzpn7VUi7HEgS/44Pt+FYC6dInPfX19Vr3RRvgDg2w4zOkMdUM6Vb3deVFVVSU7d+60GKMMhUzZnPu5tn825xwYFPK6MOeHWSYKROYcQRnSnSc4VxLPEbDK5vzAsdykbJm6OQa2TTzfc70GMj320NCQDOi1kunwoaW5WXbt2iWdnZ2ZHmJjO7S/2/t1Ns+4jQOm+JDNdYmscr02UxSHq0mABEigIAQoDBUEKzMlARIgARIgARJIR8AM/M12GIAl/iUOfLENvicKQPka5Mfwjkz/fD6fKco9S6ff7tmYK/JKIPE8MecHDmA+pzpPzLmS18Js8swgCGUqChlUuHZ4/RgaXJIACZCANwlQGPJmu7BUJEACJEACJEACJEACJEACJEACJEACJFBwApyVrOCIeQASIAESIAESIAESIAESIAESIAESIAES8CYBCkPebBeWigRIgARIgARIgARIgARIgARIgARIgAQKToDCUMER8wAkQAIkQAIkQAIkQAIkQAIkQAIkQAIk4E0CFIa82S4sFQmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUnACFoYIj5gFIgARIgARIgARIgARIgARIgARIgARIwJsEKAx5s11YKhIgARIgARIgARIgARIgARIgARIgARIoOAEKQwVHzAOQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgDcJUBjyZruwVCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQcAIUhgqOmAcgARIgARIgARIgARIgARIgARIgARIgAW8SoDDkzXZhqUiABEiABEiABEiABEiABEiABEiABEig4AQoDBUcMQ9AAiRAAiRAAiRAAiRAAiRAAiRAAiRAAt4kQGHIm+3CUpEACZAACZAACZAACZAACZAACZAACZBAwQlQGCo4Yh6ABEiABEiABEiABEiABEiABEiABEiABLxJgMKQN9uFpSIBEiABEiABEiABEiABEiABEiABEiCBghOgMFRwxDwACZAACZAACZAACZAACZAACZAACZAACXiTAIUhb7YLS0UCJEACJEACJEACJEACJEACJEACJEACBSdQXfAj8AAkQAIkUAACk4uLgr/k1N3cLPhj8i6BVG2XWGK2YyINfiYBEih3Aqnue7zXlXvLsvwkQAIkUBkEKAxVRjuyFiRQ8QTQqf7tjZvy1o0bliC0GonIaiR8T73rq6ulvrpGupqb5FBPjxzq7bWWXhKLUI83b1y/p+yZruhuatoQv1Av1NNL9UushxkMXRqfSNt2ifsltqM1cNI6P9vfL4e1PYuRcm2jTMuItntO61XI9jPXzoXxsUyLtbGdl861dPV4dm+/PL+vf6PsuX5Id7xitJ1dHS6Nj8tb12/IxNK9wnji9l4vX2JZ8/053+eC2/K5ue+Ze91B63nVI1gW6z6XSb3SXQdOeXjl/pGuDihnPp4v6a5NXJNfOHhQmmprnbDxNxIgARIoCQEKQyXBzoOSAAlkQsB05iAGDc3NyfjCgkzoH0ShdKlOBaITt25LW329PLn7Pnlkxw7PdLgvjI3JP370cboqpPy9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CWxeAr41TZu3+qw5CZBAORGIuzqsWAMXxOWwiytkZsDCbFjoqMOVqtjBZNMxNfVIt1263zHIq6+p2ZgBLN32hf4dbgAQ8LBEQvsgmDhmHUtsK8wgh2ntjSDixTbLVxulY27O0XTb5fJ7crsk5oVzKNtrJB2jYtQtsS52n53qnrh9qcrqVL5c2iaxbsmfndqtUMdMLkPyd6cylaptksvo9rtpW1O3xHtgYl7m/teqM0hipk3rvq7XpVeSqQeWySmX88VwSc7TfPdCuzuV0QvlM6y4JAESIIF8EKAwlA+KzIMESIAESCBjAhhg4I2E1wS7jCvADUmABEiABEiABEiABEiggghQGKqgxmRVSIAESIAESIAESIAESIAESIAESIAESMANAU5X74YWtyUBEiABEiABEiABEiABEiABEiABEiCBCiJAYaiCGpNVIQESIAESIAESIAESIAESIAESIAESIAE3BCgMuaHFbUmABEiABEiABEiABEiABEiABEiABEiggghQGKqgxmRVSIAESIAESIAESIAESIAESIAESIAESMANAQpDbmhxWxIgARIgARIgARIgARIgARIgARIgARKoIAIUhiqoMVkVEiABEiABEiABEiABEiABEiABEiABEnBDgMKQG1rclgRIgARIgARIgARIgARIgARIgARIgAQqiACFoQpqTFaFBEiABEiABEiABEiABEiABEiABEiABNwQoDDkhha3JQESIAESIAESIAESIAESIAESIAESIIEKIkBhqIIak1UhARIgARIgARIgARIgARIgARIgARIgATcEKAy5ocVtSYAESIAESIAESIAESIAESIAESIAESKCCCFAYqqDGZFVIgARIgARIgARIgARIgARIgARIgARIwA0BCkNuaHFbEiABEiABEiABEiABEiABEiABEiABEqggAhSGKqgxWRUSIAESIAESIAESIAESIAESIAESIAEScEOAwpAbWtyWBEiABEiABEiABEiABEiABEiABEiABCqIAIWhCmpMVoUESIAESIAESIAESIAESIAESIAESIAE3BCgMOSGFrclARIgARIgARIgARIgARIgARIgARIggQoiQGGoghqTVSEBEiABEiABEiABEiABEiABEiABEiABNwQoDLmhxW1JgARIgARIgARIgARIgARIgARIgARIoIIIUBiqoMZkVUiABEiABEiABEiABEiABEiABEiABEjADQEKQ25ocVsSIAESIAESIAESIAESIAESIAESIAESqCACFIYqqDFZFRIgARIgARIgARIgARIgARIgARIgARJwQ4DCkBta3JYESIAESIAESIAESIAESIAESIAESIAEKogAhaEKakxWhQRIgARIgARIgARIgARIgARIgARIgATcEKAw5IYWtyUBEiABEiABEiABEiABEiABEiABEiCBCiJAYaiCGpNVIQESIAESIAESIAESIAESIAESIAESIAE3BCgMuaHFbUmABEiABEiABEiABEiABEiABEiABEiggghQGKqgxmRVSIAESIAESIAESIAESIAESIAESIAESMANAQpDbmhxWxIgARIgARIgARIgARIgARIgARIgARKoIAIUhiqoMVkVEiABEiABEiABEiABEiABEiABEiABEnBDgMKQG1rclgRIgARIgARIgARIgARIgARIgARIgAQqiACFoQpqTFaFBEiABEiABEiABEiABEiABEiABEiABNwQoDDkhha3JQESIAESIAESIAESIAESIAESIAESIIEKIkBhqIIak1UhARIgARIgARIgARIgARIgARIgARIgATcEKAy5ocVtSYAESIAESIAESIAESIAESIAESIAESKCCCFAYqqDGZFVIgARIgARIgARIgARIgARIgARIgARIwA0BCkNuaHFbEiABEiABEiABEiABEiABEiABEiABEqggAhSGKqgxWRUSIAESIAESIAESIAESIAESIAESIAEScEOAwpAbWtyWBEiABEiABEiABEiABEiABEiABEiABCqIAIWhCmpMVoUESIAESIAESIAESIAESIAESIAESIAE3BCgMOSGFrclARIgARIgARIgARIgARIgARIgARIggQoiQGGoghqTVSEBEiABEiABEiABEiABEiABEiABEiABNwQoDLmhxW1JgARIgARIgARIgARIgARIgARIgARIoIIIUBiqoMZkVUiABEiABEiABEiABEiABEiABEiABEjADQEKQ25ocVsSIAESIAESIAESIAESIAESIAESIAESqCACFIYqqDFZFRIgARIgARIgARIgARIgARIgARIgARJwQ4DCkBta3JYESIAESIAESIAESIAESIAESIAESIAEKogAhaEKakxWhQRIgARIgARIgARIgARIgARIgARIgATcEKAw5IYWtyUBEiABEiABEiABEiABEiABEiABEiCBCiJAYaiCGpNVIQESIAESIAESIAESIAESIAESIAESIAE3BCgMuaHFbUmABEiABEiABEiABEiABEiABEiABEiggghQGKqgxmRVSIAESIAESIAESIAESIAESIAESIAESMANAQpDbmhxWxIgARIgARIgARIgARIgARIgARIgARKoIAIUhiqoMVkVEiABEiABEiABEiABEiABEiABEiABEnBDgMKQG1rclgRIgARIgARIgARIgARIgARIgARIgAQqiACFoQpqTFaFBEiABEiABEiABEiABEiABEiABEiABNwQoDDkhha3JQESIAESIAESIAESIAESIAESIAESIIEKIkBhqIIak1UhARIgARIgARIgARIgARIgARIgARIgATcEKAy5ocVtSYAESIAESIAESIAESIAESIAESIAESKCCCFAYqqDGZFVIgARIgARIgARIgARIgARIgARIgARIwA0BCkNuaHFbEiABEiABEiABEiABEiABEiABEiABEqggAtUVVJeyq8pSYFCm73wsgckbsjQ3ItV1TbLr0Bdl664nyq4uLDAJkAAJkAAJkAAJkAAJkAAJkAAJkED5EaAwVMI2W12clLnxT2R+6rbMTw9IdU2j9Nz3eAlLxEOTAAmQAAmQAAmQAAmQAAmQAAmQAAlsJgIUhkrZ2mtR8cmaNLR0SDQalEgoVMrS8NgkQAIkQAIkQAIkQAIkQAIkQAIkQAKbjACFoRI2eCS0LJHwsvir66SuoVVFoqUSloaHJgESIAESIAESIAESIAESIAESIAES2GwEGHy6hC2+JjHx+Xziq/Jbf6HVgKwuzRS0ROHVeQnrcZhIgARIgARIgARIgARIgARIgARIgARIgBZDSedAJLSowaAvy9LsLWntPiDtPUeStsjP19WlCQkuTUmVv1ZUFbKshtRkSJYXxiS4PCN1jZ35OVBCLqHVOY1ndFUWpwZUkKqXzh3HpGXLroQt+JEESIAESIAESIAESIAESIAESIAESGAzEaAwtN7a4eC8zgw2KAsz12Vh+pqsLoxr3J+wNLbtlNr69ryfE7FISNbWIpalkGicoZq6RqmpbZQVPS7EoUIIQzGtTyS8JIs6G9rc6G0ZuPBr2bbvKdl1+Helrqkj73VkhiRAAiRAAiRAAiRAAiRAAiRAAiRAAt4m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" + } + }, + "cell_type": "markdown", + "id": "325aa8a5-92fd-4913-a471-ad1617343be6", + "metadata": {}, + "source": [ + "# 308.5. Image stamps\n", + "\n", + "
\n", + "\n", + "![logo.png](attachment:493ffa25-f8ce-4c58-9602-02028035a6f5.png)\n", + "\n", + "
\n", + "\n", + "For the Rubin Science Platform at data.lsst.cloud.
\n", + "Data Release: Data Preview 1
\n", + "Container Size: large
\n", + "LSST Science Pipelines version: r29.2.0
\n", + "Last verified to run: 2026-06-11
\n", + "Repository: github.com/lsst/tutorial-notebooks
" + ] + }, + { + "cell_type": "markdown", + "id": "ae760c59-bf94-45b3-9f8e-b4551b22e193", + "metadata": {}, + "source": [ + "**Learning objective:** Generate many (bulk) image stamps using the Rubin image cutout service for Solar System objects.\n", + "\n", + "**LSST data products:** `DiaObject`, `SSObject`, `MPCORB`, `Visit`, `visit_image`, `template_coadd`, `difference_image`\n", + "\n", + "**Packages:** `matplotlib`, `numpy`, `lsst.rsp`,`lsst.afw`, `lsst.geom`, `lsst.resources`, `lsst.utils.plotting`, `pyvo.dal.adhoc`, `reproject`\n", + "\n", + "**Credit:**\n", + "Originally developed by the Rubin Community Science team. \n", + "Please consider acknowledging them if this notebook is used for the preparation of journal articles, software releases, or other notebooks.\n", + "\n", + "**Get Support:**\n", + "Everyone is encouraged to ask questions or raise issues in the \n", + "Support Category \n", + "of the Rubin Community Forum.\n", + "Rubin staff will respond to all questions posted there." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "cfc73be0", + "metadata": {}, + "source": [ + "## 1. Introduction\n", + "\n", + "This notebook demonstrates how to produce bulk image stamps using the Rubin cutout service for Solar System objects.\n", + "\n", + "**Related tutorials**: See also tutorial notebook 103.9 on image stamps, which demonstrates how to perform bulk cutouts using the cutout service that returns only the image extension to minimize the data transferred and tutorial notebook 103.4 that demonstrates the return of exposure cutouts as Rubin LSST image type ExposureF and MaskedImageF." + ] + }, + { + "cell_type": "markdown", + "id": "dc36f107", + "metadata": {}, + "source": [ + "### 1.1. Import packages" + ] + }, + { + "cell_type": "markdown", + "id": "ccb4fe61-835a-47ac-a691-e086ce766e79", + "metadata": {}, + "source": [ + "Import `numpy`, a fundamental package for scientific computing with arrays in Python\n", + "(numpy.org), and\n", + "`matplotlib`, a comprehensive library for data visualization\n", + "(matplotlib.org; \n", + "matplotlib gallery).\n", + "\n", + "From the `lsst` package, import modules for accessing the Table Access Protocol (TAP) service, image display functions, and the Simple Image Access (SIA) service from the LSST Science Pipelines (pipelines.lsst.io).\n", + "\n", + "Functions from `pyvo` are imported to perform and parse results from Datalink and SODA queries. This is used to obtain images from the SIA service.\n", + "\n", + "The `reproject` package is an `astropy`-adjacent package that provides access to coordinate transformations between images with world coordinate systems (WCS), and will be used to align visit images with different WCS. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cddc1458", + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "import pandas as pd\n", + "import numpy as np\n", + "import io\n", + "import getpass\n", + "import glob\n", + "import os\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "from lsst.rsp import get_tap_service\n", + "from lsst.rsp.service import get_siav2_service\n", + "from lsst.rsp.utils import get_pyvo_auth\n", + "\n", + "import lsst.afw.display as afwDisplay\n", + "from lsst.afw.image import ImageF\n", + "from lsst.afw.fits import MemFileManager\n", + "\n", + "from pyvo.dal.adhoc import DatalinkResults, SodaQuery\n", + "\n", + "from astropy import units as u\n", + "from astropy.wcs import WCS\n", + "from astropy.io import fits\n", + "\n", + "from reproject import reproject_interp\n", + "\n", + "from IPython.display import Image as dimg\n", + "from PIL import Image" + ] + }, + { + "cell_type": "markdown", + "id": "c217adff-25ed-4fce-95e7-8aa04630f6cc", + "metadata": {}, + "source": [ + "### 1.2. Define parameters and functions" + ] + }, + { + "cell_type": "markdown", + "id": "59786a10-87da-4a6d-948d-62483b51bff8", + "metadata": {}, + "source": [ + "Create an instance of the TAP service, and assert that it exists." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "61247d16-d6fc-4f3d-b013-91bda9209bc3", + "metadata": {}, + "outputs": [], + "source": [ + "service = get_tap_service(\"tap\")\n", + "assert service is not None" + ] + }, + { + "cell_type": "markdown", + "id": "0ba5555a-dc08-43a1-9fcc-8288128122f3", + "metadata": {}, + "source": [ + "Instantiate the Simple Image Access service (SIA)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4b34723d-97f5-4994-95be-e5d5a5c29d58", + "metadata": {}, + "outputs": [], + "source": [ + "sia_service = get_siav2_service(\"dp1\")\n", + "assert sia_service is not None" + ] + }, + { + "cell_type": "markdown", + "id": "cc51bd61-5bea-47d8-b67b-30ff46f6e180", + "metadata": {}, + "source": [ + "Set the `afwDisplay` package backend to `matplotlib`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a43c608f-cce8-4b0b-875c-5e733cda23de", + "metadata": {}, + "outputs": [], + "source": [ + "afwDisplay.setDefaultBackend('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "id": "f8f5a54d-96ce-4323-8d20-98ad6b57ddee", + "metadata": {}, + "source": [ + "#### 1.2.1. Set up a temporary directory\n", + "\n", + "The Rubin cutout service allows the user to save many image stamps as fits files locally on the Rubin Science Platform (RSP).\n", + "\n", + "RSP users should save temporary files in the shared scratch directory, `/deleted-sundays/`, in sub-directories named with their RSP username.\n", + "\n", + "Get the username and ensure an appropriate `/deleted-sundays/` sub-directory exists." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c5053a7e-a73c-4d99-928e-1bfda8c462e7", + "metadata": {}, + "outputs": [], + "source": [ + "username = getpass.getuser()\n", + "print('username: ', username)\n", + "\n", + "userdir = '/deleted-sundays/' + username\n", + "if not os.path.exists(userdir):\n", + " os.makedirs(userdir)\n", + " print('Created ', userdir)\n", + "else:\n", + " print('Directory already existed: ', userdir)" + ] + }, + { + "cell_type": "markdown", + "id": "114a1c30-b0f0-4bb8-a867-1cbec46f63b9", + "metadata": {}, + "source": [ + "Within that folder, create a sub-folder named `dp1_308_5_temp` in which to save files created by this tutorial.\n", + "At the end of the notebook, the last cell will clear the contents and remove this temporary folder." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a42d8e82-9cd1-4299-90d2-45c4c3f5dbc3", + "metadata": {}, + "outputs": [], + "source": [ + "tempdir = userdir + '/dp1_308_5_temp'\n", + "if not os.path.exists(tempdir):\n", + " os.makedirs(tempdir)\n", + " print('Created ', tempdir)\n", + "else:\n", + " print('Directory already existed: ', tempdir)" + ] + }, + { + "cell_type": "markdown", + "id": "5d16ef3e-d1e2-405f-9037-9c32314c21a8", + "metadata": {}, + "source": [ + "Delete the `username` and `userdir`, but keep `tempdir` to be used." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3c6a9112-6613-4b6d-a1cc-a0abff4240ee", + "metadata": {}, + "outputs": [], + "source": [ + "del username, userdir" + ] + }, + { + "cell_type": "markdown", + "id": "f52f721d-1983-4605-8161-8f29187b5757", + "metadata": {}, + "source": [ + "#### 1.2.2. Generate a gif from pngs\n", + "\n", + "The function below will generate a gif to visualize all of the image stamp files in png format produced in the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e33fcdf2-eb86-467f-bbf6-c4bf64901388", + "metadata": {}, + "outputs": [], + "source": [ + "def make_gif(folder):\n", + " \"\"\"\n", + " Generate a GIF for all *.png images contained in a folder\n", + "\n", + " Parameters\n", + " ----------\n", + " folder : 'string'\n", + " string containing the path to the folder\n", + " default filename is animation.gif\n", + "\n", + " Returns\n", + " -------\n", + " \"\"\"\n", + " frames = [Image.open(img) for img in sorted(glob.glob(f\"{folder}/*.png\"))]\n", + " frame_one = frames[0]\n", + " frame_one.save(folder+\"/animation.gif\", format=\"GIF\",\n", + " append_images=frames, save_all=True, duration=500, loop=1)" + ] + }, + { + "cell_type": "markdown", + "id": "82f46573-f165-479a-b94e-1c025fd8bcca", + "metadata": {}, + "source": [ + "#### 1.2.3. Generate cutouts\n", + "Define a function to get an image cutout from the cutout service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14f25b21-6231-4a1d-842f-9a9553a750f8", + "metadata": {}, + "outputs": [], + "source": [ + "def get_cutout(dl_result, ra, dec, session, fov):\n", + " \"\"\"\n", + " Wrapper function to generate a cutout using the cutout tool.\n", + "\n", + " Parameters\n", + " ----------\n", + " dl_result : 'pyvo.dal.DatalinkResults' The Datalink result object\n", + " containing the 'cutout-sync' ad-hoc service descriptor.\n", + " ra, dec : 'float'\n", + " the ra and dec of the cutout center\n", + " session : 'requests.Session'\n", + " An authenticated session object required to\n", + " access proprietary or restricted Rubin data services.\n", + " fov : 'float'\n", + " the edge size of the cutout in decimal degrees\n", + "\n", + " Returns\n", + " -------\n", + " ImageF(mem) : 'lsst.afw.image.ImageF' \n", + " The cutout image data instantiated directly in memory via MemFileManager.\n", + " hdul : 'astropy.io.fits.HDUList'\n", + " The identical cutout data parsed into \n", + " an Astropy FITS object for standard header and extension manipulation.\n", + " \"\"\"\n", + "\n", + " sq = SodaQuery.from_resource(dl_result,\n", + " dl_result.get_adhocservice_by_id(\"cutout-sync\"),\n", + " session=session)\n", + "\n", + " sq.circle = (ra * u.deg, dec * u.deg, fov / 2. * u.deg)\n", + "\n", + " cutout_bytes = sq.execute_stream().read()\n", + " sq.raise_if_error()\n", + " mem = MemFileManager(len(cutout_bytes))\n", + " mem.setData(cutout_bytes, len(cutout_bytes))\n", + " hdul = fits.open(io.BytesIO(cutout_bytes))\n", + " return ImageF(mem), hdul" + ] + }, + { + "cell_type": "markdown", + "id": "3d998864-d33a-449d-a28a-42e94607f901", + "metadata": {}, + "source": [ + "#### 1.2.4. Set up subplots\n", + "Define a function to organize the display with matplotlib of bulk image stamps." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "413fc23e-6c5e-47b6-997e-45d704d709a8", + "metadata": {}, + "outputs": [], + "source": [ + "def make_subplot_grid(n_subplots, figsize_per_plot=(4, 3)):\n", + " \"\"\"\n", + " Create an optimal grid of matplotlib subplots.\n", + "\n", + " Parameters\n", + " ----------\n", + " n_subplots : int\n", + " The total number of subplots required.\n", + " figsize_per_plot : tuple of float or int, optional\n", + " The (width, height) in inches for each individual subplot. \n", + " The total figure size is scaled automatically based on this \n", + " and the calculated grid size. Default is (4, 3).\n", + "\n", + " Returns\n", + " -------\n", + " fig : matplotlib.figure.Figure\n", + " The generated matplotlib figure object.\n", + " axes : numpy.ndarray of matplotlib.axes.Axes\n", + " A flattened, 1D array of exactly `n_subplots` axes objects, \n", + " ready for plotting.\n", + " \"\"\"\n", + " n_cols = math.ceil(math.sqrt(n_subplots))\n", + " n_rows = math.ceil(n_subplots / n_cols)\n", + "\n", + " figsize = (figsize_per_plot[0] * n_cols,\n", + " figsize_per_plot[1] * n_rows)\n", + " fig, axes = plt.subplots(\n", + " n_rows,\n", + " n_cols,\n", + " figsize=figsize,\n", + " gridspec_kw={\n", + " \"wspace\": 0,\n", + " \"hspace\": 0})\n", + "\n", + " axes = axes.flatten()\n", + "\n", + " for ax in axes:\n", + " ax.axis(\"off\")\n", + "\n", + " for ax in axes[n_subplots:]:\n", + " ax.remove()\n", + "\n", + " return fig, axes[:n_subplots]" + ] + }, + { + "cell_type": "markdown", + "id": "b1091fba-dbf4-4bdf-9970-f1a69951a4f2", + "metadata": {}, + "source": [ + "## 2. Create single-epoch triplet stamps\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "17283a9d-e746-492b-ae2a-19744318573c", + "metadata": {}, + "source": [ + "### 2.1 Define target" + ] + }, + { + "cell_type": "markdown", + "id": "4e29bae2-6252-44a9-a452-0adbd765839a", + "metadata": {}, + "source": [ + "### 2.1.1 Find the `ssObjectId` for the Solar System object of interest" + ] + }, + { + "cell_type": "markdown", + "id": "2383585f-7735-43c1-8b51-f361fd260e4c", + "metadata": {}, + "source": [ + "Query the `MPCORB` table for the object designation, orbital parameters, and `ssObjectId` for all DP1 Solar System objects." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4bd9fd24-68bb-4aa3-b7ed-73b4f3936d17", + "metadata": {}, + "outputs": [], + "source": [ + "query = \"SELECT mpc.mpcDesignation, \"\\\n", + " \"mpc.ssObjectId, \"\\\n", + " \"mpc.q, mpc.e, mpc.incl, mpc.mpcH, \"\\\n", + " \"sso.discoverySubmissionDate, \"\\\n", + " \"sso.numObs \"\\\n", + " \"FROM dp1.MPCORB as mpc \"\\\n", + " \"INNER JOIN dp1.SSObject as sso \"\\\n", + " \"ON mpc.ssObjectId = sso.ssObjectId \"\\\n", + " \"ORDER BY mpc.mpcDesignation\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4d6c74bc-d2b8-4b61-be28-a337074525a6", + "metadata": {}, + "outputs": [], + "source": [ + "job = service.submit_job(query)\n", + "job.run()\n", + "job.wait(phases=['COMPLETED', 'ERROR'])\n", + "print('Job phase is', job.phase)\n", + "if job.phase == 'ERROR':\n", + " job.raise_if_error()" + ] + }, + { + "cell_type": "markdown", + "id": "84ab19bf-6b33-47fc-acd2-cfd573ebd3b2", + "metadata": {}, + "source": [ + "Fetch the job results and assign to an astropy `result` table. There are 431 Solar System objects in DP1." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8cf6dc90-6384-4f6c-854e-11b0af19bddb", + "metadata": {}, + "outputs": [], + "source": [ + "assert job.phase == 'COMPLETED'\n", + "result = job.fetch_result()\n", + "print(len(result))" + ] + }, + { + "cell_type": "markdown", + "id": "e6cc05ba-5b1a-4edf-b8b2-3e733c181007", + "metadata": {}, + "source": [ + "Convert the `result` astropy table to a pandas dataframe." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d86bb178-6244-4d34-8506-9a155f7f8639", + "metadata": {}, + "outputs": [], + "source": [ + "result_df = pd.DataFrame(result)" + ] + }, + { + "cell_type": "markdown", + "id": "b5a385e0-bd56-4fca-8cc2-500fe6d02212", + "metadata": {}, + "source": [ + "Print the results, sorting the table based on the parameters of interest. For example, find a new DP1 discovery with 10 observations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c98b8334-7fe8-4582-80df-3494038a02bd", + "metadata": {}, + "outputs": [], + "source": [ + "#df_discoveries = result_df.loc[result_df['discoverySubmissionDate'] > 0]\n", + "#df_discoveries.sort_values(by=[\"numObs\"]).head(225).tail(10)\n", + "result_df.sort_values(by=[\"mpcH\"]).head(25)" + ] + }, + { + "cell_type": "markdown", + "id": "f1b62464-0814-4311-bac2-2d5434975945", + "metadata": {}, + "source": [ + "An object that satisfies our parameters of interest is 2024 WW106 (`ssObjectId` = 23133931615303986), which is a Rubin DP1 discovery with 10 observations." + ] + }, + { + "cell_type": "markdown", + "id": "0a79c630-14d8-40b4-9473-05416ae70f10", + "metadata": {}, + "source": [ + "### 2.1.2 Find the visits for the `ssObjectId` of interest" + ] + }, + { + "cell_type": "markdown", + "id": "028fd7d4-1e33-4806-997e-dce81b092719", + "metadata": {}, + "source": [ + "Query the DiaSource catalog for the ra, dec, band, detector, and visit for each observation of the object of interest, inputting the ssObjectId for the object of interest (20892032288436298) into the query below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b83ff949-82ed-49a9-89f9-e9d77fa0f45c", + "metadata": {}, + "outputs": [], + "source": [ + "query = \"SELECT mpc.mpcDesignation, \"\\\n", + " \"mpc.q, mpc.e, mpc.incl, \"\\\n", + " \"mpc.ssObjectId, \"\\\n", + " \"diasource.ssObjectId, \"\\\n", + " \"diasource.ra, diasource.dec, \"\\\n", + " \"diasource.band, diasource.detector, \"\\\n", + " \"diasource.visit, diasource.midpointMjdTai \"\\\n", + " \"FROM dp1.DiaSource as diasource \"\\\n", + " \"INNER JOIN dp1.MPCORB as mpc \"\\\n", + " \"ON diasource.ssObjectId = mpc.ssObjectId \"\\\n", + " \"WHERE diasource.ssObjectId = 21163611442460750 \"\\\n", + " \"ORDER BY diasource.midpointMjdTai\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cdeee2c8-d664-4ef0-8bad-673233f1a887", + "metadata": {}, + "outputs": [], + "source": [ + "job = service.submit_job(query)\n", + "job.run()\n", + "job.wait(phases=['COMPLETED', 'ERROR'])\n", + "print('Job phase is', job.phase)\n", + "if job.phase == 'ERROR':\n", + " job.raise_if_error()" + ] + }, + { + "cell_type": "markdown", + "id": "e09351de-108f-4f0e-a1d3-bbf396f7bed0", + "metadata": {}, + "source": [ + "Fetch the job results and assign to an astropy `result` table. There should be 10 observations for 2024 WW106 (ssObjectId = 23133931615303986) in DP1." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10edf514-49b2-4f86-8220-9be33977cbbf", + "metadata": {}, + "outputs": [], + "source": [ + "assert job.phase == 'COMPLETED'\n", + "result = job.fetch_result()\n", + "print(len(result))" + ] + }, + { + "cell_type": "markdown", + "id": "b1565304-45a8-428b-93e7-26fa009da852", + "metadata": {}, + "source": [ + "Convert the `result` to an astropy table." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fc98a1cf-9cd5-4e58-b293-c8028dba1a63", + "metadata": {}, + "outputs": [], + "source": [ + "tab = result.to_table()" + ] + }, + { + "cell_type": "markdown", + "id": "c23dc69b-6d64-441f-b85d-ae466af0513e", + "metadata": {}, + "source": [ + "Option to print results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c44fbd18-fb10-41ba-9a88-6255c8a9ea8e", + "metadata": {}, + "outputs": [], + "source": [ + "tab" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e8622ff9-89ea-48d2-98d0-6c8cf4a56ec6", + "metadata": {}, + "outputs": [], + "source": [ + "ssObjectId = tab['ssObjectId'][0]\n", + "first_detect = tab['midpointMjdTai'][0]\n", + "last_detect = tab['midpointMjdTai'][-1]\n", + "print(ssObjectId, first_detect, last_detect)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9a54a3d-2ac3-4a67-8cee-8629834f14d7", + "metadata": {}, + "outputs": [], + "source": [ + "60638.12093944429\t60638.12129175926" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ec5ba20f-3c99-4d4c-9b24-85e5f70617cd", + "metadata": {}, + "outputs": [], + "source": [ + "60638.123354536954\t60638.12370675926\t" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ba69a0af-4566-48b4-bd1f-a25a4ed78ee0", + "metadata": {}, + "outputs": [], + "source": [ + "60638.125841608744\t60638.12619377315" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a90fd1b5-b0b4-49c6-b3db-bbd33f7effec", + "metadata": {}, + "outputs": [], + "source": [ + "60643.08322954877\t60643.0835818287" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f7dd3827-1cca-4254-8cb1-fb0f753ab62e", + "metadata": {}, + "outputs": [], + "source": [ + "60643.08554648143\t60643.08589875" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "969b1377-a08e-4cc1-8dcc-49cd00b203c3", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "67f36c09-ffad-4b52-a6a8-7ce35a75c384", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10ff9108-e255-4bfd-8e4e-ee08bb787bf6", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4ff59cd6-d94b-4d1e-a232-da5fd620085b", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "3c2b6bbc-b9d0-4888-8f98-b3df84399063", + "metadata": {}, + "source": [ + "### 2.1. Define target \n", + "\n", + "Type Ia Supernovae (SNIa) have homogenous light curves with similar rise and decay rates. A candidate SNIa search can be conducted in DP1 by looking for fading transients that exhibit dimming a rate consistent with SNIa: ~0.05 mag / day = ~5% flux fading per day (See Papadogiannakis et al. 2019). \n", + "\n", + "Note that the 7-week duration of the commissioning survey with ComCam in DP1 (24 Oct 2024 - 11 Dec 2024) should sufficiently sample that fading emission from a SNIa.\n", + "\n", + "Define the ra and dec of the SNIa candidate that was identified as a DIA source in DP1 imaging (see DP1 notebook tutorial 306.2)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d468a154-8d14-4b67-854f-689a0314d959", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c94a33e1-3a9b-48a5-9c20-76fbd9afe8ef", + "metadata": {}, + "outputs": [], + "source": [ + "#ra = 53.124767650110215\n", + "#dec = -27.739814591611168" + ] + }, + { + "cell_type": "markdown", + "id": "e303cf67-36d1-4d4c-8527-76561dd528b3", + "metadata": {}, + "source": [ + "\n", + "A triplet for a DIA source refers to the set of three stamps\n", + "made from the science, template, and difference images.\n", + "They are typically displayed side-by-side and serve as a visualization\n", + "of the detection.\n", + "\n", + "This section uses the SIA service to find images\n", + "and the image cutout service to create a \"cutout triplet\".\n", + "Both services are demonstrated in 100-level tutorials.\n", + "\n", + "Define `circle`, the position (RA and Dec) and radius (in degrees) to search for science (`visit_image`), reference (`template_coadd`), and difference (`difference_image`) images with SIA." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "943afd28-ecbb-49f0-b444-daf31e6017fe", + "metadata": {}, + "outputs": [], + "source": [ + "#circle = (ra, dec, 0.001)\n", + "#print(ra, dec)" + ] + }, + { + "cell_type": "markdown", + "id": "823d68a9-210e-4201-99b0-b520be6fe80f", + "metadata": {}, + "source": [ + "The cell below will perform a query to make sure the images retrieved span the time during which the DIAObject was changing and thus detectable as a DIASource. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "72a1d19c-2173-4839-a016-c9193f9ccd1a", + "metadata": {}, + "outputs": [], + "source": [ + "dia_query = \"SELECT MIN(midpointMjdTai) as first_detect, ssObjectId, \" \\\n", + " \"MAX(midpointMjdTai) as last_detect \" \\\n", + " \"FROM dp1.DiaSource \" \\\n", + " \"WHERE ssObjectId = 20892032372322627\"\n", + "\n", + "#dia_query = \"SELECT MIN(midpointMjdTai) as first_detect, DiaObjectId, \" \\\n", + "# \"MAX(midpointMjdTai) as last_detect \" \\\n", + "# \"FROM dp1.DiaSource \" \\\n", + "# \"WHERE CONTAINS(POINT('ICRS', coord_ra, coord_dec), \" \\\n", + "# \"CIRCLE('ICRS',\"+str(ra)+\",\"+str(dec)+\",0.001)) = 1 \"\n", + "\n", + "#query = \"SELECT mpc.mpcDesignation, \"\\\n", + "# \"mpc.q, mpc.e, mpc.incl, \"\\\n", + "# \"mpc.ssObjectId, \"\\\n", + "# \"diasource.ssObjectId, \"\\\n", + "# \"diasource.ra, diasource.dec, \"\\\n", + "# \"diasource.band, diasource.detector, \"\\\n", + "# \"diasource.visit, diasource.midpointMjdTai \"\\\n", + "# \"FROM dp1.DiaSource as diasource \"\\\n", + "# \"INNER JOIN dp1.MPCORB as mpc \"\\\n", + "# \"ON diasource.ssObjectId = mpc.ssObjectId \"\\\n", + "# \"WHERE diasource.ssObjectId = 20892032372322627 \"\\\n", + "# \"ORDER BY diasource.midpointMjdTai\"\n", + "\n", + "dia_job = service.submit_job(dia_query)\n", + "dia_job.run()\n", + "dia_job.wait(phases=['COMPLETED', 'ERROR'])\n", + "dia_results = dia_job.fetch_result().to_table()\n", + "\n", + "#masked_array(data=[1, 2, 5],\n", + "# mask=[False, False, False],\n", + "# fill_value=999999)\n", + "\n", + "ssObjectId = '20892032372322627'\n", + "first_detect = dia_results['first_detect'][0]\n", + "last_detect = dia_results['last_detect'][0]\n", + "\n", + "#print(ssObjectId, first_detect, last_detect)\n", + "dia_results" + ] + }, + { + "cell_type": "markdown", + "id": "e49e571a-c652-4e7b-9a06-81fd8a17e6d1", + "metadata": {}, + "source": [ + "### 2.2. Query the SIA service for images\n", + "\n", + "Use the SIA service to search for calibration level 2 images (`visit_images`) that overlap the search `circle`. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "420b5a62-6a12-4eb5-9651-e557000bb949", + "metadata": {}, + "outputs": [], + "source": [ + "for row in tab:\n", + " ra = row['ra']\n", + " dec = row['dec']\n", + " circle = (ra, dec, 0.001)\n", + " visit = row['visit']\n", + " detector = row['detector']\n", + " table_list = []\n", + "# print(circle, visit, detector)\n", + "\n", + "# results_sci = sia_service.search(pos=circle, calib_level=2)\n", + " results_sci = sia_service.search(pos=circle,\n", + " lsst_visit=visit,\n", + " lsst_detector=detector,\n", + " obs_collection='LSST.DP1',\n", + " calib_level=2,\n", + " dataproduct_type='image',\n", + " instrument_name='LSSTComCam',\n", + " dataproduct_subtype='lsst.visit_image')\n", + "\n", + "# \"FROM ivoa.ObsCore WHERE lsst_visit = \"+str(tab1['visit'])+\" AND lsst_detector = \"+str(tab1['detector'])+\" AND \"\\\n", + "# \"obs_collection = 'LSST.DP1' AND calib_level = 2 AND dataproduct_type = 'image' AND \"\\\n", + "# \"instrument_name = 'LSSTComCam' AND \"\\\n", + "# \"dataproduct_subtype = 'lsst.visit_image' \"\\\n", + "## tmp_table = results_sci.to_table()\n", + "# print(tmp_table)\n", + "## table_list.append(tmp_table)\n", + "## print(table_list)\n", + "#lvl2_table = np.concatenate(table_list[0], axis=0)\n", + "#lvl2_table = np.vstack(table_list)\n", + "##lvl2_table = np.array(table_list)\n", + "#lvl2_table = table_list[0]\n", + "#lvl2_table = tmp_table\n", + "\n", + "#tmp_table\n", + "#table_list\n", + "\n", + "lvl2_table = results_sci.to_table()\n", + "#len(lvl2_table)\n", + "lvl2_table" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c206f96a-7b3e-4716-801f-42e9979d8fff", + "metadata": {}, + "outputs": [], + "source": [ + "ra = tab['ra'][0]\n", + "dec = tab['dec'][0]\n", + "circle = (ra, dec, 0.001)\n", + "visit = tab['visit'][0]\n", + "detector = tab['detector'][0]\n", + "\n", + "# results_sci = sia_service.search(pos=circle, calib_level=2)\n", + "results_sci = sia_service.search(pos=circle,\n", + " lsst_visit=visit,\n", + " lsst_detector=detector,\n", + " obs_collection='LSST.DP1',\n", + " calib_level=2,\n", + " dataproduct_type='image',\n", + " instrument_name='LSSTComCam',\n", + " dataproduct_subtype='lsst.visit_image')\n", + "\n", + "# \"FROM ivoa.ObsCore WHERE lsst_visit = \"+str(tab1['visit'])+\" AND lsst_detector = \"+str(tab1['detector'])+\" AND \"\\\n", + "# \"obs_collection = 'LSST.DP1' AND calib_level = 2 AND dataproduct_type = 'image' AND \"\\\n", + "# \"instrument_name = 'LSSTComCam' AND \"\\\n", + "# \"dataproduct_subtype = 'lsst.visit_image' \"\\\n", + "\n", + "lvl2_table = results_sci.to_table()\n", + "len(lvl2_table)\n", + "#lvl2_table" + ] + }, + { + "cell_type": "markdown", + "id": "e95d41db-dc67-4d75-b1cd-911fef74c112", + "metadata": {}, + "source": [ + "Filter the results for r-band `visit_images`, and to only return the visit images during which there was a DIA detection. The `if` statement ensures that a DIA detection was identified for that object. Lastly, sort the query results by observation time." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "47c923a8-8001-4ad6-9474-6dd31d2b683a", + "metadata": {}, + "outputs": [], + "source": [ + "if (not np.ma.is_masked(first_detect)\n", + " and first_detect is not None and not np.ma.is_masked(last_detect)\n", + " and last_detect is not None):\n", + "\n", + " tx = np.where(\n", + " (lvl2_table['dataproduct_subtype'] == 'lsst.visit_image')\n", + " & (lvl2_table['lsst_band'] == 'g')\n", + " & (lvl2_table['t_min'] >= first_detect)\n", + " & (lvl2_table['t_max'] <= last_detect)\n", + " )[0]\n", + "\n", + " print(f\"Found {len(tx)} visits taken between MJD {first_detect: .2f} and {last_detect: .2f}.\")\n", + "\n", + "else:\n", + " print(\"No DIA sources were ever detected in this region. Returning empty table.\")\n", + " tx = []\n", + "\n", + "scitab = lvl2_table[tx]\n", + "scitab.sort('t_max')\n", + "len(scitab)" + ] + }, + { + "cell_type": "markdown", + "id": "bd035645-1a36-4510-a27a-2d009c511548", + "metadata": {}, + "source": [ + "Use the SIA service to search for calibration level 3 images (`template_coadd` images and `difference_images`) that overlap the search `circle`. Filter the results for r-band `template_coadd` images and `difference_images` and sort the latter by observation time. No sorting is performed for the reference template images because there is only one image." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d4667404-d5b7-444c-b684-534c32d9e21a", + "metadata": {}, + "outputs": [], + "source": [ + "results = sia_service.search(pos=circle, calib_level=3)\n", + "\n", + "lvl3_table = results.to_table()\n", + "\n", + "tx = np.where((lvl3_table['dataproduct_subtype'] == 'lsst.template_coadd')\n", + " & (lvl3_table['lsst_band'] == 'g'))[0]\n", + "reftab = lvl3_table[tx]\n", + "\n", + "tx = np.where((lvl3_table['dataproduct_subtype'] == 'lsst.difference_image')\n", + " & (lvl3_table['lsst_band'] == 'g'))[0]\n", + "difftab = lvl3_table[tx]\n", + "difftab.sort('t_max')" + ] + }, + { + "cell_type": "markdown", + "id": "11fe4a10-3433-4795-b456-2b3aa47bd0de", + "metadata": {}, + "source": [ + "Print the date of the earliest r-band image, for which bulk image stamps will be retrieved." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0e12ceb1-4552-4595-a923-ba98e457ea10", + "metadata": {}, + "outputs": [], + "source": [ + "print('begin date:', scitab['t_max'][0], difftab['t_max'][0])\n", + "print('end date:', scitab['t_max'][len(scitab['t_max'])-1])\n", + "print('number of visits:', len(scitab['t_max']))" + ] + }, + { + "cell_type": "markdown", + "id": "8911cca4-1002-4506-8532-77b50dbc4c79", + "metadata": {}, + "source": [ + "Retrieve the datalink VOTable documents using the access URLs from the first entries in each of the table results. The image products being retrieved for the science and difference images correspond to the earliest r-band image products taken." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca47b201-97ea-4d72-b665-e7e17438b752", + "metadata": {}, + "outputs": [], + "source": [ + "dl_result_sci = DatalinkResults.from_result_url(scitab['access_url'][1], session=get_pyvo_auth())\n", + "\n", + "dl_result_ref = DatalinkResults.from_result_url(reftab['access_url'][0], session=get_pyvo_auth())\n", + "\n", + "dl_result_diff = DatalinkResults.from_result_url(difftab['access_url'][1], session=get_pyvo_auth())" + ] + }, + { + "cell_type": "markdown", + "id": "75916a2b-7448-41c7-9181-ba956e1be072", + "metadata": {}, + "source": [ + "### 2.3. Retrieve stamps\n", + "\n", + "Retrieve bulk image stamps with an edge size of `fov` (in degrees). The `get_cutout` function returns both the image array (first parameter) and the corresponding Header Data Unit List (HDUL), a Python object used by astropy to contain one or more Header Data Units (HDUs) that contain astronomical image data, metadata, or tables.\n", + "\n", + "Define the image cutout to be 0.004 degrees (~14 arcseconds) on a side." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5561ac39-d6ad-4f73-8401-dbabb0df0e27", + "metadata": {}, + "outputs": [], + "source": [ + "fov = 0.004\n", + "sci, scihdul = get_cutout(dl_result_sci, ra, dec, get_pyvo_auth(), fov)\n", + "ref, refhdul = get_cutout(dl_result_ref, ra, dec, get_pyvo_auth(), fov)\n", + "diff, diffhdul = get_cutout(dl_result_diff, ra, dec, get_pyvo_auth(), fov)" + ] + }, + { + "cell_type": "markdown", + "id": "396186cf-6a20-4c43-b05e-058213db63a1", + "metadata": {}, + "source": [ + "First, visualize the cutouts of the science, template, and difference images by displaying them side by side." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "af25acb8-80c3-4219-9638-2eaa88aaafd7", + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(1, 3, figsize=(8, 3))\n", + "plt.sca(ax[0])\n", + "display1 = afwDisplay.Display(frame=fig)\n", + "display1.scale('linear', 'zscale')\n", + "display1.mtv(sci)\n", + "plt.title('science')\n", + "plt.sca(ax[1])\n", + "display2 = afwDisplay.Display(frame=fig)\n", + "display2.scale('linear', 'zscale')\n", + "display2.mtv(ref)\n", + "plt.title('template')\n", + "plt.sca(ax[2])\n", + "display3 = afwDisplay.Display(frame=fig)\n", + "display3.scale('linear', 'zscale')\n", + "display3.mtv(diff)\n", + "ax[0].set_axis_off()\n", + "ax[1].set_axis_off()\n", + "ax[2].set_axis_off()\n", + "plt.title('difference')\n", + "plt.tight_layout()\n", + "fig.suptitle('ssObject '+str(ssObjectId)+', MJD='+str(np.round(scitab['t_max'][0], 2)))\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "707eeb7d-88cb-4bc2-af2a-d1dba6c92069", + "metadata": {}, + "source": [ + "> **Figure 1**: The cutout triplet for the first detection of this `ssObject`, a candidate SN Ia." + ] + }, + { + "cell_type": "markdown", + "id": "c37ba588-0cdf-482d-b868-47c0aa8074cf", + "metadata": {}, + "source": [ + "### 2.4. Rotate visit image\n", + "\n", + "As Figure 1 shows, visit images are not aligned with the template image (North up, East left) since they are taken at many different telescope orientations. This section demonstrates how to align the visit image to match the orientation of the template and difference cutouts using the `reproject` python package. `reproject` requires the world coordinate system (WCS) of the existing and desired coordinate systems, and the image pixels of the image to reproject, in order to perform the calculation. \n", + "\n", + "The cell below extracts these from the HUDL. The structure of the ImageF object returned by the cutout service has two HDUL extensions. The extension 0 contains a primary header of telescope metadata and no image pixels, while the extension 1 contains the science header and the science image pixels. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a0e82f29-cd69-488e-b91f-90a7d200170d", + "metadata": {}, + "outputs": [], + "source": [ + "sci_primary_header = scihdul[0].header\n", + "sci_hdu = scihdul[1]\n", + "sci_header = scihdul[1].header\n", + "scidata = scihdul[1].data\n", + "sciwcs = WCS(scihdul[1].header)\n", + "\n", + "ref_primary_header = refhdul[0].header\n", + "ref_hdu = refhdul[1]\n", + "ref_header = refhdul[1].header\n", + "refdata = refhdul[1].data\n", + "refwcs = WCS(refhdul[1].header)\n", + "\n", + "diff_primary_header = diffhdul[0].header\n", + "diff_hdu = diffhdul[1]\n", + "diff_header = diffhdul[1].header\n", + "diffdata = diffhdul[1].data\n", + "diffwcs = WCS(diffhdul[1].header)" + ] + }, + { + "cell_type": "markdown", + "id": "02974977-001b-467e-ae0d-dc44f105872c", + "metadata": {}, + "source": [ + "Use the `reproject_interp` function to put the science visit image onto the WCS of the template image." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "635013a0-e962-4958-bb09-007ac1cb169e", + "metadata": {}, + "outputs": [], + "source": [ + "reproj_scidata, footprint = reproject_interp((scidata, sciwcs), refwcs)\n", + "reproj_diffdata, footprint = reproject_interp((diffdata, diffwcs), refwcs)" + ] + }, + { + "cell_type": "markdown", + "id": "6b3360a9-ccc6-47bb-bc45-b87f208dacda", + "metadata": {}, + "source": [ + "Plot the reprojected science visit image together with the template image to compare." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d9734ade-5848-4e44-8e38-ea70aebd6a47", + "metadata": {}, + "outputs": [], + "source": [ + "ax1 = plt.subplot(1, 3, 1, projection=WCS(ref_hdu.header))\n", + "ax1.imshow(reproj_scidata, origin='lower', vmin=np.nanpercentile(reproj_scidata, 1),\n", + " vmax=np.nanpercentile(reproj_scidata, 99))\n", + "ax1.coords['ra'].set_axislabel('Right Ascension')\n", + "ax1.coords['dec'].set_axislabel('Declination')\n", + "ax1.set_title('Reprojected Visit Image')\n", + "\n", + "ax2 = plt.subplot(1, 3, 2, projection=WCS(ref_hdu.header))\n", + "ax2.imshow(refdata, origin='lower', vmin=np.nanpercentile(refdata, 1),\n", + " vmax=np.nanpercentile(refdata, 99))\n", + "ax2.coords['ra'].set_axislabel('Right Ascension')\n", + "ax2.coords['dec'].set_axislabel('Declination')\n", + "ax2.coords['dec'].set_axislabel_position('r')\n", + "ax2.coords['dec'].set_ticklabel_position('r')\n", + "ax2.set_title('Template Image')\n", + "\n", + "ax3 = plt.subplot(1, 3, 3, projection=WCS(ref_hdu.header))\n", + "ax3.imshow(reproj_diffdata, origin='lower', vmin=np.nanpercentile(reproj_diffdata, 1),\n", + " vmax=np.nanpercentile(reproj_diffdata, 99))\n", + "ax3.coords['ra'].set_axislabel('Right Ascension')\n", + "ax3.coords['dec'].set_axislabel('Declination')\n", + "ax3.coords['dec'].set_axislabel_position('r')\n", + "ax3.coords['dec'].set_ticklabel_position('r')\n", + "ax3.set_title('Reprojected Difference Image')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "93eaaaf9-62b1-496e-bed6-82d01be0fbb2", + "metadata": {}, + "source": [ + "> **Figure 2**: The science visit image (left) after being reprojected onto the same WCS as the template image cutout (right).\n" + ] + }, + { + "cell_type": "markdown", + "id": "19ea5356-b986-42b1-9a88-5ffc2d2e90ba", + "metadata": {}, + "source": [ + "## 3. Bulk image stamps\n", + "\n", + "Bulk image stamps will be a key visualization tool for DIA objects. Below, demonstrate how to retrieve many image stamps (and save as png files). Since many visits span the time during which the target was a DIA source, limit the number to visualize to the first 20 (to save time). The full set of stamps can be visualized by replacing the first line with `num_visits = len(scitab['t_max'])`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7bf8ad75-a0ef-4546-9020-8fb6cde2c4d5", + "metadata": {}, + "outputs": [], + "source": [ + "#num_visits = 20\n", + "num_visits = len(scitab['t_max'])\n", + "print('number of visits:', num_visits)\n", + "for i in range(num_visits):\n", + " plt.title(f\"MJD {np.round(scitab['t_max'][i], 4)}\")\n", + "\n", + " dl_result_sci = DatalinkResults.from_result_url(scitab['access_url'][i],\n", + " session=get_pyvo_auth())\n", + "\n", + " sci, scihdul = get_cutout(dl_result_sci, ra, dec, get_pyvo_auth(), fov)\n", + " sci_hdu = scihdul[1]\n", + " sci_header = scihdul[1].header\n", + " scidata = scihdul[1].data\n", + " sciwcs = WCS(scihdul[1].header)\n", + " reproj_scidata, footprint = reproject_interp((scidata, sciwcs), refwcs)\n", + "\n", + " plt.imshow(reproj_scidata, origin='lower', vmin=np.nanpercentile(reproj_scidata, 1),\n", + " vmax=np.nanpercentile(reproj_scidata, 99))\n", + "\n", + " figname = os.path.join(tempdir, 'stamp_' + str(i) + '.png')\n", + " if os.path.isfile(figname):\n", + " os.remove(figname)\n", + " plt.savefig(figname)" + ] + }, + { + "cell_type": "markdown", + "id": "357dc241-c5bd-4e58-947c-ce7181c35518", + "metadata": {}, + "source": [ + "Below, visualize the bulk image stamps that were saved to disk." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "52fec53e-9f55-4c06-ac54-08005285878b", + "metadata": {}, + "outputs": [], + "source": [ + "fig, axes = make_subplot_grid(num_visits)\n", + "for i, ax in enumerate(axes):\n", + "\n", + " j = i\n", + " figname = os.path.join(tempdir, 'stamp_' + str(j) + '.png')\n", + " img = mpimg.imread(figname)\n", + "\n", + " ax.imshow(img)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "2b54d1d3-9564-4836-8265-4c8eedc4502a", + "metadata": {}, + "source": [ + "> **Figure 3**: Image stamps from the science visit images of the DIA object, in chronological order, after being reprojected onto the same WCS as the template image (right). " + ] + }, + { + "cell_type": "markdown", + "id": "4340da3a-3f25-4007-8615-c204d3ef3e23", + "metadata": {}, + "source": [ + "## 4. Visualize cutouts with gif\n", + "\n", + "Below, the cell will use the `make_gif` function defined in Section 1.2.3 to make a single gif movie out of all the pngs in the folder from the visit images in chronological order." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0257c6de-2296-4ed2-8173-ac3d74f99e2e", + "metadata": {}, + "outputs": [], + "source": [ + "print(tempdir)\n", + "make_gif(tempdir)\n", + "dimg(data=open(tempdir+'/animation.gif', 'rb').read())" + ] + }, + { + "cell_type": "markdown", + "id": "1c07a8b1-f24a-4c03-a56b-515a381cfa42", + "metadata": {}, + "source": [ + "> **Figure 4**: A gif animation generated from the reprojected visit image stamps in Figure 3." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "LSST", + "language": "python", + "name": "lsst" + }, + "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.11" + }, + "toc-autonumbering": false + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 2fea30b966597e7306c129946bbff4babaa08b18 Mon Sep 17 00:00:00 2001 From: sgreenstreet Date: Tue, 16 Jun 2026 01:46:33 +0000 Subject: [PATCH 2/4] new notebook --- .../308_Solar_System/308_5_Image_stamps.ipynb | 673 ++++++++++-------- 1 file changed, 385 insertions(+), 288 deletions(-) diff --git a/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb b/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb index 0a2cc85..8810c7c 100644 --- a/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb +++ b/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb @@ -22,7 +22,7 @@ "Data Release: Data Preview 1
\n", "Container Size: large
\n", "LSST Science Pipelines version: r29.2.0
\n", - "Last verified to run: 2026-06-11
\n", + "Last verified to run: 2026-06-15
\n", "Repository: github.com/lsst/tutorial-notebooks
" ] }, @@ -58,7 +58,7 @@ "\n", "This notebook demonstrates how to produce bulk image stamps using the Rubin cutout service for Solar System objects.\n", "\n", - "**Related tutorials**: See also tutorial notebook 103.9 on image stamps, which demonstrates how to perform bulk cutouts using the cutout service that returns only the image extension to minimize the data transferred and tutorial notebook 103.4 that demonstrates the return of exposure cutouts as Rubin LSST image type ExposureF and MaskedImageF." + "**Related tutorials**: See also tutorial notebook 103.9 on image stamps, which demonstrates how to perform bulk cutouts using the cutout service that returns only the image extension to minimize the data transferred and tutorial notebook 103.4 that demonstrates the return of exposure cutouts as Rubin LSST image type ExposureF and MaskedImageF. Both of these notebooks retrieve image stamps for a single ra and dec." ] }, { @@ -101,6 +101,7 @@ "import getpass\n", "import glob\n", "import os\n", + "import shutil\n", "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n", "\n", @@ -109,7 +110,7 @@ "from lsst.rsp.utils import get_pyvo_auth\n", "\n", "import lsst.afw.display as afwDisplay\n", - "from lsst.afw.image import ImageF\n", + "from lsst.afw.image import ExposureF, ImageF\n", "from lsst.afw.fits import MemFileManager\n", "\n", "from pyvo.dal.adhoc import DatalinkResults, SodaQuery\n", @@ -398,16 +399,10 @@ " fig, axes = plt.subplots(\n", " n_rows,\n", " n_cols,\n", - " figsize=figsize,\n", - " gridspec_kw={\n", - " \"wspace\": 0,\n", - " \"hspace\": 0})\n", + " figsize=figsize)\n", "\n", " axes = axes.flatten()\n", "\n", - " for ax in axes:\n", - " ax.axis(\"off\")\n", - "\n", " for ax in axes[n_subplots:]:\n", " ax.remove()\n", "\n", @@ -419,16 +414,7 @@ "id": "b1091fba-dbf4-4bdf-9970-f1a69951a4f2", "metadata": {}, "source": [ - "## 2. Create single-epoch triplet stamps\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "id": "17283a9d-e746-492b-ae2a-19744318573c", - "metadata": {}, - "source": [ - "### 2.1 Define target" + "## 2. Define target" ] }, { @@ -436,7 +422,7 @@ "id": "4e29bae2-6252-44a9-a452-0adbd765839a", "metadata": {}, "source": [ - "### 2.1.1 Find the `ssObjectId` for the Solar System object of interest" + "### 2.1. Find the `ssObjectId` for a Solar System object of interest" ] }, { @@ -523,7 +509,7 @@ "id": "b5a385e0-bd56-4fca-8cc2-500fe6d02212", "metadata": {}, "source": [ - "Print the results, sorting the table based on the parameters of interest. For example, find a new DP1 discovery with 10 observations." + "Print the results, sorting the table based on the parameters of interest. For example, find a new DP1 discovery with ~30 observations in total." ] }, { @@ -533,9 +519,8 @@ "metadata": {}, "outputs": [], "source": [ - "#df_discoveries = result_df.loc[result_df['discoverySubmissionDate'] > 0]\n", - "#df_discoveries.sort_values(by=[\"numObs\"]).head(225).tail(10)\n", - "result_df.sort_values(by=[\"mpcH\"]).head(25)" + "df_discoveries = result_df.loc[result_df['discoverySubmissionDate'] > 0]\n", + "df_discoveries.sort_values(by=[\"numObs\"]).tail(10)" ] }, { @@ -543,7 +528,7 @@ "id": "f1b62464-0814-4311-bac2-2d5434975945", "metadata": {}, "source": [ - "An object that satisfies our parameters of interest is 2024 WW106 (`ssObjectId` = 23133931615303986), which is a Rubin DP1 discovery with 10 observations." + "An object that satisfies our parameters of interest is 2024 WP103 (`ssObjectId` = 23133931615301936), which is a Rubin DP1 discovery with 29 observations." ] }, { @@ -551,7 +536,7 @@ "id": "0a79c630-14d8-40b4-9473-05416ae70f10", "metadata": {}, "source": [ - "### 2.1.2 Find the visits for the `ssObjectId` of interest" + "### 2.2. Find the visits for the `ssObjectId` of interest" ] }, { @@ -559,7 +544,7 @@ "id": "028fd7d4-1e33-4806-997e-dce81b092719", "metadata": {}, "source": [ - "Query the DiaSource catalog for the ra, dec, band, detector, and visit for each observation of the object of interest, inputting the ssObjectId for the object of interest (20892032288436298) into the query below." + "Query the DiaSource catalog for the ra, dec, band, detector, and visit for each observation of the object of interest, inputting the ssObjectId for the object of interest (20892032288436298) into the query below. Order the query results by the observation midpoint." ] }, { @@ -570,7 +555,7 @@ "outputs": [], "source": [ "query = \"SELECT mpc.mpcDesignation, \"\\\n", - " \"mpc.q, mpc.e, mpc.incl, \"\\\n", + " \"mpc.q, mpc.e, mpc.incl, mpc.mpcH, \"\\\n", " \"mpc.ssObjectId, \"\\\n", " \"diasource.ssObjectId, \"\\\n", " \"diasource.ra, diasource.dec, \"\\\n", @@ -579,7 +564,7 @@ " \"FROM dp1.DiaSource as diasource \"\\\n", " \"INNER JOIN dp1.MPCORB as mpc \"\\\n", " \"ON diasource.ssObjectId = mpc.ssObjectId \"\\\n", - " \"WHERE diasource.ssObjectId = 21163611442460750 \"\\\n", + " \"WHERE diasource.ssObjectId = 23133931615301936 \"\\\n", " \"ORDER BY diasource.midpointMjdTai\"" ] }, @@ -603,7 +588,7 @@ "id": "e09351de-108f-4f0e-a1d3-bbf396f7bed0", "metadata": {}, "source": [ - "Fetch the job results and assign to an astropy `result` table. There should be 10 observations for 2024 WW106 (ssObjectId = 23133931615303986) in DP1." + "Fetch the job results and assign to an astropy `result` table. There should be 29 observations for Rubin discovery 2024 WP103 (`ssObjectId` = 23133931615301936) in DP1." ] }, { @@ -651,391 +636,444 @@ "metadata": {}, "outputs": [], "source": [ - "tab" + "# tab" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "e8622ff9-89ea-48d2-98d0-6c8cf4a56ec6", + "cell_type": "markdown", + "id": "eb4d6119-36db-4624-ae5e-0aff8dffa13e", "metadata": {}, - "outputs": [], "source": [ - "ssObjectId = tab['ssObjectId'][0]\n", - "first_detect = tab['midpointMjdTai'][0]\n", - "last_detect = tab['midpointMjdTai'][-1]\n", - "print(ssObjectId, first_detect, last_detect)" + "Make a new table with just the g-band observations (9 in total). Store the `ssObjectId`." ] }, { "cell_type": "code", "execution_count": null, - "id": "f9a54a3d-2ac3-4a67-8cee-8629834f14d7", + "id": "de32bcfc-ca68-4ffe-aa47-dd00cfc933c7", "metadata": {}, "outputs": [], "source": [ - "60638.12093944429\t60638.12129175926" + "tab_g = tab[tab['band'] == 'g']\n", + "mpcDesignation = tab_g['mpcDesignation'][0]" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "ec5ba20f-3c99-4d4c-9b24-85e5f70617cd", + "cell_type": "markdown", + "id": "b7cea2c7-1664-4fee-98c0-6a60fba9df94", "metadata": {}, - "outputs": [], "source": [ - "60638.123354536954\t60638.12370675926\t" + "Option to print results." ] }, { "cell_type": "code", "execution_count": null, - "id": "ba69a0af-4566-48b4-bd1f-a25a4ed78ee0", + "id": "70f51d2e-f41d-469b-bbe0-89a6de710cee", "metadata": {}, "outputs": [], "source": [ - "60638.125841608744\t60638.12619377315" + "# tab_g" + ] + }, + { + "cell_type": "markdown", + "id": "969b1377-a08e-4cc1-8dcc-49cd00b203c3", + "metadata": {}, + "source": [ + "## 3. Generate cutouts\n", + "\n", + "### 3.1. Query the IVOA ObsCore and SIA services for the first image\n", + "\n", + "Start with the first visit to the SSObject. To generate a cutout, first query the IVOA ObsCore table to retrieve the `access url` that points to the location of the image on the remote server." ] }, { "cell_type": "code", "execution_count": null, - "id": "a90fd1b5-b0b4-49c6-b3db-bbd33f7effec", + "id": "67f36c09-ffad-4b52-a6a8-7ce35a75c384", "metadata": {}, "outputs": [], "source": [ - "60643.08322954877\t60643.0835818287" + "tab1 = tab_g[0] # first row of the table of visits\n", + "ra = tab1['ra']\n", + "dec = tab1['dec']\n", + "\n", + "query = \"SELECT dataproduct_type, dataproduct_subtype, calib_level, lsst_band, em_min, em_max, lsst_tract, lsst_patch, \"\\\n", + " \"lsst_filter, lsst_visit, lsst_detector, t_exptime, t_min, t_max, s_ra, s_dec, s_fov, obs_id, \"\\\n", + " \"obs_collection, o_ucd, facility_name, instrument_name, obs_title, s_region, access_url, access_format \"\\\n", + " \"FROM ivoa.ObsCore WHERE lsst_visit = \"+str(tab1['visit'])+\" AND lsst_detector = \"+str(tab1['detector'])+\" AND \"\\\n", + " \"obs_collection = 'LSST.DP1' AND calib_level = 2 AND dataproduct_type = 'image' AND \"\\\n", + " \"instrument_name = 'LSSTComCam' AND \"\\\n", + " \"dataproduct_subtype = 'lsst.visit_image' \"\\\n", + " \"ORDER by t_min ASC\"\n", + "\n", + "job = service.submit_job(query)\n", + "job.run()\n", + "job.wait(phases=['COMPLETED', 'ERROR'])\n", + "print('Job phase is', job.phase)\n", + "if job.phase == 'ERROR':\n", + " job.raise_if_error()\n", + "first_visit = job.fetch_result()\n", + "first_visit.to_table()" + ] + }, + { + "cell_type": "markdown", + "id": "10ff9108-e255-4bfd-8e4e-ee08bb787bf6", + "metadata": {}, + "source": [ + "Retrieve the access url from the query (or datalink) which points to the image location on the remote server. Authorization to access the image is required and provided using get_pyvo_auth(). " ] }, { "cell_type": "code", "execution_count": null, - "id": "f7dd3827-1cca-4254-8cb1-fb0f753ab62e", + "id": "597ab2cb-a0ba-4379-bdc3-d6a9d9ff9e03", "metadata": {}, "outputs": [], "source": [ - "60643.08554648143\t60643.08589875" + "dl_result = DatalinkResults.from_result_url(first_visit['access_url'][0],\n", + " session=get_pyvo_auth())" + ] + }, + { + "cell_type": "markdown", + "id": "d735f0f7-d33f-47b4-8ad4-75932fb23959", + "metadata": {}, + "source": [ + "Define the image cutout to be 0.004 degrees (~14 arcseconds) on a side." ] }, { "cell_type": "code", "execution_count": null, - "id": "969b1377-a08e-4cc1-8dcc-49cd00b203c3", + "id": "44485079-d98d-4dc4-bcb4-e4dfeaea8d63", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "fov = 0.004" + ] + }, + { + "cell_type": "markdown", + "id": "aaa9cca0-05de-40c7-ac06-a208e278078b", + "metadata": {}, + "source": [ + "Use the IVOA Server-side Operations for Data Access (SODA) protocol to make and return the cutout." + ] }, { "cell_type": "code", "execution_count": null, - "id": "67f36c09-ffad-4b52-a6a8-7ce35a75c384", + "id": "5e7a1a52-1731-4046-86a2-666925ff2f28", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "sq = SodaQuery.from_resource(dl_result,\n", + " dl_result.get_adhocservice_by_id(\"cutout-sync-exposure\"),\n", + " session=get_pyvo_auth())\n", + "\n", + "sq.circle = (ra * u.deg, dec * u.deg, fov * u.deg)\n", + "\n", + "cutout_bytes = sq.execute_stream().read()\n", + "sq.raise_if_error()" + ] + }, + { + "cell_type": "markdown", + "id": "c9fdfbfa-087b-4f5b-bedc-b419feee22ad", + "metadata": {}, + "source": [ + "Receive the cutout \"bytes\" into memory, and convert it to an `ExposureF` image type." + ] }, { "cell_type": "code", "execution_count": null, - "id": "10ff9108-e255-4bfd-8e4e-ee08bb787bf6", + "id": "e54a2d76-2dbb-4fa6-a119-8d5897be153a", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "mem = MemFileManager(len(cutout_bytes))\n", + "mem.setData(cutout_bytes, len(cutout_bytes))\n", + "exposure = ExposureF(mem)" + ] + }, + { + "cell_type": "markdown", + "id": "58995f13-73d3-4d1f-9430-b0ee93bfac2b", + "metadata": {}, + "source": [ + "Display the science image extension of the `ExposureF` cutout using the Rubin/LSST image display package, `afwDisplay`." + ] }, { "cell_type": "code", "execution_count": null, - "id": "4ff59cd6-d94b-4d1e-a232-da5fd620085b", + "id": "6337f442-8c9a-4746-9456-54556fc4f2f6", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "display = afwDisplay.Display()\n", + "display.scale('asinh', 'zscale')\n", + "display.image(exposure.image)\n", + "plt.show()" + ] }, { "cell_type": "markdown", - "id": "3c2b6bbc-b9d0-4888-8f98-b3df84399063", + "id": "2f6e7858-ec09-47a1-aefc-04e2a74849cb", "metadata": {}, "source": [ - "### 2.1. Define target \n", - "\n", - "Type Ia Supernovae (SNIa) have homogenous light curves with similar rise and decay rates. A candidate SNIa search can be conducted in DP1 by looking for fading transients that exhibit dimming a rate consistent with SNIa: ~0.05 mag / day = ~5% flux fading per day (See Papadogiannakis et al. 2019). \n", - "\n", - "Note that the 7-week duration of the commissioning survey with ComCam in DP1 (24 Oct 2024 - 11 Dec 2024) should sufficiently sample that fading emission from a SNIa.\n", + "> **Figure 1**: Science image extension of the `ExposureF` cutout for Rubin discovery 2024 WP103." + ] + }, + { + "cell_type": "markdown", + "id": "ff075854-3e21-4304-a539-d56096f01a91", + "metadata": {}, + "source": [ + "### 3.2. Generate cutout in a different format\n", "\n", - "Define the ra and dec of the SNIa candidate that was identified as a DIA source in DP1 imaging (see DP1 notebook tutorial 306.2)." + "Now, return the cutout in `ImageF` format instead of `ExposureF`. This is the same procedure, except one calls `get_adhocservice_by_id(\"cutout-sync\")` instead of `get_adhocservice_by_id(\"cutout-sync-exposure\")`, and the return format will be like a fits file. Use astropy and matplotlib tools to plot instead of LSST pipeline tools." ] }, { "cell_type": "code", "execution_count": null, - "id": "d468a154-8d14-4b67-854f-689a0314d959", + "id": "e757f219-9794-456d-82f2-4b7b6c1d5041", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "sci, scihdul = get_cutout(dl_result, ra, dec, get_pyvo_auth(), fov)\n", + "\n", + "sci_header = scihdul[1].header\n", + "scidata = scihdul[1].data\n", + "\n", + "plt.subplot(1, 2, 1, projection=WCS(scihdul[1].header))\n", + "plt.imshow(scidata, origin='lower', vmin=np.nanpercentile(scidata, 1),\n", + " vmax=np.nanpercentile(scidata, 99))" + ] }, { - "cell_type": "code", - "execution_count": null, - "id": "c94a33e1-3a9b-48a5-9c20-76fbd9afe8ef", + "cell_type": "markdown", + "id": "590d823a-0810-4a65-9da0-5729d4314430", "metadata": {}, - "outputs": [], "source": [ - "#ra = 53.124767650110215\n", - "#dec = -27.739814591611168" + "> **Figure 2**: `ImageF` cutout format for Rubin discovery 2024 WP103." ] }, { "cell_type": "markdown", - "id": "e303cf67-36d1-4d4c-8527-76561dd528b3", + "id": "9fb4ed85-02ff-4a81-b2a3-eef2c6b14f6c", "metadata": {}, "source": [ + "## 4. Create single-epoch triplet stamps" + ] + }, + { + "cell_type": "markdown", + "id": "688aa97f-feff-43cd-b599-075e2919fcb6", + "metadata": {}, + "source": [ + "### 4.1. Query the IVOA ObsCore and SIA services for all visits to SSObject\n", "\n", - "A triplet for a DIA source refers to the set of three stamps\n", - "made from the science, template, and difference images.\n", - "They are typically displayed side-by-side and serve as a visualization\n", - "of the detection.\n", - "\n", - "This section uses the SIA service to find images\n", - "and the image cutout service to create a \"cutout triplet\".\n", - "Both services are demonstrated in 100-level tutorials.\n", - "\n", - "Define `circle`, the position (RA and Dec) and radius (in degrees) to search for science (`visit_image`), reference (`template_coadd`), and difference (`difference_image`) images with SIA." + "Set a list of ra and dec coordinate conditions that cutout queries must satisfy to match the coordinates for each of the full list of visit images for the moving SSObject. " ] }, { "cell_type": "code", "execution_count": null, - "id": "943afd28-ecbb-49f0-b444-daf31e6017fe", + "id": "5c0403ea-43d9-4129-a78f-f0ab2f32638c", "metadata": {}, "outputs": [], "source": [ - "#circle = (ra, dec, 0.001)\n", - "#print(ra, dec)" + "# Build a list of tuples: (visit, detector) that uniquely identify each visit image\n", + "points = []\n", + "for row in tab_g:\n", + " points.append((row['visit'], row['detector']))\n", + "\n", + "point_conditions = []\n", + "\n", + "for visit, detector in points:\n", + " cond = f\"(lsst_visit = {visit} AND lsst_detector = {detector})\"\n", + " point_conditions.append(cond)\n", + " \n", + "# Join all point conditions with OR\n", + "points_sql = \" OR \".join(point_conditions)" ] }, { "cell_type": "markdown", - "id": "823d68a9-210e-4201-99b0-b520be6fe80f", + "id": "1582b9b3-f670-437d-9b00-c52b1cdcdd82", "metadata": {}, "source": [ - "The cell below will perform a query to make sure the images retrieved span the time during which the DIAObject was changing and thus detectable as a DIASource. " + "Build the query for the full list of visit images for the SSObject, matching ra and dec coordinates for each detection (sorted by time to match above). " ] }, { "cell_type": "code", "execution_count": null, - "id": "72a1d19c-2173-4839-a016-c9193f9ccd1a", + "id": "f1e6eac0-dd8e-4567-ae82-e30c6426d16d", "metadata": {}, "outputs": [], "source": [ - "dia_query = \"SELECT MIN(midpointMjdTai) as first_detect, ssObjectId, \" \\\n", - " \"MAX(midpointMjdTai) as last_detect \" \\\n", - " \"FROM dp1.DiaSource \" \\\n", - " \"WHERE ssObjectId = 20892032372322627\"\n", - "\n", - "#dia_query = \"SELECT MIN(midpointMjdTai) as first_detect, DiaObjectId, \" \\\n", - "# \"MAX(midpointMjdTai) as last_detect \" \\\n", - "# \"FROM dp1.DiaSource \" \\\n", - "# \"WHERE CONTAINS(POINT('ICRS', coord_ra, coord_dec), \" \\\n", - "# \"CIRCLE('ICRS',\"+str(ra)+\",\"+str(dec)+\",0.001)) = 1 \"\n", - "\n", - "#query = \"SELECT mpc.mpcDesignation, \"\\\n", - "# \"mpc.q, mpc.e, mpc.incl, \"\\\n", - "# \"mpc.ssObjectId, \"\\\n", - "# \"diasource.ssObjectId, \"\\\n", - "# \"diasource.ra, diasource.dec, \"\\\n", - "# \"diasource.band, diasource.detector, \"\\\n", - "# \"diasource.visit, diasource.midpointMjdTai \"\\\n", - "# \"FROM dp1.DiaSource as diasource \"\\\n", - "# \"INNER JOIN dp1.MPCORB as mpc \"\\\n", - "# \"ON diasource.ssObjectId = mpc.ssObjectId \"\\\n", - "# \"WHERE diasource.ssObjectId = 20892032372322627 \"\\\n", - "# \"ORDER BY diasource.midpointMjdTai\"\n", - "\n", - "dia_job = service.submit_job(dia_query)\n", - "dia_job.run()\n", - "dia_job.wait(phases=['COMPLETED', 'ERROR'])\n", - "dia_results = dia_job.fetch_result().to_table()\n", - "\n", - "#masked_array(data=[1, 2, 5],\n", - "# mask=[False, False, False],\n", - "# fill_value=999999)\n", - "\n", - "ssObjectId = '20892032372322627'\n", - "first_detect = dia_results['first_detect'][0]\n", - "last_detect = dia_results['last_detect'][0]\n", - "\n", - "#print(ssObjectId, first_detect, last_detect)\n", - "dia_results" + "query = f\"\"\"\n", + "SELECT dataproduct_type, dataproduct_subtype, calib_level, lsst_band, em_min, em_max,\n", + " lsst_tract, lsst_patch, lsst_filter, lsst_visit, lsst_detector, t_exptime, t_min, t_max,\n", + " s_ra, s_dec, s_fov, obs_id, obs_collection, o_ucd, facility_name, instrument_name,\n", + " obs_title, s_region, access_url, access_format\n", + "FROM ivoa.ObsCore\n", + "WHERE obs_collection = 'LSST.DP1'\n", + " AND calib_level = 2\n", + " AND dataproduct_type = 'image'\n", + " AND instrument_name = 'LSSTComCam'\n", + " AND dataproduct_subtype = 'lsst.visit_image'\n", + " AND lsst_band = 'g'\n", + " AND ({points_sql})\n", + "ORDER BY t_min ASC\n", + "\"\"\"" ] }, { "cell_type": "markdown", - "id": "e49e571a-c652-4e7b-9a06-81fd8a17e6d1", + "id": "e18c6ebd-6a2c-4c69-911d-c05e3d2e3744", "metadata": {}, "source": [ - "### 2.2. Query the SIA service for images\n", - "\n", - "Use the SIA service to search for calibration level 2 images (`visit_images`) that overlap the search `circle`. " + "Execute the query." ] }, { "cell_type": "code", "execution_count": null, - "id": "420b5a62-6a12-4eb5-9651-e557000bb949", + "id": "8b7376c8-39ed-43da-ac79-9a21dbb3fec4", "metadata": {}, "outputs": [], "source": [ - "for row in tab:\n", - " ra = row['ra']\n", - " dec = row['dec']\n", - " circle = (ra, dec, 0.001)\n", - " visit = row['visit']\n", - " detector = row['detector']\n", - " table_list = []\n", - "# print(circle, visit, detector)\n", - "\n", - "# results_sci = sia_service.search(pos=circle, calib_level=2)\n", - " results_sci = sia_service.search(pos=circle,\n", - " lsst_visit=visit,\n", - " lsst_detector=detector,\n", - " obs_collection='LSST.DP1',\n", - " calib_level=2,\n", - " dataproduct_type='image',\n", - " instrument_name='LSSTComCam',\n", - " dataproduct_subtype='lsst.visit_image')\n", - "\n", - "# \"FROM ivoa.ObsCore WHERE lsst_visit = \"+str(tab1['visit'])+\" AND lsst_detector = \"+str(tab1['detector'])+\" AND \"\\\n", - "# \"obs_collection = 'LSST.DP1' AND calib_level = 2 AND dataproduct_type = 'image' AND \"\\\n", - "# \"instrument_name = 'LSSTComCam' AND \"\\\n", - "# \"dataproduct_subtype = 'lsst.visit_image' \"\\\n", - "## tmp_table = results_sci.to_table()\n", - "# print(tmp_table)\n", - "## table_list.append(tmp_table)\n", - "## print(table_list)\n", - "#lvl2_table = np.concatenate(table_list[0], axis=0)\n", - "#lvl2_table = np.vstack(table_list)\n", - "##lvl2_table = np.array(table_list)\n", - "#lvl2_table = table_list[0]\n", - "#lvl2_table = tmp_table\n", - "\n", - "#tmp_table\n", - "#table_list\n", - "\n", - "lvl2_table = results_sci.to_table()\n", - "#len(lvl2_table)\n", - "lvl2_table" + "job = service.submit_job(query)\n", + "job.run()\n", + "job.wait(phases=['COMPLETED', 'ERROR'])\n", + "if job.phase == 'ERROR':\n", + " job.raise_if_error()\n", + "scitab = job.fetch_result()\n", + "scitab.to_table()" + ] + }, + { + "cell_type": "markdown", + "id": "43663097-1a25-4e2e-96f3-bb33a9167458", + "metadata": {}, + "source": [ + "Use the SIA service to search for `template_coadd` (calibration level 3) images that overlap a search `circle` centered on the ra and dec coordinates for each SSObject detection. Filter the results for g-band `template_coadd` images. \n", + "\n", + "Assert that the number of returned `template_coadd` images equals the number of visit images. If the number of returned `template_coadd` images does not match the number of visits, the visit images cannot be rotated to align with the template images in Section 2.4 below. " ] }, { "cell_type": "code", "execution_count": null, - "id": "c206f96a-7b3e-4716-801f-42e9979d8fff", + "id": "609dcf92-3ca7-4b99-afae-ae6b4f1c8092", "metadata": {}, "outputs": [], "source": [ - "ra = tab['ra'][0]\n", - "dec = tab['dec'][0]\n", - "circle = (ra, dec, 0.001)\n", - "visit = tab['visit'][0]\n", - "detector = tab['detector'][0]\n", + "# Retrieve the `template_coadd` image for the first SSObject observation\n", + "circle = (tab_g['ra'][0], tab_g['dec'][0], 0.001)\n", "\n", - "# results_sci = sia_service.search(pos=circle, calib_level=2)\n", - "results_sci = sia_service.search(pos=circle,\n", - " lsst_visit=visit,\n", - " lsst_detector=detector,\n", - " obs_collection='LSST.DP1',\n", - " calib_level=2,\n", - " dataproduct_type='image',\n", - " instrument_name='LSSTComCam',\n", - " dataproduct_subtype='lsst.visit_image')\n", + "results = sia_service.search(pos=circle, calib_level=3)\n", "\n", - "# \"FROM ivoa.ObsCore WHERE lsst_visit = \"+str(tab1['visit'])+\" AND lsst_detector = \"+str(tab1['detector'])+\" AND \"\\\n", - "# \"obs_collection = 'LSST.DP1' AND calib_level = 2 AND dataproduct_type = 'image' AND \"\\\n", - "# \"instrument_name = 'LSSTComCam' AND \"\\\n", - "# \"dataproduct_subtype = 'lsst.visit_image' \"\\\n", + "lvl3_table = results.to_table()\n", "\n", - "lvl2_table = results_sci.to_table()\n", - "len(lvl2_table)\n", - "#lvl2_table" + "# Retrieve the `template_coadd` iamges for each subsequent SSObject observation, appending them to the table\n", + "num_visits = len(scitab['t_max'])\n", + "print('number of visits:', num_visits)\n", + "for i in range(num_visits-1):\n", + " circle = (tab_g['ra'][i+1], tab_g['dec'][i+1], 0.001)\n", + "\n", + " results = sia_service.search(pos=circle, calib_level=3)\n", + "\n", + " tmp_table = results.to_table()\n", + "\n", + " lvl3_table = np.append(lvl3_table, tmp_table, axis=0)\n", + "\n", + "# Restrict the returned query results to only `template_coadd` images in g-band\n", + "tx = np.where((lvl3_table['dataproduct_subtype'] == 'lsst.template_coadd')\n", + " & (lvl3_table['lsst_band'] == 'g'))[0]\n", + "reftab = pd.DataFrame(lvl3_table[tx])\n", + "\n", + "assert len(reftab) == num_visits\n", + "\n", + "reftab" ] }, { "cell_type": "markdown", - "id": "e95d41db-dc67-4d75-b1cd-911fef74c112", + "id": "0eb24b46-ccd8-436c-9323-32cfc435a535", "metadata": {}, "source": [ - "Filter the results for r-band `visit_images`, and to only return the visit images during which there was a DIA detection. The `if` statement ensures that a DIA detection was identified for that object. Lastly, sort the query results by observation time." + "Similar to the `visit_images` above, build the query to search for (calibration level 3) `difference_images` that overlap the full list of visit images for the SSObject, matching ra and dec coordinates for each detection (sorted by time to match above)." ] }, { "cell_type": "code", "execution_count": null, - "id": "47c923a8-8001-4ad6-9474-6dd31d2b683a", + "id": "cdae703f-9fc4-4d0e-a0f3-a2abc1c6856d", "metadata": {}, "outputs": [], "source": [ - "if (not np.ma.is_masked(first_detect)\n", - " and first_detect is not None and not np.ma.is_masked(last_detect)\n", - " and last_detect is not None):\n", - "\n", - " tx = np.where(\n", - " (lvl2_table['dataproduct_subtype'] == 'lsst.visit_image')\n", - " & (lvl2_table['lsst_band'] == 'g')\n", - " & (lvl2_table['t_min'] >= first_detect)\n", - " & (lvl2_table['t_max'] <= last_detect)\n", - " )[0]\n", - "\n", - " print(f\"Found {len(tx)} visits taken between MJD {first_detect: .2f} and {last_detect: .2f}.\")\n", - "\n", - "else:\n", - " print(\"No DIA sources were ever detected in this region. Returning empty table.\")\n", - " tx = []\n", - "\n", - "scitab = lvl2_table[tx]\n", - "scitab.sort('t_max')\n", - "len(scitab)" + "query = f\"\"\"\n", + "SELECT dataproduct_type, dataproduct_subtype, calib_level, lsst_band, em_min, em_max,\n", + " lsst_tract, lsst_patch, lsst_filter, lsst_visit, lsst_detector, t_exptime, t_min, t_max,\n", + " s_ra, s_dec, s_fov, obs_id, obs_collection, o_ucd, facility_name, instrument_name,\n", + " obs_title, s_region, access_url, access_format\n", + "FROM ivoa.ObsCore\n", + "WHERE obs_collection = 'LSST.DP1'\n", + " AND calib_level = 3\n", + " AND dataproduct_type = 'image'\n", + " AND instrument_name = 'LSSTComCam'\n", + " AND dataproduct_subtype = 'lsst.difference_image'\n", + " AND lsst_band = 'g'\n", + " AND ({points_sql})\n", + "ORDER BY t_min ASC\n", + "\"\"\"" ] }, { "cell_type": "markdown", - "id": "bd035645-1a36-4510-a27a-2d009c511548", + "id": "4b5b3653-c932-4acf-a110-4debc866cba1", "metadata": {}, "source": [ - "Use the SIA service to search for calibration level 3 images (`template_coadd` images and `difference_images`) that overlap the search `circle`. Filter the results for r-band `template_coadd` images and `difference_images` and sort the latter by observation time. No sorting is performed for the reference template images because there is only one image." + "Execute the query." ] }, { "cell_type": "code", "execution_count": null, - "id": "d4667404-d5b7-444c-b684-534c32d9e21a", + "id": "d42f114b-9940-40b9-95b5-e70d1ef3a067", "metadata": {}, "outputs": [], "source": [ - "results = sia_service.search(pos=circle, calib_level=3)\n", - "\n", - "lvl3_table = results.to_table()\n", - "\n", - "tx = np.where((lvl3_table['dataproduct_subtype'] == 'lsst.template_coadd')\n", - " & (lvl3_table['lsst_band'] == 'g'))[0]\n", - "reftab = lvl3_table[tx]\n", - "\n", - "tx = np.where((lvl3_table['dataproduct_subtype'] == 'lsst.difference_image')\n", - " & (lvl3_table['lsst_band'] == 'g'))[0]\n", - "difftab = lvl3_table[tx]\n", - "difftab.sort('t_max')" + "job = service.submit_job(query)\n", + "job.run()\n", + "job.wait(phases=['COMPLETED', 'ERROR'])\n", + "if job.phase == 'ERROR':\n", + " job.raise_if_error()\n", + "difftab = job.fetch_result()\n", + "difftab.to_table()" ] }, { "cell_type": "markdown", - "id": "11fe4a10-3433-4795-b456-2b3aa47bd0de", + "id": "677a8095-8747-44c2-bde7-fa03bb43804e", "metadata": {}, "source": [ - "Print the date of the earliest r-band image, for which bulk image stamps will be retrieved." + "Print the date of the earliest g-band image, for which bulk image stamps will be retrieved." ] }, { "cell_type": "code", "execution_count": null, - "id": "0e12ceb1-4552-4595-a923-ba98e457ea10", + "id": "11425ef0-1ccb-46b4-a309-de8177d95217", "metadata": {}, "outputs": [], "source": [ @@ -1046,63 +1084,60 @@ }, { "cell_type": "markdown", - "id": "8911cca4-1002-4506-8532-77b50dbc4c79", + "id": "79ce327c-d902-47f5-a011-f524bf71f375", "metadata": {}, "source": [ + "### 4.2. Retrieve stamps\n", + "\n", "Retrieve the datalink VOTable documents using the access URLs from the first entries in each of the table results. The image products being retrieved for the science and difference images correspond to the earliest r-band image products taken." ] }, { "cell_type": "code", "execution_count": null, - "id": "ca47b201-97ea-4d72-b665-e7e17438b752", + "id": "7605f25b-4b1f-4f76-8a10-ba775c75ce05", "metadata": {}, "outputs": [], "source": [ - "dl_result_sci = DatalinkResults.from_result_url(scitab['access_url'][1], session=get_pyvo_auth())\n", + "dl_result_sci = DatalinkResults.from_result_url(scitab['access_url'][0], session=get_pyvo_auth())\n", "\n", "dl_result_ref = DatalinkResults.from_result_url(reftab['access_url'][0], session=get_pyvo_auth())\n", "\n", - "dl_result_diff = DatalinkResults.from_result_url(difftab['access_url'][1], session=get_pyvo_auth())" + "dl_result_diff = DatalinkResults.from_result_url(difftab['access_url'][0], session=get_pyvo_auth())" ] }, { "cell_type": "markdown", - "id": "75916a2b-7448-41c7-9181-ba956e1be072", + "id": "eb2f7eb1-f519-4bd2-a60f-0f128bd3b833", "metadata": {}, "source": [ - "### 2.3. Retrieve stamps\n", - "\n", - "Retrieve bulk image stamps with an edge size of `fov` (in degrees). The `get_cutout` function returns both the image array (first parameter) and the corresponding Header Data Unit List (HDUL), a Python object used by astropy to contain one or more Header Data Units (HDUs) that contain astronomical image data, metadata, or tables.\n", - "\n", - "Define the image cutout to be 0.004 degrees (~14 arcseconds) on a side." + "Retrieve bulk image stamps with an edge size of `fov` (in degrees). The `get_cutout` function returns both the image array (first parameter) and the corresponding Header Data Unit List (HDUL), a Python object used by astropy to contain one or more Header Data Units (HDUs) that contain astronomical image data, metadata, or tables." ] }, { "cell_type": "code", "execution_count": null, - "id": "5561ac39-d6ad-4f73-8401-dbabb0df0e27", + "id": "33b4b7c6-9227-406c-8af0-73aa09213084", "metadata": {}, "outputs": [], "source": [ - "fov = 0.004\n", - "sci, scihdul = get_cutout(dl_result_sci, ra, dec, get_pyvo_auth(), fov)\n", - "ref, refhdul = get_cutout(dl_result_ref, ra, dec, get_pyvo_auth(), fov)\n", - "diff, diffhdul = get_cutout(dl_result_diff, ra, dec, get_pyvo_auth(), fov)" + "sci, scihdul = get_cutout(dl_result_sci, tab_g['ra'][0], tab_g['dec'][0], get_pyvo_auth(), fov)\n", + "ref, refhdul = get_cutout(dl_result_ref, tab_g['ra'][0], tab_g['dec'][0], get_pyvo_auth(), fov)\n", + "diff, diffhdul = get_cutout(dl_result_diff, tab_g['ra'][0], tab_g['dec'][0], get_pyvo_auth(), fov)" ] }, { "cell_type": "markdown", - "id": "396186cf-6a20-4c43-b05e-058213db63a1", + "id": "33e1470f-6b85-4a8a-b5c1-cac95e238b26", "metadata": {}, "source": [ - "First, visualize the cutouts of the science, template, and difference images by displaying them side by side." + "First, visualize the cutouts of the science, template, and difference images for the earliest r-band image by displaying them side by side." ] }, { "cell_type": "code", "execution_count": null, - "id": "af25acb8-80c3-4219-9638-2eaa88aaafd7", + "id": "f53f5556-120b-40d4-88b7-8b733d254872", "metadata": {}, "outputs": [], "source": [ @@ -1126,35 +1161,35 @@ "ax[2].set_axis_off()\n", "plt.title('difference')\n", "plt.tight_layout()\n", - "fig.suptitle('ssObject '+str(ssObjectId)+', MJD='+str(np.round(scitab['t_max'][0], 2)))\n", + "fig.suptitle('ssObject '+str(mpcDesignation)+', MJD='+str(np.round(scitab['t_max'][0], 2)))\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", - "id": "707eeb7d-88cb-4bc2-af2a-d1dba6c92069", + "id": "f45a8bd2-8653-42d0-8e3b-b68fb5b595f6", "metadata": {}, "source": [ - "> **Figure 1**: The cutout triplet for the first detection of this `ssObject`, a candidate SN Ia." + "> **Figure 3**: The cutout triplet for the first detection of this `ssObject`, Rubin discovery 2024 WP103." ] }, { "cell_type": "markdown", - "id": "c37ba588-0cdf-482d-b868-47c0aa8074cf", + "id": "fedc2383-8000-4634-b4a4-ad8242b26f77", "metadata": {}, "source": [ - "### 2.4. Rotate visit image\n", + "### 4.3. Rotate visit and difference images\n", "\n", - "As Figure 1 shows, visit images are not aligned with the template image (North up, East left) since they are taken at many different telescope orientations. This section demonstrates how to align the visit image to match the orientation of the template and difference cutouts using the `reproject` python package. `reproject` requires the world coordinate system (WCS) of the existing and desired coordinate systems, and the image pixels of the image to reproject, in order to perform the calculation. \n", + "As Figure 3 shows, visit images are not aligned with the template image (North up, East left) since they are taken at many different telescope orientations. This section demonstrates how to align the visit image to match the orientation of the template and difference cutouts using the `reproject` python package. `reproject` requires the world coordinate system (WCS) of the existing and desired coordinate systems, and the image pixels of the image to reproject, in order to perform the calculation. \n", "\n", - "The cell below extracts these from the HUDL. The structure of the ImageF object returned by the cutout service has two HDUL extensions. The extension 0 contains a primary header of telescope metadata and no image pixels, while the extension 1 contains the science header and the science image pixels. " + "The cell below extracts these from the HUDL. The structure of the ImageF object returned by the cutout service has two HDUL extensions. The extension 0 contains a primary header of telescope metadata and no image pixels, while the extension 1 contains the science header and the science image pixels." ] }, { "cell_type": "code", "execution_count": null, - "id": "a0e82f29-cd69-488e-b91f-90a7d200170d", + "id": "8243fe40-813e-4836-a8d1-2865c1279681", "metadata": {}, "outputs": [], "source": [ @@ -1179,7 +1214,7 @@ }, { "cell_type": "markdown", - "id": "02974977-001b-467e-ae0d-dc44f105872c", + "id": "d9698f05-6a0b-4e39-96cc-693f1bd316ab", "metadata": {}, "source": [ "Use the `reproject_interp` function to put the science visit image onto the WCS of the template image." @@ -1188,7 +1223,7 @@ { "cell_type": "code", "execution_count": null, - "id": "635013a0-e962-4958-bb09-007ac1cb169e", + "id": "4a37bec4-e288-491c-b1d1-1d648b33607d", "metadata": {}, "outputs": [], "source": [ @@ -1198,16 +1233,16 @@ }, { "cell_type": "markdown", - "id": "6b3360a9-ccc6-47bb-bc45-b87f208dacda", + "id": "d09e96eb-9813-47eb-9e62-8140f82bcfd3", "metadata": {}, "source": [ - "Plot the reprojected science visit image together with the template image to compare." + "Plot the reprojected science visit image and reprojected difference image together with the template image to compare." ] }, { "cell_type": "code", "execution_count": null, - "id": "d9734ade-5848-4e44-8e38-ea70aebd6a47", + "id": "3f6d2dbd-b724-4765-80b6-a4315adf8905", "metadata": {}, "outputs": [], "source": [ @@ -1235,35 +1270,37 @@ "ax3.coords['dec'].set_axislabel_position('r')\n", "ax3.coords['dec'].set_ticklabel_position('r')\n", "ax3.set_title('Reprojected Difference Image')\n", + "plt.subplots_adjust(wspace=1.0) \n", "plt.show()" ] }, { "cell_type": "markdown", - "id": "93eaaaf9-62b1-496e-bed6-82d01be0fbb2", + "id": "1c7be9c7-bf95-42d7-a56f-9e25729311a7", "metadata": {}, "source": [ - "> **Figure 2**: The science visit image (left) after being reprojected onto the same WCS as the template image cutout (right).\n" + "> **Figure 4**: The science visit image (left) and difference image (right) after being reprojected onto the same WCS as the template image cutout (center)." ] }, { "cell_type": "markdown", - "id": "19ea5356-b986-42b1-9a88-5ffc2d2e90ba", + "id": "77121c94-31cb-43ed-b099-1a01a591b3be", "metadata": {}, "source": [ - "## 3. Bulk image stamps\n", + "## 5. Bulk image stamps\n", + "\n", + "Bulk image stamps are a key visualization tool for SSObjects. Below, retrieve many science visit image stamps and their corresponding template images at matching ra and dec coordinates to the target SSObject. Save the iamge stamps as png files.\n", "\n", - "Bulk image stamps will be a key visualization tool for DIA objects. Below, demonstrate how to retrieve many image stamps (and save as png files). Since many visits span the time during which the target was a DIA source, limit the number to visualize to the first 20 (to save time). The full set of stamps can be visualized by replacing the first line with `num_visits = len(scitab['t_max'])`" + "If >20 visits span the time during which the target was a DIA source, limit the number to visualize only the first 20 (to save time). The number of stamps can be limited by replacing the first line with `num_visits = 20`." ] }, { "cell_type": "code", "execution_count": null, - "id": "7bf8ad75-a0ef-4546-9020-8fb6cde2c4d5", + "id": "f3edf1b4-59b0-4157-b62e-b52b53bddf69", "metadata": {}, "outputs": [], "source": [ - "#num_visits = 20\n", "num_visits = len(scitab['t_max'])\n", "print('number of visits:', num_visits)\n", "for i in range(num_visits):\n", @@ -1272,11 +1309,20 @@ " dl_result_sci = DatalinkResults.from_result_url(scitab['access_url'][i],\n", " session=get_pyvo_auth())\n", "\n", - " sci, scihdul = get_cutout(dl_result_sci, ra, dec, get_pyvo_auth(), fov)\n", + " sci, scihdul = get_cutout(dl_result_sci, tab_g['ra'][i], tab_g['dec'][i], get_pyvo_auth(), fov)\n", " sci_hdu = scihdul[1]\n", " sci_header = scihdul[1].header\n", " scidata = scihdul[1].data\n", " sciwcs = WCS(scihdul[1].header)\n", + "\n", + " dl_result_ref = DatalinkResults.from_result_url(reftab['access_url'][i],\n", + " session=get_pyvo_auth())\n", + "\n", + " ref, refhdul = get_cutout(dl_result_ref, tab_g['ra'][i], tab_g['dec'][i], get_pyvo_auth(), fov)\n", + " ref_hdu = refhdul[1]\n", + " ref_header = refhdul[1].header\n", + " refdata = refhdul[1].data\n", + " refwcs = WCS(refhdul[1].header)\n", " reproj_scidata, footprint = reproject_interp((scidata, sciwcs), refwcs)\n", "\n", " plt.imshow(reproj_scidata, origin='lower', vmin=np.nanpercentile(reproj_scidata, 1),\n", @@ -1290,16 +1336,24 @@ }, { "cell_type": "markdown", - "id": "357dc241-c5bd-4e58-947c-ce7181c35518", + "id": "3636c824-b6a8-4c37-94de-e0758b58de21", + "metadata": {}, + "source": [ + "> **Figure 5**: Final bulk science visit image saved to disk." + ] + }, + { + "cell_type": "markdown", + "id": "5c692e11-4c18-4482-8009-631c381bc7e4", "metadata": {}, "source": [ - "Below, visualize the bulk image stamps that were saved to disk." + "Visualize the bulk image stamps that were saved to disk." ] }, { "cell_type": "code", "execution_count": null, - "id": "52fec53e-9f55-4c06-ac54-08005285878b", + "id": "7150c8d5-83b5-469e-9832-1763ccb2a859", "metadata": {}, "outputs": [], "source": [ @@ -1313,23 +1367,25 @@ " ax.imshow(img)\n", "\n", "plt.tight_layout()\n", + "fig.suptitle('ssObject '+str(mpcDesignation))\n", + "plt.subplots_adjust(top=0.95)\n", "plt.show()" ] }, { "cell_type": "markdown", - "id": "2b54d1d3-9564-4836-8265-4c8eedc4502a", + "id": "fd932171-254c-4a0c-9566-42119ba41a18", "metadata": {}, "source": [ - "> **Figure 3**: Image stamps from the science visit images of the DIA object, in chronological order, after being reprojected onto the same WCS as the template image (right). " + "> **Figure 6**: Image stamps from the science visit images of the SSobject, Rubin discovery 2024 WP103 (`ssObjectId` = 23133931615301936) in DP1, in chronological order, after being reprojected onto the same WCS as the template image. " ] }, { "cell_type": "markdown", - "id": "4340da3a-3f25-4007-8615-c204d3ef3e23", + "id": "b4539723-f2f4-4998-aa8d-53a2defffb61", "metadata": {}, "source": [ - "## 4. Visualize cutouts with gif\n", + "## 6. Visualize cutouts with gif\n", "\n", "Below, the cell will use the `make_gif` function defined in Section 1.2.3 to make a single gif movie out of all the pngs in the folder from the visit images in chronological order." ] @@ -1337,7 +1393,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0257c6de-2296-4ed2-8173-ac3d74f99e2e", + "id": "36f90783-ce68-4431-b82b-8d71465dd669", "metadata": {}, "outputs": [], "source": [ @@ -1348,11 +1404,52 @@ }, { "cell_type": "markdown", - "id": "1c07a8b1-f24a-4c03-a56b-515a381cfa42", + "id": "15b6d17f-29ec-4af2-9843-62f9553000ae", + "metadata": {}, + "source": [ + "> **Figure 7**: A gif animation generated from the reprojected visit image stamps in Figure 6." + ] + }, + { + "cell_type": "markdown", + "id": "65451cac-4470-40f9-8ee6-a699f92b7909", "metadata": {}, "source": [ - "> **Figure 4**: A gif animation generated from the reprojected visit image stamps in Figure 3." + "Delete tempdir created to store cutouts and gif animation." ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eb5eccf4-c224-43e9-bf2c-39a9253d648e", + "metadata": {}, + "outputs": [], + "source": [ + "# NOTE: This permanently deletes the directory and all of its contents\n", + "try:\n", + " shutil.rmtree(tempdir)\n", + " print(f\"Directory '{tempdir}' and all its contents removed successfully.\")\n", + "except FileNotFoundError:\n", + " print(\"The directory does not exist.\")" + ] + }, + { + "cell_type": "markdown", + "id": "9aa9560d-7f5b-4a44-8068-3625dbf8b30e", + "metadata": {}, + "source": [ + "## 7. Exercise for the learner\n", + "\n", + "Generate cutouts for 2009 AO58 (q=2.673640 au, e=0.148635, inc=7.449680 deg, and H=16.806999)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a0f5d196-471b-4659-b3a1-00fb30673cb4", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From 04e27ed0bf086064e9654de077a82e0d2ede3914 Mon Sep 17 00:00:00 2001 From: sgreenstreet Date: Tue, 16 Jun 2026 21:36:53 +0000 Subject: [PATCH 3/4] edit notebook after review --- .../308_Solar_System/308_5_Image_stamps.ipynb | 123 ++++++++---------- 1 file changed, 54 insertions(+), 69 deletions(-) diff --git a/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb b/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb index 8810c7c..5b4b53e 100644 --- a/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb +++ b/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb @@ -22,7 +22,7 @@ "Data Release: Data Preview 1
\n", "Container Size: large
\n", "LSST Science Pipelines version: r29.2.0
\n", - "Last verified to run: 2026-06-15
\n", + "Last verified to run: 2026-06-16
\n", "Repository: github.com/lsst/tutorial-notebooks
" ] }, @@ -31,7 +31,7 @@ "id": "ae760c59-bf94-45b3-9f8e-b4551b22e193", "metadata": {}, "source": [ - "**Learning objective:** Generate many (bulk) image stamps using the Rubin image cutout service for Solar System objects.\n", + "**Learning objective:** Generate many (bulk) image stamps for Solar System objects using the Rubin image cutout service.\n", "\n", "**LSST data products:** `DiaObject`, `SSObject`, `MPCORB`, `Visit`, `visit_image`, `template_coadd`, `difference_image`\n", "\n", @@ -56,9 +56,9 @@ "source": [ "## 1. Introduction\n", "\n", - "This notebook demonstrates how to produce bulk image stamps using the Rubin cutout service for Solar System objects.\n", + "This notebook demonstrates how to produce bulk image stamps for Solar System objects using the Rubin cutout service. This notebook differs from the 103-series notebooks on image access and display by demonstrating how to generate cutouts for objects that move to different ra and dec positions across each detection.\n", "\n", - "**Related tutorials**: See also tutorial notebook 103.9 on image stamps, which demonstrates how to perform bulk cutouts using the cutout service that returns only the image extension to minimize the data transferred and tutorial notebook 103.4 that demonstrates the return of exposure cutouts as Rubin LSST image type ExposureF and MaskedImageF. Both of these notebooks retrieve image stamps for a single ra and dec." + "**Related tutorials**: See also tutorial notebook 103.9 on image stamps, which demonstrates how to perform bulk cutouts using the cutout service that returns only the image extension to minimize the data transferred and tutorial notebook 103.4 that demonstrates the return of exposure cutouts as Rubin LSST image type ``ExposureF`` and ``MaskedImageF``. Both of these notebooks retrieve image stamps for a single ra and dec." ] }, { @@ -422,7 +422,7 @@ "id": "4e29bae2-6252-44a9-a452-0adbd765839a", "metadata": {}, "source": [ - "### 2.1. Find the `ssObjectId` for a Solar System object of interest" + "### 2.1. Find target Solar System object" ] }, { @@ -528,7 +528,7 @@ "id": "f1b62464-0814-4311-bac2-2d5434975945", "metadata": {}, "source": [ - "An object that satisfies our parameters of interest is 2024 WP103 (`ssObjectId` = 23133931615301936), which is a Rubin DP1 discovery with 29 observations." + "An object that satisfies our parameters of interest is 2024 WP103, which is a Rubin DP1 discovery with 29 observations." ] }, { @@ -536,7 +536,7 @@ "id": "0a79c630-14d8-40b4-9473-05416ae70f10", "metadata": {}, "source": [ - "### 2.2. Find the visits for the `ssObjectId` of interest" + "### 2.2. Find Solar System object visits" ] }, { @@ -544,7 +544,7 @@ "id": "028fd7d4-1e33-4806-997e-dce81b092719", "metadata": {}, "source": [ - "Query the DiaSource catalog for the ra, dec, band, detector, and visit for each observation of the object of interest, inputting the ssObjectId for the object of interest (20892032288436298) into the query below. Order the query results by the observation midpoint." + "Query the ``DiaSource`` catalog for the `ra`, `dec`, `band`, `detector`, and `visit` for each observation of 2024 WP103, inputting the ``ssObjectId`` (23133931615301936) into the query below. Order the query results by the observation midpoint." ] }, { @@ -559,8 +559,9 @@ " \"mpc.ssObjectId, \"\\\n", " \"diasource.ssObjectId, \"\\\n", " \"diasource.ra, diasource.dec, \"\\\n", - " \"diasource.band, diasource.detector, \"\\\n", - " \"diasource.visit, diasource.midpointMjdTai \"\\\n", + " \"diasource.band, diasource.psfFlux, \"\\\n", + " \"diasource.detector, diasource.visit, \"\\\n", + " \"diasource.midpointMjdTai \"\\\n", " \"FROM dp1.DiaSource as diasource \"\\\n", " \"INNER JOIN dp1.MPCORB as mpc \"\\\n", " \"ON diasource.ssObjectId = mpc.ssObjectId \"\\\n", @@ -644,7 +645,7 @@ "id": "eb4d6119-36db-4624-ae5e-0aff8dffa13e", "metadata": {}, "source": [ - "Make a new table with just the g-band observations (9 in total). Store the `ssObjectId`." + "Restrict the detections to those in a single band. Make a new table with just the g-band observations (9 in total). Store the provisional designation (`mpcDesignation`= 2024 WP103) for labeling image stamp displays below." ] }, { @@ -683,9 +684,9 @@ "source": [ "## 3. Generate cutouts\n", "\n", - "### 3.1. Query the IVOA ObsCore and SIA services for the first image\n", + "### 3.1. Query ObsCore table for first visit\n", "\n", - "Start with the first visit to the SSObject. To generate a cutout, first query the IVOA ObsCore table to retrieve the `access url` that points to the location of the image on the remote server." + "Start with the first g-band visit to the Solar System object. To generate a cutout, first query the International Virtual Observatory Alliance (IVOA) ObsCore table to retrieve the `access url` that points to the location of the image on the remote server. Use the `visit` and `detector` of the first detection in the `tab_g` table above. " ] }, { @@ -695,14 +696,10 @@ "metadata": {}, "outputs": [], "source": [ - "tab1 = tab_g[0] # first row of the table of visits\n", - "ra = tab1['ra']\n", - "dec = tab1['dec']\n", - "\n", "query = \"SELECT dataproduct_type, dataproduct_subtype, calib_level, lsst_band, em_min, em_max, lsst_tract, lsst_patch, \"\\\n", " \"lsst_filter, lsst_visit, lsst_detector, t_exptime, t_min, t_max, s_ra, s_dec, s_fov, obs_id, \"\\\n", " \"obs_collection, o_ucd, facility_name, instrument_name, obs_title, s_region, access_url, access_format \"\\\n", - " \"FROM ivoa.ObsCore WHERE lsst_visit = \"+str(tab1['visit'])+\" AND lsst_detector = \"+str(tab1['detector'])+\" AND \"\\\n", + " \"FROM ivoa.ObsCore WHERE lsst_visit = \"+str(tab_g['visit'][0])+\" AND lsst_detector = \"+str(tab_g['detector'][0])+\" AND \"\\\n", " \"obs_collection = 'LSST.DP1' AND calib_level = 2 AND dataproduct_type = 'image' AND \"\\\n", " \"instrument_name = 'LSSTComCam' AND \"\\\n", " \"dataproduct_subtype = 'lsst.visit_image' \"\\\n", @@ -760,7 +757,7 @@ "id": "aaa9cca0-05de-40c7-ac06-a208e278078b", "metadata": {}, "source": [ - "Use the IVOA Server-side Operations for Data Access (SODA) protocol to make and return the cutout." + "Use the IVOA Server-side Operations for Data Access (SODA) protocol to make and return the cutout centered on the ra and dec coordinates of the first visit in the `tab_g` table above." ] }, { @@ -774,7 +771,7 @@ " dl_result.get_adhocservice_by_id(\"cutout-sync-exposure\"),\n", " session=get_pyvo_auth())\n", "\n", - "sq.circle = (ra * u.deg, dec * u.deg, fov * u.deg)\n", + "sq.circle = (tab_g['ra'][0] * u.deg, tab_g['dec'][0] * u.deg, fov * u.deg)\n", "\n", "cutout_bytes = sq.execute_stream().read()\n", "sq.raise_if_error()" @@ -816,7 +813,7 @@ "outputs": [], "source": [ "display = afwDisplay.Display()\n", - "display.scale('asinh', 'zscale')\n", + "display.scale('linear', 'zscale')\n", "display.image(exposure.image)\n", "plt.show()" ] @@ -834,7 +831,7 @@ "id": "ff075854-3e21-4304-a539-d56096f01a91", "metadata": {}, "source": [ - "### 3.2. Generate cutout in a different format\n", + "### 3.2. Generate cutout in different format\n", "\n", "Now, return the cutout in `ImageF` format instead of `ExposureF`. This is the same procedure, except one calls `get_adhocservice_by_id(\"cutout-sync\")` instead of `get_adhocservice_by_id(\"cutout-sync-exposure\")`, and the return format will be like a fits file. Use astropy and matplotlib tools to plot instead of LSST pipeline tools." ] @@ -846,7 +843,7 @@ "metadata": {}, "outputs": [], "source": [ - "sci, scihdul = get_cutout(dl_result, ra, dec, get_pyvo_auth(), fov)\n", + "sci, scihdul = get_cutout(dl_result, tab_g['ra'][0], tab_g['dec'][0], get_pyvo_auth(), fov)\n", "\n", "sci_header = scihdul[1].header\n", "scidata = scihdul[1].data\n", @@ -877,9 +874,11 @@ "id": "688aa97f-feff-43cd-b599-075e2919fcb6", "metadata": {}, "source": [ - "### 4.1. Query the IVOA ObsCore and SIA services for all visits to SSObject\n", + "### 4.1. Query ObsCore table for all visits\n", + "\n", + "Solar System targets move to different ra and dec positions between detections, however, many images likely cover those (ra, dec) coordinates at times when the moving object was not at that location. To be more specific in the image query to only return images when a Solar System object was at a given location, use the `visit` and `detector` parameters, because they correspond to the images taken at a given sky location when the moving Solar System object was at that position.\n", "\n", - "Set a list of ra and dec coordinate conditions that cutout queries must satisfy to match the coordinates for each of the full list of visit images for the moving SSObject. " + "Set the `visit` and `detector` conditions that cutout queries must satisfy to match the fields for each detection of the Solar System object in the `tab_g` table. Returned visit images must match both the `visit` and `detector` for each detection." ] }, { @@ -889,19 +888,17 @@ "metadata": {}, "outputs": [], "source": [ - "# Build a list of tuples: (visit, detector) that uniquely identify each visit image\n", - "points = []\n", + "pointings = []\n", "for row in tab_g:\n", - " points.append((row['visit'], row['detector']))\n", + " pointings.append((row['visit'], row['detector']))\n", "\n", - "point_conditions = []\n", + "pointing_conditions = []\n", "\n", - "for visit, detector in points:\n", + "for visit, detector in pointings:\n", " cond = f\"(lsst_visit = {visit} AND lsst_detector = {detector})\"\n", - " point_conditions.append(cond)\n", + " pointing_conditions.append(cond)\n", " \n", - "# Join all point conditions with OR\n", - "points_sql = \" OR \".join(point_conditions)" + "pointings_sql = \" OR \".join(pointing_conditions)" ] }, { @@ -909,7 +906,7 @@ "id": "1582b9b3-f670-437d-9b00-c52b1cdcdd82", "metadata": {}, "source": [ - "Build the query for the full list of visit images for the SSObject, matching ra and dec coordinates for each detection (sorted by time to match above). " + "Build the query for the full list of visit images for the Solar System object, matching both the `visit` and `detector` for each detection. Sort the returned list of visit images by time. " ] }, { @@ -930,8 +927,7 @@ " AND dataproduct_type = 'image'\n", " AND instrument_name = 'LSSTComCam'\n", " AND dataproduct_subtype = 'lsst.visit_image'\n", - " AND lsst_band = 'g'\n", - " AND ({points_sql})\n", + " AND ({pointings_sql})\n", "ORDER BY t_min ASC\n", "\"\"\"" ] @@ -941,7 +937,7 @@ "id": "e18c6ebd-6a2c-4c69-911d-c05e3d2e3744", "metadata": {}, "source": [ - "Execute the query." + "Execute the query. Store the results in a table called `scitab`." ] }, { @@ -965,9 +961,9 @@ "id": "43663097-1a25-4e2e-96f3-bb33a9167458", "metadata": {}, "source": [ - "Use the SIA service to search for `template_coadd` (calibration level 3) images that overlap a search `circle` centered on the ra and dec coordinates for each SSObject detection. Filter the results for g-band `template_coadd` images. \n", + "Use the SIA service to search for `template_coadd` (calibration level 3) images that overlap a search `circle` centered on the ra and dec coordinates for each detection of the Solar System object (in `tab_g`). Filter the results for g-band `template_coadd` images to match the band of the `visit` images. Store the results in a table called `reftab`.\n", "\n", - "Assert that the number of returned `template_coadd` images equals the number of visit images. If the number of returned `template_coadd` images does not match the number of visits, the visit images cannot be rotated to align with the template images in Section 2.4 below. " + "Assert that the number of returned `template_coadd` images equals the number of visit images. If the number of returned template images does not match the number of visits, the visit images cannot be rotated to align with the template images in Section 4.3 below. " ] }, { @@ -977,14 +973,12 @@ "metadata": {}, "outputs": [], "source": [ - "# Retrieve the `template_coadd` image for the first SSObject observation\n", "circle = (tab_g['ra'][0], tab_g['dec'][0], 0.001)\n", "\n", "results = sia_service.search(pos=circle, calib_level=3)\n", "\n", "lvl3_table = results.to_table()\n", "\n", - "# Retrieve the `template_coadd` iamges for each subsequent SSObject observation, appending them to the table\n", "num_visits = len(scitab['t_max'])\n", "print('number of visits:', num_visits)\n", "for i in range(num_visits-1):\n", @@ -996,7 +990,6 @@ "\n", " lvl3_table = np.append(lvl3_table, tmp_table, axis=0)\n", "\n", - "# Restrict the returned query results to only `template_coadd` images in g-band\n", "tx = np.where((lvl3_table['dataproduct_subtype'] == 'lsst.template_coadd')\n", " & (lvl3_table['lsst_band'] == 'g'))[0]\n", "reftab = pd.DataFrame(lvl3_table[tx])\n", @@ -1011,7 +1004,7 @@ "id": "0eb24b46-ccd8-436c-9323-32cfc435a535", "metadata": {}, "source": [ - "Similar to the `visit_images` above, build the query to search for (calibration level 3) `difference_images` that overlap the full list of visit images for the SSObject, matching ra and dec coordinates for each detection (sorted by time to match above)." + "Similar to the `visit_images` above, build the query to search for (calibration level 3) `difference_images` that overlap the full list of visit images for the Solar System object, matching the `visit` and `detector` conditions for each detection as defined in `pointings_sql` above. Sort by time to match the visit images (`scitab`) above." ] }, { @@ -1032,8 +1025,7 @@ " AND dataproduct_type = 'image'\n", " AND instrument_name = 'LSSTComCam'\n", " AND dataproduct_subtype = 'lsst.difference_image'\n", - " AND lsst_band = 'g'\n", - " AND ({points_sql})\n", + " AND ({pointings_sql})\n", "ORDER BY t_min ASC\n", "\"\"\"" ] @@ -1043,7 +1035,7 @@ "id": "4b5b3653-c932-4acf-a110-4debc866cba1", "metadata": {}, "source": [ - "Execute the query." + "Execute the query. Store the results in a table called `difftab`." ] }, { @@ -1067,7 +1059,7 @@ "id": "677a8095-8747-44c2-bde7-fa03bb43804e", "metadata": {}, "source": [ - "Print the date of the earliest g-band image, for which bulk image stamps will be retrieved." + "Print the date of the earliest (g-band) image for which bulk image stamps will be retrieved." ] }, { @@ -1089,7 +1081,7 @@ "source": [ "### 4.2. Retrieve stamps\n", "\n", - "Retrieve the datalink VOTable documents using the access URLs from the first entries in each of the table results. The image products being retrieved for the science and difference images correspond to the earliest r-band image products taken." + "Retrieve the `access_url` from the query (or datalink) which points to the image location on the remote server for the first entries in each of the visit (`scitab`), template (`reftab`), and difference (`difftab`) image table results. The datalinks stored as `dl_result`s below are in a format that can be used by the IVOA tools to generate the cutouts. The image products being retrieved for the science and difference images correspond to the earliest images." ] }, { @@ -1111,7 +1103,7 @@ "id": "eb2f7eb1-f519-4bd2-a60f-0f128bd3b833", "metadata": {}, "source": [ - "Retrieve bulk image stamps with an edge size of `fov` (in degrees). The `get_cutout` function returns both the image array (first parameter) and the corresponding Header Data Unit List (HDUL), a Python object used by astropy to contain one or more Header Data Units (HDUs) that contain astronomical image data, metadata, or tables." + "Retrieve bulk image stamps with an edge size of `fov` (defined to be 0.004 degrees above). The `get_cutout` function returns both the image array (first parameter) and the corresponding Header Data Unit List (HDUL), a Python object used by astropy to contain one or more Header Data Units (HDUs) that contain astronomical image data, metadata, or tables." ] }, { @@ -1131,7 +1123,7 @@ "id": "33e1470f-6b85-4a8a-b5c1-cac95e238b26", "metadata": {}, "source": [ - "First, visualize the cutouts of the science, template, and difference images for the earliest r-band image by displaying them side by side." + "First, visualize the cutouts of the science, template, and difference images for the earliest g-band images by displaying them side by side." ] }, { @@ -1161,7 +1153,7 @@ "ax[2].set_axis_off()\n", "plt.title('difference')\n", "plt.tight_layout()\n", - "fig.suptitle('ssObject '+str(mpcDesignation)+', MJD='+str(np.round(scitab['t_max'][0], 2)))\n", + "fig.suptitle(str(mpcDesignation)+', MJD='+str(np.round(scitab['t_max'][0], 2)))\n", "\n", "plt.show()" ] @@ -1171,7 +1163,7 @@ "id": "f45a8bd2-8653-42d0-8e3b-b68fb5b595f6", "metadata": {}, "source": [ - "> **Figure 3**: The cutout triplet for the first detection of this `ssObject`, Rubin discovery 2024 WP103." + "> **Figure 3**: The cutout triplet for the first detection of this Solar System object, Rubin discovery 2024 WP103." ] }, { @@ -1242,18 +1234,20 @@ { "cell_type": "code", "execution_count": null, - "id": "3f6d2dbd-b724-4765-80b6-a4315adf8905", + "id": "d5ec7d67-4397-4fea-b637-556753eb174f", "metadata": {}, "outputs": [], "source": [ - "ax1 = plt.subplot(1, 3, 1, projection=WCS(ref_hdu.header))\n", + "fig = plt.figure(figsize=(20, 12))\n", + "\n", + "ax1 = fig.add_subplot(1, 3, 1, projection=WCS(ref_hdu.header))\n", "ax1.imshow(reproj_scidata, origin='lower', vmin=np.nanpercentile(reproj_scidata, 1),\n", " vmax=np.nanpercentile(reproj_scidata, 99))\n", "ax1.coords['ra'].set_axislabel('Right Ascension')\n", "ax1.coords['dec'].set_axislabel('Declination')\n", "ax1.set_title('Reprojected Visit Image')\n", "\n", - "ax2 = plt.subplot(1, 3, 2, projection=WCS(ref_hdu.header))\n", + "ax2 = fig.add_subplot(1, 3, 2, projection=WCS(ref_hdu.header))\n", "ax2.imshow(refdata, origin='lower', vmin=np.nanpercentile(refdata, 1),\n", " vmax=np.nanpercentile(refdata, 99))\n", "ax2.coords['ra'].set_axislabel('Right Ascension')\n", @@ -1262,7 +1256,7 @@ "ax2.coords['dec'].set_ticklabel_position('r')\n", "ax2.set_title('Template Image')\n", "\n", - "ax3 = plt.subplot(1, 3, 3, projection=WCS(ref_hdu.header))\n", + "ax3 = fig.add_subplot(1, 3, 3, projection=WCS(ref_hdu.header))\n", "ax3.imshow(reproj_diffdata, origin='lower', vmin=np.nanpercentile(reproj_diffdata, 1),\n", " vmax=np.nanpercentile(reproj_diffdata, 99))\n", "ax3.coords['ra'].set_axislabel('Right Ascension')\n", @@ -1289,7 +1283,7 @@ "source": [ "## 5. Bulk image stamps\n", "\n", - "Bulk image stamps are a key visualization tool for SSObjects. Below, retrieve many science visit image stamps and their corresponding template images at matching ra and dec coordinates to the target SSObject. Save the iamge stamps as png files.\n", + "Bulk image stamps are a key visualization tool for Solar System objects. Below, retrieve many science visit image stamps and their corresponding template images at matching ra and dec coordinates to the target Solar System object. Save the image stamps as png files.\n", "\n", "If >20 visits span the time during which the target was a DIA source, limit the number to visualize only the first 20 (to save time). The number of stamps can be limited by replacing the first line with `num_visits = 20`." ] @@ -1367,7 +1361,7 @@ " ax.imshow(img)\n", "\n", "plt.tight_layout()\n", - "fig.suptitle('ssObject '+str(mpcDesignation))\n", + "fig.suptitle(str(mpcDesignation))\n", "plt.subplots_adjust(top=0.95)\n", "plt.show()" ] @@ -1377,7 +1371,7 @@ "id": "fd932171-254c-4a0c-9566-42119ba41a18", "metadata": {}, "source": [ - "> **Figure 6**: Image stamps from the science visit images of the SSobject, Rubin discovery 2024 WP103 (`ssObjectId` = 23133931615301936) in DP1, in chronological order, after being reprojected onto the same WCS as the template image. " + "> **Figure 6**: Image stamps from the science visit images of the Solar System object, Rubin discovery 2024 WP103 (`ssObjectId` = 23133931615301936) in DP1, in chronological order, after being reprojected onto the same WCS as the template image. " ] }, { @@ -1415,7 +1409,7 @@ "id": "65451cac-4470-40f9-8ee6-a699f92b7909", "metadata": {}, "source": [ - "Delete tempdir created to store cutouts and gif animation." + "Delete tempdir created to store cutouts and gif animation and all of its contents. NOTE: This permanently deletes the directory and all of its contents.\n" ] }, { @@ -1425,7 +1419,6 @@ "metadata": {}, "outputs": [], "source": [ - "# NOTE: This permanently deletes the directory and all of its contents\n", "try:\n", " shutil.rmtree(tempdir)\n", " print(f\"Directory '{tempdir}' and all its contents removed successfully.\")\n", @@ -1442,14 +1435,6 @@ "\n", "Generate cutouts for 2009 AO58 (q=2.673640 au, e=0.148635, inc=7.449680 deg, and H=16.806999)." ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a0f5d196-471b-4659-b3a1-00fb30673cb4", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 264b168441f23a0030949e78efafb461aea27aa4 Mon Sep 17 00:00:00 2001 From: sgreenstreet Date: Thu, 18 Jun 2026 16:03:39 +0000 Subject: [PATCH 4/4] final edits --- .../308_Solar_System/308_5_Image_stamps.ipynb | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb b/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb index 5b4b53e..8f063c9 100644 --- a/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb +++ b/DP1/300_Science_Demos/308_Solar_System/308_5_Image_stamps.ipynb @@ -686,7 +686,11 @@ "\n", "### 3.1. Query ObsCore table for first visit\n", "\n", - "Start with the first g-band visit to the Solar System object. To generate a cutout, first query the International Virtual Observatory Alliance (IVOA) ObsCore table to retrieve the `access url` that points to the location of the image on the remote server. Use the `visit` and `detector` of the first detection in the `tab_g` table above. " + "To generate a cutout for the first g-band detection for the Solar System target, query the ObsCore table for the first `visit` (`science`) image for the target.\n", + "\n", + "For stationary targets, this can be done using the ra and dec coordinates of the target. Solar System targets, however, move to different ra and dec positions between detections, and many images likely cover those (ra, dec) coordinates at times when the moving object was not at that location. To be more specific in the image query to only return images when a Solar System object was at a given location, use the `visit` and `detector` parameters, because they correspond to the images taken at a given sky location when the moving Solar System object was at that position.\n", + "\n", + "To generate a cutout, first query the International Virtual Observatory Alliance (IVOA) ObsCore table to retrieve the `access url` that points to the location of the image on the remote server. Use the `visit` and `detector` of the first detection in the `tab_g` table above." ] }, { @@ -823,7 +827,7 @@ "id": "2f6e7858-ec09-47a1-aefc-04e2a74849cb", "metadata": {}, "source": [ - "> **Figure 1**: Science image extension of the `ExposureF` cutout for Rubin discovery 2024 WP103." + "> **Figure 1**: Science image extension of the `ExposureF` cutout for the first g-band observation of Rubin discovery 2024 WP103." ] }, { @@ -858,7 +862,7 @@ "id": "590d823a-0810-4a65-9da0-5729d4314430", "metadata": {}, "source": [ - "> **Figure 2**: `ImageF` cutout format for Rubin discovery 2024 WP103." + "> **Figure 2**: `ImageF` cutout format for the first g-band observtion of Rubin discovery 2024 WP103." ] }, { @@ -876,9 +880,11 @@ "source": [ "### 4.1. Query ObsCore table for all visits\n", "\n", - "Solar System targets move to different ra and dec positions between detections, however, many images likely cover those (ra, dec) coordinates at times when the moving object was not at that location. To be more specific in the image query to only return images when a Solar System object was at a given location, use the `visit` and `detector` parameters, because they correspond to the images taken at a given sky location when the moving Solar System object was at that position.\n", + "To create a triplet stamp (i.e., the science, template, and difference images) for the first g-band detection of the Solar System target, query the ObsCore table for the `visit` (`science`), `template_coadd`, and `difference` images for the target. Rather than restricting the queries to the first detections, return all visit, template, and difference images for the target. This will avoid the need to run the queries again in Section 5 below when bulk image stamps are generated.\n", + "\n", + "As described in Section 3.1 above, use the `visit` and `detector` parameters in the image query to return images containing the Solar System target.\n", "\n", - "Set the `visit` and `detector` conditions that cutout queries must satisfy to match the fields for each detection of the Solar System object in the `tab_g` table. Returned visit images must match both the `visit` and `detector` for each detection." + "Set the `visit` and `detector` conditions that cutout queries must satisfy to match those for each g-band detection of the Solar System object in the `tab_g` table. Returned visit images must match both the `visit` and `detector` for each detection." ] }, { @@ -1163,7 +1169,7 @@ "id": "f45a8bd2-8653-42d0-8e3b-b68fb5b595f6", "metadata": {}, "source": [ - "> **Figure 3**: The cutout triplet for the first detection of this Solar System object, Rubin discovery 2024 WP103." + "> **Figure 3**: The cutout triplet for the first g-band detection of this Solar System object, Rubin discovery 2024 WP103." ] }, { @@ -1433,8 +1439,16 @@ "source": [ "## 7. Exercise for the learner\n", "\n", - "Generate cutouts for 2009 AO58 (q=2.673640 au, e=0.148635, inc=7.449680 deg, and H=16.806999)." + "Generate r-band cutouts for 2009 AO58 (q=2.673640 au, e=0.148635, inc=7.449680 deg, and H=16.806999)." ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8d021349-44d4-45ff-826c-2104c6e216c3", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": {