satkit 0.2.6__tar.gz → 0.2.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. {satkit-0.2.6 → satkit-0.2.7}/Cargo.toml +4 -4
  2. {satkit-0.2.6/python/satkit.egg-info → satkit-0.2.7}/PKG-INFO +4 -2
  3. {satkit-0.2.6 → satkit-0.2.7}/README.md +3 -1
  4. {satkit-0.2.6 → satkit-0.2.7}/pyproject.toml +2 -1
  5. satkit-0.2.7/python/docs/source/conf.py +328 -0
  6. satkit-0.2.7/python/satkit/__init__.pyi +33 -0
  7. satkit-0.2.7/python/satkit/frametransform.pyi +204 -0
  8. satkit-0.2.7/python/satkit/jplephem.pyi +74 -0
  9. satkit-0.2.7/python/satkit/satkit.pyi +1310 -0
  10. satkit-0.2.7/python/satkit/satprop.pyi +319 -0
  11. satkit-0.2.7/python/satkit/utils.pyi +80 -0
  12. {satkit-0.2.6 → satkit-0.2.7/python/satkit.egg-info}/PKG-INFO +4 -2
  13. {satkit-0.2.6 → satkit-0.2.7}/python/satkit.egg-info/SOURCES.txt +9 -14
  14. {satkit-0.2.6 → satkit-0.2.7}/python/satkit.egg-info/top_level.txt +1 -0
  15. {satkit-0.2.6 → satkit-0.2.7}/src/itrfcoord.rs +3 -3
  16. {satkit-0.2.6 → satkit-0.2.7}/src/lib.rs +3 -3
  17. {satkit-0.2.6 → satkit-0.2.7}/src/orbitprop/propagator.rs +1 -1
  18. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/mod.rs +6 -6
  19. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/mod_utils.rs +40 -30
  20. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pyastrotime.rs +213 -154
  21. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pyconsts.rs +3 -0
  22. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pydensity.rs +10 -27
  23. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pyduration.rs +86 -77
  24. satkit-0.2.7/src/pybindings/pyframetransform.rs +203 -0
  25. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pygravity.rs +42 -93
  26. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pyitrfcoord.rs +116 -85
  27. satkit-0.2.7/src/pybindings/pyjplephem.rs +89 -0
  28. satkit-0.2.7/src/pybindings/pylpephem_moon.rs +20 -0
  29. satkit-0.2.7/src/pybindings/pylpephem_sun.rs +67 -0
  30. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pynrlmsise.rs +1 -1
  31. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pypropagate.rs +14 -14
  32. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pyquaternion.rs +83 -59
  33. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pysatproperties.rs +18 -1
  34. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pysatstate.rs +66 -39
  35. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pysgp4.rs +58 -77
  36. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pyutils.rs +16 -15
  37. {satkit-0.2.6 → satkit-0.2.7}/src/sgp4/mod.rs +1 -1
  38. {satkit-0.2.6 → satkit-0.2.7}/src/sgp4/sgp4.rs +69 -0
  39. {satkit-0.2.6 → satkit-0.2.7}/src/utils/datadir.rs +9 -18
  40. satkit-0.2.6/python/satkit/__init__.pyi +0 -1417
  41. satkit-0.2.6/python/satkit/frametransform/__init__.pyi +0 -287
  42. satkit-0.2.6/python/satkit/frametransform/py.typed +0 -0
  43. satkit-0.2.6/python/satkit/jplephem/__init__.pyi +0 -118
  44. satkit-0.2.6/python/satkit/jplephem/py.typed +0 -0
  45. satkit-0.2.6/python/satkit/moon/py.typed +0 -0
  46. satkit-0.2.6/python/satkit/py.typed +0 -0
  47. satkit-0.2.6/python/satkit/satprop/__init__.pyi +0 -327
  48. satkit-0.2.6/python/satkit/satprop/py.typed +0 -0
  49. satkit-0.2.6/python/satkit/sun/py.typed +0 -0
  50. satkit-0.2.6/python/satkit/utils/__init__.pyi +0 -85
  51. satkit-0.2.6/python/satkit/utils/py.typed +0 -0
  52. satkit-0.2.6/src/pybindings/pyframetransform.rs +0 -253
  53. satkit-0.2.6/src/pybindings/pyjplephem.rs +0 -115
  54. satkit-0.2.6/src/pybindings/pylpephem_moon.rs +0 -26
  55. satkit-0.2.6/src/pybindings/pylpephem_sun.rs +0 -94
  56. {satkit-0.2.6 → satkit-0.2.7}/LICENSE +0 -0
  57. {satkit-0.2.6 → satkit-0.2.7}/MANIFEST.in +0 -0
  58. {satkit-0.2.6 → satkit-0.2.7}/python/satkit/__init__.py +0 -0
  59. {satkit-0.2.6 → satkit-0.2.7}/python/satkit/astro-data/py.typed +0 -0
  60. /satkit-0.2.6/python/satkit/density/__init__.pyi → /satkit-0.2.7/python/satkit/density.pyi +0 -0
  61. /satkit-0.2.6/python/satkit/moon/__init__.py → /satkit-0.2.7/python/satkit/moon.pyi +0 -0
  62. {satkit-0.2.6/python/satkit/density → satkit-0.2.7/python/satkit}/py.typed +0 -0
  63. /satkit-0.2.6/python/satkit/sun/__init__.pyi → /satkit-0.2.7/python/satkit/sun.pyi +0 -0
  64. {satkit-0.2.6 → satkit-0.2.7}/python/satkit.egg-info/dependency_links.txt +0 -0
  65. {satkit-0.2.6 → satkit-0.2.7}/python/satkit.egg-info/requires.txt +0 -0
  66. {satkit-0.2.6 → satkit-0.2.7}/python/test/download_data.py +0 -0
  67. {satkit-0.2.6 → satkit-0.2.7}/python/test/download_from_json.py +0 -0
  68. {satkit-0.2.6 → satkit-0.2.7}/python/test/download_testvecs.py +0 -0
  69. {satkit-0.2.6 → satkit-0.2.7}/python/test/orbitprop_gps_fit.py +0 -0
  70. {satkit-0.2.6 → satkit-0.2.7}/python/test/sp3file.py +0 -0
  71. {satkit-0.2.6 → satkit-0.2.7}/python/test/test.py +0 -0
  72. {satkit-0.2.6 → satkit-0.2.7}/setup.cfg +0 -0
  73. {satkit-0.2.6 → satkit-0.2.7}/src/astrotime.rs +0 -0
  74. {satkit-0.2.6 → satkit-0.2.7}/src/consts.rs +0 -0
  75. {satkit-0.2.6 → satkit-0.2.7}/src/duration.rs +0 -0
  76. {satkit-0.2.6 → satkit-0.2.7}/src/earth_orientation_params.rs +0 -0
  77. {satkit-0.2.6 → satkit-0.2.7}/src/earthgravity.rs +0 -0
  78. {satkit-0.2.6 → satkit-0.2.7}/src/frametransform/ierstable.rs +0 -0
  79. {satkit-0.2.6 → satkit-0.2.7}/src/frametransform/mod.rs +0 -0
  80. {satkit-0.2.6 → satkit-0.2.7}/src/frametransform/qcirs2gcrs.rs +0 -0
  81. {satkit-0.2.6 → satkit-0.2.7}/src/jplephem.rs +0 -0
  82. {satkit-0.2.6 → satkit-0.2.7}/src/lpephem/mod.rs +0 -0
  83. {satkit-0.2.6 → satkit-0.2.7}/src/lpephem/moon.rs +0 -0
  84. {satkit-0.2.6 → satkit-0.2.7}/src/lpephem/sun.rs +0 -0
  85. {satkit-0.2.6 → satkit-0.2.7}/src/nrlmsise.rs +0 -0
  86. {satkit-0.2.6 → satkit-0.2.7}/src/ode/harmonic_oscillator.rs +0 -0
  87. {satkit-0.2.6 → satkit-0.2.7}/src/ode/mod.rs +0 -0
  88. {satkit-0.2.6 → satkit-0.2.7}/src/ode/nalgebra.rs +0 -0
  89. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rk_adaptive.rs +0 -0
  90. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rk_adaptive_settings.rs +0 -0
  91. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rk_explicit.rs +0 -0
  92. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rkf45.rs +0 -0
  93. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rkts54.rs +0 -0
  94. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rkv65.rs +0 -0
  95. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rkv65_table.rs +0 -0
  96. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rkv87.rs +0 -0
  97. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rkv87_table.rs +0 -0
  98. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rkv98.rs +0 -0
  99. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rkv98_nointerp.rs +0 -0
  100. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rkv98_nointerp_table.rs +0 -0
  101. {satkit-0.2.6 → satkit-0.2.7}/src/ode/rkv98_table.rs +0 -0
  102. {satkit-0.2.6 → satkit-0.2.7}/src/ode/types.rs +0 -0
  103. {satkit-0.2.6 → satkit-0.2.7}/src/orbitprop/drag.rs +0 -0
  104. {satkit-0.2.6 → satkit-0.2.7}/src/orbitprop/mod.rs +0 -0
  105. {satkit-0.2.6 → satkit-0.2.7}/src/orbitprop/point_gravity.rs +0 -0
  106. {satkit-0.2.6 → satkit-0.2.7}/src/orbitprop/satproperties.rs +0 -0
  107. {satkit-0.2.6 → satkit-0.2.7}/src/orbitprop/satstate.rs +0 -0
  108. {satkit-0.2.6 → satkit-0.2.7}/src/orbitprop/settings.rs +0 -0
  109. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pypropsettings.rs +0 -0
  110. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pysolarsystem.rs +0 -0
  111. {satkit-0.2.6 → satkit-0.2.7}/src/pybindings/pytle.rs +0 -0
  112. {satkit-0.2.6 → satkit-0.2.7}/src/sgp4/dpper.rs +0 -0
  113. {satkit-0.2.6 → satkit-0.2.7}/src/sgp4/dscom.rs +0 -0
  114. {satkit-0.2.6 → satkit-0.2.7}/src/sgp4/dsinit.rs +0 -0
  115. {satkit-0.2.6 → satkit-0.2.7}/src/sgp4/dspace.rs +0 -0
  116. {satkit-0.2.6 → satkit-0.2.7}/src/sgp4/getgravconst.rs +0 -0
  117. {satkit-0.2.6 → satkit-0.2.7}/src/sgp4/initl.rs +0 -0
  118. {satkit-0.2.6 → satkit-0.2.7}/src/sgp4/satrec.rs +0 -0
  119. {satkit-0.2.6 → satkit-0.2.7}/src/sgp4/sgp4_lowlevel.rs +0 -0
  120. {satkit-0.2.6 → satkit-0.2.7}/src/sgp4/sgp4init.rs +0 -0
  121. {satkit-0.2.6 → satkit-0.2.7}/src/solarsystem.rs +0 -0
  122. {satkit-0.2.6 → satkit-0.2.7}/src/spaceweather.rs +0 -0
  123. {satkit-0.2.6 → satkit-0.2.7}/src/tle.rs +0 -0
  124. {satkit-0.2.6 → satkit-0.2.7}/src/types.rs +0 -0
  125. {satkit-0.2.6 → satkit-0.2.7}/src/utils/download.rs +0 -0
  126. {satkit-0.2.6 → satkit-0.2.7}/src/utils/mod.rs +0 -0
  127. {satkit-0.2.6 → satkit-0.2.7}/src/utils/skerror.rs +0 -0
  128. {satkit-0.2.6 → satkit-0.2.7}/src/utils/test.rs +0 -0
  129. {satkit-0.2.6 → satkit-0.2.7}/src/utils/update_data.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "satkit"
