Sat, 13 Nov 2021 17:35:08 GMT

master
大蒟蒻 4 years ago
parent 0d38673a61
commit d9d447438e

BIN
1.pq

Binary file not shown.

285
1.tle

@ -0,0 +1,285 @@
0 STARLINK-3058
1 49138U 21082J 21284.58334491 .00009742 00000-0 83287-4 0 9996
2 49138 70.0015 49.7019 0003964 283.6893 39.9984 15.69747223 4418
0 STARLINK-3058
1 49138U 21082J 21284.58334491 .00009742 00000-0 83287-4 0 9996
2 49138 70.0015 49.7019 0003964 283.6893 39.9984 15.69747223 3686
0 STARLINK-3058
1 49138U 21082J 21284.91667824 -.00031651 00000-0 -26392-3 0 9991
2 49138 70.0012 48.7649 0003912 287.0976 119.7031 15.69786130 3684
0 STARLINK-3058
1 49138U 21082J 21285.58334491 .00020817 00000-0 17575-3 0 9999
2 49138 70.0018 46.8911 0003771 285.8003 287.2913 15.69744227 3671
0 STARLINK-3058
1 49138U 21082J 21285.91668981 -.00106238 00000-0 -89654-3 0 9991
2 49138 70.0013 45.9539 0003750 287.6981 8.5986 15.69825332 4621
0 STARLINK-3058
1 49138U 21082J 21286.25001157 .00108586 00000-0 90076-3 0 9991
2 49138 70.0013 45.0171 0003562 282.9803 96.4401 15.69718918 4670
0 STARLINK-3058
1 49138U 21082J 21286.58334491 -.00108451 00000-0 -91665-3 0 9995
2 49138 70.0012 44.0802 0003710 287.1793 175.3639 15.69795086 4726
0 STARLINK-3058
1 49138U 21082J 21286.58334491 -.00108451 00000-0 -91665-3 0 9995
2 49138 70.0012 44.0802 0003710 287.1793 175.3639 15.69795086 3680
0 STARLINK-3058
1 49138U 21082J 21286.91668981 -.00006787 00000-0 -55115-4 0 9996
2 49138 69.9996 43.1344 0003561 282.8543 262.5846 15.69750326 4776
0 STARLINK-3058
1 49138U 21082J 21286.91668981 -.00006787 00000-0 -55115-4 0 9996
2 49138 69.9996 43.1344 0003561 282.8543 262.5846 15.69750326 3708
0 STARLINK-3058
1 49138U 21082J 21287.25002315 .00082896 00000-0 69067-3 0 9990
2 49138 70.0013 42.2061 0003290 284.8812 343.8845 15.69702978 4834
0 STARLINK-3058
1 49138U 21082J 21287.58335648 .00012272 00000-0 10444-3 0 9990
2 49138 70.0017 41.2691 0003413 289.5432 62.3266 15.69745069 3683
0 STARLINK-3058
1 49138U 21082J 21287.83335648 .00016404 00000-0 13887-3 0 9993
2 49138 70.0014 40.5662 0003542 291.6856 32.5238 15.69757892 4920
0 STARLINK-3058
1 49138U 21082J 21287.91667824 -.00047483 00000-0 -39759-3 0 9995
2 49138 70.0013 40.3321 0003470 290.8229 144.0987 15.69787386 3700
0 STARLINK-3058
1 49138U 21082J 21288.25002315 .00637818 00000-0 50315-2 0 9996
2 49138 70.0001 39.3885 0003317 286.9061 231.2589 15.69345576 4989
0 STARLINK-3058
1 49138U 21082J 21288.58334491 .00026583 00000-0 22395-3 0 9994
2 49138 70.0013 38.4583 0003716 289.5333 311.7008 15.69726742 3685
0 STARLINK-3058
1 49138U 21082J 21288.91667824 -.00029958 00000-0 -24980-3 0 9993
2 49138 70.0012 37.5211 0003720 290.2882 34.0520 15.69773267 5090
0 STARLINK-3058
1 49138U 21082J 21288.91667824 -.00029958 00000-0 -24980-3 0 9993
2 49138 70.0012 37.5211 0003720 290.2882 34.0520 15.69773267 3661
0 STARLINK-3058
1 49138U 21082J 21289.25002315 -.00043245 00000-0 -36212-3 0 9995
2 49138 70.0016 36.5842 0003550 285.4282 122.0990 15.69763344 3681
0 STARLINK-3058
1 49138U 21082J 21289.66667824 .00051200 00000-0 42899-3 0 9998
2 49138 70.0021 35.4129 0003563 292.4719 308.8984 15.69695834 3696
0 STARLINK-3058
1 49138U 21082J 21289.91668981 -.00045644 00000-0 -38257-3 0 9991
2 49138 70.0017 34.7102 0003499 291.4631 282.2802 15.69753550 5252
0 STARLINK-3058
1 49138U 21082J 21290.25001157 .00057471 00000-0 48039-3 0 9994
2 49138 70.0021 33.7736 0003426 286.3999 10.3885 15.69724819 3669
0 STARLINK-3058
1 49138U 21082J 21290.58334491 .00017487 00000-0 14797-3 0 9997
2 49138 70.0020 32.8368 0003567 291.8145 88.1017 15.69746694 5352
0 STARLINK-3058
1 49138U 21082J 21290.91667824 -.00080751 00000-0 -67963-3 0 9992
2 49138 70.0017 31.8997 0003652 291.7304 171.3086 15.69802653 3667
0 STARLINK-3058
1 49138U 21082J 21291.58334491 .00051405 00000-0 42986-3 0 9997
2 49138 70.0024 30.0258 0003909 291.0808 338.2757 15.69741055 3671
0 STARLINK-3058
1 49138U 21082J 21291.91668981 -.00094905 00000-0 -79979-3 0 9994
2 49138 70.0022 29.0891 0003936 290.2862 62.2631 15.69819350 5560
0 STARLINK-3058
1 49138U 21082J 21292.58334491 -.00020509 00000-0 -17071-3 0 9998
2 49138 70.0023 27.2156 0004024 291.4036 227.3757 15.69707011 3695
0 STARLINK-3058
1 49138U 21082J 21292.83334491 -.00020817 00000-0 -17328-3 0 9993
2 49138 70.0020 26.5129 0003958 292.1496 198.9252 15.69711860 5701
0 STARLINK-3058
1 49138U 21082J 21292.91667824 -.00036739 00000-0 -30768-3 0 9994
2 49138 70.0020 26.2786 0003925 290.7674 311.0737 15.69718168 3671
0 STARLINK-3058
1 49138U 21082J 21293.58334491 .00040952 00000-0 34352-3 0 9992
2 49138 70.0021 24.4043 0004010 291.9626 116.0505 15.69720485 5824
0 STARLINK-3058
1 49138U 21082J 21293.58334491 .00040952 00000-0 34352-3 0 9992
2 49138 70.0021 24.4043 0004010 291.9626 116.0505 15.69720485 3664
0 STARLINK-3058
1 49138U 21082J 21293.91667824 -.00037926 00000-0 -31721-3 0 9994
2 49138 70.0023 23.4682 0003913 290.8411 200.2558 15.69757181 5877
0 STARLINK-3058
1 49138U 21082J 21293.91667824 -.00037926 00000-0 -31721-3 0 9994
2 49138 70.0023 23.4682 0003913 290.8411 200.2558 15.69757181 3662
0 STARLINK-3058
1 49138U 21082J 21294.25001157 .00032279 00000-0 27106-3 0 9999
2 49138 70.0026 22.5318 0003838 286.5912 287.6215 15.69753708 5937
0 STARLINK-3058
1 49138U 21082J 21294.58334491 .00034042 00000-0 28579-3 0 9990
2 49138 70.0023 21.5949 0004012 292.1932 5.1638 15.69745564 3697
0 STARLINK-3058
1 49138U 21082J 21294.91667824 -.00026222 00000-0 -21818-3 0 9998
2 49138 70.0019 20.6579 0004003 290.2588 90.2407 15.69787710 6036
0 STARLINK-3058
1 49138U 21082J 21294.91667824 -.00026222 00000-0 -21818-3 0 9998
2 49138 70.0019 20.6579 0004003 290.2588 90.2407 15.69787710 3684
0 STARLINK-3058
1 49138U 21082J 21295.58334491 -.00035502 00000-0 -29643-3 0 9998
2 49138 70.0021 18.7840 0003946 293.3209 253.5293 15.69781741 6133
0 STARLINK-3058
1 49138U 21082J 21295.91668981 -.00030405 00000-0 -25363-3 0 9991
2 49138 70.0019 17.8471 0003745 292.2582 337.8031 15.69767052 3669
0 STARLINK-3058
1 49138U 21082J 21296.25001157 -.00054141 00000-0 -45371-3 0 9999
2 49138 70.0022 16.9106 0003817 288.3577 64.7601 15.69798089 6248
0 STARLINK-3058
1 49138U 21082J 21296.91667824 -.00017633 00000-0 -14617-3 0 9995
2 49138 69.9999 15.0266 0003727 285.2092 233.9396 15.69757974 6343
0 STARLINK-3058
1 49138U 21082J 21296.91667824 -.00017633 00000-0 -14617-3 0 9995
2 49138 69.9999 15.0266 0003727 285.2092 233.9396 15.69757974 3687
0 STARLINK-3058
1 49138U 21082J 21297.25001157 .00004775 00000-0 41765-4 0 9990
2 49138 70.0017 14.0997 0004099 286.2337 316.2157 15.69740463 6405
0 STARLINK-3058
1 49138U 21082J 21297.58334491 .00053882 00000-0 45067-3 0 9997
2 49138 70.0016 13.1627 0004199 292.4756 33.1015 15.69722479 3681
0 STARLINK-3058
1 49138U 21082J 21297.91667824 -.00007467 00000-0 -60779-4 0 9991
2 49138 70.0015 12.2258 0004118 290.1623 118.5361 15.69762427 3701
0 STARLINK-3058
1 49138U 21082J 21298.25002315 .00011455 00000-0 97454-4 0 9997
2 49138 70.0019 11.2890 0004061 287.5407 204.3515 15.69783294 6559
0 STARLINK-3058
1 49138U 21082J 21298.25002315 .00011455 00000-0 97454-4 0 9997
2 49138 70.0019 11.2890 0004061 287.5407 204.3515 15.69783294 3680
0 STARLINK-3058
1 49138U 21082J 21298.83335648 -.00066257 00000-0 -55695-3 0 9991
2 49138 70.0011 9.6494 0004067 292.1350 255.3127 15.69774660 6649
0 STARLINK-3058
1 49138U 21082J 21299.16668981 .00010528 00000-0 89815-4 0 9997
2 49138 70.0013 8.7121 0003898 287.4228 343.1539 15.69757689 6702
0 STARLINK-3058
1 49138U 21082J 21299.50001157 -.00006704 00000-0 -54482-4 0 9996
2 49138 70.0012 7.7752 0003853 293.9823 59.6826 15.69719700 6759
0 STARLINK-3058
1 49138U 21082J 21299.58337963 .00062628 00000-0 52380-3 0 9990
2 49138 70.0014 7.5408 0003841 295.5890 169.0556 15.69686732 3667
0 STARLINK-3058
1 49138U 21082J 21300.16667824 .00049642 00000-0 41548-3 0 9994
2 49138 70.0016 5.9016 0003664 289.6409 230.2095 15.69729459 6856
0 STARLINK-3058
1 49138U 21082J 21300.58334491 -.00040433 00000-0 -33823-3 0 9999
2 49138 70.0016 4.7301 0004048 294.6756 59.0908 15.69768210 3673
0 STARLINK-3058
1 49138U 21082J 21300.91667824 .00023201 00000-0 19589-3 0 9990
2 49138 70.0013 3.7932 0004098 290.1259 146.7911 15.69708259 6974
0 STARLINK-3058
1 49138U 21082J 21301.58335648 .00057522 00000-0 48056-3 0 9994
2 49138 70.0014 1.9192 0004167 294.6437 308.5567 15.69733966 3657
0 STARLINK-3058
1 49138U 21082J 21301.91667824 -.00043610 00000-0 -36539-3 0 9993
2 49138 70.0015 0.9822 0003892 291.8868 34.3915 15.69749007 3674
0 STARLINK-3058
1 49138U 21082J 21302.25001157 -.00005033 00000-0 -40398-4 0 9998
2 49138 70.0003 0.0354 0004262 293.2181 115.9512 15.69749643 7183
0 STARLINK-3058
1 49138U 21082J 21302.58335648 .00063919 00000-0 53356-3 0 9991
2 49138 70.0019 359.1084 0004531 292.4696 200.1239 15.69724758 7238
0 STARLINK-3058
1 49138U 21082J 21302.91668981 -.00010419 00000-0 -85566-4 0 9995
2 49138 70.0017 358.1714 0004372 289.3003 286.4079 15.69754644 7297
0 STARLINK-3058
1 49138U 21082J 21302.91668981 -.00010419 00000-0 -85566-4 0 9995
2 49138 70.0017 358.1714 0004372 289.3003 286.4079 15.69754644 3664
0 STARLINK-3058
1 49138U 21082J 21303.25001157 -.00021986 00000-0 -18285-3 0 9993
2 49138 70.0016 357.2336 0004176 289.2808 9.4044 15.69747451 7349
0 STARLINK-3058
1 49138U 21082J 21303.58335648 .00066006 00000-0 55108-3 0 9999
2 49138 70.0014 356.2978 0004279 294.7769 87.0884 15.69713076 3682
0 STARLINK-3058
1 49138U 21082J 21303.91667824 .00056435 00000-0 47150-3 0 9993
2 49138 70.0016 355.3609 0004185 290.6821 174.2502 15.69737649 7441
0 STARLINK-3058
1 49138U 21082J 21304.25001157 -.00007671 00000-0 -62510-4 0 9990
2 49138 70.0003 354.4142 0004328 292.6185 255.3041 15.69752709 7491
0 STARLINK-3058
1 49138U 21082J 21304.58334491 .00062953 00000-0 52538-3 0 9996
2 49138 70.0019 353.4870 0004111 296.0195 335.2480 15.69736358 7558
0 STARLINK-3058
1 49138U 21082J 21304.58334491 .00062953 00000-0 52538-3 0 9996
2 49138 70.0019 353.4870 0004111 296.0195 335.2480 15.69736358 3699
0 STARLINK-3058
1 49138U 21082J 21304.91668981 .00046821 00000-0 39174-3 0 9994
2 49138 70.0017 352.5501 0003872 291.9676 62.5109 15.69751055 3676
0 STARLINK-3058
1 49138U 21082J 21305.25001157 -.00099425 00000-0 -83905-3 0 9999
2 49138 70.0016 351.6134 0003826 292.4208 145.1350 15.69802002 7650
0 STARLINK-3058
1 49138U 21082J 21305.58334491 -.00044102 00000-0 -36951-3 0 9996
2 49138 70.0011 350.6764 0003957 297.3290 223.3770 15.69751719 3685
0 STARLINK-3058
1 49138U 21082J 21305.91667824 .00069480 00000-0 58088-3 0 9991
2 49138 70.0013 349.7394 0003981 292.3585 311.4698 15.69667573 7769
0 STARLINK-3058
1 49138U 21082J 21306.58334491 .00056850 00000-0 47530-3 0 9993
2 49138 70.0012 347.8656 0004124 296.0932 113.8858 15.69719096 3693
0 STARLINK-3058
1 49138U 21082J 21306.58334491 .00056850 00000-0 47530-3 0 9993
2 49138 70.0012 347.8656 0004124 296.0932 113.8858 15.69719096 7866
0 STARLINK-3058
1 49138U 21082J 21306.91667824 .00077836 00000-0 64818-3 0 9994
2 49138 70.0010 346.9288 0003926 291.4744 201.6437 15.69731128 3678
0 STARLINK-3058
1 49138U 21082J 21307.25001157 -.00098328 00000-0 -82947-3 0 9997
2 49138 70.0009 345.9921 0003854 292.8412 283.4093 15.69807292 7975
0 STARLINK-3058
1 49138U 21082J 21307.58334491 .00057045 00000-0 47683-3 0 9990
2 49138 70.0003 345.0550 0003945 297.8564 1.5371 15.69724117 3688
0 STARLINK-3058
1 49138U 21082J 21307.91667824 .00026861 00000-0 22621-3 0 9993
2 49138 70.0003 344.1179 0003709 293.1787 89.3334 15.69732453 8072
0 STARLINK-3058
1 49138U 21082J 21308.58334491 .00058300 00000-0 48710-3 0 9998
2 49138 70.0001 342.2437 0003661 299.3099 249.4472 15.69730814 3679
0 STARLINK-3058
1 49138U 21082J 21308.91667824 .00134285 00000-0 11080-2 0 9990
2 49138 70.0001 341.3068 0003466 294.7852 337.1554 15.69765361 3679
0 STARLINK-3058
1 49138U 21082J 21309.25001157 -.00098020 00000-0 -82324-3 0 9997
2 49138 70.0001 340.3700 0003684 294.2948 60.8368 15.69913493 8280
0 STARLINK-3058
1 49138U 21082J 21309.58334491 -.00130426 00000-0 -11051-2 0 9998
2 49138 69.9994 339.4325 0004026 297.3969 140.9534 15.69804253 8332
0 STARLINK-3058
1 49138U 21082J 21309.58334491 -.00130426 00000-0 -11051-2 0 9998
2 49138 69.9994 339.4325 0004026 297.3969 140.9534 15.69804253 3674
0 STARLINK-3058
1 49138U 21082J 21309.91667824 -.00170938 00000-0 -14628-2 0 9999
2 49138 69.9994 338.4950 0003979 290.9805 230.5217 15.69689767 3722
0 STARLINK-3058
1 49138U 21082J 21310.16668981 .00082204 00000-0 68992-3 0 9993
2 49138 69.9998 337.7926 0004018 290.7867 203.0254 15.69525091 8429
0 STARLINK-3058
1 49138U 21082J 21310.33336806 .00147055 00000-0 12228-2 0 9996
2 49138 69.9997 337.3240 0004023 294.0904 61.2300 15.69534565 3661
0 STARLINK-3058
1 49138U 21082J 21310.58335648 .00176652 00000-0 14590-2 0 9995
2 49138 69.9995 336.6211 0004013 297.0811 30.3588 15.69607118 8494
0 STARLINK-3058
1 49138U 21082J 21310.66667824 .00098403 00000-0 81917-3 0 9993
2 49138 69.9994 336.3870 0003908 296.4697 141.6401 15.69666300 3660
0 STARLINK-3058
1 49138U 21082J 21310.83335648 .00084751 00000-0 70590-3 0 9994
2 49138 69.9996 335.9187 0003822 293.3687 6.3313 15.69701779 8538
0 STARLINK-3058
1 49138U 21082J 21311.58334491 .00022792 00000-0 19184-3 0 9991
2 49138 69.9990 333.8103 0004071 295.8561 280.8354 15.69789295 8658
0 STARLINK-3058
1 49138U 21082J 21311.58334491 .00022792 00000-0 19184-3 0 9991
2 49138 69.9990 333.8103 0004071 295.8561 280.8354 15.69789295 3664
0 STARLINK-3058
1 49138U 21082J 21311.91668981 .00017918 00000-0 15132-3 0 9995
2 49138 69.9993 332.8732 0003875 290.8466 9.0950 15.69783812 3666
0 STARLINK-3058
1 49138U 21082J 21312.25002315 -.00021992 00000-0 -18270-3 0 9991
2 49138 69.9998 331.9347 0003840 293.4783 89.6495 15.69776424 8750
0 STARLINK-3058
1 49138U 21082J 21312.58334491 .00001964 00000-0 18208-4 0 9997
2 49138 69.9995 330.9987 0003851 297.6027 168.5950 15.69778871 3672
0 STARLINK-3058
1 49138U 21082J 21312.91667824 -.00001326 00000-0 -93245-5 0 9992
2 49138 69.9997 330.0602 0003762 290.6090 258.7592 15.69753946 3662
0 STARLINK-3058
1 49138U 21082J 21313.58335648 -.00529013 00000-0 -47342-2 0 9994
2 49138 69.9996 328.1816 0003990 290.1429 65.4144 15.69645488 8965
0 STARLINK-3058
1 49138U 21082J 21313.75001157 -.00665704 00000-0 -60908-2 0 9999
2 49138 70.0000 327.7125 0003825 292.5224 284.4114 15.69504253 3675

