From 4e39cdbe4ac95b072ae7518a790ab052f8a5c748 Mon Sep 17 00:00:00 2001 From: Alec Koumjian Date: Tue, 25 Feb 2025 09:46:42 -0500 Subject: [PATCH] Track NEO example (#147) * Track NEO example * Add back-pressure check to propagate orbits --- examples/preview_orbit.ipynb | 1667 +---------------- examples/track_neo.ipynb | 202 ++ src/adam_core/orbits/query/scout.py | 6 +- .../orbits/query/tests/test_scout.py | 52 + src/adam_core/orbits/tests/test_variants.py | 124 ++ src/adam_core/orbits/variants.py | 3 + src/adam_core/propagator/propagator.py | 153 +- .../propagator/tests/test_propagator.py | 59 + src/adam_core/time/tests/test_time.py | 16 + src/adam_core/time/time.py | 8 + 10 files changed, 571 insertions(+), 1719 deletions(-) create mode 100644 examples/track_neo.ipynb create mode 100644 src/adam_core/orbits/query/tests/test_scout.py diff --git a/examples/preview_orbit.ipynb b/examples/preview_orbit.ipynb index 37d14136..811be5e5 100644 --- a/examples/preview_orbit.ipynb +++ b/examples/preview_orbit.ipynb @@ -26,1665 +26,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "line": { - "color": "rgba(65, 105, 225, 0.6)", - "width": 1 - }, - "mode": "lines", - "name": "Earth", - "type": "scatter3d", - "x": { - "bdata": "vfawbHSA77+z6MMKUM7vv3Ts13rN3u+/0DY9KUCy77+EXk82l0nvv6SgYSnfpe6/00dkhEjI7b9yGku4c7Lsvy/QSZeqZuu/4DZBwufn6b+3006lWDnov3d3Ik8bXua/Ors7gXtZ5L/xKLXFLy/iv9J0j4APx9+/ZvG+50f22r9otzTE6PTVv0dAUwGay9C//+lwmqgGx7/4c/rWG5e4vxyKdx64rIe/QglMStGusj8+KRxtXRjEP85zzzPVtc4/aY2vGpOO1D9278XlT53ZPy/Za8tNfd4/bxj0fuqS4T+lqsFifcfjP8nNDkOL2OU/p3Tp+TPC5z+QZQlBi4DpP6AmQ3QfEOs/3ttinzBu7D+LcI+PXJjtP9lFqbNnjO4/cK4AQyBI7z8+ukTUocnvP94iyfrqB/A/sLEgXyQN8D+d+YyB2OjvP9EPc+WHe+8/F8uQj4rS7j/mry4Nve7tP5p2j5fQ0ew/2VUp++196z92mNKLdfXpPym4AezeOug/+wa14QZR5j/3ojsRkjvkP9/Exeq3/uE/2ZL6HM493z8k3AllG0HaP3w0+EVGENU/UfE3NIBqzz9ToOFRHXbEP1hm9mAetLI/fifDQPQ3jb+BEfQ8FPu5vxqw5EL4Dsi/zKTxqpp40b+nM9/Rs8bWv3UHbZHq5tu/FpTN1q1n4L9n2MXBi7viv40uwg2P6uS/t2XUjjHw5r/SngRSTsjov0NZaJldb+q/ndHr847i6783TkMsfR/tv9zWkNLCI+6/WFsrO07t7r95s7j0r3rvv148xr87y++/q2elL/De779B83YC97Xvv7LDNxmUUO+/o+g/hY6v7r9Hs9WGXNTtv9GJrD0mwey/b9J/7mp4679Zm8Bxmvzpv/oFeb1bUOi/G+Zk1dl25r+88cuK2HPkv+rFcOaES+K/LVA9OvcB4L9uXKvITzbbv2CMv/ygNta/mEZurioO0b+R1LNaBY7Hv8ScRtK/rLm/ws+gsCtAkL83E81FdZWxP+SDs9TBjsM/mjniFdgvzj/Mv5R9vUzUPyD8iUV+XNk/+cyGQqY+3j/BvKp8Y3XhPwEsL5UgrOM/9ISZBCe/5T/Az1vQcKrnP/qEMZmmauk/cpqBmMX86j9QZuPW4F3sP+MwYCYUi+0/ywjsgbOB7j+2/3421D/vP/l4M1AyxO8/+qqxeuYG8D//Ob8Q5A3wP8eVS4h37e8/XZlZJcKC7z8CuFMqctzuPx5UxNTI++0/echK6zvi7D9pEpuua5HrP6H6kbBUC+o/LlPcwMBS6D+CUhOIKGvmP6D3C8Y8WOQ/YMLgosMd4j8MLv5XSX/fP/geP8CJhNo/xH40p3NV1T+eHn07ZfnPP+PpS16cCcU/IS6g1iTgsz82kFd/ZeaDv1W63vdt1ri/hzMiaM9+x7+kAar6QDHRv0EgiOmUgNa/RYzaUIWj27/fA249Dkjgv2GjsZUKnuK/j4859d7O5L+XfpRpRtbmv+vWpUibsOi/BkCFRJ9a6r/DhJU4DtHrv9n9FWDiEO2/UOVdtrkX7r9PgyTF7uPuvxhlsHiEdO+/E28Dx7jI778DSORH2t/vv0gNnMfAue+/C+CA3f1W77+OyXjh07juv3ENCBn14O2/hd4CeQ7R7L+hAraGBIvrv4be5RxXEeq/JK8VnyRn6L8VY167ApDmv6hx+/iTj+S/Jh0+9lZp4r93OaH1HiHgv3c/edV9dtu/akLYouR41r+LuETwHFPRv1XAOtl0HMi/Sh8bFpjMur8JRYv0r7aUv48zaHw1e7A/6bmRfzsCwz/fXrdFhaPNP3aF2k3QB9Q/XaY4C1Ya2T+lutsoBADeP3EQ+wmwV+E/qVp9w7mP4z+lNPWOQqTlP0S2kzXGkec/+YC2qL5U6T+vrX/BpenqPyp5MmclTew/7rWmo4187T9VMeo12nXuP2DdXUpBN+8/bQLH8w+/7z82/mXs4QXwP8v8HkEuDvA/dBvOH7nw7z8NAd9sOInvP/L1KYJk5u4/OJsTR/gI7j8VAthaC/LsPy3tUwB7o+s/TrhE0ekf6j//turfNmroP0L2RAtgheY/8A2Un5p05D9K7bV0lzviP5ROUbCfvd8/SMn7uTTG2j9AUWj8iZrVP3rek6M3RNA/WPyTzEuaxT+i3Pf0wQC1P7VANYc6vHW/YhSVaUuzt7+5bZ0WRu3GvwJjXir26dC/W6oFDT081r8oBcvsX2Lbv+LryjfHKOC/RQeBugmA4r/HXpl0obLkv615K6mMvOa/F3OK18aZ6L/VfFseaEbqv+tzmfIkv+u/nt9m0G0B7b9057mCSwvuv3dPzucL2+6/VDo3aAtv779PJDWTIsbvvzziKyDy3++/pPaXj8y877/wd2Fke13vv7CgcNDXwu6/rrDw/Ozt7b+bqZxrb+DsvzE9COjBnOu/8dTmOsUl6r9aSglCgn7ov9VG42Hmqea/8rzZhTqr5L/r+MR5X4biv1qVa5qmP+C/0nsKLCC3278HR/vL1LzWv+266MLXmNG/Q42sjtGoyL8nYrvhFea7vzFhO/pnJ5m/HhpNo8q2rj/v0OUinHLCP9ftR55yF80/NgPcP1XE0z/2M8hoKdnYPzhhqQuawN0/u9WSoQg54T/gawPb3nLjP4j3OlXNieU/5dNPJ8F55z9MnVnt1T7pPxE44iCu1eo/fmObTJU77D/WGa/WEm7tP2xRspqrau4/iJZC/xMv7z9wpHqEeLnvP+cyewpoBPA//k7AXlAO8D/PVz/jkPTvP+XW+rNvkO8/g0naXXDw7j8Lgo+TfhXuPxCpoelTAe0/Hj1DNfW16z9ILh61gTXqPzskW4legug/g57Py3Of5j9V2S4Rd5DkP43CqTSaWeI/gojJPSL+3z9ApghGQArbP/GkvFia4NU/m3YwA0GL0D9lEsm9zSrGPwA4Vu6sKLY/Qq66zoaVR7+deguJ04e2v3qFLEQMW8a/NCf1WwGj0L/A+O1j1/bVv2rKu799Htu/6x2PwCAI4L8hMPnlb2Hiv30zLaaHluS/kksk7L6i5r9Y3Fo39IHov1mv+lfDMOq//ftJCEqs678vHFH46fHsv0GSf+sX/+2/blZaQanR7r+tupSJR2jvv1+OTIJRwu+/J2cLlJbf779CCk/kDMDvv6ZBmA7YY++/xX/uWcTL7r9ht80vZfntv6J3rOfO7uy/GT+Jk02u679UTKG7KDrqv+ix07P9lOi/jvtmDBnC5r9e5jifScXkv99zoU+WouK/ZzlCYfBd4L+HFy+nbfbbv17NrjJ5/da/gV2Lm5ra0b80JENWjC/JvzL8AYn6+ry/H0IaA92Jnb/uJkONgIusP6/DKNfn6sE/wUL6IVOSzD+NBR+JkYLTP9Vp8B55mNg/cFd/JHWC3T8CEg3t5BvhP3D6PzC2V+M/kGyE+FNw5T977Qqp0mHnP9fIigvhKOk/M2pPJ3HC6j8m0jGgVivsP2v+7Y2NYO0/RyT804Rf7j/FHftVWibvPw==", - "dtype": "f8" - }, - "y": { - "bdata": "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", - "dtype": "f8" - }, - "z": { - "bdata": "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", - "dtype": "f8" - } - }, - { - "line": { - "color": "rgba(205, 92, 92, 0.6)", - "width": 1 - }, - "mode": "lines", - "name": "Mars", - "type": "scatter3d", - "x": { - "bdata": "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", - "dtype": "f8" - }, - "y": { - "bdata": "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", - "dtype": "f8" - }, - "z": { - "bdata": "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", - "dtype": "f8" - } - }, - { - "line": { - "color": "rgba(218, 165, 32, 0.6)", - "width": 1 - }, - "mode": "lines", - "name": "Venus", - "type": "scatter3d", - "x": { - "bdata": "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", - "dtype": "f8" - }, - "y": { - "bdata": "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", - "dtype": "f8" - }, - "z": { - "bdata": "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", - "dtype": "f8" - } - }, - { - "line": { - "color": "rgba(160, 82, 45, 0.6)", - "width": 1 - }, - "mode": "lines", - "name": "Mercury", - "type": "scatter3d", - "x": { - "bdata": "R88LcN5bkr+UwuD3isbGvwW03h3hRtO/4bWzTbXm17+3U336RUnZvxEGo57q4de/+i2AkHJB1L+1dIMx4+7Nv2GZXSAQF8G/tvpa4Y0DmL8ollCcUJq2P1sGwGq3tsg/bpi3pu/90T9yJVigkdPVP8dN0UVeB9c/3Gq4xzrH1D+yHcg/bEbNP5oqGOn537Q/GXdHg4/ptb8l72p1jujNv7K0hF/hj9W/0TKfuHXV2L8ewocIYgXZvzCUqUArpda/jzYgsgNH0r/OlHzhqu7IvwfIpl427La/VLS7mn66lj87WRPSGOzAP3WkHvtGoM0/MgnHBbTP0z8TSPH/Yq7WP6BaHWotktY/ozcM9zfA0j8AIee8OT/GP4nqJOwAO4w/5OzBN8Yww7+v/iXvYQjSv1r5CJ/xSde/x3d5/jpB2b/bB0d3HFXYv4lVoHNPFNW/Opl0s50P0L8UiEcWN6DDvw4hm8Olxqa/juqbJaRMsT8DOSGArlHGPxqgTvo6DNE/aZhHDfhH1T8Xoe4TKgvXP9i/BxGCftU/iwiKXSMU0D/RZCX6pKS8P8VMh7DH8au/sO/mdWS5yr9ukP/jO5PUv7FUgirNd9i/t/tPHrYy2b+8Dbmrb0LXv49miIP+ONO/nXa1JqhIy79hAyx+HCq8v2mI6Z9fOVI/XyaY4q6yvD/9STrMBGjLPwG3kUrRAtM/A4859g9Y1j/BUiwNX9vWP86KgDXXxNM/LDjgwt2eyT86zBIRtTWnP3gXr1r26r6/t6V4A9is0L/t43lea4/Wv5dy0g8rH9m/pzwp9E6z2L/3rHJOONfVvzv9/xCYHNG/bFocExIcxr9fLxGiXr2wv0t6QIX556c/by0I9Dvcwz+UMTun6gvQP5VP+oFJptQ/Q4+oBffw1j98GyxpJRLWP2XzA+0TZNE/AVbUUnQTwj+7zvdHqamXv54mMoKhWMe/npIGhyN4078LzeYyff3XvycEkDELSNm/ouhfW+/M178I7nVsOh3Uv6sjucWUkM2/owZZ3wyrwL8FxwT/D3aUvwBmTM5OeLc/2CPzl8oZyT/Gv84lMCTSPwjgCI5V6NU/5K2sSeID1z/7mV4G5KXUP1YxxHXRx8w/BN1tPrOVsz8ZxuBcDDK3v6dIikXuaM6/LDIxMUm21b/PIJuVBOLYv4YRtGmT+9i/eGVf3HWJ1r+B+3aU2R3Sv3MEfp3Sici/zDuyfZoNtr8hmDvpw0eaP2ByNmd1V8E/qg6DeZb7zT86Kx4hpu/TP8V1irsWutY/TndUcvyC1j9eD5HlDZLSPyUqkh+QrMU/QbJT8uSUgT+bZU46JMrDv34Ho52sPtK/HBXjJK5l1785rmw2PkTZv9DD7Yh/Q9i/vm9XMZry1L9rEDzWVsTPv1r2qMITNsO/v2xH4zoBpb/Sj25bPi2yP4L7XuPjt8Y/OxVzZxo10T/MIUaAjWDVP1O2yPWzDNc/46YQb+hi1T8C9ZCPl7PPP1rsVyRCYrs/9R83VUKSrr/0DqZvwELLv1kOk5XMvtS/Sxx7vRWJ2L+CKWQlzizZv2HhF9G+Kde/anM+LQIS07/gxVc2mObKv2N8JkgCTru/ztG9oXfNcj+BRT/8b429P7FsXlhIx8s/eFxpV90l0z/tdQ3yHWjWPySjVs+q0dY/+eymTHmc0z+RJKkKlhTJP6hqql7OkKQ/Qb6H1d8UwL+jVz3q8OfQv9FHyJYhsNa/1NMPFIwm2b8xNcVuOKXYvw2jl/4uuNW/3pwqowLx0L9y1+ClHLTFv4gk/4nht6+/QFZgvxitqT/dUphHOEXEPx7oyFA3N9A/4OTp/X/C1D823w1zavfWPzQJgQdu/NU/ejfjjFkv0T8w8JDWjXjBP1K1VxuS9py/Rwbi5Xnpx7934QanjqjTv6iUl7J1E9i/uBVoNCJG2b9j4MS+arfXvwewgdyZ+NO/6qbr860xzb+VOHswpD7AvyRViSMD55C/Rjr9UjpWuD+dLW/piXzJP2LzdiQWStI/7nm3dIH81T8h8ivKif/WP3Qyfrp+g9Q/WtFSVkJHzD8zuVZjfUmyPx9Lbh/Lebi/El7CwQrozr8Lcm6V7dvVv0Eeke/d7di/rDx3TC7x2L8ifzPcSm3Wv4aln3xX9NG/K+N2lH4kyL9BfMisaC61v6WU0erG1Z0/2hfDwqzCwT94PHI2clbOP8Z5mhwrD9Q/ggPWLx/F1j9E+3YE5XLWP5OKVD7sYtI/vu/U2ZUYxT/z8hx6DrxrPzL3n11FYsS//wt/uxZ00r+BJQOIkoDXv6f6HR+SRtm/G8SyEGIx2L/6HdGPjtDUvx1xwRcMac+/ZYvHh8XLwr+sjMLL+Tujv2CAmlFXDbM/nxlsBpodxz/obUbWkl3RPyfgSzuKeNU/2uAuCG0N1z9IUylmVEbVPwzQsLAbPc8/XI12ZDIeuj8v7eRdRJiwv+SmCL6aysu/q03zXX7p1L8NNUFfm5nYv+Y71MZTJtm/GhI42qwQ17+ANVuKz+rSv+kzAUZihMq/ATAt5xFyur8hHM29rYGAP52xBLAxZ74/LOjuYc4lzD90I+zqZEjTP9IWPW17d9Y/MTvELB7H1j/lGBOPPnPTPzng6SI0icg/I9m3U8PsoT/xS8i0yLLAvzPk/YoHItG/o0UuYebP1r9+A4iFMy3Zv0lw07Wnlti/1a/bJOWY1b9eE/Y4XcXQv0Y1Z31XTMW/2NOYktX2rb/ple20dm+rP8/p/6JJrcQ/Y++WZe9h0D/g68xu/93UP9GCqUUD/dY/YK0v+sTl1T+K28HVxfnQP+aEG7PS3MA/kD4wBMcfob8yvtAc1njIv2vW/hQW2NO/jayhraMo2L9VKueGoUPZv/87js6Fode/0VYuS8zT079e4bXOxtLMvw/fXYUQpb+//TM2BOq4ir8nxqRljDK5P/SKvVJB3sk/5xTcRVlv0j95UbLK6Q/WP7J7MjRR+tY/YTE+7zZg1D+mCooCcMXLP88STBwY/bA/cP8/+yy/ub/69m0cT2XPv7RpdyKmANa/IM+vaPj42L8cKXlsRObYv792CODTUNa/s752F7zK0b9WvSPlT7/Hv3eTTWsaULS/ptuWLw6voD9DYOaK7yzCPy8zHukbsM4/KZjNw/ct1D/ooy/kUM/WP1EofbrjYdY/bbfy/vUy0j80/w+au4PEP3pZ5x8ngV2/RwIiE+n4xL+TV8WEkqjSvwYHncadmte/rR+ZxD9I2b9Hos5l1x7Yv3bMmHFLrtS/UnpX2LENz7927EOhu2HCv4mQJa3zeKG/dSahhsvrsz+MSGmMPoLHP2jWu2FkhdE/abAUiMSP1T84XYqjUA3XPw1Hhl7yKNU/ZarU1ovFzj/egN7CRtq4P+cDEMiu5LG/Fgjgo2VQzL9H+oa9KBPVv6yJl2JKqdi/rd+stkEf2b/qncfOQPfWv9SNKm96w9K/AbqnlEkiyr8hBSkvCZe5v/D0mdGUkIc/slkTHug+vz/FbTXrD4PMPw==", - "dtype": "f8" - }, - "y": { - "bdata": "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", - "dtype": "f8" - }, - "z": { - "bdata": "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", - "dtype": "f8" - } - }, - { - "hovertext": [ - "2018-03-13T00:00:00.000", - "2018-03-18T00:00:00.000", - "2018-03-23T00:00:00.000", - "2018-03-28T00:00:00.000", - "2018-04-02T00:00:00.000", - "2018-04-07T00:00:00.000", - "2018-04-12T00:00:00.000", - "2018-04-17T00:00:00.000", - "2018-04-22T00:00:00.000", - "2018-04-27T00:00:00.000", - "2018-05-02T00:00:00.000", - "2018-05-07T00:00:00.000", - "2018-05-12T00:00:00.000", - "2018-05-17T00:00:00.000", - "2018-05-22T00:00:00.000", - "2018-05-27T00:00:00.000", - "2018-06-01T00:00:00.000", - "2018-06-06T00:00:00.000", - "2018-06-11T00:00:00.000", - "2018-06-16T00:00:00.000", - "2018-06-21T00:00:00.000", - "2018-06-26T00:00:00.000", - "2018-07-01T00:00:00.000", - "2018-07-06T00:00:00.000", - "2018-07-11T00:00:00.000", - "2018-07-16T00:00:00.000", - "2018-07-21T00:00:00.000", - "2018-07-26T00:00:00.000", - "2018-07-31T00:00:00.000", - "2018-08-05T00:00:00.000", - "2018-08-10T00:00:00.000", - "2018-08-15T00:00:00.000", - "2018-08-20T00:00:00.000", - "2018-08-25T00:00:00.000", - "2018-08-30T00:00:00.000", - "2018-09-04T00:00:00.000", - "2018-09-09T00:00:00.000", - "2018-09-14T00:00:00.000", - "2018-09-19T00:00:00.000", - "2018-09-24T00:00:00.000", - "2018-09-29T00:00:00.000", - "2018-10-04T00:00:00.000", - "2018-10-09T00:00:00.000", - "2018-10-14T00:00:00.000", - "2018-10-19T00:00:00.000", - "2018-10-24T00:00:00.000", - "2018-10-29T00:00:00.000", - "2018-11-03T00:00:00.000", - "2018-11-08T00:00:00.000", - "2018-11-13T00:00:00.000", - "2018-11-18T00:00:00.000", - "2018-11-23T00:00:00.000", - "2018-11-28T00:00:00.000", - "2018-12-03T00:00:00.000", - "2018-12-08T00:00:00.000", - "2018-12-13T00:00:00.000", - "2018-12-18T00:00:00.000", - "2018-12-23T00:00:00.000", - "2018-12-28T00:00:00.000", - "2019-01-02T00:00:00.000", - "2019-01-07T00:00:00.000", - "2019-01-12T00:00:00.000", - "2019-01-17T00:00:00.000", - "2019-01-22T00:00:00.000", - "2019-01-27T00:00:00.000", - "2019-02-01T00:00:00.000", - "2019-02-06T00:00:00.000", - "2019-02-11T00:00:00.000", - "2019-02-16T00:00:00.000", - "2019-02-21T00:00:00.000", - "2019-02-26T00:00:00.000", - "2019-03-03T00:00:00.000", - "2019-03-08T00:00:00.000", - "2019-03-13T00:00:00.000", - "2019-03-18T00:00:00.000", - "2019-03-23T00:00:00.000", - "2019-03-28T00:00:00.000", - "2019-04-02T00:00:00.000", - "2019-04-07T00:00:00.000", - "2019-04-12T00:00:00.000", - "2019-04-17T00:00:00.000", - "2019-04-22T00:00:00.000", - "2019-04-27T00:00:00.000", - "2019-05-02T00:00:00.000", - "2019-05-07T00:00:00.000", - "2019-05-12T00:00:00.000", - "2019-05-17T00:00:00.000", - "2019-05-22T00:00:00.000", - "2019-05-27T00:00:00.000", - "2019-06-01T00:00:00.000", - "2019-06-06T00:00:00.000", - "2019-06-11T00:00:00.000", - "2019-06-16T00:00:00.000", - "2019-06-21T00:00:00.000", - "2019-06-26T00:00:00.000", - "2019-07-01T00:00:00.000", - "2019-07-06T00:00:00.000", - "2019-07-11T00:00:00.000", - "2019-07-16T00:00:00.000", - "2019-07-21T00:00:00.000", - "2019-07-26T00:00:00.000", - "2019-07-31T00:00:00.000", - "2019-08-05T00:00:00.000", - "2019-08-10T00:00:00.000", - "2019-08-15T00:00:00.000", - "2019-08-20T00:00:00.000", - "2019-08-25T00:00:00.000", - "2019-08-30T00:00:00.000", - "2019-09-04T00:00:00.000", - "2019-09-09T00:00:00.000", - "2019-09-14T00:00:00.000", - "2019-09-19T00:00:00.000", - "2019-09-24T00:00:00.000", - "2019-09-29T00:00:00.000", - "2019-10-04T00:00:00.000", - "2019-10-09T00:00:00.000", - "2019-10-14T00:00:00.000", - "2019-10-19T00:00:00.000", - "2019-10-24T00:00:00.000", - "2019-10-29T00:00:00.000", - "2019-11-03T00:00:00.000", - "2019-11-08T00:00:00.000", - "2019-11-13T00:00:00.000", - "2019-11-18T00:00:00.000", - "2019-11-23T00:00:00.000", - "2019-11-28T00:00:00.000", - "2019-12-03T00:00:00.000", - "2019-12-08T00:00:00.000", - "2019-12-13T00:00:00.000", - "2019-12-18T00:00:00.000", - "2019-12-23T00:00:00.000", - "2019-12-28T00:00:00.000", - "2020-01-02T00:00:00.000", - "2020-01-07T00:00:00.000", - "2020-01-12T00:00:00.000", - "2020-01-17T00:00:00.000", - "2020-01-22T00:00:00.000", - "2020-01-27T00:00:00.000", - "2020-02-01T00:00:00.000", - "2020-02-06T00:00:00.000", - "2020-02-11T00:00:00.000", - "2020-02-16T00:00:00.000", - "2020-02-21T00:00:00.000", - "2020-02-26T00:00:00.000", - "2020-03-02T00:00:00.000", - "2020-03-07T00:00:00.000", - "2020-03-12T00:00:00.000", - "2020-03-17T00:00:00.000", - "2020-03-22T00:00:00.000", - "2020-03-27T00:00:00.000", - "2020-04-01T00:00:00.000", - "2020-04-06T00:00:00.000", - "2020-04-11T00:00:00.000", - "2020-04-16T00:00:00.000", - "2020-04-21T00:00:00.000", - "2020-04-26T00:00:00.000", - "2020-05-01T00:00:00.000", - "2020-05-06T00:00:00.000", - "2020-05-11T00:00:00.000", - "2020-05-16T00:00:00.000", - "2020-05-21T00:00:00.000", - "2020-05-26T00:00:00.000", - "2020-05-31T00:00:00.000", - "2020-06-05T00:00:00.000", - "2020-06-10T00:00:00.000", - "2020-06-15T00:00:00.000", - "2020-06-20T00:00:00.000", - "2020-06-25T00:00:00.000", - "2020-06-30T00:00:00.000", - "2020-07-05T00:00:00.000", - "2020-07-10T00:00:00.000", - "2020-07-15T00:00:00.000", - "2020-07-20T00:00:00.000", - "2020-07-25T00:00:00.000", - "2020-07-30T00:00:00.000", - "2020-08-04T00:00:00.000", - "2020-08-09T00:00:00.000", - "2020-08-14T00:00:00.000", - "2020-08-19T00:00:00.000", - "2020-08-24T00:00:00.000", - "2020-08-29T00:00:00.000", - "2020-09-03T00:00:00.000", - "2020-09-08T00:00:00.000", - "2020-09-13T00:00:00.000", - "2020-09-18T00:00:00.000", - "2020-09-23T00:00:00.000", - "2020-09-28T00:00:00.000", - "2020-10-03T00:00:00.000", - "2020-10-08T00:00:00.000", - "2020-10-13T00:00:00.000", - "2020-10-18T00:00:00.000", - "2020-10-23T00:00:00.000", - "2020-10-28T00:00:00.000", - "2020-11-02T00:00:00.000", - "2020-11-07T00:00:00.000", - "2020-11-12T00:00:00.000", - "2020-11-17T00:00:00.000", - "2020-11-22T00:00:00.000", - "2020-11-27T00:00:00.000", - "2020-12-02T00:00:00.000", - "2020-12-07T00:00:00.000", - "2020-12-12T00:00:00.000", - "2020-12-17T00:00:00.000", - "2020-12-22T00:00:00.000", - "2020-12-27T00:00:00.000", - "2021-01-01T00:00:00.000", - "2021-01-06T00:00:00.000", - "2021-01-11T00:00:00.000", - "2021-01-16T00:00:00.000", - "2021-01-21T00:00:00.000", - "2021-01-26T00:00:00.000", - "2021-01-31T00:00:00.000", - "2021-02-05T00:00:00.000", - "2021-02-10T00:00:00.000", - "2021-02-15T00:00:00.000", - "2021-02-20T00:00:00.000", - "2021-02-25T00:00:00.000", - "2021-03-02T00:00:00.000", - "2021-03-07T00:00:00.000", - "2021-03-12T00:00:00.000", - "2021-03-17T00:00:00.000", - "2021-03-22T00:00:00.000", - "2021-03-27T00:00:00.000", - "2021-04-01T00:00:00.000", - "2021-04-06T00:00:00.000", - "2021-04-11T00:00:00.000", - "2021-04-16T00:00:00.000", - "2021-04-21T00:00:00.000", - "2021-04-26T00:00:00.000", - "2021-05-01T00:00:00.000", - "2021-05-06T00:00:00.000", - "2021-05-11T00:00:00.000", - "2021-05-16T00:00:00.000", - "2021-05-21T00:00:00.000", - "2021-05-26T00:00:00.000", - "2021-05-31T00:00:00.000", - "2021-06-05T00:00:00.000", - "2021-06-10T00:00:00.000", - "2021-06-15T00:00:00.000", - "2021-06-20T00:00:00.000", - "2021-06-25T00:00:00.000", - "2021-06-30T00:00:00.000", - "2021-07-05T00:00:00.000", - "2021-07-10T00:00:00.000", - "2021-07-15T00:00:00.000", - "2021-07-20T00:00:00.000", - "2021-07-25T00:00:00.000", - "2021-07-30T00:00:00.000", - "2021-08-04T00:00:00.000", - "2021-08-09T00:00:00.000", - "2021-08-14T00:00:00.000", - "2021-08-19T00:00:00.000", - "2021-08-24T00:00:00.000", - "2021-08-29T00:00:00.000", - "2021-09-03T00:00:00.000", - "2021-09-08T00:00:00.000", - "2021-09-13T00:00:00.000", - "2021-09-18T00:00:00.000", - "2021-09-23T00:00:00.000", - "2021-09-28T00:00:00.000", - "2021-10-03T00:00:00.000", - "2021-10-08T00:00:00.000", - "2021-10-13T00:00:00.000", - "2021-10-18T00:00:00.000", - "2021-10-23T00:00:00.000", - "2021-10-28T00:00:00.000", - "2021-11-02T00:00:00.000", - "2021-11-07T00:00:00.000", - "2021-11-12T00:00:00.000", - "2021-11-17T00:00:00.000", - "2021-11-22T00:00:00.000", - "2021-11-27T00:00:00.000", - "2021-12-02T00:00:00.000", - "2021-12-07T00:00:00.000", - "2021-12-12T00:00:00.000", - "2021-12-17T00:00:00.000", - "2021-12-22T00:00:00.000", - "2021-12-27T00:00:00.000", - "2022-01-01T00:00:00.000", - "2022-01-06T00:00:00.000", - "2022-01-11T00:00:00.000", - "2022-01-16T00:00:00.000", - "2022-01-21T00:00:00.000", - "2022-01-26T00:00:00.000", - "2022-01-31T00:00:00.000", - "2022-02-05T00:00:00.000", - "2022-02-10T00:00:00.000", - "2022-02-15T00:00:00.000", - "2022-02-20T00:00:00.000", - "2022-02-25T00:00:00.000", - "2022-03-02T00:00:00.000", - "2022-03-07T00:00:00.000", - "2022-03-12T00:00:00.000", - "2022-03-17T00:00:00.000", - "2022-03-22T00:00:00.000", - "2022-03-27T00:00:00.000", - "2022-04-01T00:00:00.000", - "2022-04-06T00:00:00.000", - "2022-04-11T00:00:00.000", - "2022-04-16T00:00:00.000", - "2022-04-21T00:00:00.000", - "2022-04-26T00:00:00.000", - "2022-05-01T00:00:00.000", - "2022-05-06T00:00:00.000", - "2022-05-11T00:00:00.000", - "2022-05-16T00:00:00.000", - "2022-05-21T00:00:00.000", - "2022-05-26T00:00:00.000", - "2022-05-31T00:00:00.000", - "2022-06-05T00:00:00.000", - "2022-06-10T00:00:00.000", - "2022-06-15T00:00:00.000", - "2022-06-20T00:00:00.000", - "2022-06-25T00:00:00.000", - "2022-06-30T00:00:00.000", - "2022-07-05T00:00:00.000", - "2022-07-10T00:00:00.000", - "2022-07-15T00:00:00.000", - "2022-07-20T00:00:00.000", - "2022-07-25T00:00:00.000", - "2022-07-30T00:00:00.000", - "2022-08-04T00:00:00.000", - "2022-08-09T00:00:00.000", - "2022-08-14T00:00:00.000", - "2022-08-19T00:00:00.000", - "2022-08-24T00:00:00.000", - "2022-08-29T00:00:00.000", - "2022-09-03T00:00:00.000", - "2022-09-08T00:00:00.000" - ], - "line": { - "color": "#00FF00", - "width": 2 - }, - "mode": "lines", - "name": "00000 99942 Apophis (2004 MN4)", - "type": "scatter3d", - "x": { - "bdata": "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", - "dtype": "f8" - }, - "y": { - "bdata": "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", - "dtype": "f8" - }, - "z": { - "bdata": "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", - "dtype": "f8" - } - }, - { - "hovertext": [ - "2018-03-13T00:00:00.000", - "2018-03-18T00:00:00.000", - "2018-03-23T00:00:00.000", - "2018-03-28T00:00:00.000", - "2018-04-02T00:00:00.000", - "2018-04-07T00:00:00.000", - "2018-04-12T00:00:00.000", - "2018-04-17T00:00:00.000", - "2018-04-22T00:00:00.000", - "2018-04-27T00:00:00.000", - "2018-05-02T00:00:00.000", - "2018-05-07T00:00:00.000", - "2018-05-12T00:00:00.000", - "2018-05-17T00:00:00.000", - "2018-05-22T00:00:00.000", - "2018-05-27T00:00:00.000", - "2018-06-01T00:00:00.000", - "2018-06-06T00:00:00.000", - "2018-06-11T00:00:00.000", - "2018-06-16T00:00:00.000", - "2018-06-21T00:00:00.000", - "2018-06-26T00:00:00.000", - "2018-07-01T00:00:00.000", - "2018-07-06T00:00:00.000", - "2018-07-11T00:00:00.000", - "2018-07-16T00:00:00.000", - "2018-07-21T00:00:00.000", - "2018-07-26T00:00:00.000", - "2018-07-31T00:00:00.000", - "2018-08-05T00:00:00.000", - "2018-08-10T00:00:00.000", - "2018-08-15T00:00:00.000", - "2018-08-20T00:00:00.000", - "2018-08-25T00:00:00.000", - "2018-08-30T00:00:00.000", - "2018-09-04T00:00:00.000", - "2018-09-09T00:00:00.000", - "2018-09-14T00:00:00.000", - "2018-09-19T00:00:00.000", - "2018-09-24T00:00:00.000", - "2018-09-29T00:00:00.000", - "2018-10-04T00:00:00.000", - "2018-10-09T00:00:00.000", - "2018-10-14T00:00:00.000", - "2018-10-19T00:00:00.000", - "2018-10-24T00:00:00.000", - "2018-10-29T00:00:00.000", - "2018-11-03T00:00:00.000", - "2018-11-08T00:00:00.000", - "2018-11-13T00:00:00.000", - "2018-11-18T00:00:00.000", - "2018-11-23T00:00:00.000", - "2018-11-28T00:00:00.000", - "2018-12-03T00:00:00.000", - "2018-12-08T00:00:00.000", - "2018-12-13T00:00:00.000", - "2018-12-18T00:00:00.000", - "2018-12-23T00:00:00.000", - "2018-12-28T00:00:00.000", - "2019-01-02T00:00:00.000", - "2019-01-07T00:00:00.000", - "2019-01-12T00:00:00.000", - "2019-01-17T00:00:00.000", - "2019-01-22T00:00:00.000", - "2019-01-27T00:00:00.000", - "2019-02-01T00:00:00.000", - "2019-02-06T00:00:00.000", - "2019-02-11T00:00:00.000", - "2019-02-16T00:00:00.000", - "2019-02-21T00:00:00.000", - "2019-02-26T00:00:00.000", - "2019-03-03T00:00:00.000", - "2019-03-08T00:00:00.000", - "2019-03-13T00:00:00.000", - "2019-03-18T00:00:00.000", - "2019-03-23T00:00:00.000", - "2019-03-28T00:00:00.000", - "2019-04-02T00:00:00.000", - "2019-04-07T00:00:00.000", - "2019-04-12T00:00:00.000", - "2019-04-17T00:00:00.000", - "2019-04-22T00:00:00.000", - "2019-04-27T00:00:00.000", - "2019-05-02T00:00:00.000", - "2019-05-07T00:00:00.000", - "2019-05-12T00:00:00.000", - "2019-05-17T00:00:00.000", - "2019-05-22T00:00:00.000", - "2019-05-27T00:00:00.000", - "2019-06-01T00:00:00.000", - "2019-06-06T00:00:00.000", - "2019-06-11T00:00:00.000", - "2019-06-16T00:00:00.000", - "2019-06-21T00:00:00.000", - "2019-06-26T00:00:00.000", - "2019-07-01T00:00:00.000", - "2019-07-06T00:00:00.000", - "2019-07-11T00:00:00.000", - "2019-07-16T00:00:00.000", - "2019-07-21T00:00:00.000", - "2019-07-26T00:00:00.000", - "2019-07-31T00:00:00.000", - "2019-08-05T00:00:00.000", - "2019-08-10T00:00:00.000", - "2019-08-15T00:00:00.000", - "2019-08-20T00:00:00.000", - "2019-08-25T00:00:00.000", - "2019-08-30T00:00:00.000", - "2019-09-04T00:00:00.000", - "2019-09-09T00:00:00.000", - "2019-09-14T00:00:00.000", - "2019-09-19T00:00:00.000", - "2019-09-24T00:00:00.000", - "2019-09-29T00:00:00.000", - "2019-10-04T00:00:00.000", - "2019-10-09T00:00:00.000", - "2019-10-14T00:00:00.000", - "2019-10-19T00:00:00.000", - "2019-10-24T00:00:00.000", - "2019-10-29T00:00:00.000", - "2019-11-03T00:00:00.000", - "2019-11-08T00:00:00.000", - "2019-11-13T00:00:00.000", - "2019-11-18T00:00:00.000", - "2019-11-23T00:00:00.000", - "2019-11-28T00:00:00.000", - "2019-12-03T00:00:00.000", - "2019-12-08T00:00:00.000", - "2019-12-13T00:00:00.000", - "2019-12-18T00:00:00.000", - "2019-12-23T00:00:00.000", - "2019-12-28T00:00:00.000", - "2020-01-02T00:00:00.000", - "2020-01-07T00:00:00.000", - "2020-01-12T00:00:00.000", - "2020-01-17T00:00:00.000", - "2020-01-22T00:00:00.000", - "2020-01-27T00:00:00.000", - "2020-02-01T00:00:00.000", - "2020-02-06T00:00:00.000", - "2020-02-11T00:00:00.000", - "2020-02-16T00:00:00.000", - "2020-02-21T00:00:00.000", - "2020-02-26T00:00:00.000", - "2020-03-02T00:00:00.000", - "2020-03-07T00:00:00.000", - "2020-03-12T00:00:00.000", - "2020-03-17T00:00:00.000", - "2020-03-22T00:00:00.000", - "2020-03-27T00:00:00.000", - "2020-04-01T00:00:00.000", - "2020-04-06T00:00:00.000", - "2020-04-11T00:00:00.000", - "2020-04-16T00:00:00.000", - "2020-04-21T00:00:00.000", - "2020-04-26T00:00:00.000", - "2020-05-01T00:00:00.000", - "2020-05-06T00:00:00.000", - "2020-05-11T00:00:00.000", - "2020-05-16T00:00:00.000", - "2020-05-21T00:00:00.000", - "2020-05-26T00:00:00.000", - "2020-05-31T00:00:00.000", - "2020-06-05T00:00:00.000", - "2020-06-10T00:00:00.000", - "2020-06-15T00:00:00.000", - "2020-06-20T00:00:00.000", - "2020-06-25T00:00:00.000", - "2020-06-30T00:00:00.000", - "2020-07-05T00:00:00.000", - "2020-07-10T00:00:00.000", - "2020-07-15T00:00:00.000", - "2020-07-20T00:00:00.000", - "2020-07-25T00:00:00.000", - "2020-07-30T00:00:00.000", - "2020-08-04T00:00:00.000", - "2020-08-09T00:00:00.000", - "2020-08-14T00:00:00.000", - "2020-08-19T00:00:00.000", - "2020-08-24T00:00:00.000", - "2020-08-29T00:00:00.000", - "2020-09-03T00:00:00.000", - "2020-09-08T00:00:00.000", - "2020-09-13T00:00:00.000", - "2020-09-18T00:00:00.000", - "2020-09-23T00:00:00.000", - "2020-09-28T00:00:00.000", - "2020-10-03T00:00:00.000", - "2020-10-08T00:00:00.000", - "2020-10-13T00:00:00.000", - "2020-10-18T00:00:00.000", - "2020-10-23T00:00:00.000", - "2020-10-28T00:00:00.000", - "2020-11-02T00:00:00.000", - "2020-11-07T00:00:00.000", - "2020-11-12T00:00:00.000", - "2020-11-17T00:00:00.000", - "2020-11-22T00:00:00.000", - "2020-11-27T00:00:00.000", - "2020-12-02T00:00:00.000", - "2020-12-07T00:00:00.000", - "2020-12-12T00:00:00.000", - "2020-12-17T00:00:00.000", - "2020-12-22T00:00:00.000", - "2020-12-27T00:00:00.000", - "2021-01-01T00:00:00.000", - "2021-01-06T00:00:00.000", - "2021-01-11T00:00:00.000", - "2021-01-16T00:00:00.000", - "2021-01-21T00:00:00.000", - "2021-01-26T00:00:00.000", - "2021-01-31T00:00:00.000", - "2021-02-05T00:00:00.000", - "2021-02-10T00:00:00.000", - "2021-02-15T00:00:00.000", - "2021-02-20T00:00:00.000", - "2021-02-25T00:00:00.000", - "2021-03-02T00:00:00.000", - "2021-03-07T00:00:00.000", - "2021-03-12T00:00:00.000", - "2021-03-17T00:00:00.000", - "2021-03-22T00:00:00.000", - "2021-03-27T00:00:00.000", - "2021-04-01T00:00:00.000", - "2021-04-06T00:00:00.000", - "2021-04-11T00:00:00.000", - "2021-04-16T00:00:00.000", - "2021-04-21T00:00:00.000", - "2021-04-26T00:00:00.000", - "2021-05-01T00:00:00.000", - "2021-05-06T00:00:00.000", - "2021-05-11T00:00:00.000", - "2021-05-16T00:00:00.000", - "2021-05-21T00:00:00.000", - "2021-05-26T00:00:00.000", - "2021-05-31T00:00:00.000", - "2021-06-05T00:00:00.000", - "2021-06-10T00:00:00.000", - "2021-06-15T00:00:00.000", - "2021-06-20T00:00:00.000", - "2021-06-25T00:00:00.000", - "2021-06-30T00:00:00.000", - "2021-07-05T00:00:00.000", - "2021-07-10T00:00:00.000", - "2021-07-15T00:00:00.000", - "2021-07-20T00:00:00.000", - "2021-07-25T00:00:00.000", - "2021-07-30T00:00:00.000", - "2021-08-04T00:00:00.000", - "2021-08-09T00:00:00.000", - "2021-08-14T00:00:00.000", - "2021-08-19T00:00:00.000", - "2021-08-24T00:00:00.000", - "2021-08-29T00:00:00.000", - "2021-09-03T00:00:00.000", - "2021-09-08T00:00:00.000", - "2021-09-13T00:00:00.000", - "2021-09-18T00:00:00.000", - "2021-09-23T00:00:00.000", - "2021-09-28T00:00:00.000", - "2021-10-03T00:00:00.000", - "2021-10-08T00:00:00.000", - "2021-10-13T00:00:00.000", - "2021-10-18T00:00:00.000", - "2021-10-23T00:00:00.000", - "2021-10-28T00:00:00.000", - "2021-11-02T00:00:00.000", - "2021-11-07T00:00:00.000", - "2021-11-12T00:00:00.000", - "2021-11-17T00:00:00.000", - "2021-11-22T00:00:00.000", - "2021-11-27T00:00:00.000", - "2021-12-02T00:00:00.000", - "2021-12-07T00:00:00.000", - "2021-12-12T00:00:00.000", - "2021-12-17T00:00:00.000", - "2021-12-22T00:00:00.000", - "2021-12-27T00:00:00.000", - "2022-01-01T00:00:00.000", - "2022-01-06T00:00:00.000", - "2022-01-11T00:00:00.000", - "2022-01-16T00:00:00.000", - "2022-01-21T00:00:00.000", - "2022-01-26T00:00:00.000", - "2022-01-31T00:00:00.000", - "2022-02-05T00:00:00.000", - "2022-02-10T00:00:00.000", - "2022-02-15T00:00:00.000", - "2022-02-20T00:00:00.000", - "2022-02-25T00:00:00.000", - "2022-03-02T00:00:00.000", - "2022-03-07T00:00:00.000", - "2022-03-12T00:00:00.000", - "2022-03-17T00:00:00.000", - "2022-03-22T00:00:00.000", - "2022-03-27T00:00:00.000", - "2022-04-01T00:00:00.000", - "2022-04-06T00:00:00.000", - "2022-04-11T00:00:00.000", - "2022-04-16T00:00:00.000", - "2022-04-21T00:00:00.000", - "2022-04-26T00:00:00.000", - "2022-05-01T00:00:00.000", - "2022-05-06T00:00:00.000", - "2022-05-11T00:00:00.000", - "2022-05-16T00:00:00.000", - "2022-05-21T00:00:00.000", - "2022-05-26T00:00:00.000", - "2022-05-31T00:00:00.000", - "2022-06-05T00:00:00.000", - "2022-06-10T00:00:00.000", - "2022-06-15T00:00:00.000", - "2022-06-20T00:00:00.000", - "2022-06-25T00:00:00.000", - "2022-06-30T00:00:00.000", - "2022-07-05T00:00:00.000", - "2022-07-10T00:00:00.000", - "2022-07-15T00:00:00.000", - "2022-07-20T00:00:00.000", - "2022-07-25T00:00:00.000", - "2022-07-30T00:00:00.000", - "2022-08-04T00:00:00.000", - "2022-08-09T00:00:00.000", - "2022-08-14T00:00:00.000", - "2022-08-19T00:00:00.000", - "2022-08-24T00:00:00.000", - "2022-08-29T00:00:00.000", - "2022-09-03T00:00:00.000", - "2022-09-08T00:00:00.000" - ], - "line": { - "color": "#00FF00", - "width": 2 - }, - "mode": "lines", - "name": "00001 202930 Ivezic (1998 SG172)", - "type": "scatter3d", - "x": { - "bdata": "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", - "dtype": "f8" - }, - "y": { - "bdata": "VEn1FhcYAkCtUEq83eABQMbiCKtTqAFAp4j+o35uAUBDpGJsZDMBQNzwcM0K9wBA9EQllHe5AEANqP+QsHoAQNtGyZe7OgBAT36z/jzz/z/i4bpCvm7/P0VMOrQG6P4/uGGNECJf/j+KhWoZHNT9P9zgbpQAR/0/WtGjStu3/D8RGA8IuCb8P1MbkZuik/s//xhV16b++j/Th0aR0Gf6P8V5m6Irz/k/oPjb5sM0+T+v3UQ7pZj4P4Wekn7b+vc/F8DxkHJb9z/hufNTdrr2PxORgaryF/Y/NBTNePNz9T/HHUKkhM70PxcceBOyJ/Q/powirod/8z+1RP1cEdbyPwt4sAlbK/I/kTGvnnB/8T+X7zIHXtLwP5rQqC8vJPA/uigwDeDp7j97tTD6WIntP+jbqQzhJuw/P/vqLZDC6j/AIfhJflzpPxJP2E/D9Oc/Xz4EMneL5j80Z87msSDlP4Xdv2iLtOM/AffsthtH4j83nEPVetjgP57cpJmB0d4/sgwJWAvw2z8ZHJQNwwzZPz4uT+3YJ9Y/4hmGNX1B0z+Itr8w4FnQP0L3sHFk4so/z6asdUcPxT9hppDdlHW+P8ZtxgGdyrI/ONqLe6d5nD9Ly+EQBzmSv9M9Q92iOrC/xzwLG/blu7/WaT3xu8fDv2m2DyYym8m/jtkJkftsz7+CRJD3Wp7Sv4MdQWr/hNW/A/YX1jlq2L/3//3b2E3bvw1ndgirL96/qITMab+H4L+I1s5Pkfbhv2CIqVoyZOO/LKnIoInQ5L8fu1Irfjvmv/uFfvf2pOe/WakW99oM6b8znFcQEXPqv06ZpR2A1+u/pKBN7Q467b+UoVlBpJruv5xUdc8m+e+/NcFwoL6q8L87BDsZx1fxv/0ZWxqgA/K/W1v/5Tyu8r/nX2q4kFfzv8FmJMiO//O/O3MIRiqm9L+P89ZcVkv1v7CRdzAG7/W/NF3t3SyR9r/MbCt8vTH3v4Nk2Ryr0Pe/4aWrzOht+L+9voqTaQn5v+7BunQgo/m/+8UQbwA7+r8/fDd9/ND6v+edAZYHZfu/p7LJrBT3+7/aHeCxFof8vwEZCpMAFf2/4dUVPMWg/b+XkYWXVyr+v982P4+qsf6/Caf7DLE2/7/G4zT6Xbn/vyohFCDSHADAmwdsZLtbAMC+Ck1AZJkAwJWBrCvG1QDASenAoNoQAcDIv28cm0oBwISlwh4BgwHAGfxmKwa6AcB4ljfKo+8BwOHfz4fTIwLAm3wo9o5WAsDZOj6tz4cCwCwexUuPtwLA277pd8flAsD4mx/gcRIDwGV06juIPQPArEF4TARnA8BkOAvd344DwFE3q8MUtQPAIpta4pzZA8CS718ocvwDwCNPYJOOHQTA0+9hMOw8BMCD39IchVoEwHhynYdTdgTAxHNLslGQBMBocjfyeagEwGLLy7HGvgTAN8DPcTLTBMBJwMPKt+UEwAflTm5R9gTAAxa/KPoEBcCTqJXirBEFwEInA6JkHAXANHMqjBwlBcAwXVzmzysFwA3VzBd6MAXA5NKrqxYzBcCghipToTMFwOLgVucVMgXAcCjuanAuBcDw+jkMrSgFwBPz+ybIIAXAZDRnRr4WBcDLeSYnjAoFwFa0bbku/ATAT/oWI6PrBMDCYcvB5tgEwD73OC33wwTAKZtUOdKsBMC3GJn4dZMEwA+vGr7gdwTAkMJbHxFaBMCh4Eb2BToEwFANqGO+FwTAuN7I0TnzA8DltNT2d8wDwIXbENd4owPA/fsFxzx4A8Alc6VtxEoDwG2QasYQGwPALyV1IyPpAsB1wpov/bQCwJaTbPCgfgLAJ40wyBBGAsCKks13TwsCwBw+qiBgzgHAh3N4RkaPAcDDotPQBU4BwAeghAyjCgHA5V+BrCLFAMBbgCjLiX0AwJrrxuvdMwDA9ZbY90nQ/7+q68KoyjT/v58OunNLlf6/pjEXu9rx/b/3HOC6h0r9v7tcNIlin/y/YoVhFnzw+78jI5os5j37v7SWTG+zh/q/Sx4ZWvfN+b+YDGg/xhD5vwG9nkY1UPi/mjXdaVqM978n9/tyTMX2v78Ki/ci+/W/RWluVPYt9b+tWPyp3130v/jkH9j4ivO/jB+qeVy18r+kSdHeJd3xvzASIQdxAvG/KMj8mlol8L+phXfJ/4vuv6mzw5L9yOy/5P7rgesB679Tk/WcBzfpvzKqHe+QaOe/HZl6d8eW5b/ZKhAX7MHjv6mRW35A6uG/25IXGgcQ4L96NDX9BWfcv8kZzqPvqdi/W2jGbFPp1L/7pEBuuiXRv2fT8c9cv8q/XISvMnMvw7+4iedYmjm3v1clQ9sAIqC/BsFSzfFinD99wJIXckG2P9wJUNd7s8I/TRejOZNDyj9Jn52U9ufQPymiyqO8q9Q/wL+jmJRs2D8iPvhl+CncPyaaGUlj498//vzb9yjM4T9NCF5PIaTjP97bLqxaeeU/88Kw/pVL5z82CiQ1lRrpP9hnB0ob5uo/f/qDUuyt7D/mF1qMzXHuP1mnfrXCGPA/yPnk0W328D/MKKmczNHxP71O4kLEqvI/IN00ojqB8z9uah1NFlX0P52bxI4+JvU/gR5Zbpv09T8NIPKxFcD2Pxu/GOGWiPc/T/pKRwlO+D8FkJn2VxD5Pw9wksluz/k/Gf7NYzqL+j9oP+AxqEP7P+NPXWmm+Ps/XGrWCCSq/D/fWJbXEFj9P2jECWVdAv4/kx/UB/uo/j9Cqpbc20v/P5TcbsTy6v8/2iGYsRlDAED8G64OyY4AQD8D7AqC2ABAFSexlT8gAUD2Aer6/GUBQNt9seG1qQFAXZcfS2brAUDyrCqRCisCQCWWGmWfaAJAgT6FzSGkAkBL+U8kj90CQAw93hTlFANAik9QmiFKA0AcdLz9Qn0DQErNXdRHrgNAkCy6/S7dA0Ak4cCh9wkEQNsP5C6hNARAIlMtWCtdBEArdk0TloMEQA9appbhpwRA0JVPVw7KBEC6WiEHHeoEQI7S6pIOCAVAxgPyIOQjBUA7dGsPnz0FQIqoevJAVQVA2jIAkstqBUAQYZ7nQH4FQONl8xyjjwVAUcvoifSeBUAWuQmzN6wFQBbO3UdvtwVA445JIZ7ABUCJf/U/x8cFQNdYvMrtzAVAs/EfDRXQBUCPf8N1QNEFQKN16ZRz0AVA8Fr3GrLNBUDIfBPX/8gFQIy2B7ZgwgVAkZVjwdi5BUDbU2IebK8FQAxpZAwfowVA+K1v4/WUBUAWU/MS9YQFQOLgtSAhcwVArHfSp35fBUAXq7xXEkoFQI4qSvPgMgVAJ+TCT+8ZBUC7/fdTQv8EQINLYffe4gRAsAxAQcrEBECp2cRHCaUEQMRkNy+hgwRAKAknKZdgBECZD8Nz8DsEQIdagFmyFQRAj9TSMOLtA0BJ4XtbhcQDQBxgj0WhmQNA8smjZDttA0B8uDw3WT8DQGl7TkQAEANAlRDIGjbfAkAgMR9RAK0CQKuc3oRkeQJA+jk3WmhEAkDnG5R7EQ4CQA==", - "dtype": "f8" - }, - "z": { - "bdata": "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", - "dtype": "f8" - } - }, - { - "marker": { - "color": "yellow", - "size": 1 - }, - "mode": "markers", - "name": "Sun", - "type": "scatter3d", - "x": [ - 0 - ], - "y": [ - 0 - ], - "z": [ - 0 - ] - } - ], - "layout": { - "font": { - "color": "white" - }, - "images": [ - { - "layer": "above", - "sizex": 0.2, - "sizey": 0.2, - "source": "data:image/png;base64,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", - "x": 1.02, - "xanchor": "left", - "xref": "paper", - "y": -0.15, - "yanchor": "bottom", - "yref": "paper" - } - ], - "paper_bgcolor": "black", - "plot_bgcolor": "black", - "scene": { - "bgcolor": "black", - "xaxis": { - "color": "white", - "gridcolor": "rgba(128, 128, 128, 0.2)", - "range": [ - -4.4, - 4.4 - ], - "showbackground": false, - "title": { - "text": "x [au]" - } - }, - "yaxis": { - "color": "white", - "gridcolor": "rgba(128, 128, 128, 0.2)", - "range": [ - -4.4, - 4.4 - ], - "showbackground": false, - "title": { - "text": "y [au]" - } - }, - "zaxis": { - "color": "white", - "gridcolor": "rgba(128, 128, 128, 0.2)", - "range": [ - -4.4, - 4.4 - ], - "showbackground": false, - "title": { - "text": "z [au]" - } - } - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermap" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Create a propagator\n", "propagator = ASSISTPropagator()\n", @@ -1699,13 +43,6 @@ "source": [ "And that's it!" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/examples/track_neo.ipynb b/examples/track_neo.ipynb new file mode 100644 index 00000000..afacabc7 --- /dev/null +++ b/examples/track_neo.ipynb @@ -0,0 +1,202 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tracking NEOCP for Observatory Follow-Up\n", + "\n", + "This example shows several ways you can use adam-core to generate ephemeris for objects on the NEOCP. First you will need a couple packages:\n", + "\n", + "```bash\n", + "pip install adam-core\n", + "pip install adam-assist\n", + "```\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# First let's fetch the objects in question\n", + "from adam_core.orbits.query.scout import query_scout, get_scout_objects\n", + "\n", + "# Using the CNEOS Scout API, we can conveniently get a list of objects currently in \n", + "# the NEOCP\n", + "scout_objects = get_scout_objects()\n", + "\n", + "# You can preview the objects like so:\n", + "print(scout_objects.to_dataframe())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Decide which objects you want to track. For now, we select the first one.\n", + "object_of_interest = scout_objects[10]\n", + "\n", + "# You could also select by object name like so:\n", + "# object_of_interest = scout_objects.select(\"objectName\", \"P126Tdm\")\n", + "# Or you could sort by something like phaScore like so:\n", + "# sorted_by_pha_score = scout_objects.sort_by([(\"phaScore\", \"descending\")])\n", + "\n", + "# With your objects chosen, we send in an array of ids / object names to the Scout API\n", + "# This gives us the Scout variants for each object\n", + "samples = query_scout(object_of_interest.objectName)\n", + "\n", + "# You generally get back 1000 variants from Scout\n", + "# VariantOrbits(size=1000)\n", + "\n", + "# Let's collapse the sampled orbits into an uncertainty.\n", + "orbits = samples.collapse_by_object_id()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from adam_core.time import Timestamp\n", + "from adam_core.observers import Observers\n", + "\n", + "# Decide on the exposure times you want to use\n", + "# Lots of options here, including from astropy.time.Time objects, from MJD, JD, etc.\n", + "times = Timestamp.from_iso8601(\n", + " [\n", + " \"2025-02-23T00:00:00Z\", \"2025-02-23T00:05:00Z\", \"2025-02-23T00:10:00Z\"\n", + " ], scale=\"utc\"\n", + ")\n", + "\n", + "# Now we define observer positions from an observatory code\n", + "observers = Observers.from_code(\"T08\", times)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Now we can generate some on-sky ephemeris with uncertainty\n", + "# You could also use the Scout API directly to do this: https://ssd-api.jpl.nasa.gov/doc/scout.html\n", + "from adam_assist import ASSISTPropagator\n", + "propagator = ASSISTPropagator()\n", + "\n", + "ephemeris = propagator.generate_ephemeris(\n", + " orbits,\n", + " observers,\n", + " covariance=True,\n", + " num_samples=1000,\n", + " max_processes=10 # Using multiprocessing helps speed things up\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Now we can iterate through the unique times and determine where to point\n", + "for ephem in ephemeris:\n", + " print(f\"Object ID: {ephem.object_id[0]}\")\n", + " print(f\"\\nTime: {ephem.coordinates.time.to_iso8601()[0]}\")\n", + " print(f\"RA: {ephem.coordinates.lon[0]}, Sigma RA: {ephem.coordinates.sigma_lon[0]}\")\n", + " print(f\"DEC: {ephem.coordinates.lat[0]}, Sigma DEC: {ephem.coordinates.sigma_lat[0]}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# The Ephemeris object is a Quivr Table (based on pyarrow), but you can also convert to a pandas DataFrame\n", + "ephemeris.to_dataframe()\n", + "# That's it, you're all set!\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Object ID: C11QM25\n", + "\n", + "Time: 2025-02-23T00:00:00.000\n", + "RA: 131.8765804600289 - 312.20777783150254\n", + "DEC: -14.388007767026275 - 51.40213360541426\n", + "Object ID: C11QM25\n", + "\n", + "Time: 2025-02-23T00:05:00.000\n", + "RA: 131.87519081007588 - 312.2100283360548\n", + "DEC: -14.395731775311084 - 50.316578057588345\n", + "Object ID: C11QM25\n", + "\n", + "Time: 2025-02-23T00:10:00.000\n", + "RA: 131.87379975693307 - 312.2123773385522\n", + "DEC: -14.403355028559567 - 50.756042539885584\n" + ] + } + ], + "source": [ + "# Alternatively, if you want you can propagate the Scout samples directly\n", + "# and use their distribution to ascertain uncertainty in the on-sky location\n", + "import pyarrow.compute as pc\n", + "\n", + "sample_direct_ephem = propagator.generate_ephemeris(\n", + " samples,\n", + " observers,\n", + " max_processes=10\n", + ")\n", + "\n", + "unique_times = sample_direct_ephem.coordinates.time.unique()\n", + "for unique_time in unique_times:\n", + " sample_ephem_time = sample_direct_ephem.apply_mask(sample_direct_ephem.coordinates.time.equals(unique_time))\n", + " print(f\"\\nObject ID: {sample_ephem_time.object_id[0]}\")\n", + " print(f\"Time: {sample_ephem_time.coordinates.time.to_iso8601()[0]}\")\n", + " print(f\"RA: {pc.min(sample_ephem_time.coordinates.lon)} - {pc.max(sample_ephem_time.coordinates.lon)}\")\n", + " print(f\"DEC: {pc.min(sample_ephem_time.coordinates.lat)} - {pc.max(sample_ephem_time.coordinates.lat)}\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/adam_core/orbits/query/scout.py b/src/adam_core/orbits/query/scout.py index 69f4d6fb..10790891 100644 --- a/src/adam_core/orbits/query/scout.py +++ b/src/adam_core/orbits/query/scout.py @@ -159,13 +159,17 @@ def scout_orbits_to_variant_orbits( tp=pc.subtract(pc.cast(scout_orbits.tp, pa.float64()), 2400000.5), time=Timestamp.from_jd(pc.cast(scout_orbits.epoch, pa.float64())), origin=Origin.from_kwargs(code=pa.repeat("SUN", len(scout_orbits))), + frame="ecliptic", ) cartesian_coords = cometary_coords.to_cartesian() + unique_orbit_ids = pc.cast(scout_orbits.idx, pa.large_string()) + variants = VariantOrbits.from_kwargs( coordinates=cartesian_coords, - orbit_id=pc.cast(scout_orbits.idx, pa.large_string()), + orbit_id=unique_orbit_ids, + variant_id=unique_orbit_ids, object_id=pa.repeat(object_id, len(scout_orbits)), ) diff --git a/src/adam_core/orbits/query/tests/test_scout.py b/src/adam_core/orbits/query/tests/test_scout.py new file mode 100644 index 00000000..bcf3c073 --- /dev/null +++ b/src/adam_core/orbits/query/tests/test_scout.py @@ -0,0 +1,52 @@ +"""Tests for the scout module.""" + +import numpy as np +import pyarrow as pa +import pyarrow.compute as pc + +from ..scout import ScoutOrbit, scout_orbits_to_variant_orbits + + +def test_scout_orbits_to_variant_orbits(): + """Test that scout orbits are correctly converted to variant orbits.""" + # Create a mock scout orbits table + scout_data = { + "idx": [0, 1], + "epoch": ["60000.0", "60000.0"], + "ec": ["0.5", "0.51"], + "qr": ["1.0", "1.01"], + "tp": ["59000.0", "59000.0"], + "om": ["10.0", "10.1"], + "w": ["50.0", "50.1"], + "inc": ["10.0", "10.1"], + "H": ["20.0", "20.0"], + "dca": ["0.1", "0.1"], + "tca": ["0.1", "0.1"], + "moid": ["0.1", "0.1"], + "vinf": ["0.1", "0.1"], + "geoEcc": ["0.1", "0.1"], + "impFlag": [0, 0], + } + scout_orbits = ScoutOrbit.from_kwargs(**scout_data) + + # Convert to variant orbits + variant_orbits = scout_orbits_to_variant_orbits("2024AA", scout_orbits) + + # Check that the output has the expected structure + assert len(variant_orbits) == len(scout_orbits) + assert variant_orbits.coordinates.frame == "ecliptic" + assert pc.all(pc.equal(variant_orbits.coordinates.origin.code, "SUN")).as_py() + + # Check that the object IDs are correct + assert variant_orbits.object_id.to_pylist() == ["2024AA", "2024AA"] + + # Check that the orbit IDs are correct + assert variant_orbits.orbit_id.to_pylist() == ["0", "1"] + + # Check that the variant IDs are unique + assert len(pc.unique(variant_orbits.variant_id)) == len(scout_orbits) + + # Check that the time is correct + np.testing.assert_array_equal( + variant_orbits.coordinates.time.jd(), pc.cast(scout_orbits.epoch, pa.float64()) + ) diff --git a/src/adam_core/orbits/tests/test_variants.py b/src/adam_core/orbits/tests/test_variants.py index fef3a887..057e71ef 100644 --- a/src/adam_core/orbits/tests/test_variants.py +++ b/src/adam_core/orbits/tests/test_variants.py @@ -1,5 +1,8 @@ import numpy as np +import pytest +from ...coordinates import CartesianCoordinates, Origin +from ...time import Timestamp from ...utils.helpers.orbits import make_real_orbits from ..variants import VariantOrbits @@ -34,3 +37,124 @@ def test_VariantOrbits(): collapsed_orbits.orbit_id.to_numpy(zero_copy_only=False), orbits.orbit_id.to_numpy(zero_copy_only=False), ) + + +def test_VariantOrbits_collapse_by_object_id(): + """Test that VariantOrbits.collapse_by_object_id correctly collapses variants into mean orbits.""" + + # Create variant orbits with multiple objects, each having multiple variants + variant_orbits = VariantOrbits.from_kwargs( + orbit_id=["obj1", "obj1", "obj1", "obj2", "obj2", "obj2"], + object_id=["obj1", "obj1", "obj1", "obj2", "obj2", "obj2"], + variant_id=["0", "1", "2", "0", "1", "2"], + coordinates=CartesianCoordinates.from_kwargs( + x=[1.0, 1.1, 0.9, 2.0, 2.1, 1.9], + y=[1.0, 1.1, 0.9, 2.0, 2.1, 1.9], + z=[1.0, 1.1, 0.9, 2.0, 2.1, 1.9], + vx=[0.1, 0.11, 0.09, 0.2, 0.21, 0.19], + vy=[0.1, 0.11, 0.09, 0.2, 0.21, 0.19], + vz=[0.1, 0.11, 0.09, 0.2, 0.21, 0.19], + time=Timestamp.from_mjd([60000] * 6), + origin=Origin.from_kwargs(code=["SUN"] * 6), + frame="ecliptic", + ), + ) + + # Collapse the variants + collapsed = variant_orbits.collapse_by_object_id() + + # Check basic properties + assert len(collapsed) == 2 # Should have one orbit per object + assert set(collapsed.object_id.to_pylist()) == {"obj1", "obj2"} + + # Check that means are computed correctly for each object + obj1 = collapsed.select("object_id", "obj1") + obj2 = collapsed.select("object_id", "obj2") + + # Check means for obj1 + np.testing.assert_allclose( + obj1.coordinates.values[0], + np.array([1.0, 1.0, 1.0, 0.1, 0.1, 0.1]), # Expected mean for obj1 + rtol=1e-14, + ) + + # Check means for obj2 + np.testing.assert_allclose( + obj2.coordinates.values[0], + np.array([2.0, 2.0, 2.0, 0.2, 0.2, 0.2]), # Expected mean for obj2 + rtol=1e-14, + ) + + # Check that covariance matrices are computed correctly + # For obj1, the variance should be approximately 0.00667 for each component + obj1_cov = obj1.coordinates.covariance.to_matrix()[0] + # The variance is sum((x - mean)^2) / n where n=3 + # For positions: (1.1 - 1.0)^2 + (0.9 - 1.0)^2 + (1.0 - 1.0)^2 = 0.02 + # So variance = 0.02/3 ≈ 0.00667 + expected_variance_obj1_pos = 0.02 / 3 # Population variance + expected_variance_obj1_vel = 0.0002 / 3 # Population variance + np.testing.assert_allclose( + np.diag(obj1_cov), + [expected_variance_obj1_pos] * 3 + [expected_variance_obj1_vel] * 3, + rtol=1e-6, + ) + + # For obj2, the variance should also be approximately 0.00667 + obj2_cov = obj2.coordinates.covariance.to_matrix()[0] + expected_variance_obj2_pos = ( + 0.02 / 3 + ) # (2.1 - 2.0)^2 + (1.9 - 2.0)^2 + (2.0 - 2.0)^2 = 0.02/3 + expected_variance_obj2_vel = ( + 0.0002 / 3 + ) # (0.21 - 0.2)^2 + (0.19 - 0.2)^2 + (0.2 - 0.2)^2 = 0.0002/3 + np.testing.assert_allclose( + np.diag(obj2_cov), + [expected_variance_obj2_pos] * 3 + [expected_variance_obj2_vel] * 3, + rtol=1e-6, + ) + + # Test that time and origin are preserved + assert all(t == 60000 for t in collapsed.coordinates.time.mjd().to_pylist()) + assert all(o == "SUN" for o in collapsed.coordinates.origin.code.to_pylist()) + assert collapsed.coordinates.frame == "ecliptic" + + # Test error cases + # Test that variants with different times raise an error + variant_orbits_diff_times = VariantOrbits.from_kwargs( + orbit_id=["obj1", "obj1"], + object_id=["obj1", "obj1"], + variant_id=["0", "1"], + coordinates=CartesianCoordinates.from_kwargs( + x=[1.0, 1.1], + y=[1.0, 1.1], + z=[1.0, 1.1], + vx=[0.1, 0.11], + vy=[0.1, 0.11], + vz=[0.1, 0.11], + time=Timestamp.from_mjd([60000, 60001]), # Different times + origin=Origin.from_kwargs(code=["SUN", "SUN"]), + frame="ecliptic", + ), + ) + with pytest.raises(AssertionError): + variant_orbits_diff_times.collapse_by_object_id() + + # Test that variants with different origins raise an error + variant_orbits_diff_origins = VariantOrbits.from_kwargs( + orbit_id=["obj1", "obj1"], + object_id=["obj1", "obj1"], + variant_id=["0", "1"], + coordinates=CartesianCoordinates.from_kwargs( + x=[1.0, 1.1], + y=[1.0, 1.1], + z=[1.0, 1.1], + vx=[0.1, 0.11], + vy=[0.1, 0.11], + vz=[0.1, 0.11], + time=Timestamp.from_mjd([60000, 60000]), + origin=Origin.from_kwargs(code=["SUN", "EARTH"]), # Different origins + frame="ecliptic", + ), + ) + with pytest.raises(AssertionError): + variant_orbits_diff_origins.collapse_by_object_id() diff --git a/src/adam_core/orbits/variants.py b/src/adam_core/orbits/variants.py index 0e24a3f6..45434c4f 100644 --- a/src/adam_core/orbits/variants.py +++ b/src/adam_core/orbits/variants.py @@ -186,6 +186,7 @@ def collapse_by_object_id(self) -> Orbits: # All the variants must have the same epoch assert len(object_variants.coordinates.time.unique()) == 1 + assert len(pc.unique(object_variants.coordinates.origin.code)) == 1 # Calculate the mean mean = np.average( @@ -213,6 +214,8 @@ def collapse_by_object_id(self) -> Orbits: vz=[mean[5]], covariance=CoordinateCovariances.from_matrix(covariance), time=object_variants.coordinates.time[0], + origin=object_variants.coordinates.origin[0], + frame=object_variants.coordinates.frame, ), ) orbits = qv.concatenate([orbits, orbit]) diff --git a/src/adam_core/propagator/propagator.py b/src/adam_core/propagator/propagator.py index 76362db7..3788187d 100644 --- a/src/adam_core/propagator/propagator.py +++ b/src/adam_core/propagator/propagator.py @@ -1,4 +1,5 @@ import logging +import multiprocessing as mp from abc import ABC, abstractmethod from typing import List, Literal, Optional, Tuple, Type, Union @@ -326,12 +327,29 @@ def generate_ephemeris( Predicted ephemerides for each orbit observed by each observer. """ + # If sending in VariantOrbits, we make sure not to run covariance + assert (covariance is False) or ( + isinstance(orbits, Orbits) + ), "Covariance is not supported for VariantOrbits" + # Check if we need to propagate orbit variants so we can propagate covariance # matrices + ephemeris: Ephemeris = Ephemeris.empty() + variant_ephemeris: VariantEphemeris = VariantEphemeris.empty() + + variants = VariantOrbits.empty() + if covariance is True and not orbits.coordinates.covariance.is_all_nan(): + variants = VariantOrbits.create( + orbits, + method=covariance_method, + num_samples=num_samples, + seed=seed, + ) + + if max_processes is None: + max_processes = mp.cpu_count() - if max_processes is None or max_processes > 1: - ephemeris_list: List[Ephemeris] = [] - variants_list: List[VariantEphemeris] = [] + if max_processes > 1: if RAY_INSTALLED is False: raise ImportError( @@ -357,11 +375,11 @@ def generate_ephemeris( orbits = ray.get(orbits_ref) # Create futures - futures = [] + futures_inputs = [] idx = np.arange(0, len(orbits)) for idx_chunk in _iterate_chunks(idx, chunk_size): - futures.append( - ephemeris_worker_ray.remote( + futures_inputs.append( + ( idx_chunk, orbits_ref, observers_ref, @@ -369,22 +387,13 @@ def generate_ephemeris( ) ) - # Add variants to futures (if we have any) - if covariance is True and not orbits.coordinates.covariance.is_all_nan(): - variants = VariantOrbits.create( - orbits, - method=covariance_method, - num_samples=num_samples, - seed=seed, - ) - # Add variants to object store variants_ref = ray.put(variants) idx = np.arange(0, len(variants)) for variant_chunk_idx in _iterate_chunks(idx, chunk_size): - futures.append( - ephemeris_worker_ray.remote( + futures_inputs.append( + ( variant_chunk_idx, variants_ref, observers_ref, @@ -393,41 +402,61 @@ def generate_ephemeris( ) # Get results as they finish (we sort later) - unfinished = futures - while unfinished: - finished, unfinished = ray.wait(unfinished, num_returns=1) + futures = [] + for future_input in futures_inputs: + futures.append(ephemeris_worker_ray.remote(*future_input)) + + if len(futures) >= max_processes * 1.5: + finished, futures = ray.wait(futures, num_returns=1) + result = ray.get(finished[0]) + if isinstance(result, Ephemeris): + ephemeris = qv.concatenate([ephemeris, result]) + elif isinstance(result, VariantEphemeris): + variant_ephemeris = qv.concatenate([variant_ephemeris, result]) + else: + raise ValueError( + f"Unexpected result type from ephemeris worker: {type(result)}" + ) + + while futures: + finished, futures = ray.wait(futures, num_returns=1) result = ray.get(finished[0]) if isinstance(result, Ephemeris): - ephemeris_list.append(result) + ephemeris = qv.concatenate([ephemeris, result]) elif isinstance(result, VariantEphemeris): - variants_list.append(result) + variant_ephemeris = qv.concatenate([variant_ephemeris, result]) else: raise ValueError( f"Unexpected result type from ephemeris worker: {type(result)}" ) - ephemeris = qv.concatenate(ephemeris_list) - if len(variants_list) > 0: - ephemeris_variants = qv.concatenate(variants_list) - else: - ephemeris_variants = None - else: - ephemeris = self._generate_ephemeris(orbits, observers) - - if covariance is True and not orbits.coordinates.covariance.is_all_nan(): - variants = VariantOrbits.create( - orbits, - method=covariance_method, - num_samples=num_samples, - seed=seed, - ) - ephemeris_variants = self._generate_ephemeris(variants, observers) + results = self._generate_ephemeris(orbits, observers) + if isinstance(results, Ephemeris): + ephemeris = results + elif isinstance(results, VariantEphemeris): + variant_ephemeris = results else: - ephemeris_variants = None + raise ValueError( + f"Unexpected result type from generate_ephemeris: {type(results)}" + ) + if covariance is True and len(variants) > 0: + variant_ephemeris = self._generate_ephemeris(variants, observers) + + if covariance is False and len(variant_ephemeris) > 0: + # We were given VariantOrbits as an input, so return VariantEphemeris + return variant_ephemeris.sort_by( + [ + "orbit_id", + "variant_id", + "coordinates.time.days", + "coordinates.time.nanos", + "coordinates.origin.code", + ] + ) - if ephemeris_variants is not None: - ephemeris = ephemeris_variants.collapse(ephemeris) + if covariance is True and len(variant_ephemeris) > 0: + ephemeris = variant_ephemeris.collapse(ephemeris) return ephemeris.sort_by( [ @@ -549,8 +578,10 @@ def propagate_orbits( propagated : `~adam_core.orbits.orbits.Orbits` Propagated orbits. """ + if max_processes is None: + max_processes = mp.cpu_count() - if max_processes is None or max_processes > 1: + if max_processes > 1: propagated_list: List[Orbits] = [] variants_list: List[VariantOrbits] = [] @@ -578,12 +609,12 @@ def propagate_orbits( # if we need to propagate variants orbits = ray.get(orbits_ref) - # Create futures - futures = [] + # Create futures inputs + futures_inputs = [] idx = np.arange(0, len(orbits)) for idx_chunk in _iterate_chunks(idx, chunk_size): - futures.append( - propagation_worker_ray.remote( + futures_inputs.append( + ( idx_chunk, orbits_ref, times_ref, @@ -591,7 +622,7 @@ def propagate_orbits( ) ) - # Add variants to propagate to futures + # Add variants to propagate to futures inputs if covariance is True and not orbits.coordinates.covariance.is_all_nan(): variants = VariantOrbits.create( orbits, @@ -604,8 +635,8 @@ def propagate_orbits( idx = np.arange(0, len(variants)) for variant_chunk_idx in _iterate_chunks(idx, chunk_size): - futures.append( - propagation_worker_ray.remote( + futures_inputs.append( + ( variant_chunk_idx, variants_ref, times_ref, @@ -613,10 +644,26 @@ def propagate_orbits( ) ) - # Get results as they finish (we sort later) - unfinished = futures - while unfinished: - finished, unfinished = ray.wait(unfinished, num_returns=1) + # Submit and process jobs with queuing + futures = [] + for future_input in futures_inputs: + futures.append(propagation_worker_ray.remote(*future_input)) + + if len(futures) >= max_processes * 1.5: + finished, futures = ray.wait(futures, num_returns=1) + result = ray.get(finished[0]) + if isinstance(result, Orbits): + propagated_list.append(result) + elif isinstance(result, VariantOrbits): + variants_list.append(result) + else: + raise ValueError( + f"Unexpected result type from propagation worker: {type(result)}" + ) + + # Process remaining futures + while futures: + finished, futures = ray.wait(futures, num_returns=1) result = ray.get(finished[0]) if isinstance(result, Orbits): propagated_list.append(result) diff --git a/src/adam_core/propagator/tests/test_propagator.py b/src/adam_core/propagator/tests/test_propagator.py index 9271e212..d62380a9 100644 --- a/src/adam_core/propagator/tests/test_propagator.py +++ b/src/adam_core/propagator/tests/test_propagator.py @@ -11,6 +11,7 @@ from ...observers.observers import Observers from ...orbits.ephemeris import Ephemeris from ...orbits.orbits import Orbits +from ...orbits.variants import VariantOrbits from ...time.time import Timestamp from ...utils.helpers.orbits import make_real_orbits from ..propagator import EphemerisMixin, Propagator @@ -296,3 +297,61 @@ def test_generate_ephemeris_unordered_observers(max_processes): # Link back to observers to verify correct correspondence linkage = ephemeris.link_to_observers(observers) assert len(linkage.all_unique_values) == len(observers) + + +def test_generate_ephemeris_variant_orbits(): + """Test that ephemeris generation works correctly with variant orbits and respects covariance flag.""" + + # Create base orbits + base_orbits = Orbits.from_kwargs( + orbit_id=["test1", "test2"], + object_id=["test1", "test2"], + coordinates=CartesianCoordinates.from_kwargs( + x=[1.0, 2.0], + y=[1.0, 2.0], + z=[1.0, 2.0], + vx=[0.1, 0.2], + vy=[0.1, 0.2], + vz=[0.1, 0.2], + time=Timestamp.from_mjd([60000, 60000]), + origin=Origin.from_kwargs(code=["SUN", "SUN"]), + frame="ecliptic", + ), + ) + + # Create variant orbits + variant_orbits = VariantOrbits.from_kwargs( + orbit_id=["test1", "test1", "test2", "test2"], + variant_id=["0", "1", "0", "1"], + coordinates=CartesianCoordinates.from_kwargs( + x=[1.0, 1.1, 2.0, 2.1], + y=[1.0, 1.1, 2.0, 2.1], + z=[1.0, 1.1, 2.0, 2.1], + vx=[0.1, 0.11, 0.2, 0.21], + vy=[0.1, 0.11, 0.2, 0.21], + vz=[0.1, 0.11, 0.2, 0.21], + time=Timestamp.from_mjd([60000, 60000, 60000, 60000]), + origin=Origin.from_kwargs(code=["SUN", "SUN", "SUN", "SUN"]), + frame="ecliptic", + ), + ) + + # Create observers + times = Timestamp.from_mjd([60001, 60002], scale="utc") + observers = Observers.from_code("500", times) + + prop = MockPropagator() + + # Test with variant orbits - should work + ephemeris = prop.generate_ephemeris(variant_orbits, observers, covariance=False) + assert len(ephemeris) == len(variant_orbits) * len(times) + + # Test with variant orbits and covariance=True - should raise assertion error + with pytest.raises( + AssertionError, match="Covariance is not supported for VariantOrbits" + ): + prop.generate_ephemeris(variant_orbits, observers, covariance=True) + + # Test with regular orbits and covariance=True - should work + ephemeris = prop.generate_ephemeris(base_orbits, observers, covariance=True) + assert len(ephemeris) == len(base_orbits) * len(times) diff --git a/src/adam_core/time/tests/test_time.py b/src/adam_core/time/tests/test_time.py index 0e7b9ad5..c92d02fb 100644 --- a/src/adam_core/time/tests/test_time.py +++ b/src/adam_core/time/tests/test_time.py @@ -201,6 +201,22 @@ def test_roundtrip_second_precision(self): assert have2.to_astropy() == t2 + def test_to_iso8601(self): + """Test that the to_iso8601 method correctly converts times to ISO 8601 format""" + have = self.ts.to_iso8601() + want = pa.array( + [ + "1858-11-17T00:00:00.000", + "1995-10-10T12:00:00.000", + "2023-02-26T00:00:00.000", # We lose precision with astropy + ] + ) + assert pc.all(pc.equal(have, want)).as_py() + + # Test empty case + have = self.empty.to_iso8601() + assert len(have) == 0 + class TestTimeMath: diff --git a/src/adam_core/time/time.py b/src/adam_core/time/time.py index 059898a3..980944c1 100644 --- a/src/adam_core/time/time.py +++ b/src/adam_core/time/time.py @@ -57,6 +57,14 @@ def to_numpy(self) -> np.ndarray: """ return self.rescale("tdb").mjd().to_numpy(False) + def to_iso8601(self) -> pa.lib.StringArray: + """ + Returns the times as ISO 8601 strings in a pyarrow array. + """ + if len(self) == 0: + return pa.array([], type=pa.string()) + return pa.array(self.to_astropy().isot, type=pa.string()) + @classmethod def from_iso8601( cls, iso: pa.lib.StringArray | list[str], scale="utc"