3
- version = "0.2.6"
3
+ version = "0.2.7"
4
4
  edition = "2021"
5
5
  description = "Satellite Toolkit"
6
6
  readme = "README.md"
@@ -29,8 +29,8 @@ num-traits = "0.2"
29
29
  thiserror = "1.0"
30
30
  simba = "0.8"
31
31
  once_cell = "1.6.0"
32
- numpy = { version = "0.20.0", optional = true }
33
- pyo3 = { version = "0.20.0", features = ["extension-module"], optional = true }
32
+ numpy = { version = "0.21.0", optional = true }
33
+ pyo3 = { version = "0.21.0", features = ["extension-module"], optional = true }
34
34
  ureq = "2.9.1"
35
35
  json = "0.12.4"
36
36
  process_path = "0.1.4"
@@ -38,7 +38,7 @@ process_path = "0.1.4"
38
38
  [build-dependencies]
39
39
  cc = { version = "1.0.74", features = ["parallel"] }
40
40
  chrono = "0.4.19"
41
- pyo3-build-config = { version = "0.20.0", optional = true }
41
+ pyo3-build-config = { version = "0.21.0", optional = true }
42
42
 
43
43
  [dev-dependencies]
44
44
  rand = "0.8.5"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: satkit
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: Satellite Orbital Dynamics Toolkit
5
5
  Author-email: Steven Michael <ssmichael@gmail.com>