@ -0,0 +1,74 @@
from os import replace
from astropy.time.core import Time, TimeDelta
import pandas as pd
import random
from tqdm import tqdm
from poliastro.bodies import Earth
from poliastro.twobody import Orbit
import astropy.units as U
from poliastro.twobody.propagation import cowell
from joblib import Parallel, delayed
def rv2list(rv):
r, v = rv
r = r.to(U.m).to_value()
v = v.to(U.m / U.s).to_value()
return [*r, *v]
def build_training_data(df: pd.DataFrame):
rnd_starts = random.choices(df.index, k=50)
result = []
for idx in tqdm(rnd_starts, position=0):
src = df.iloc[idx].to_numpy()
targets = df.iloc[idx:idx + 24 * 60].sample(n=100,
replace=True).to_numpy()
def calc_diff(dst):
s = Orbit.from_vectors(Earth, src[2:5] * U.m, src[5:8] * U.m / U.s,
Time(src[1]))
o = Orbit.from_vectors(Earth, dst[2:5] * U.m, dst[5:8] * U.m / U.s,
Time(dst[1]))
dt = dst[1] - src[1]
op = s.propagate(o.epoch, method=cowell)
rv = rv2list(op.rv())
rv_real = rv2list(o.rv())
rv_diff = [x - y for x, y in zip(rv_real, rv)]
return dt.seconds, rv, rv_diff
calc_diff(targets[0])
diffs = Parallel(n_jobs=4)(
delayed(calc_diff)(x)
for x in tqdm(targets, position=1, leave=False))
result += [[*src, dt, *pred, *err] for dt, pred, err in diffs]
return pd.DataFrame(result,
columns=[
"id",
"start_epoch",
"start_r_x",
"start_r_y",
"start_r_z",
"start_v_x",
"start_v_y",
"start_v_z",
"elapsed_seconds",
"pred_r_x",
"pred_r_y",
"pred_r_z",
"pred_v_x",
"pred_v_y",
"pred_v_z",
"err_r_x",
"err_r_y",
"err_r_z",
"err_v_x",
"err_v_y",
"err_v_z",
])
if __name__ == "__main__":
df = pd.read_parquet("1.pq")
td = build_training_data(df)
td.to_parquet("data.pq")

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

@ -0,0 +1,11 @@
# %%
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_parquet("1.pq")
df2 = df.iloc[:140]
ax = plt.axes(projection="3d")
ax.scatter(df2["r_x"], df2["r_y"], df2["r_z"])
plt.show()
plt.pause(0.1)

Binary file not shown.

@ -0,0 +1,107 @@
# %%
from datetime import datetime, timedelta
from os import stat
from attr import dataclass
from erfa.core import pas
from joblib.parallel import Parallel, delayed
from numpy import double
from tletools import TLE
from astropy import units as u
from spacetrack import SpaceTrackClient
def parse_tle(tle_lines: list[str]):
assert (len(tle_lines) == 3)
tle = TLE.from_lines(*tle_lines)
orbit = tle.to_orbit()
r, v = orbit.rv()
r_m = r.to(u.m).to_value()
v_ms = v.to(u.m / u.s).to_value()
return r_m, v_ms
def to_TLE(tle_lines: list[str]):
assert (len(tle_lines) == 3)
return TLE.from_lines(*tle_lines)
def parse_tle_file(fd):
lines = fd.readlines()
res: list[TLE] = []
for i in range(0, len(lines), 3):
res.append(to_TLE(lines[i:i + 3]))
return res
def get_tle(client: SpaceTrackClient, orbit_ids, days):
return client.tle(**{
'epoch': f'>now-{days}',
'norad_cat_id': orbit_ids,
'format': '3le'
})
client = SpaceTrackClient("geulocrutusse-7937@yopmail.com", "ETionGeOmEnDiUMp")
# print(get_tle(client, [49138], 30))
# %%
with open("1.tle") as f:
tles = parse_tle_file(f)
# %%
from poliastro.twobody.propagation import cowell
from tqdm import tqdm
@dataclass
class orbit_status:
id: int
epoch: datetime
r_x: float
r_y: float
r_z: float
v_x: float
v_y: float
v_z: float
stats = []
for i in tqdm(range(1, len(tles)), position=0):
p1 = tles[i - 1]
p2 = tles[i]
t1 = p1.epoch.to_datetime()
t2 = p2.epoch.to_datetime()
o1 = p1.to_orbit()
o2 = p2.to_orbit()
dt: timedelta = t2 - t1
if dt.seconds <= 60:
continue
for sec in tqdm(range(0, dt.seconds, 60), position=1, leave=False):
ratio = sec / dt.seconds
x1 = o1.propagate(sec * u.s, method=cowell)
x2 = o2.propagate(-(dt.seconds - sec) * u.s, method=cowell)
r1, v1 = x1.rv()
r1_m = r1.to(u.m).to_value()
v1_ms = v1.to(u.m / u.s).to_value()
r2, v2 = x2.rv()
r2_m = r2.to(u.m).to_value()
v2_ms = v2.to(u.m / u.s).to_value()
r_m = [x * (1 - ratio) + y * ratio for x, y in zip(r1_m, r2_m)]
v_ms = [x * (1 - ratio) + y * ratio for x, y in zip(v1_ms, v2_ms)]
stats.append(
orbit_status(
p1.norad,
t1 + timedelta(seconds=sec),
*r_m,
*v_ms,
).__dict__)
import pandas as pd
df = pd.DataFrame(stats)
df.to_parquet("1.pq")
# %%
df
# %%