6
6
  Maintainer-email: Steven Michael <ssmichael@gmail.com>
@@ -40,6 +40,9 @@ An accurate, high-performance satellite orbital kinematics toolkit, written in R
40
40
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/satkit)
41
41
  ![PyPI - Status](https://img.shields.io/pypi/status/satkit)
42
42
 
43
+
44
+ ![Read the Docs](https://img.shields.io/readthedocs/satellite-toolkit)
45
+
43
46
  ## Language Bindings
44
47
 
45
48
  - **Native Rust** bindings
@@ -49,7 +52,6 @@ An accurate, high-performance satellite orbital kinematics toolkit, written in R
49
52
 
50
53
  ## Features
51
54
 
52
- - Timescale transformations (UTC, GPS, UT1, TBD, TT, ...)
53
55
  - High-precision coordinate transforms between:
54
56
  - International Terrestrial Reference Frame (ITRF)
55
57
  - Geocentric Celestial Reference Frame (GCRF) using IAU-2000 reduction
@@ -21,6 +21,9 @@ An accurate, high-performance satellite orbital kinematics toolkit, written in R
21
21
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/satkit)
22
22
  ![PyPI - Status](https://img.shields.io/pypi/status/satkit)
23
23
 
24
+
25
+ ![Read the Docs](https://img.shields.io/readthedocs/satellite-toolkit)
26
+
24
27
  ## Language Bindings
25
28
 
26
29
  - **Native Rust** bindings
@@ -30,7 +33,6 @@ An accurate, high-performance satellite orbital kinematics toolkit, written in R
30
33
 
31
34
  ## Features
32
35
 
33
- - Timescale transformations (UTC, GPS, UT1, TBD, TT, ...)
34
36
  - High-precision coordinate transforms between:
35
37
  - International Terrestrial Reference Frame (ITRF)
36
38
  - Geocentric Celestial Reference Frame (GCRF) using IAU-2000 reduction
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "satkit"
7
- version = "0.2.6"
7
+ version = "0.2.7"
8
8
  dependencies = ["numpy>=1.20.0"]
9
9
  requires-python = ">= 3.8"
10
10
  authors = [{ name = "Steven Michael", email = "ssmichael@gmail.com" }]
@@ -53,6 +53,7 @@ before-build = [
53
53
  "pip install -U setuptools-rust",
54
54
  "rustup default stable",
55
55
  "rustup target add aarch64-apple-darwin",
56
+ "rustup target add x86_64-apple-darwin",
56
57
  "rustup show",
57
58
  ]
58
59
  environment = { PATH = "$PATH:$HOME/.cargo/bin" }
@@ -0,0 +1,328 @@
1
+ # Jupyter Notebook documentation build configuration file, created by
2
+ # sphinx-quickstart on Mon Apr 13 09:51:11 2015.
3
+ #
4
+ # This file is execfile()d with the current directory set to its
5
+ # containing dir.
6
+ #
7
+ # Note that not all possible configuration values are present in this
8
+ # autogenerated file.
9
+ #
10
+ # All configuration values have a default; values that are commented out
11
+ # serve to show the default.
12
+ import os
13
+ import shutil
14
+ import sys
15
+
16
+ sys.path.insert(0, "python/satkit")
17
+ sys.path.insert(0, "../satkit")
18
+
19
+ # -- General configuration ------------------------------------------------
20
+
21
+ # If your documentation needs a minimal Sphinx version, state it here.
22
+ # needs_sphinx = '1.0'
23
+
24
+ # Add any Sphinx extension module names here, as strings. They can be
25
+ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
26
+ # ones.
27
+ extensions = [
28
+ "sphinx.ext.autodoc",
29
+ "sphinx.ext.doctest",
30
+ "autoapi.extension",
31
+ "sphinx.ext.intersphinx",
32
+ "sphinx.ext.napoleon",
33
+ "sphinx.ext.mathjax",
34
+ "IPython.sphinxext.ipython_console_highlighting",
35
+ "nbsphinx",
36
+ "myst_parser",
37
+ ]
38
+
39
+ autoapi_dirs = ["../../satkit"]
40
+ autoapi_generate_api_docs = False
41
+ autoapi_member_order = "bysource"
42
+
43
+
44
+ myst_enable_extensions = ["html_image", "amsmath", "dollarmath"]
45
+ myst_update_mathjax = False
46
+
47
+ # Add any paths that contain templates here, relative to this directory.
48
+ templates_path = ["_templates"]
49
+
50
+
51
+ # The suffix(es) of source filenames.
52
+ # You can specify multiple suffix as a list of string:
53
+ source_suffix = ['.md']
54
+
55
+ # The encoding of source files.
56
+ # source_encoding = 'utf-8-sig'
57
+
58
+ # The master toctree document.
59
+ master_doc = "index"
60
+
61
+ # General information about the project.
62
+ project = "SatKit"
63
+ copyright = "2024 Steven Michael"
64
+ author = "Steven Michael (ssmichael@gmail.com)"
65
+
66
+ # ghissue config
67
+ github_project_url = "https://github.com/ssmichael1/satkit"
68
+
69
+ # The version info for the project you're documenting, acts as replacement for
70
+ # |version| and |release|, also used in various other places throughout the
71
+ # built documents.
72
+ #
73
+ #_version_py = os.path.join(here, "../../notebook/_version.py")
74
+ #version_ns = {}
75
+ #exec(compile(open(_version_py).read(), _version_py, "exec"), version_ns) # noqa: S102, SIM115
76
+ # The short X.Y version.
77
+ ##version = "%i.%i" % version_ns["version_info"][:2]
78
+ # The full version, including alpha/beta/rc tags.
79
+ ##release = version_ns["__version__"]
80
+ version = "0.2.7"
81
+ release = "0.2.7"
82
+
83
+ # The language for content autogenerated by Sphinx. Refer to documentation
84
+ # for a list of supported languages.
85
+ #
86
+ # This is also used if you do content translation via gettext catalogs.
87
+ # Usually you set "language" from the command line for these cases.
88
+ language = "en"
89
+
90
+ # There are two options for replacing |today|: either, you set today to some
91
+ # non-false value, then it is used:
92
+ # today = ''
93
+ # Else, today_fmt is used as the format for a strftime call.
94
+ # today_fmt = '%B %d, %Y'
95
+
96
+ # List of patterns, relative to source directory, that match files and
97
+ # directories to ignore when looking for source files.
98
+ exclude_patterns = [
99
+ "examples/Notebook/.ipynb_checkpoints",
100
+ "examples/Notebook/nbpackage/*.ipynb",
101
+ "examples/Notebook/nbpackage/nbs/*.ipynb",
102
+ ]
103
+
104
+ # The reST default role (used for this markup: `text`) to use for all
105
+ # documents.
106
+ # default_role = None
107
+
108
+ # If true, '()' will be appended to :func: etc. cross-reference text.
109
+ # add_function_parentheses = True
110
+
111
+ # If true, the current module name will be prepended to all description
112
+ # unit titles (such as .. function::).
113
+ # add_module_names = True
114
+
115
+ # If true, sectionauthor and moduleauthor directives will be shown in the
116
+ # output. They are ignored by default.
117
+ # show_authors = False
118
+
119
+ # The name of the Pygments (syntax highlighting) style to use.
120
+ # pygments_style = "sphinx"
121
+
122
+ # A list of ignored prefixes for module index sorting.
123
+ # modindex_common_prefix = []
124
+
125
+ # If true, keep warnings as "system message" paragraphs in the built documents.
126
+ # keep_warnings = False
127
+
128
+ # If true, `todo` and `todoList` produce output, else they produce nothing.
129
+ todo_include_todos = False
130
+
131
+
132
+ # -- Options for HTML output ----------------------------------------------
133
+
134
+ # The theme to use for HTML and HTML Help pages. See the documentation for
135
+ # a list of builtin themes.
136
+ # html_theme = "alabaster"
137
+ html_theme = "sphinx_rtd_theme"
138
+ # html_theme = "furo"
139
+
140
+ # Add any paths that contain custom themes here, relative to this directory.
141
+ # html_theme_path = []
142
+
143
+ # The name for this set of Sphinx documents. If None, it defaults to
144
+ # "<project> v<release> documentation".
145
+ # html_title = None
146
+
147
+ # A shorter title for the navigation bar. Default is the same as html_title.
148
+ # html_short_title = None
149
+
150
+ # The name of an image file (relative to this directory) to place at the top
151
+ # of the sidebar.
152
+ # html_logo = "examples/images/jupyter_logo.png"
153
+
154
+ # The name of an image file (within the static path) to use as favicon of the
155
+ # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
156
+ # pixels large.
157
+ # html_favicon = None
158
+
159
+ # Add any paths that contain custom static files (such as style sheets) here,
160
+ # relative to this directory. They are copied after the builtin static files,
161
+ # so a file named "default.css" will overwrite the builtin "default.css".
162
+ # NOTE: Sphinx's 'make html' builder will throw a warning about an unfound
163
+ # _static directory. Do not remove or comment out html_static_path
164
+ # since it is needed to properly generate _static in the build directory
165
+ html_static_path = ["source/_static"]
166
+
167
+ # Add any extra paths that contain custom files (such as robots.txt or
168
+ # .htaccess) here, relative to this directory. These files are copied
169
+ # directly to the root of the documentation.
170
+ # html_extra_path = []
171
+
172
+ # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
173
+ # using the given strftime format.
174
+ # html_last_updated_fmt = '%b %d, %Y'
175
+
176
+ # If true, SmartyPants will be used to convert quotes and dashes to
177
+ # typographically correct entities.
178
+ # html_use_smartypants = True
179
+
180
+ # Custom sidebar templates, maps document names to template names.
181
+ # html_sidebars = {}
182
+
183
+ # Additional templates that should be rendered to pages, maps page names to
184
+ # template names.
185
+ # html_additional_pages = {}
186
+
187
+ # If false, no module index is generated.
188
+ # html_domain_indices = True
189
+
190
+ # If false, no index is generated.
191
+ # html_use_index = True
192
+
193
+ # If true, the index is split into individual pages for each letter.
194
+ # html_split_index = False
195
+
196
+ # If true, links to the reST sources are added to the pages.
197
+ # html_show_sourcelink = True
198
+
199
+ # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
200
+ # html_show_sphinx = True
201
+
202
+ # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
203
+ # html_show_copyright = True
204
+
205
+ # If true, an OpenSearch description file will be output, and all pages will
206
+ # contain a <link> tag referring to it. The value of this option must be the
207
+ # base URL from which the finished HTML is served.
208
+ # html_use_opensearch = ''
209
+
210
+ # This is the file name suffix for HTML files (e.g. ".xhtml").
211
+ # html_file_suffix = None
212
+
213
+ # Language to be used for generating the HTML full-text search index.
214
+ # Sphinx supports the following languages:
215
+ # 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja'
216
+ # 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr'
217
+ # html_search_language = 'en'
218
+
219
+ # A dictionary with options for the search language support, empty by default.
220
+ # Now only 'ja' uses this config value
221
+ # html_search_options = {'type': 'default'}
222
+
223
+ # The name of a javascript file (relative to the configuration directory) that
224
+ # implements a search results scorer. If empty, the default will be used.
225
+ # html_search_scorer = 'scorer.js'
226
+
227
+ # Output file base name for HTML help builder.
228
+ htmlhelp_basename = "JupyterNotebookdoc"
229
+
230
+ # This will ensure that we use the correctly set environment for canonical URLs
231
+ # Old Read the Docs injections makes it point only to the default version,
232
+ # for instance /en/stable/
233
+ html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "/")
234
+
235
+ # -- Options for LaTeX output ---------------------------------------------
236
+
237
+ latex_elements = {}
238
+
239
+ # Grouping the document tree into LaTeX files. List of tuples
240
+ # (source start file, target name, title,
241
+ # author, documentclass [howto, manual, or own class]).
242
+ latex_documents = [
243
+ (
244
+ master_doc,
245
+ "JupyterNotebook.tex",
246
+ "Jupyter Notebook Documentation",
247
+ "https://jupyter.org",
248
+ "manual",
249
+ ),
250
+ ]
251
+
252
+ # The name of an image file (relative to this directory) to place at the top of
253
+ # the title page.
254
+ # latex_logo = None
255
+
256
+ # For "manual" documents, if this is true, then toplevel headings are parts,
257
+ # not chapters.
258
+ # latex_use_parts = False
259
+
260
+ # If true, show page references after internal links.
261
+ # latex_show_pagerefs = False
262
+
263
+ # If true, show URL addresses after external links.
264
+ # latex_show_urls = False
265
+
266
+ # Documents to append as an appendix to all manuals.
267
+ # latex_appendices = []
268
+
269
+ # If false, no module index is generated.
270
+ # latex_domain_indices = True
271
+
272
+
273
+ # -- Options for manual page output ---------------------------------------
274
+
275
+ # One entry per manual page. List of tuples
276
+ # (source start file, name, description, authors, manual section).
277
+ man_pages = [(master_doc, "jupyternotebook", "Jupyter Notebook Documentation", [author], 1)]
278
+
279
+ # If true, show URL addresses after external links.
280
+ # man_show_urls = False
281
+
282
+
283
+ # -- Options for link checks ----------------------------------------------
284
+
285
+ linkcheck_ignore = [r"http://127\.0\.0\.1/*"]
286
+
287
+
288
+ # -- Options for Texinfo output -------------------------------------------
289
+
290
+ # Grouping the document tree into Texinfo files. List of tuples
291
+ # (source start file, target name, title, author,
292
+ # dir menu entry, description, category)
293
+ texinfo_documents = [
294
+ (
295
+ master_doc,
296
+ "JupyterNotebook",
297
+ "Jupyter Notebook Documentation",
298
+ author,
299
+ "JupyterNotebook",
300
+ "One line description of project.",
301
+ "Miscellaneous",
302
+ ),
303
+ ]
304
+
305
+ # Documents to append as an appendix to all manuals.
306
+ # texinfo_appendices = []
307
+
308
+ # If false, no module index is generated.
309
+ # texinfo_domain_indices = True
310
+
311
+ # How to display URL addresses: 'footnote', 'no', or 'inline'.
312
+ # texinfo_show_urls = 'footnote'
313
+
314
+ # If true, do not generate a @detailmenu in the "Top" node's menu.
315
+ # texinfo_no_detailmenu = False
316
+
317
+ intersphinx_mapping = {
318
+ "ipython": ("https://ipython.readthedocs.io/en/stable/", None),
319
+ "nbconvert": ("https://nbconvert.readthedocs.io/en/latest/", None),
320
+ "nbformat": ("https://nbformat.readthedocs.io/en/latest/", None),
321
+ "jupyter": ("https://jupyter.readthedocs.io/en/latest/", None),
322
+ }
323
+
324
+ spelling_lang = "en_US"
325
+ spelling_word_list_filename = "spelling_wordlist.txt"
326
+
327
+ primary_domain = "python"
328
+ highlight_language = "python"
@@ -0,0 +1,33 @@
1
+ from .satkit import *
2
+
3
+
4
+ from . import jplephem
5
+ from . import frametransform
6
+ from . import moon
7
+ from . import sun
8
+ from . import satprop
9
+ from . import density
10
+ from . import utils
11
+
12
+ __all__ = [
13
+ "time",
14
+ "duration",
15
+ "timescale",
16
+ "quaternion",
17
+ "sgp4",
18
+ "gravmodel",
19
+ "gravity",
20
+ "nrlmsise00",
21
+ "solarsystem",
22
+ "TLE",
23
+ "itrfcoord",
24
+ "consts",
25
+ "frametransform",
26
+ "jplephem",
27
+ "utils",
28
+ "moon",
29
+ "sun",
30
+ "satprop",
31
+ "density",
32
+ "utils"
33
+ ]
@@ -0,0 +1,204 @@
1
+ """
2
+ Transformations between coordinate frames, and associated utility functions
3
+
4
+ Coordinate frame transforms are mostly pulled from Vallado:
5
+ https://www.google.com/books/edition/Fundamentals_of_satkitdynamics_and_Applic/PJLlWzMBKjkC?hl=en&gbpv=0
6
+
7
+ or the IERS:
8
+ https://www.iers.org/
9
+
10
+ """
11
+
12
+ from __future__ import annotations
13
+ import typing
14
+ import numpy.typing as npt
15
+ import numpy as np
16
+
17
+ import datetime
18
+
19
+ def gmst(
20
+ tm: time | npt.ArrayLike[time] | datetime.datetime | npt.ArrayLike[datetime.datetime],
21
+ ) -> float | npt.ArrayLike[np.float]:
22
+ """Greenwich Mean Sidereal Time
23
+
24
+ Notes:
25
+ * GMST is the angle between the vernal equinox and the Greenwich meridian
26
+ * Vallado algorithm 15
27
+ * GMST = 67310.5481 + (876600h + 8640184.812866) * tᵤₜ₁ * (0.983104 + tᵤₜ₁ * −6.2e−6)
28
+
29
+ Args:
30
+ tm (satkit.time | npt.ArrayLike[satkit.time] | datetime.datetime | npt.ArrayLike[datetime.datetime]): scalar, list, or numpy array of astro.time or datetime.datetime representing time at which to calculate output
31
+
32
+ Returns:
33
+ float | npt.ArrayLike[np.float]: Greenwich Mean Sideral Time, radians, at intput time(s)
34
+ """
35
+
36
+
37
+ def gast(
38
+ tm: time | npt.ArrayLike[time] | datetime.datetime | npt.ArrayLike[datetime.datetime],
39
+ ) -> float | npt.ArrayLike[np.float]:
40
+ """ Greenwich Apparent Sideral Time
41
+
42
+ Args:
43
+ tm (satkit.time | npt.ArrayLike[satkit.time] | datetime.datetime | npt.ArrayLike[datetime.datetime]): scalar, list, or numpy array of astro.time or datetime.datetime representing time at which to calculate output
44
+
45
+ Returns:
46
+ float | npt.ArrayLike[np.float]: Greenwich apparant sidereal time, radians, at input time(s)
47
+ """
48
+
49
+ def earth_rotation_angle(
50
+ tm: time | npt.ArrayLike[time] | datetime.datetime | npt.ArrayLike[datetime.datetime],
51
+ ) -> float | npt.ArrayLike[np.float]:
52
+ """Earth Rotation Angle
53
+
54
+ Notes:
55
+ * See: IERS Technical Note 36, Chapter 5, Equation 5.15
56
+ * Calculation Details:
57
+ * Let t be UT1 Julian date
58
+ * let f be fractional component of t (fraction of day)
59
+ * ERA = 2𝜋 ((0.7790572732640 + f + 0.00273781191135448 * (t - 2451545.0))
60
+
61
+ Args:
62
+ tm (satkit.time|datetime.datetime|list|numpy.array): Time[s] at which to calculate Earth Rotation Angle
63
+
64
+ Returns:
65
+ float|numpy.array: Earth Rotation Angle at input time[s] in radians
66
+ """
67
+
68
+ def qitrf2tirs(
69
+ tm: time | npt.ArrayLike[time] | datetime.datetime | npt.ArrayLike[datetime.datetime],
70
+ ) -> quaternion | npt.ArrayLike[quaternion]:
71
+ """Rotation from Terrestrial Intermediate Reference System to Celestial Intermediate Reference Systems
72
+
73
+ Args:
74
+ tm (satkit.time | npt.ArrayLike[satkit.time] | datetime.datetime | npt.ArrayLike[datetime.datetime]): Time[s] at which to calculate the quaternion
75
+
76
+ Returns:
77
+ quaternion | npt.ArrayLike[quaternion]: Quaternion representing rotation from ITRF to TIRS at input time(s)
78
+ """
79
+
80
+ def qcirs2gcrf(tm: time | npt.ArrayLike[time] | datetime.datetime | npt.ArrayLike[datetime.datetime],
81
+ ) -> quaternion | npt.ArrayLike[quaternion]:
82
+ """ Rotation from Celestial Intermediate Reference System to Geocentric Celestial Reference Frame
83
+
84
+ Args:
85
+ tm (satkit.time | npt.ArrayLike[satkit.time] | datetime.datetime | npt.ArrayLike[datetime.datetime]): Time[s] at which to calculate the quaternion
86
+
87
+ Returns:
88
+ quaternion | npt.ArrayLike[quaternion]: Quaternion representing rotation from CIRS to GCRF at input time(s)
89
+ """
90
+
91
+
92
+ def qtirs2cirs(
93
+ tm: time | npt.ArrayLike[time] | datetime.datetime | npt.ArrayLike[datetime.datetime],
94
+ ) -> quaternion | npt.ArrayLike[quaternion]:
95
+ """Rotation from Terrestrial Intermediate Reference System (TIRS) to the Celestial Intermediate Reference System (CIRS)
96
+
97
+ Args:
98
+ tm (satkit.time | npt.ArrayLike[satkit.time] | datetime.datetime | npt.ArrayLike[datetime.datetime]): Time[s] at which to calculate the quaternion
99
+
100
+ Returns:
101
+ quaternion | npt.ArrayLike[quaternion]: Quaternion representing rotation from TIRS to CIRS at input time(s)
102
+ """
103
+
104
+ def qgcrf2itrf_approx(
105
+ tm: time | npt.ArrayLike[time] | datetime.datetime | npt.ArrayLike[datetime.datetime],
106
+ ) -> quaternion | npt.ArrayLike[quaternion]:
107
+ """Quaternion representing approximate rotation from the Geocentric Celestial Reference Frame (GCRF) to the International Terrestrial Reference Frame (ITRF)
108
+
109
+ Notes:
110
+ * Accurate to approx. 1 arcsec
111
+
112
+ Args:
113
+ tm (satkit.time | npt.ArrayLike[satkit.time] | datetime.datetime | npt.ArrayLike[datetime.datetime]): Time[s] at which to calculate the quaternion
114
+
115
+ Returns:
116
+ quaternion | npt.ArrayLike[quaternion]: Quaternion representing rotation from GCRF to ITRF at input time(s)
117
+ """
118
+
119
+
120
+ def qitrf2gcrf_approx(
121
+ tm: time | npt.ArrayLike[time] | datetime.datetime | npt.ArrayLike[datetime.datetime],
122
+ ) -> quaternion | npt.ArrayLike[quaternion]:
123
+ """Quaternion representing approximate rotation from the International Terrestrial Reference Frame (ITRF) to the Geocentric Celestial Reference Frame (GCRF)
124
+
125
+ Notes:
126
+ * Accurate to approx. 1 arcsec
127
+
128
+ Args:
129
+ tm (satkit.time | npt.ArrayLike[satkit.time] | datetime.datetime | npt.ArrayLike[datetime.datetime]): Time[s] at which to calculate the quaternion
130
+
131
+ Returns:
132
+ quaternion | npt.ArrayLike[quaternion]: Quaternion representing rotation from ITRF to GCRF at input time(s)
133
+ """
134
+
135
+
136
+ def qgcrf2itrf(
137
+ tm: time | npt.ArrayLike[time] | datetime.datetime | npt.ArrayLike[datetime.datetime],
138
+ ) -> quaternion | npt.ArrayLike[quaternion]:
139
+ """Quaternion representing rotation from the Geocentric Celestial Reference Frame (GCRF) to the International Terrestrial Reference Frame (ITRF)
140
+
141
+ Notes:
142
+ * Uses full IAU2010 Reduction
143
+ * See IERS Technical Note 36, Chapter 5
144
+ * Does not include solid tides, ocean tides
145
+ * Very computationally expensive
146
+
147
+ Args:
148
+ tm (satkit.time | npt.ArrayLike[satkit.time] | datetime.datetime | npt.ArrayLike[datetime.datetime]): Time[s] at which to calculate the quaternion
149
+
150
+ Returns:
151
+ quaternion | npt.ArrayLike[quaternion]: Quaternion representing rotation from GCRF to ITRF at input time(s)
152
+ """
153
+
154
+ def qitrf2gcrf(
155
+ tm: time | npt.ArrayLike[time] | datetime.datetime | npt.ArrayLike[datetime.datetime],
156
+ ) -> quaternion | npt.ArrayLike[quaternion]:
157
+ """Quaternion representing rotation from the International Terrestrial Reference Frame (ITRF) to the Geocentric Celestial Reference Frame (GCRF)
158
+
159
+ Notes:
160
+ * Uses full IAU2010 Reduction
161
+ * See IERS Technical Note 36, Chapter 5
162
+ * Does not include solid tides, ocean tides
163
+ * Very computationally expensive
164
+
165
+ Args:
166
+ tm (satkit.time | npt.ArrayLike[satkit.time] | datetime.datetime | npt.ArrayLike[datetime.datetime]): Time[s] at which to calculate the quaternion
167
+ Returns:
168
+ quaternion | npt.ArrayLike[quaternion]: Quaternion representing rotation from ITRF to GCRF at input time(s)
169
+ """
170
+
171
+
172
+ def qteme2itrf(
173
+ tm: time | npt.ArrayLike[time] | datetime.datetime | npt.ArrayLike[datetime.datetime],
174
+ ) -> quaternion | npt.ArrayLike[quaternion]:
175
+ """ Quaternion representing rotation from the True Equator Mean Equinox (TEME) frame to the International Terrestrial Reference Frame (ITRF)
176
+
177
+ Notes:
178
+ * This is equation 3-90 in Vallado
179
+ * TEME is the output frame of the SGP4 propagator used to compute position from two-line element sets.
180
+
181
+ Args:
182
+ tm (satkit.time | npt.ArrayLike[satkit.time] | datetime.datetime | npt.ArrayLike[datetime.datetime]): Time[s] at which to calculate the quaternion
183
+
184
+ Returns:
185
+ quaternion | npt.ArrayLike[quaternion]: Quaternion representing rotation from TEME to ITRF at input time(s)
186
+ """
187
+
188
+
189
+ def earth_orientation_params(time: time) -> tuple[float, float, float, float] | None:
190
+ """Get Earth Orientation Parameters at given instant
191
+
192
+ Args:
193
+ time (satkit.time): Instant at which to query parameters
194
+
195
+ Returns:
196
+ (float, float, float, float, float, float) | None: Tuple with following elements:
197
+ 0 : (UT1 - UTC) in seconds
198
+ 1 : X polar motion in arcsecs
199
+ 2 : Y polar motion in arcsecs
200
+ 3 : LOD: instantaneous rate of change in (UT1-UTC), msec/day
201
+ 4 : dX wrt IAU-2000A nutation, milli-arcsecs
202
+ 5 : dY wrt IAU-2000A nutation, milli-arcsecs
203
+
204
+ """