@ -0,0 +1,78 @@
# %%
import pandas as pd
from itertools import product
def get_state_vect_cols(prefix=''):
if prefix:
prefix += '_'
vectors = ['r', 'v']
components = ['x', 'y', 'z']
col_names = [f'{prefix}{v}_{c}' for v, c in product(vectors, components)]
return col_names
# %%
df = pd.read_parquet("data.pq")
# %%
from sklearn.model_selection import train_test_split
feature_cols = ['elapsed_seconds'
] + get_state_vect_cols('pred') + get_state_vect_cols('start')
# The target values are the errors between the physical model predictions
# and the ground truth observations
target_cols = get_state_vect_cols('err')
print(target_cols)
# Create feature and target matrices
X = df[feature_cols]
y = df[target_cols]
data_keys = ['X_train', 'X_test', 'y_train', 'y_test']
data_vals = train_test_split(X, y, test_size=0.2)
train_test_data = dict(zip(data_keys, data_vals))
# %%
from sklearn.utils.validation import check_X_y
import joblib
from catboost import CatBoostRegressor
def train_model():
X, ys = train_test_data['X_train'], train_test_data['y_train']
check_X_y(X, ys, multi_output=True)
models = {}
for target_col in ys.columns:
y1 = ys[target_col]
print(X.shape, y1.shape)
reg = CatBoostRegressor()
reg.fit(X, y1)
models[target_col] = reg
print(target_col)
joblib.dump(models, f"models/{CatBoostRegressor.__name__}.model")
# train_model()
# %%
from sklearn import metrics
def eval_model():
models = joblib.load(f"models/{CatBoostRegressor.__name__}.model")
X, ys = train_test_data['X_test'], train_test_data['y_test']
evals = []
for target_col, reg in models.items():
y_hat = reg.predict(X) # fake
y = ys[target_col] # real
print(y_hat[:10])
print(y[:10])
print("-----")
rmse = metrics.mean_squared_error(y, y_hat, squared=False)
r2 = metrics.r2_score(y, y_hat)
eval_dict = {'Error': target_col, 'RMSE': rmse, 'R^2': r2}
evals.append(eval_dict)
print(pd.DataFrame(evals))
eval_model()
# %%
Loading…
Cancel
Save