diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..dc1443f --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 362944a553d41341500337bd0c918e20 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/_sources/api/ssapy.accel.Accel.rst.txt b/_sources/api/ssapy.accel.Accel.rst.txt new file mode 100644 index 0000000..8438393 --- /dev/null +++ b/_sources/api/ssapy.accel.Accel.rst.txt @@ -0,0 +1,7 @@ +Accel +===== + +.. currentmodule:: ssapy.accel + +.. autoclass:: Accel + :show-inheritance: diff --git a/_sources/api/ssapy.accel.AccelConstNTW.rst.txt b/_sources/api/ssapy.accel.AccelConstNTW.rst.txt new file mode 100644 index 0000000..3b1c14f --- /dev/null +++ b/_sources/api/ssapy.accel.AccelConstNTW.rst.txt @@ -0,0 +1,17 @@ +AccelConstNTW +============= + +.. currentmodule:: ssapy.accel + +.. autoclass:: AccelConstNTW + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AccelConstNTW.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.accel.AccelDrag.rst.txt b/_sources/api/ssapy.accel.AccelDrag.rst.txt new file mode 100644 index 0000000..0f82704 --- /dev/null +++ b/_sources/api/ssapy.accel.AccelDrag.rst.txt @@ -0,0 +1,17 @@ +AccelDrag +========= + +.. currentmodule:: ssapy.accel + +.. autoclass:: AccelDrag + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AccelDrag.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.accel.AccelEarthRad.rst.txt b/_sources/api/ssapy.accel.AccelEarthRad.rst.txt new file mode 100644 index 0000000..99fcf19 --- /dev/null +++ b/_sources/api/ssapy.accel.AccelEarthRad.rst.txt @@ -0,0 +1,17 @@ +AccelEarthRad +============= + +.. currentmodule:: ssapy.accel + +.. autoclass:: AccelEarthRad + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AccelEarthRad.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.accel.AccelKepler.rst.txt b/_sources/api/ssapy.accel.AccelKepler.rst.txt new file mode 100644 index 0000000..23df279 --- /dev/null +++ b/_sources/api/ssapy.accel.AccelKepler.rst.txt @@ -0,0 +1,17 @@ +AccelKepler +=========== + +.. currentmodule:: ssapy.accel + +.. autoclass:: AccelKepler + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AccelKepler.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.accel.AccelProd.rst.txt b/_sources/api/ssapy.accel.AccelProd.rst.txt new file mode 100644 index 0000000..c5d4628 --- /dev/null +++ b/_sources/api/ssapy.accel.AccelProd.rst.txt @@ -0,0 +1,17 @@ +AccelProd +========= + +.. currentmodule:: ssapy.accel + +.. autoclass:: AccelProd + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AccelProd.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.accel.AccelSolRad.rst.txt b/_sources/api/ssapy.accel.AccelSolRad.rst.txt new file mode 100644 index 0000000..ca3a33c --- /dev/null +++ b/_sources/api/ssapy.accel.AccelSolRad.rst.txt @@ -0,0 +1,17 @@ +AccelSolRad +=========== + +.. currentmodule:: ssapy.accel + +.. autoclass:: AccelSolRad + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AccelSolRad.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.accel.AccelSum.rst.txt b/_sources/api/ssapy.accel.AccelSum.rst.txt new file mode 100644 index 0000000..777ca13 --- /dev/null +++ b/_sources/api/ssapy.accel.AccelSum.rst.txt @@ -0,0 +1,17 @@ +AccelSum +======== + +.. currentmodule:: ssapy.accel + +.. autoclass:: AccelSum + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AccelSum.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.body.Body.rst.txt b/_sources/api/ssapy.body.Body.rst.txt new file mode 100644 index 0000000..370e3c1 --- /dev/null +++ b/_sources/api/ssapy.body.Body.rst.txt @@ -0,0 +1,7 @@ +Body +==== + +.. currentmodule:: ssapy.body + +.. autoclass:: Body + :show-inheritance: diff --git a/_sources/api/ssapy.body.EarthOrientation.rst.txt b/_sources/api/ssapy.body.EarthOrientation.rst.txt new file mode 100644 index 0000000..159d00a --- /dev/null +++ b/_sources/api/ssapy.body.EarthOrientation.rst.txt @@ -0,0 +1,17 @@ +EarthOrientation +================ + +.. currentmodule:: ssapy.body + +.. autoclass:: EarthOrientation + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~EarthOrientation.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.body.MoonOrientation.rst.txt b/_sources/api/ssapy.body.MoonOrientation.rst.txt new file mode 100644 index 0000000..1a980c7 --- /dev/null +++ b/_sources/api/ssapy.body.MoonOrientation.rst.txt @@ -0,0 +1,17 @@ +MoonOrientation +=============== + +.. currentmodule:: ssapy.body + +.. autoclass:: MoonOrientation + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~MoonOrientation.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.body.MoonPosition.rst.txt b/_sources/api/ssapy.body.MoonPosition.rst.txt new file mode 100644 index 0000000..629d787 --- /dev/null +++ b/_sources/api/ssapy.body.MoonPosition.rst.txt @@ -0,0 +1,17 @@ +MoonPosition +============ + +.. currentmodule:: ssapy.body + +.. autoclass:: MoonPosition + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~MoonPosition.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.body.PlanetPosition.rst.txt b/_sources/api/ssapy.body.PlanetPosition.rst.txt new file mode 100644 index 0000000..0337f46 --- /dev/null +++ b/_sources/api/ssapy.body.PlanetPosition.rst.txt @@ -0,0 +1,17 @@ +PlanetPosition +============== + +.. currentmodule:: ssapy.body + +.. autoclass:: PlanetPosition + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~PlanetPosition.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.body.SunPosition.rst.txt b/_sources/api/ssapy.body.SunPosition.rst.txt new file mode 100644 index 0000000..dacf7f5 --- /dev/null +++ b/_sources/api/ssapy.body.SunPosition.rst.txt @@ -0,0 +1,17 @@ +SunPosition +=========== + +.. currentmodule:: ssapy.body + +.. autoclass:: SunPosition + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~SunPosition.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.body.get_body.rst.txt b/_sources/api/ssapy.body.get_body.rst.txt new file mode 100644 index 0000000..fe59715 --- /dev/null +++ b/_sources/api/ssapy.body.get_body.rst.txt @@ -0,0 +1,6 @@ +get_body +======== + +.. currentmodule:: ssapy.body + +.. autofunction:: get_body diff --git a/_sources/api/ssapy.compute.HashableArrayContainer.rst.txt b/_sources/api/ssapy.compute.HashableArrayContainer.rst.txt new file mode 100644 index 0000000..179d770 --- /dev/null +++ b/_sources/api/ssapy.compute.HashableArrayContainer.rst.txt @@ -0,0 +1,7 @@ +HashableArrayContainer +====================== + +.. currentmodule:: ssapy.compute + +.. autoclass:: HashableArrayContainer + :show-inheritance: diff --git a/_sources/api/ssapy.compute.M_v.rst.txt b/_sources/api/ssapy.compute.M_v.rst.txt new file mode 100644 index 0000000..e3a3b1b --- /dev/null +++ b/_sources/api/ssapy.compute.M_v.rst.txt @@ -0,0 +1,6 @@ +M_v +=== + +.. currentmodule:: ssapy.compute + +.. autofunction:: M_v diff --git a/_sources/api/ssapy.compute.altaz.rst.txt b/_sources/api/ssapy.compute.altaz.rst.txt new file mode 100644 index 0000000..df1c528 --- /dev/null +++ b/_sources/api/ssapy.compute.altaz.rst.txt @@ -0,0 +1,6 @@ +altaz +===== + +.. currentmodule:: ssapy.compute + +.. autofunction:: altaz diff --git a/_sources/api/ssapy.compute.dircos.rst.txt b/_sources/api/ssapy.compute.dircos.rst.txt new file mode 100644 index 0000000..9039359 --- /dev/null +++ b/_sources/api/ssapy.compute.dircos.rst.txt @@ -0,0 +1,6 @@ +dircos +====== + +.. currentmodule:: ssapy.compute + +.. autofunction:: dircos diff --git a/_sources/api/ssapy.compute.earthShadowCoords.rst.txt b/_sources/api/ssapy.compute.earthShadowCoords.rst.txt new file mode 100644 index 0000000..196ec77 --- /dev/null +++ b/_sources/api/ssapy.compute.earthShadowCoords.rst.txt @@ -0,0 +1,6 @@ +earthShadowCoords +================= + +.. currentmodule:: ssapy.compute + +.. autofunction:: earthShadowCoords diff --git a/_sources/api/ssapy.compute.earth_shine.rst.txt b/_sources/api/ssapy.compute.earth_shine.rst.txt new file mode 100644 index 0000000..b491c08 --- /dev/null +++ b/_sources/api/ssapy.compute.earth_shine.rst.txt @@ -0,0 +1,6 @@ +earth_shine +=========== + +.. currentmodule:: ssapy.compute + +.. autofunction:: earth_shine diff --git a/_sources/api/ssapy.compute.find_passes.rst.txt b/_sources/api/ssapy.compute.find_passes.rst.txt new file mode 100644 index 0000000..560da5f --- /dev/null +++ b/_sources/api/ssapy.compute.find_passes.rst.txt @@ -0,0 +1,6 @@ +find_passes +=========== + +.. currentmodule:: ssapy.compute + +.. autofunction:: find_passes diff --git a/_sources/api/ssapy.compute.getAngle.rst.txt b/_sources/api/ssapy.compute.getAngle.rst.txt new file mode 100644 index 0000000..473fc03 --- /dev/null +++ b/_sources/api/ssapy.compute.getAngle.rst.txt @@ -0,0 +1,6 @@ +getAngle +======== + +.. currentmodule:: ssapy.compute + +.. autofunction:: getAngle diff --git a/_sources/api/ssapy.compute.groundTrack.rst.txt b/_sources/api/ssapy.compute.groundTrack.rst.txt new file mode 100644 index 0000000..e14a628 --- /dev/null +++ b/_sources/api/ssapy.compute.groundTrack.rst.txt @@ -0,0 +1,6 @@ +groundTrack +=========== + +.. currentmodule:: ssapy.compute + +.. autofunction:: groundTrack diff --git a/_sources/api/ssapy.compute.keplerian_orbital_elements.rst.txt b/_sources/api/ssapy.compute.keplerian_orbital_elements.rst.txt new file mode 100644 index 0000000..e888974 --- /dev/null +++ b/_sources/api/ssapy.compute.keplerian_orbital_elements.rst.txt @@ -0,0 +1,6 @@ +keplerian_orbital_elements +========================== + +.. currentmodule:: ssapy.compute + +.. autofunction:: keplerian_orbital_elements diff --git a/_sources/api/ssapy.compute.moon_shine.rst.txt b/_sources/api/ssapy.compute.moon_shine.rst.txt new file mode 100644 index 0000000..29b0e52 --- /dev/null +++ b/_sources/api/ssapy.compute.moon_shine.rst.txt @@ -0,0 +1,6 @@ +moon_shine +========== + +.. currentmodule:: ssapy.compute + +.. autofunction:: moon_shine diff --git a/_sources/api/ssapy.compute.quickAltAz.rst.txt b/_sources/api/ssapy.compute.quickAltAz.rst.txt new file mode 100644 index 0000000..4dc20f0 --- /dev/null +++ b/_sources/api/ssapy.compute.quickAltAz.rst.txt @@ -0,0 +1,6 @@ +quickAltAz +========== + +.. currentmodule:: ssapy.compute + +.. autofunction:: quickAltAz diff --git a/_sources/api/ssapy.compute.radec.rst.txt b/_sources/api/ssapy.compute.radec.rst.txt new file mode 100644 index 0000000..d949f63 --- /dev/null +++ b/_sources/api/ssapy.compute.radec.rst.txt @@ -0,0 +1,6 @@ +radec +===== + +.. currentmodule:: ssapy.compute + +.. autofunction:: radec diff --git a/_sources/api/ssapy.compute.radecRate.rst.txt b/_sources/api/ssapy.compute.radecRate.rst.txt new file mode 100644 index 0000000..b7542f3 --- /dev/null +++ b/_sources/api/ssapy.compute.radecRate.rst.txt @@ -0,0 +1,6 @@ +radecRate +========= + +.. currentmodule:: ssapy.compute + +.. autofunction:: radecRate diff --git a/_sources/api/ssapy.compute.radecRateObsToRV.rst.txt b/_sources/api/ssapy.compute.radecRateObsToRV.rst.txt new file mode 100644 index 0000000..d64f52b --- /dev/null +++ b/_sources/api/ssapy.compute.radecRateObsToRV.rst.txt @@ -0,0 +1,6 @@ +radecRateObsToRV +================ + +.. currentmodule:: ssapy.compute + +.. autofunction:: radecRateObsToRV diff --git a/_sources/api/ssapy.compute.refine_pass.rst.txt b/_sources/api/ssapy.compute.refine_pass.rst.txt new file mode 100644 index 0000000..2144d9f --- /dev/null +++ b/_sources/api/ssapy.compute.refine_pass.rst.txt @@ -0,0 +1,6 @@ +refine_pass +=========== + +.. currentmodule:: ssapy.compute + +.. autofunction:: refine_pass diff --git a/_sources/api/ssapy.compute.rv.rst.txt b/_sources/api/ssapy.compute.rv.rst.txt new file mode 100644 index 0000000..b5006ff --- /dev/null +++ b/_sources/api/ssapy.compute.rv.rst.txt @@ -0,0 +1,6 @@ +rv +== + +.. currentmodule:: ssapy.compute + +.. autofunction:: rv diff --git a/_sources/api/ssapy.compute.rvObsToRaDecRate.rst.txt b/_sources/api/ssapy.compute.rvObsToRaDecRate.rst.txt new file mode 100644 index 0000000..d3fc67a --- /dev/null +++ b/_sources/api/ssapy.compute.rvObsToRaDecRate.rst.txt @@ -0,0 +1,6 @@ +rvObsToRaDecRate +================ + +.. currentmodule:: ssapy.compute + +.. autofunction:: rvObsToRaDecRate diff --git a/_sources/api/ssapy.compute.sun_shine.rst.txt b/_sources/api/ssapy.compute.sun_shine.rst.txt new file mode 100644 index 0000000..037cc2f --- /dev/null +++ b/_sources/api/ssapy.compute.sun_shine.rst.txt @@ -0,0 +1,6 @@ +sun_shine +========= + +.. currentmodule:: ssapy.compute + +.. autofunction:: sun_shine diff --git a/_sources/api/ssapy.correlate_tracks.CircVelocityPrior.rst.txt b/_sources/api/ssapy.correlate_tracks.CircVelocityPrior.rst.txt new file mode 100644 index 0000000..92ad5c4 --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.CircVelocityPrior.rst.txt @@ -0,0 +1,17 @@ +CircVelocityPrior +================= + +.. currentmodule:: ssapy.correlate_tracks + +.. autoclass:: CircVelocityPrior + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~CircVelocityPrior.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.correlate_tracks.GaussPrior.rst.txt b/_sources/api/ssapy.correlate_tracks.GaussPrior.rst.txt new file mode 100644 index 0000000..4330e0f --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.GaussPrior.rst.txt @@ -0,0 +1,17 @@ +GaussPrior +========== + +.. currentmodule:: ssapy.correlate_tracks + +.. autoclass:: GaussPrior + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~GaussPrior.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.correlate_tracks.Hypothesis.rst.txt b/_sources/api/ssapy.correlate_tracks.Hypothesis.rst.txt new file mode 100644 index 0000000..6b2493c --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.Hypothesis.rst.txt @@ -0,0 +1,23 @@ +Hypothesis +========== + +.. currentmodule:: ssapy.correlate_tracks + +.. autoclass:: Hypothesis + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Hypothesis.addto + ~Hypothesis.difference + ~Hypothesis.ntracklet + ~Hypothesis.summarize + + .. rubric:: Methods Documentation + + .. automethod:: addto + .. automethod:: difference + .. automethod:: ntracklet + .. automethod:: summarize diff --git a/_sources/api/ssapy.correlate_tracks.MHT.rst.txt b/_sources/api/ssapy.correlate_tracks.MHT.rst.txt new file mode 100644 index 0000000..14a9eae --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.MHT.rst.txt @@ -0,0 +1,27 @@ +MHT +=== + +.. currentmodule:: ssapy.correlate_tracks + +.. autoclass:: MHT + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~MHT.add_tracklet + ~MHT.flag_inconsistency + ~MHT.prune + ~MHT.prune_stale_hypotheses + ~MHT.prune_tracks + ~MHT.run + + .. rubric:: Methods Documentation + + .. automethod:: add_tracklet + .. automethod:: flag_inconsistency + .. automethod:: prune + .. automethod:: prune_stale_hypotheses + .. automethod:: prune_tracks + .. automethod:: run diff --git a/_sources/api/ssapy.correlate_tracks.Track.rst.txt b/_sources/api/ssapy.correlate_tracks.Track.rst.txt new file mode 100644 index 0000000..46dba2b --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.Track.rst.txt @@ -0,0 +1,19 @@ +Track +===== + +.. currentmodule:: ssapy.correlate_tracks + +.. autoclass:: Track + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Track.addto + ~Track.gaussian_approximation + + .. rubric:: Methods Documentation + + .. automethod:: addto + .. automethod:: gaussian_approximation diff --git a/_sources/api/ssapy.correlate_tracks.TrackBase.rst.txt b/_sources/api/ssapy.correlate_tracks.TrackBase.rst.txt new file mode 100644 index 0000000..3f6bd81 --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.TrackBase.rst.txt @@ -0,0 +1,33 @@ +TrackBase +========= + +.. currentmodule:: ssapy.correlate_tracks + +.. autoclass:: TrackBase + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~TrackBase.lnprob + + .. rubric:: Methods Summary + + .. autosummary:: + + ~TrackBase.gate + ~TrackBase.predict + ~TrackBase.propagaterdz + ~TrackBase.update + + .. rubric:: Attributes Documentation + + .. autoattribute:: lnprob + + .. rubric:: Methods Documentation + + .. automethod:: gate + .. automethod:: predict + .. automethod:: propagaterdz + .. automethod:: update diff --git a/_sources/api/ssapy.correlate_tracks.TrackGauss.rst.txt b/_sources/api/ssapy.correlate_tracks.TrackGauss.rst.txt new file mode 100644 index 0000000..f675760 --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.TrackGauss.rst.txt @@ -0,0 +1,23 @@ +TrackGauss +========== + +.. currentmodule:: ssapy.correlate_tracks + +.. autoclass:: TrackGauss + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~TrackGauss.addto + ~TrackGauss.at + ~TrackGauss.gaussian_approximation + ~TrackGauss.update + + .. rubric:: Methods Documentation + + .. automethod:: addto + .. automethod:: at + .. automethod:: gaussian_approximation + .. automethod:: update diff --git a/_sources/api/ssapy.correlate_tracks.VolumeDistancePrior.rst.txt b/_sources/api/ssapy.correlate_tracks.VolumeDistancePrior.rst.txt new file mode 100644 index 0000000..1730045 --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.VolumeDistancePrior.rst.txt @@ -0,0 +1,17 @@ +VolumeDistancePrior +=================== + +.. currentmodule:: ssapy.correlate_tracks + +.. autoclass:: VolumeDistancePrior + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~VolumeDistancePrior.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.correlate_tracks.ZeroRadialVelocityPrior.rst.txt b/_sources/api/ssapy.correlate_tracks.ZeroRadialVelocityPrior.rst.txt new file mode 100644 index 0000000..a86fb5a --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.ZeroRadialVelocityPrior.rst.txt @@ -0,0 +1,17 @@ +ZeroRadialVelocityPrior +======================= + +.. currentmodule:: ssapy.correlate_tracks + +.. autoclass:: ZeroRadialVelocityPrior + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ZeroRadialVelocityPrior.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.correlate_tracks.combinatoric_lnprior.rst.txt b/_sources/api/ssapy.correlate_tracks.combinatoric_lnprior.rst.txt new file mode 100644 index 0000000..c14604b --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.combinatoric_lnprior.rst.txt @@ -0,0 +1,6 @@ +combinatoric_lnprior +==================== + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: combinatoric_lnprior diff --git a/_sources/api/ssapy.correlate_tracks.data_for_satellite.rst.txt b/_sources/api/ssapy.correlate_tracks.data_for_satellite.rst.txt new file mode 100644 index 0000000..268ce41 --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.data_for_satellite.rst.txt @@ -0,0 +1,6 @@ +data_for_satellite +================== + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: data_for_satellite diff --git a/_sources/api/ssapy.correlate_tracks.fit_arc.rst.txt b/_sources/api/ssapy.correlate_tracks.fit_arc.rst.txt new file mode 100644 index 0000000..cd1e2ab --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.fit_arc.rst.txt @@ -0,0 +1,6 @@ +fit_arc +======= + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: fit_arc diff --git a/_sources/api/ssapy.correlate_tracks.fit_arc_blind.rst.txt b/_sources/api/ssapy.correlate_tracks.fit_arc_blind.rst.txt new file mode 100644 index 0000000..05622bf --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.fit_arc_blind.rst.txt @@ -0,0 +1,6 @@ +fit_arc_blind +============= + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: fit_arc_blind diff --git a/_sources/api/ssapy.correlate_tracks.fit_arc_blind_via_track.rst.txt b/_sources/api/ssapy.correlate_tracks.fit_arc_blind_via_track.rst.txt new file mode 100644 index 0000000..cd36fcd --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.fit_arc_blind_via_track.rst.txt @@ -0,0 +1,6 @@ +fit_arc_blind_via_track +======================= + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: fit_arc_blind_via_track diff --git a/_sources/api/ssapy.correlate_tracks.fit_arc_with_gaussian_prior.rst.txt b/_sources/api/ssapy.correlate_tracks.fit_arc_with_gaussian_prior.rst.txt new file mode 100644 index 0000000..1ce1a24 --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.fit_arc_with_gaussian_prior.rst.txt @@ -0,0 +1,6 @@ +fit_arc_with_gaussian_prior +=========================== + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: fit_arc_with_gaussian_prior diff --git a/_sources/api/ssapy.correlate_tracks.iterate_mht.rst.txt b/_sources/api/ssapy.correlate_tracks.iterate_mht.rst.txt new file mode 100644 index 0000000..f191c50 --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.iterate_mht.rst.txt @@ -0,0 +1,6 @@ +iterate_mht +=========== + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: iterate_mht diff --git a/_sources/api/ssapy.correlate_tracks.make_optimizer.rst.txt b/_sources/api/ssapy.correlate_tracks.make_optimizer.rst.txt new file mode 100644 index 0000000..267e8e6 --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.make_optimizer.rst.txt @@ -0,0 +1,6 @@ +make_optimizer +============== + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: make_optimizer diff --git a/_sources/api/ssapy.correlate_tracks.make_param_guess.rst.txt b/_sources/api/ssapy.correlate_tracks.make_param_guess.rst.txt new file mode 100644 index 0000000..bcf7598 --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.make_param_guess.rst.txt @@ -0,0 +1,6 @@ +make_param_guess +================ + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: make_param_guess diff --git a/_sources/api/ssapy.correlate_tracks.orbit_to_param.rst.txt b/_sources/api/ssapy.correlate_tracks.orbit_to_param.rst.txt new file mode 100644 index 0000000..7f4fcf7 --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.orbit_to_param.rst.txt @@ -0,0 +1,6 @@ +orbit_to_param +============== + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: orbit_to_param diff --git a/_sources/api/ssapy.correlate_tracks.param_to_orbit.rst.txt b/_sources/api/ssapy.correlate_tracks.param_to_orbit.rst.txt new file mode 100644 index 0000000..77500d5 --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.param_to_orbit.rst.txt @@ -0,0 +1,6 @@ +param_to_orbit +============== + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: param_to_orbit diff --git a/_sources/api/ssapy.correlate_tracks.radeczn.rst.txt b/_sources/api/ssapy.correlate_tracks.radeczn.rst.txt new file mode 100644 index 0000000..3ef2dbd --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.radeczn.rst.txt @@ -0,0 +1,6 @@ +radeczn +======= + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: radeczn diff --git a/_sources/api/ssapy.correlate_tracks.summarize_tracklet.rst.txt b/_sources/api/ssapy.correlate_tracks.summarize_tracklet.rst.txt new file mode 100644 index 0000000..68c0ddc --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.summarize_tracklet.rst.txt @@ -0,0 +1,6 @@ +summarize_tracklet +================== + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: summarize_tracklet diff --git a/_sources/api/ssapy.correlate_tracks.summarize_tracklets.rst.txt b/_sources/api/ssapy.correlate_tracks.summarize_tracklets.rst.txt new file mode 100644 index 0000000..6c7089a --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.summarize_tracklets.rst.txt @@ -0,0 +1,6 @@ +summarize_tracklets +=================== + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: summarize_tracklets diff --git a/_sources/api/ssapy.correlate_tracks.time_ordered_satIDs.rst.txt b/_sources/api/ssapy.correlate_tracks.time_ordered_satIDs.rst.txt new file mode 100644 index 0000000..7fc975d --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.time_ordered_satIDs.rst.txt @@ -0,0 +1,6 @@ +time_ordered_satIDs +=================== + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: time_ordered_satIDs diff --git a/_sources/api/ssapy.correlate_tracks.wrap_angle_difference.rst.txt b/_sources/api/ssapy.correlate_tracks.wrap_angle_difference.rst.txt new file mode 100644 index 0000000..bb5736c --- /dev/null +++ b/_sources/api/ssapy.correlate_tracks.wrap_angle_difference.rst.txt @@ -0,0 +1,6 @@ +wrap_angle_difference +===================== + +.. currentmodule:: ssapy.correlate_tracks + +.. autofunction:: wrap_angle_difference diff --git a/_sources/api/ssapy.gravity.AccelHarmonic.rst.txt b/_sources/api/ssapy.gravity.AccelHarmonic.rst.txt new file mode 100644 index 0000000..87b5bd7 --- /dev/null +++ b/_sources/api/ssapy.gravity.AccelHarmonic.rst.txt @@ -0,0 +1,17 @@ +AccelHarmonic +============= + +.. currentmodule:: ssapy.gravity + +.. autoclass:: AccelHarmonic + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AccelHarmonic.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.gravity.AccelThirdBody.rst.txt b/_sources/api/ssapy.gravity.AccelThirdBody.rst.txt new file mode 100644 index 0000000..a7cdc5f --- /dev/null +++ b/_sources/api/ssapy.gravity.AccelThirdBody.rst.txt @@ -0,0 +1,17 @@ +AccelThirdBody +============== + +.. currentmodule:: ssapy.gravity + +.. autoclass:: AccelThirdBody + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AccelThirdBody.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.gravity.HarmonicCoefficients.rst.txt b/_sources/api/ssapy.gravity.HarmonicCoefficients.rst.txt new file mode 100644 index 0000000..3f00d10 --- /dev/null +++ b/_sources/api/ssapy.gravity.HarmonicCoefficients.rst.txt @@ -0,0 +1,19 @@ +HarmonicCoefficients +==================== + +.. currentmodule:: ssapy.gravity + +.. autoclass:: HarmonicCoefficients + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~HarmonicCoefficients.fromEGM + ~HarmonicCoefficients.fromTAB + + .. rubric:: Methods Documentation + + .. automethod:: fromEGM + .. automethod:: fromTAB diff --git a/_sources/api/ssapy.io.append_csv.rst.txt b/_sources/api/ssapy.io.append_csv.rst.txt new file mode 100644 index 0000000..61aa3f4 --- /dev/null +++ b/_sources/api/ssapy.io.append_csv.rst.txt @@ -0,0 +1,6 @@ +append_csv +========== + +.. currentmodule:: ssapy.io + +.. autofunction:: append_csv diff --git a/_sources/api/ssapy.io.append_csv_on_disk.rst.txt b/_sources/api/ssapy.io.append_csv_on_disk.rst.txt new file mode 100644 index 0000000..4104237 --- /dev/null +++ b/_sources/api/ssapy.io.append_csv_on_disk.rst.txt @@ -0,0 +1,6 @@ +append_csv_on_disk +================== + +.. currentmodule:: ssapy.io + +.. autofunction:: append_csv_on_disk diff --git a/_sources/api/ssapy.io.b3obs2pos.rst.txt b/_sources/api/ssapy.io.b3obs2pos.rst.txt new file mode 100644 index 0000000..cf66d54 --- /dev/null +++ b/_sources/api/ssapy.io.b3obs2pos.rst.txt @@ -0,0 +1,6 @@ +b3obs2pos +========= + +.. currentmodule:: ssapy.io + +.. autofunction:: b3obs2pos diff --git a/_sources/api/ssapy.io.exists.rst.txt b/_sources/api/ssapy.io.exists.rst.txt new file mode 100644 index 0000000..9d4ef4d --- /dev/null +++ b/_sources/api/ssapy.io.exists.rst.txt @@ -0,0 +1,6 @@ +exists +====== + +.. currentmodule:: ssapy.io + +.. autofunction:: exists diff --git a/_sources/api/ssapy.io.exists_in_csv.rst.txt b/_sources/api/ssapy.io.exists_in_csv.rst.txt new file mode 100644 index 0000000..727fc62 --- /dev/null +++ b/_sources/api/ssapy.io.exists_in_csv.rst.txt @@ -0,0 +1,6 @@ +exists_in_csv +============= + +.. currentmodule:: ssapy.io + +.. autofunction:: exists_in_csv diff --git a/_sources/api/ssapy.io.get_memory_usage.rst.txt b/_sources/api/ssapy.io.get_memory_usage.rst.txt new file mode 100644 index 0000000..e6ea418 --- /dev/null +++ b/_sources/api/ssapy.io.get_memory_usage.rst.txt @@ -0,0 +1,6 @@ +get_memory_usage +================ + +.. currentmodule:: ssapy.io + +.. autofunction:: get_memory_usage diff --git a/_sources/api/ssapy.io.get_tel_pos_itrf_to_gcrs.rst.txt b/_sources/api/ssapy.io.get_tel_pos_itrf_to_gcrs.rst.txt new file mode 100644 index 0000000..9558601 --- /dev/null +++ b/_sources/api/ssapy.io.get_tel_pos_itrf_to_gcrs.rst.txt @@ -0,0 +1,6 @@ +get_tel_pos_itrf_to_gcrs +======================== + +.. currentmodule:: ssapy.io + +.. autofunction:: get_tel_pos_itrf_to_gcrs diff --git a/_sources/api/ssapy.io.guess_csv_delimiter.rst.txt b/_sources/api/ssapy.io.guess_csv_delimiter.rst.txt new file mode 100644 index 0000000..9dac63c --- /dev/null +++ b/_sources/api/ssapy.io.guess_csv_delimiter.rst.txt @@ -0,0 +1,6 @@ +guess_csv_delimiter +=================== + +.. currentmodule:: ssapy.io + +.. autofunction:: guess_csv_delimiter diff --git a/_sources/api/ssapy.io.h5_key_exists.rst.txt b/_sources/api/ssapy.io.h5_key_exists.rst.txt new file mode 100644 index 0000000..2a7e6e5 --- /dev/null +++ b/_sources/api/ssapy.io.h5_key_exists.rst.txt @@ -0,0 +1,6 @@ +h5_key_exists +============= + +.. currentmodule:: ssapy.io + +.. autofunction:: h5_key_exists diff --git a/_sources/api/ssapy.io.h5append.rst.txt b/_sources/api/ssapy.io.h5append.rst.txt new file mode 100644 index 0000000..8e0b27d --- /dev/null +++ b/_sources/api/ssapy.io.h5append.rst.txt @@ -0,0 +1,6 @@ +h5append +======== + +.. currentmodule:: ssapy.io + +.. autofunction:: h5append diff --git a/_sources/api/ssapy.io.h5keys.rst.txt b/_sources/api/ssapy.io.h5keys.rst.txt new file mode 100644 index 0000000..b882984 --- /dev/null +++ b/_sources/api/ssapy.io.h5keys.rst.txt @@ -0,0 +1,6 @@ +h5keys +====== + +.. currentmodule:: ssapy.io + +.. autofunction:: h5keys diff --git a/_sources/api/ssapy.io.h5load.rst.txt b/_sources/api/ssapy.io.h5load.rst.txt new file mode 100644 index 0000000..d7f90d4 --- /dev/null +++ b/_sources/api/ssapy.io.h5load.rst.txt @@ -0,0 +1,6 @@ +h5load +====== + +.. currentmodule:: ssapy.io + +.. autofunction:: h5load diff --git a/_sources/api/ssapy.io.h5loadall.rst.txt b/_sources/api/ssapy.io.h5loadall.rst.txt new file mode 100644 index 0000000..273e504 --- /dev/null +++ b/_sources/api/ssapy.io.h5loadall.rst.txt @@ -0,0 +1,6 @@ +h5loadall +========= + +.. currentmodule:: ssapy.io + +.. autofunction:: h5loadall diff --git a/_sources/api/ssapy.io.h5overwrite.rst.txt b/_sources/api/ssapy.io.h5overwrite.rst.txt new file mode 100644 index 0000000..a14cfc0 --- /dev/null +++ b/_sources/api/ssapy.io.h5overwrite.rst.txt @@ -0,0 +1,6 @@ +h5overwrite +=========== + +.. currentmodule:: ssapy.io + +.. autofunction:: h5overwrite diff --git a/_sources/api/ssapy.io.h5save.rst.txt b/_sources/api/ssapy.io.h5save.rst.txt new file mode 100644 index 0000000..c41b445 --- /dev/null +++ b/_sources/api/ssapy.io.h5save.rst.txt @@ -0,0 +1,6 @@ +h5save +====== + +.. currentmodule:: ssapy.io + +.. autofunction:: h5save diff --git a/_sources/api/ssapy.io.header_csv.rst.txt b/_sources/api/ssapy.io.header_csv.rst.txt new file mode 100644 index 0000000..201ebe5 --- /dev/null +++ b/_sources/api/ssapy.io.header_csv.rst.txt @@ -0,0 +1,6 @@ +header_csv +========== + +.. currentmodule:: ssapy.io + +.. autofunction:: header_csv diff --git a/_sources/api/ssapy.io.listdir.rst.txt b/_sources/api/ssapy.io.listdir.rst.txt new file mode 100644 index 0000000..1289dfa --- /dev/null +++ b/_sources/api/ssapy.io.listdir.rst.txt @@ -0,0 +1,6 @@ +listdir +======= + +.. currentmodule:: ssapy.io + +.. autofunction:: listdir diff --git a/_sources/api/ssapy.io.load_b3obs_file.rst.txt b/_sources/api/ssapy.io.load_b3obs_file.rst.txt new file mode 100644 index 0000000..ef80298 --- /dev/null +++ b/_sources/api/ssapy.io.load_b3obs_file.rst.txt @@ -0,0 +1,6 @@ +load_b3obs_file +=============== + +.. currentmodule:: ssapy.io + +.. autofunction:: load_b3obs_file diff --git a/_sources/api/ssapy.io.make_tle.rst.txt b/_sources/api/ssapy.io.make_tle.rst.txt new file mode 100644 index 0000000..07f7de0 --- /dev/null +++ b/_sources/api/ssapy.io.make_tle.rst.txt @@ -0,0 +1,6 @@ +make_tle +======== + +.. currentmodule:: ssapy.io + +.. autofunction:: make_tle diff --git a/_sources/api/ssapy.io.makedf.rst.txt b/_sources/api/ssapy.io.makedf.rst.txt new file mode 100644 index 0000000..4ea9d0c --- /dev/null +++ b/_sources/api/ssapy.io.makedf.rst.txt @@ -0,0 +1,6 @@ +makedf +====== + +.. currentmodule:: ssapy.io + +.. autofunction:: makedf diff --git a/_sources/api/ssapy.io.merge_dicts.rst.txt b/_sources/api/ssapy.io.merge_dicts.rst.txt new file mode 100644 index 0000000..198e2a5 --- /dev/null +++ b/_sources/api/ssapy.io.merge_dicts.rst.txt @@ -0,0 +1,6 @@ +merge_dicts +=========== + +.. currentmodule:: ssapy.io + +.. autofunction:: merge_dicts diff --git a/_sources/api/ssapy.io.mkdir.rst.txt b/_sources/api/ssapy.io.mkdir.rst.txt new file mode 100644 index 0000000..043dd2e --- /dev/null +++ b/_sources/api/ssapy.io.mkdir.rst.txt @@ -0,0 +1,6 @@ +mkdir +===== + +.. currentmodule:: ssapy.io + +.. autofunction:: mkdir diff --git a/_sources/api/ssapy.io.mpi_scatter.rst.txt b/_sources/api/ssapy.io.mpi_scatter.rst.txt new file mode 100644 index 0000000..01c48a6 --- /dev/null +++ b/_sources/api/ssapy.io.mpi_scatter.rst.txt @@ -0,0 +1,6 @@ +mpi_scatter +=========== + +.. currentmodule:: ssapy.io + +.. autofunction:: mpi_scatter diff --git a/_sources/api/ssapy.io.mpi_scatter_exclude_rank_0.rst.txt b/_sources/api/ssapy.io.mpi_scatter_exclude_rank_0.rst.txt new file mode 100644 index 0000000..e6909af --- /dev/null +++ b/_sources/api/ssapy.io.mpi_scatter_exclude_rank_0.rst.txt @@ -0,0 +1,6 @@ +mpi_scatter_exclude_rank_0 +========================== + +.. currentmodule:: ssapy.io + +.. autofunction:: mpi_scatter_exclude_rank_0 diff --git a/_sources/api/ssapy.io.npload.rst.txt b/_sources/api/ssapy.io.npload.rst.txt new file mode 100644 index 0000000..cfdda95 --- /dev/null +++ b/_sources/api/ssapy.io.npload.rst.txt @@ -0,0 +1,6 @@ +npload +====== + +.. currentmodule:: ssapy.io + +.. autofunction:: npload diff --git a/_sources/api/ssapy.io.npsave.rst.txt b/_sources/api/ssapy.io.npsave.rst.txt new file mode 100644 index 0000000..736d155 --- /dev/null +++ b/_sources/api/ssapy.io.npsave.rst.txt @@ -0,0 +1,6 @@ +npsave +====== + +.. currentmodule:: ssapy.io + +.. autofunction:: npsave diff --git a/_sources/api/ssapy.io.parseB3.rst.txt b/_sources/api/ssapy.io.parseB3.rst.txt new file mode 100644 index 0000000..689b27e --- /dev/null +++ b/_sources/api/ssapy.io.parseB3.rst.txt @@ -0,0 +1,6 @@ +parseB3 +======= + +.. currentmodule:: ssapy.io + +.. autofunction:: parseB3 diff --git a/_sources/api/ssapy.io.parseB3Line.rst.txt b/_sources/api/ssapy.io.parseB3Line.rst.txt new file mode 100644 index 0000000..2fb0c4e --- /dev/null +++ b/_sources/api/ssapy.io.parseB3Line.rst.txt @@ -0,0 +1,6 @@ +parseB3Line +=========== + +.. currentmodule:: ssapy.io + +.. autofunction:: parseB3Line diff --git a/_sources/api/ssapy.io.parse_overpunched.rst.txt b/_sources/api/ssapy.io.parse_overpunched.rst.txt new file mode 100644 index 0000000..b8afaa9 --- /dev/null +++ b/_sources/api/ssapy.io.parse_overpunched.rst.txt @@ -0,0 +1,6 @@ +parse_overpunched +================= + +.. currentmodule:: ssapy.io + +.. autofunction:: parse_overpunched diff --git a/_sources/api/ssapy.io.parse_tle.rst.txt b/_sources/api/ssapy.io.parse_tle.rst.txt new file mode 100644 index 0000000..bb9ae72 --- /dev/null +++ b/_sources/api/ssapy.io.parse_tle.rst.txt @@ -0,0 +1,6 @@ +parse_tle +========= + +.. currentmodule:: ssapy.io + +.. autofunction:: parse_tle diff --git a/_sources/api/ssapy.io.pd_flatten.rst.txt b/_sources/api/ssapy.io.pd_flatten.rst.txt new file mode 100644 index 0000000..cfbf73e --- /dev/null +++ b/_sources/api/ssapy.io.pd_flatten.rst.txt @@ -0,0 +1,6 @@ +pd_flatten +========== + +.. currentmodule:: ssapy.io + +.. autofunction:: pd_flatten diff --git a/_sources/api/ssapy.io.pdstr_to_arrays.rst.txt b/_sources/api/ssapy.io.pdstr_to_arrays.rst.txt new file mode 100644 index 0000000..ce0da43 --- /dev/null +++ b/_sources/api/ssapy.io.pdstr_to_arrays.rst.txt @@ -0,0 +1,6 @@ +pdstr_to_arrays +=============== + +.. currentmodule:: ssapy.io + +.. autofunction:: pdstr_to_arrays diff --git a/_sources/api/ssapy.io.pload.rst.txt b/_sources/api/ssapy.io.pload.rst.txt new file mode 100644 index 0000000..5120bed --- /dev/null +++ b/_sources/api/ssapy.io.pload.rst.txt @@ -0,0 +1,6 @@ +pload +===== + +.. currentmodule:: ssapy.io + +.. autofunction:: pload diff --git a/_sources/api/ssapy.io.psave.rst.txt b/_sources/api/ssapy.io.psave.rst.txt new file mode 100644 index 0000000..f1717c8 --- /dev/null +++ b/_sources/api/ssapy.io.psave.rst.txt @@ -0,0 +1,6 @@ +psave +===== + +.. currentmodule:: ssapy.io + +.. autofunction:: psave diff --git a/_sources/api/ssapy.io.read_csv.rst.txt b/_sources/api/ssapy.io.read_csv.rst.txt new file mode 100644 index 0000000..0834ddf --- /dev/null +++ b/_sources/api/ssapy.io.read_csv.rst.txt @@ -0,0 +1,6 @@ +read_csv +======== + +.. currentmodule:: ssapy.io + +.. autofunction:: read_csv diff --git a/_sources/api/ssapy.io.read_tle.rst.txt b/_sources/api/ssapy.io.read_tle.rst.txt new file mode 100644 index 0000000..a8d3f89 --- /dev/null +++ b/_sources/api/ssapy.io.read_tle.rst.txt @@ -0,0 +1,6 @@ +read_tle +======== + +.. currentmodule:: ssapy.io + +.. autofunction:: read_tle diff --git a/_sources/api/ssapy.io.read_tle_catalog.rst.txt b/_sources/api/ssapy.io.read_tle_catalog.rst.txt new file mode 100644 index 0000000..3921429 --- /dev/null +++ b/_sources/api/ssapy.io.read_tle_catalog.rst.txt @@ -0,0 +1,6 @@ +read_tle_catalog +================ + +.. currentmodule:: ssapy.io + +.. autofunction:: read_tle_catalog diff --git a/_sources/api/ssapy.io.rmdir.rst.txt b/_sources/api/ssapy.io.rmdir.rst.txt new file mode 100644 index 0000000..c6a7d44 --- /dev/null +++ b/_sources/api/ssapy.io.rmdir.rst.txt @@ -0,0 +1,6 @@ +rmdir +===== + +.. currentmodule:: ssapy.io + +.. autofunction:: rmdir diff --git a/_sources/api/ssapy.io.rmfile.rst.txt b/_sources/api/ssapy.io.rmfile.rst.txt new file mode 100644 index 0000000..26aefeb --- /dev/null +++ b/_sources/api/ssapy.io.rmfile.rst.txt @@ -0,0 +1,6 @@ +rmfile +====== + +.. currentmodule:: ssapy.io + +.. autofunction:: rmfile diff --git a/_sources/api/ssapy.io.save_csv.rst.txt b/_sources/api/ssapy.io.save_csv.rst.txt new file mode 100644 index 0000000..29e3cfc --- /dev/null +++ b/_sources/api/ssapy.io.save_csv.rst.txt @@ -0,0 +1,6 @@ +save_csv +======== + +.. currentmodule:: ssapy.io + +.. autofunction:: save_csv diff --git a/_sources/api/ssapy.io.save_csv_line.rst.txt b/_sources/api/ssapy.io.save_csv_line.rst.txt new file mode 100644 index 0000000..8a39712 --- /dev/null +++ b/_sources/api/ssapy.io.save_csv_line.rst.txt @@ -0,0 +1,6 @@ +save_csv_line +============= + +.. currentmodule:: ssapy.io + +.. autofunction:: save_csv_line diff --git a/_sources/api/ssapy.io.str_to_array.rst.txt b/_sources/api/ssapy.io.str_to_array.rst.txt new file mode 100644 index 0000000..b789cd4 --- /dev/null +++ b/_sources/api/ssapy.io.str_to_array.rst.txt @@ -0,0 +1,6 @@ +str_to_array +============ + +.. currentmodule:: ssapy.io + +.. autofunction:: str_to_array diff --git a/_sources/api/ssapy.linker.BinarySelectorParams.rst.txt b/_sources/api/ssapy.linker.BinarySelectorParams.rst.txt new file mode 100644 index 0000000..319eed3 --- /dev/null +++ b/_sources/api/ssapy.linker.BinarySelectorParams.rst.txt @@ -0,0 +1,19 @@ +BinarySelectorParams +==================== + +.. currentmodule:: ssapy.linker + +.. autoclass:: BinarySelectorParams + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~BinarySelectorParams.get_linked_track_indices + ~BinarySelectorParams.get_unlinked_track_indices + + .. rubric:: Methods Documentation + + .. automethod:: get_linked_track_indices + .. automethod:: get_unlinked_track_indices diff --git a/_sources/api/ssapy.linker.Linker.rst.txt b/_sources/api/ssapy.linker.Linker.rst.txt new file mode 100644 index 0000000..c490fd1 --- /dev/null +++ b/_sources/api/ssapy.linker.Linker.rst.txt @@ -0,0 +1,27 @@ +Linker +====== + +.. currentmodule:: ssapy.linker + +.. autoclass:: Linker + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Linker.sample + ~Linker.sample_Porbit_conditional_dist + ~Linker.sample_orbit_selectors_from_data_conditional + ~Linker.save_step + ~Linker.update_orbit_parameters + ~Linker.update_params_using_carlin_chib + + .. rubric:: Methods Documentation + + .. automethod:: sample + .. automethod:: sample_Porbit_conditional_dist + .. automethod:: sample_orbit_selectors_from_data_conditional + .. automethod:: save_step + .. automethod:: update_orbit_parameters + .. automethod:: update_params_using_carlin_chib diff --git a/_sources/api/ssapy.linker.ModelSelectorParams.rst.txt b/_sources/api/ssapy.linker.ModelSelectorParams.rst.txt new file mode 100644 index 0000000..2e315b3 --- /dev/null +++ b/_sources/api/ssapy.linker.ModelSelectorParams.rst.txt @@ -0,0 +1,17 @@ +ModelSelectorParams +=================== + +.. currentmodule:: ssapy.linker + +.. autoclass:: ModelSelectorParams + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ModelSelectorParams.normalize + + .. rubric:: Methods Documentation + + .. automethod:: normalize diff --git a/_sources/api/ssapy.orbit.EarthObserver.rst.txt b/_sources/api/ssapy.orbit.EarthObserver.rst.txt new file mode 100644 index 0000000..e6b5eb8 --- /dev/null +++ b/_sources/api/ssapy.orbit.EarthObserver.rst.txt @@ -0,0 +1,19 @@ +EarthObserver +============= + +.. currentmodule:: ssapy.orbit + +.. autoclass:: EarthObserver + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~EarthObserver.getRV + ~EarthObserver.sunAlt + + .. rubric:: Methods Documentation + + .. automethod:: getRV + .. automethod:: sunAlt diff --git a/_sources/api/ssapy.orbit.Orbit.rst.txt b/_sources/api/ssapy.orbit.Orbit.rst.txt new file mode 100644 index 0000000..cbca08c --- /dev/null +++ b/_sources/api/ssapy.orbit.Orbit.rst.txt @@ -0,0 +1,91 @@ +Orbit +===== + +.. currentmodule:: ssapy.orbit + +.. autoclass:: Orbit + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Orbit.LRL + ~Orbit.a + ~Orbit.angularMomentum + ~Orbit.apoapsis + ~Orbit.e + ~Orbit.eccentricAnomaly + ~Orbit.energy + ~Orbit.equinoctialElements + ~Orbit.ex + ~Orbit.ey + ~Orbit.hx + ~Orbit.hy + ~Orbit.i + ~Orbit.keplerianElements + ~Orbit.kozaiMeanKeplerianElements + ~Orbit.lE + ~Orbit.lM + ~Orbit.lonPa + ~Orbit.lv + ~Orbit.meanAnomaly + ~Orbit.meanMotion + ~Orbit.p + ~Orbit.pa + ~Orbit.periapsis + ~Orbit.period + ~Orbit.raan + ~Orbit.tle + ~Orbit.trueAnomaly + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Orbit.at + ~Orbit.fromEquinoctialElements + ~Orbit.fromKeplerianElements + ~Orbit.fromKozaiMeanKeplerianElements + ~Orbit.fromTLE + ~Orbit.fromTLETuple + + .. rubric:: Attributes Documentation + + .. autoattribute:: LRL + .. autoattribute:: a + .. autoattribute:: angularMomentum + .. autoattribute:: apoapsis + .. autoattribute:: e + .. autoattribute:: eccentricAnomaly + .. autoattribute:: energy + .. autoattribute:: equinoctialElements + .. autoattribute:: ex + .. autoattribute:: ey + .. autoattribute:: hx + .. autoattribute:: hy + .. autoattribute:: i + .. autoattribute:: keplerianElements + .. autoattribute:: kozaiMeanKeplerianElements + .. autoattribute:: lE + .. autoattribute:: lM + .. autoattribute:: lonPa + .. autoattribute:: lv + .. autoattribute:: meanAnomaly + .. autoattribute:: meanMotion + .. autoattribute:: p + .. autoattribute:: pa + .. autoattribute:: periapsis + .. autoattribute:: period + .. autoattribute:: raan + .. autoattribute:: tle + .. autoattribute:: trueAnomaly + + .. rubric:: Methods Documentation + + .. automethod:: at + .. automethod:: fromEquinoctialElements + .. automethod:: fromKeplerianElements + .. automethod:: fromKozaiMeanKeplerianElements + .. automethod:: fromTLE + .. automethod:: fromTLETuple diff --git a/_sources/api/ssapy.orbit.OrbitalObserver.rst.txt b/_sources/api/ssapy.orbit.OrbitalObserver.rst.txt new file mode 100644 index 0000000..a0bb1c3 --- /dev/null +++ b/_sources/api/ssapy.orbit.OrbitalObserver.rst.txt @@ -0,0 +1,17 @@ +OrbitalObserver +=============== + +.. currentmodule:: ssapy.orbit + +.. autoclass:: OrbitalObserver + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~OrbitalObserver.getRV + + .. rubric:: Methods Documentation + + .. automethod:: getRV diff --git a/_sources/api/ssapy.orbit_solver.DanchickTwoPosOrbitSolver.rst.txt b/_sources/api/ssapy.orbit_solver.DanchickTwoPosOrbitSolver.rst.txt new file mode 100644 index 0000000..234f1a6 --- /dev/null +++ b/_sources/api/ssapy.orbit_solver.DanchickTwoPosOrbitSolver.rst.txt @@ -0,0 +1,19 @@ +DanchickTwoPosOrbitSolver +========================= + +.. currentmodule:: ssapy.orbit_solver + +.. autoclass:: DanchickTwoPosOrbitSolver + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~DanchickTwoPosOrbitSolver.X + ~DanchickTwoPosOrbitSolver.dXdg + + .. rubric:: Methods Documentation + + .. automethod:: X + .. automethod:: dXdg diff --git a/_sources/api/ssapy.orbit_solver.GaussTwoPosOrbitSolver.rst.txt b/_sources/api/ssapy.orbit_solver.GaussTwoPosOrbitSolver.rst.txt new file mode 100644 index 0000000..fcc14a7 --- /dev/null +++ b/_sources/api/ssapy.orbit_solver.GaussTwoPosOrbitSolver.rst.txt @@ -0,0 +1,7 @@ +GaussTwoPosOrbitSolver +====================== + +.. currentmodule:: ssapy.orbit_solver + +.. autoclass:: GaussTwoPosOrbitSolver + :show-inheritance: diff --git a/_sources/api/ssapy.orbit_solver.SheferTwoPosOrbitSolver.rst.txt b/_sources/api/ssapy.orbit_solver.SheferTwoPosOrbitSolver.rst.txt new file mode 100644 index 0000000..d329f1e --- /dev/null +++ b/_sources/api/ssapy.orbit_solver.SheferTwoPosOrbitSolver.rst.txt @@ -0,0 +1,41 @@ +SheferTwoPosOrbitSolver +======================= + +.. currentmodule:: ssapy.orbit_solver + +.. autoclass:: SheferTwoPosOrbitSolver + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~SheferTwoPosOrbitSolver.D + ~SheferTwoPosOrbitSolver.F + ~SheferTwoPosOrbitSolver.Flam0 + ~SheferTwoPosOrbitSolver.G + ~SheferTwoPosOrbitSolver.X + ~SheferTwoPosOrbitSolver.Y + ~SheferTwoPosOrbitSolver.Yxi + ~SheferTwoPosOrbitSolver.Z + ~SheferTwoPosOrbitSolver.alpha + ~SheferTwoPosOrbitSolver.beta + ~SheferTwoPosOrbitSolver.semiMajorAxis + ~SheferTwoPosOrbitSolver.solve + ~SheferTwoPosOrbitSolver.yPoly + + .. rubric:: Methods Documentation + + .. automethod:: D + .. automethod:: F + .. automethod:: Flam0 + .. automethod:: G + .. automethod:: X + .. automethod:: Y + .. automethod:: Yxi + .. automethod:: Z + .. automethod:: alpha + .. automethod:: beta + .. automethod:: semiMajorAxis + .. automethod:: solve + .. automethod:: yPoly diff --git a/_sources/api/ssapy.orbit_solver.ThreeAngleOrbitSolver.rst.txt b/_sources/api/ssapy.orbit_solver.ThreeAngleOrbitSolver.rst.txt new file mode 100644 index 0000000..20af3e2 --- /dev/null +++ b/_sources/api/ssapy.orbit_solver.ThreeAngleOrbitSolver.rst.txt @@ -0,0 +1,61 @@ +ThreeAngleOrbitSolver +===================== + +.. currentmodule:: ssapy.orbit_solver + +.. autoclass:: ThreeAngleOrbitSolver + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~ThreeAngleOrbitSolver.D + ~ThreeAngleOrbitSolver.D11 + ~ThreeAngleOrbitSolver.D12 + ~ThreeAngleOrbitSolver.D13 + ~ThreeAngleOrbitSolver.D21 + ~ThreeAngleOrbitSolver.D22 + ~ThreeAngleOrbitSolver.D23 + ~ThreeAngleOrbitSolver.D31 + ~ThreeAngleOrbitSolver.D32 + ~ThreeAngleOrbitSolver.D33 + ~ThreeAngleOrbitSolver.d1 + ~ThreeAngleOrbitSolver.d2 + ~ThreeAngleOrbitSolver.d3 + ~ThreeAngleOrbitSolver.t21 + ~ThreeAngleOrbitSolver.t2131 + ~ThreeAngleOrbitSolver.t31 + ~ThreeAngleOrbitSolver.t32 + ~ThreeAngleOrbitSolver.t3231 + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ThreeAngleOrbitSolver.solve + + .. rubric:: Attributes Documentation + + .. autoattribute:: D + .. autoattribute:: D11 + .. autoattribute:: D12 + .. autoattribute:: D13 + .. autoattribute:: D21 + .. autoattribute:: D22 + .. autoattribute:: D23 + .. autoattribute:: D31 + .. autoattribute:: D32 + .. autoattribute:: D33 + .. autoattribute:: d1 + .. autoattribute:: d2 + .. autoattribute:: d3 + .. autoattribute:: t21 + .. autoattribute:: t2131 + .. autoattribute:: t31 + .. autoattribute:: t32 + .. autoattribute:: t3231 + + .. rubric:: Methods Documentation + + .. automethod:: solve diff --git a/_sources/api/ssapy.orbit_solver.TwoPosOrbitSolver.rst.txt b/_sources/api/ssapy.orbit_solver.TwoPosOrbitSolver.rst.txt new file mode 100644 index 0000000..1dced62 --- /dev/null +++ b/_sources/api/ssapy.orbit_solver.TwoPosOrbitSolver.rst.txt @@ -0,0 +1,17 @@ +TwoPosOrbitSolver +================= + +.. currentmodule:: ssapy.orbit_solver + +.. autoclass:: TwoPosOrbitSolver + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~TwoPosOrbitSolver.solve + + .. rubric:: Methods Documentation + + .. automethod:: solve diff --git a/_sources/api/ssapy.particles.Particles.rst.txt b/_sources/api/ssapy.particles.Particles.rst.txt new file mode 100644 index 0000000..a9d2602 --- /dev/null +++ b/_sources/api/ssapy.particles.Particles.rst.txt @@ -0,0 +1,45 @@ +Particles +========= + +.. currentmodule:: ssapy.particles + +.. autoclass:: Particles + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Particles.epoch + ~Particles.lnpriors + ~Particles.orbits + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Particles.draw_orbit + ~Particles.fuse + ~Particles.lnlike + ~Particles.mean + ~Particles.move + ~Particles.resample + ~Particles.reset_to_pseudo_prior + ~Particles.reweight + + .. rubric:: Attributes Documentation + + .. autoattribute:: epoch + .. autoattribute:: lnpriors + .. autoattribute:: orbits + + .. rubric:: Methods Documentation + + .. automethod:: draw_orbit + .. automethod:: fuse + .. automethod:: lnlike + .. automethod:: mean + .. automethod:: move + .. automethod:: resample + .. automethod:: reset_to_pseudo_prior + .. automethod:: reweight diff --git a/_sources/api/ssapy.plotUtils.check_numpy_array.rst.txt b/_sources/api/ssapy.plotUtils.check_numpy_array.rst.txt new file mode 100644 index 0000000..251368c --- /dev/null +++ b/_sources/api/ssapy.plotUtils.check_numpy_array.rst.txt @@ -0,0 +1,6 @@ +check_numpy_array +================= + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: check_numpy_array diff --git a/_sources/api/ssapy.plotUtils.drawEarth.rst.txt b/_sources/api/ssapy.plotUtils.drawEarth.rst.txt new file mode 100644 index 0000000..095047a --- /dev/null +++ b/_sources/api/ssapy.plotUtils.drawEarth.rst.txt @@ -0,0 +1,6 @@ +drawEarth +========= + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: drawEarth diff --git a/_sources/api/ssapy.plotUtils.ecef_plot.rst.txt b/_sources/api/ssapy.plotUtils.ecef_plot.rst.txt new file mode 100644 index 0000000..c3bd66a --- /dev/null +++ b/_sources/api/ssapy.plotUtils.ecef_plot.rst.txt @@ -0,0 +1,6 @@ +ecef_plot +========= + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: ecef_plot diff --git a/_sources/api/ssapy.plotUtils.format_xaxis_decimal_year.rst.txt b/_sources/api/ssapy.plotUtils.format_xaxis_decimal_year.rst.txt new file mode 100644 index 0000000..73684ad --- /dev/null +++ b/_sources/api/ssapy.plotUtils.format_xaxis_decimal_year.rst.txt @@ -0,0 +1,6 @@ +format_xaxis_decimal_year +========================= + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: format_xaxis_decimal_year diff --git a/_sources/api/ssapy.plotUtils.gcrf_plot.rst.txt b/_sources/api/ssapy.plotUtils.gcrf_plot.rst.txt new file mode 100644 index 0000000..3ea8a38 --- /dev/null +++ b/_sources/api/ssapy.plotUtils.gcrf_plot.rst.txt @@ -0,0 +1,6 @@ +gcrf_plot +========= + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: gcrf_plot diff --git a/_sources/api/ssapy.plotUtils.groundTrackPlot.rst.txt b/_sources/api/ssapy.plotUtils.groundTrackPlot.rst.txt new file mode 100644 index 0000000..242d93d --- /dev/null +++ b/_sources/api/ssapy.plotUtils.groundTrackPlot.rst.txt @@ -0,0 +1,6 @@ +groundTrackPlot +=============== + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: groundTrackPlot diff --git a/_sources/api/ssapy.plotUtils.groundTrackVideo.rst.txt b/_sources/api/ssapy.plotUtils.groundTrackVideo.rst.txt new file mode 100644 index 0000000..17c95ab --- /dev/null +++ b/_sources/api/ssapy.plotUtils.groundTrackVideo.rst.txt @@ -0,0 +1,6 @@ +groundTrackVideo +================ + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: groundTrackVideo diff --git a/_sources/api/ssapy.plotUtils.load_earth_file.rst.txt b/_sources/api/ssapy.plotUtils.load_earth_file.rst.txt new file mode 100644 index 0000000..77f6965 --- /dev/null +++ b/_sources/api/ssapy.plotUtils.load_earth_file.rst.txt @@ -0,0 +1,6 @@ +load_earth_file +=============== + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: load_earth_file diff --git a/_sources/api/ssapy.plotUtils.load_moon_file.rst.txt b/_sources/api/ssapy.plotUtils.load_moon_file.rst.txt new file mode 100644 index 0000000..5be2ee7 --- /dev/null +++ b/_sources/api/ssapy.plotUtils.load_moon_file.rst.txt @@ -0,0 +1,6 @@ +load_moon_file +============== + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: load_moon_file diff --git a/_sources/api/ssapy.plotUtils.lunar_plot.rst.txt b/_sources/api/ssapy.plotUtils.lunar_plot.rst.txt new file mode 100644 index 0000000..f0112df --- /dev/null +++ b/_sources/api/ssapy.plotUtils.lunar_plot.rst.txt @@ -0,0 +1,6 @@ +lunar_plot +========== + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: lunar_plot diff --git a/_sources/api/ssapy.plotUtils.lunar_stationary_plot.rst.txt b/_sources/api/ssapy.plotUtils.lunar_stationary_plot.rst.txt new file mode 100644 index 0000000..4a7616c --- /dev/null +++ b/_sources/api/ssapy.plotUtils.lunar_stationary_plot.rst.txt @@ -0,0 +1,6 @@ +lunar_stationary_plot +===================== + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: lunar_stationary_plot diff --git a/_sources/api/ssapy.plotUtils.plotRVCorner.rst.txt b/_sources/api/ssapy.plotUtils.plotRVCorner.rst.txt new file mode 100644 index 0000000..b864e95 --- /dev/null +++ b/_sources/api/ssapy.plotUtils.plotRVCorner.rst.txt @@ -0,0 +1,6 @@ +plotRVCorner +============ + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: plotRVCorner diff --git a/_sources/api/ssapy.plotUtils.plotRVTrace.rst.txt b/_sources/api/ssapy.plotUtils.plotRVTrace.rst.txt new file mode 100644 index 0000000..8282dd4 --- /dev/null +++ b/_sources/api/ssapy.plotUtils.plotRVTrace.rst.txt @@ -0,0 +1,6 @@ +plotRVTrace +=========== + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: plotRVTrace diff --git a/_sources/api/ssapy.plotUtils.save_plot_to_pdf.rst.txt b/_sources/api/ssapy.plotUtils.save_plot_to_pdf.rst.txt new file mode 100644 index 0000000..cf7d55a --- /dev/null +++ b/_sources/api/ssapy.plotUtils.save_plot_to_pdf.rst.txt @@ -0,0 +1,6 @@ +save_plot_to_pdf +================ + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: save_plot_to_pdf diff --git a/_sources/api/ssapy.plotUtils.save_plot_to_png.rst.txt b/_sources/api/ssapy.plotUtils.save_plot_to_png.rst.txt new file mode 100644 index 0000000..8aec696 --- /dev/null +++ b/_sources/api/ssapy.plotUtils.save_plot_to_png.rst.txt @@ -0,0 +1,6 @@ +save_plot_to_png +================ + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: save_plot_to_png diff --git a/_sources/api/ssapy.plotUtils.tracking_plot.rst.txt b/_sources/api/ssapy.plotUtils.tracking_plot.rst.txt new file mode 100644 index 0000000..d0a22f7 --- /dev/null +++ b/_sources/api/ssapy.plotUtils.tracking_plot.rst.txt @@ -0,0 +1,6 @@ +tracking_plot +============= + +.. currentmodule:: ssapy.plotUtils + +.. autofunction:: tracking_plot diff --git a/_sources/api/ssapy.propagator.KeplerianPropagator.rst.txt b/_sources/api/ssapy.propagator.KeplerianPropagator.rst.txt new file mode 100644 index 0000000..82c6ac0 --- /dev/null +++ b/_sources/api/ssapy.propagator.KeplerianPropagator.rst.txt @@ -0,0 +1,7 @@ +KeplerianPropagator +=================== + +.. currentmodule:: ssapy.propagator + +.. autoclass:: KeplerianPropagator + :show-inheritance: diff --git a/_sources/api/ssapy.propagator.Propagator.rst.txt b/_sources/api/ssapy.propagator.Propagator.rst.txt new file mode 100644 index 0000000..7c8b125 --- /dev/null +++ b/_sources/api/ssapy.propagator.Propagator.rst.txt @@ -0,0 +1,7 @@ +Propagator +========== + +.. currentmodule:: ssapy.propagator + +.. autoclass:: Propagator + :show-inheritance: diff --git a/_sources/api/ssapy.propagator.RK4Propagator.rst.txt b/_sources/api/ssapy.propagator.RK4Propagator.rst.txt new file mode 100644 index 0000000..6ac808c --- /dev/null +++ b/_sources/api/ssapy.propagator.RK4Propagator.rst.txt @@ -0,0 +1,7 @@ +RK4Propagator +============= + +.. currentmodule:: ssapy.propagator + +.. autoclass:: RK4Propagator + :show-inheritance: diff --git a/_sources/api/ssapy.propagator.RK78Propagator.rst.txt b/_sources/api/ssapy.propagator.RK78Propagator.rst.txt new file mode 100644 index 0000000..81d4fb9 --- /dev/null +++ b/_sources/api/ssapy.propagator.RK78Propagator.rst.txt @@ -0,0 +1,17 @@ +RK78Propagator +============== + +.. currentmodule:: ssapy.propagator + +.. autoclass:: RK78Propagator + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~RK78Propagator.b7 + + .. rubric:: Attributes Documentation + + .. autoattribute:: b7 diff --git a/_sources/api/ssapy.propagator.RK8Propagator.rst.txt b/_sources/api/ssapy.propagator.RK8Propagator.rst.txt new file mode 100644 index 0000000..d742b76 --- /dev/null +++ b/_sources/api/ssapy.propagator.RK8Propagator.rst.txt @@ -0,0 +1,21 @@ +RK8Propagator +============= + +.. currentmodule:: ssapy.propagator + +.. autoclass:: RK8Propagator + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~RK8Propagator.a + ~RK8Propagator.b8 + ~RK8Propagator.c + + .. rubric:: Attributes Documentation + + .. autoattribute:: a + .. autoattribute:: b8 + .. autoattribute:: c diff --git a/_sources/api/ssapy.propagator.RKPropagator.rst.txt b/_sources/api/ssapy.propagator.RKPropagator.rst.txt new file mode 100644 index 0000000..329dee7 --- /dev/null +++ b/_sources/api/ssapy.propagator.RKPropagator.rst.txt @@ -0,0 +1,7 @@ +RKPropagator +============ + +.. currentmodule:: ssapy.propagator + +.. autoclass:: RKPropagator + :show-inheritance: diff --git a/_sources/api/ssapy.propagator.SGP4Propagator.rst.txt b/_sources/api/ssapy.propagator.SGP4Propagator.rst.txt new file mode 100644 index 0000000..c7922e3 --- /dev/null +++ b/_sources/api/ssapy.propagator.SGP4Propagator.rst.txt @@ -0,0 +1,7 @@ +SGP4Propagator +============== + +.. currentmodule:: ssapy.propagator + +.. autoclass:: SGP4Propagator + :show-inheritance: diff --git a/_sources/api/ssapy.propagator.SciPyPropagator.rst.txt b/_sources/api/ssapy.propagator.SciPyPropagator.rst.txt new file mode 100644 index 0000000..6488aae --- /dev/null +++ b/_sources/api/ssapy.propagator.SciPyPropagator.rst.txt @@ -0,0 +1,7 @@ +SciPyPropagator +=============== + +.. currentmodule:: ssapy.propagator + +.. autoclass:: SciPyPropagator + :show-inheritance: diff --git a/_sources/api/ssapy.propagator.SeriesPropagator.rst.txt b/_sources/api/ssapy.propagator.SeriesPropagator.rst.txt new file mode 100644 index 0000000..c8e6036 --- /dev/null +++ b/_sources/api/ssapy.propagator.SeriesPropagator.rst.txt @@ -0,0 +1,7 @@ +SeriesPropagator +================ + +.. currentmodule:: ssapy.propagator + +.. autoclass:: SeriesPropagator + :show-inheritance: diff --git a/_sources/api/ssapy.propagator.default_numerical.rst.txt b/_sources/api/ssapy.propagator.default_numerical.rst.txt new file mode 100644 index 0000000..d21d5d8 --- /dev/null +++ b/_sources/api/ssapy.propagator.default_numerical.rst.txt @@ -0,0 +1,6 @@ +default_numerical +================= + +.. currentmodule:: ssapy.propagator + +.. autofunction:: default_numerical diff --git a/_sources/api/ssapy.rvsampler.APrior.rst.txt b/_sources/api/ssapy.rvsampler.APrior.rst.txt new file mode 100644 index 0000000..b44d52e --- /dev/null +++ b/_sources/api/ssapy.rvsampler.APrior.rst.txt @@ -0,0 +1,17 @@ +APrior +====== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: APrior + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~APrior.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.rvsampler.AreaPrior.rst.txt b/_sources/api/ssapy.rvsampler.AreaPrior.rst.txt new file mode 100644 index 0000000..ccc8cd2 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.AreaPrior.rst.txt @@ -0,0 +1,17 @@ +AreaPrior +========= + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: AreaPrior + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AreaPrior.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.rvsampler.DirectInitializer.rst.txt b/_sources/api/ssapy.rvsampler.DirectInitializer.rst.txt new file mode 100644 index 0000000..9b947ba --- /dev/null +++ b/_sources/api/ssapy.rvsampler.DirectInitializer.rst.txt @@ -0,0 +1,17 @@ +DirectInitializer +================= + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: DirectInitializer + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~DirectInitializer.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.rvsampler.DistanceProjectionInitializer.rst.txt b/_sources/api/ssapy.rvsampler.DistanceProjectionInitializer.rst.txt new file mode 100644 index 0000000..9b180e6 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.DistanceProjectionInitializer.rst.txt @@ -0,0 +1,17 @@ +DistanceProjectionInitializer +============================= + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: DistanceProjectionInitializer + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~DistanceProjectionInitializer.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.rvsampler.EPrior.rst.txt b/_sources/api/ssapy.rvsampler.EPrior.rst.txt new file mode 100644 index 0000000..32f1268 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.EPrior.rst.txt @@ -0,0 +1,17 @@ +EPrior +====== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: EPrior + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~EPrior.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.rvsampler.EmceeSampler.rst.txt b/_sources/api/ssapy.rvsampler.EmceeSampler.rst.txt new file mode 100644 index 0000000..85cee11 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.EmceeSampler.rst.txt @@ -0,0 +1,17 @@ +EmceeSampler +============ + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: EmceeSampler + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~EmceeSampler.sample + + .. rubric:: Methods Documentation + + .. automethod:: sample diff --git a/_sources/api/ssapy.rvsampler.EquinoctialExEyPrior.rst.txt b/_sources/api/ssapy.rvsampler.EquinoctialExEyPrior.rst.txt new file mode 100644 index 0000000..571ec4e --- /dev/null +++ b/_sources/api/ssapy.rvsampler.EquinoctialExEyPrior.rst.txt @@ -0,0 +1,17 @@ +EquinoctialExEyPrior +==================== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: EquinoctialExEyPrior + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~EquinoctialExEyPrior.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.rvsampler.EquinoctialLMOptimizer.rst.txt b/_sources/api/ssapy.rvsampler.EquinoctialLMOptimizer.rst.txt new file mode 100644 index 0000000..b7a801e --- /dev/null +++ b/_sources/api/ssapy.rvsampler.EquinoctialLMOptimizer.rst.txt @@ -0,0 +1,17 @@ +EquinoctialLMOptimizer +====================== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: EquinoctialLMOptimizer + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~EquinoctialLMOptimizer.optimize + + .. rubric:: Methods Documentation + + .. automethod:: optimize diff --git a/_sources/api/ssapy.rvsampler.GEOProjectionInitializer.rst.txt b/_sources/api/ssapy.rvsampler.GEOProjectionInitializer.rst.txt new file mode 100644 index 0000000..d1dffb2 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.GEOProjectionInitializer.rst.txt @@ -0,0 +1,17 @@ +GEOProjectionInitializer +======================== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: GEOProjectionInitializer + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~GEOProjectionInitializer.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.rvsampler.GaussianRVInitializer.rst.txt b/_sources/api/ssapy.rvsampler.GaussianRVInitializer.rst.txt new file mode 100644 index 0000000..7165502 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.GaussianRVInitializer.rst.txt @@ -0,0 +1,17 @@ +GaussianRVInitializer +===================== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: GaussianRVInitializer + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~GaussianRVInitializer.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.rvsampler.LMOptimizer.rst.txt b/_sources/api/ssapy.rvsampler.LMOptimizer.rst.txt new file mode 100644 index 0000000..6863f44 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.LMOptimizer.rst.txt @@ -0,0 +1,17 @@ +LMOptimizer +=========== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: LMOptimizer + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~LMOptimizer.optimize + + .. rubric:: Methods Documentation + + .. automethod:: optimize diff --git a/_sources/api/ssapy.rvsampler.LMOptimizerAngular.rst.txt b/_sources/api/ssapy.rvsampler.LMOptimizerAngular.rst.txt new file mode 100644 index 0000000..3c88df1 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.LMOptimizerAngular.rst.txt @@ -0,0 +1,17 @@ +LMOptimizerAngular +================== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: LMOptimizerAngular + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~LMOptimizerAngular.optimize + + .. rubric:: Methods Documentation + + .. automethod:: optimize diff --git a/_sources/api/ssapy.rvsampler.LeastSquaresOptimizer.rst.txt b/_sources/api/ssapy.rvsampler.LeastSquaresOptimizer.rst.txt new file mode 100644 index 0000000..7503051 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.LeastSquaresOptimizer.rst.txt @@ -0,0 +1,19 @@ +LeastSquaresOptimizer +===================== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: LeastSquaresOptimizer + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~LeastSquaresOptimizer.optimize + ~LeastSquaresOptimizer.resid + + .. rubric:: Methods Documentation + + .. automethod:: optimize + .. automethod:: resid diff --git a/_sources/api/ssapy.rvsampler.Log10AreaPrior.rst.txt b/_sources/api/ssapy.rvsampler.Log10AreaPrior.rst.txt new file mode 100644 index 0000000..2054e58 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.Log10AreaPrior.rst.txt @@ -0,0 +1,17 @@ +Log10AreaPrior +============== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: Log10AreaPrior + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Log10AreaPrior.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.rvsampler.MHSampler.rst.txt b/_sources/api/ssapy.rvsampler.MHSampler.rst.txt new file mode 100644 index 0000000..74f3122 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.MHSampler.rst.txt @@ -0,0 +1,29 @@ +MHSampler +========= + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: MHSampler + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~MHSampler.acceptanceRatio + + .. rubric:: Methods Summary + + .. autosummary:: + + ~MHSampler.reset + ~MHSampler.sample + + .. rubric:: Attributes Documentation + + .. autoattribute:: acceptanceRatio + + .. rubric:: Methods Documentation + + .. automethod:: reset + .. automethod:: sample diff --git a/_sources/api/ssapy.rvsampler.MVNormalProposal.rst.txt b/_sources/api/ssapy.rvsampler.MVNormalProposal.rst.txt new file mode 100644 index 0000000..3300069 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.MVNormalProposal.rst.txt @@ -0,0 +1,17 @@ +MVNormalProposal +================ + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: MVNormalProposal + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~MVNormalProposal.propose + + .. rubric:: Methods Documentation + + .. automethod:: propose diff --git a/_sources/api/ssapy.rvsampler.ParamOrbitAngle.rst.txt b/_sources/api/ssapy.rvsampler.ParamOrbitAngle.rst.txt new file mode 100644 index 0000000..b350dd2 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.ParamOrbitAngle.rst.txt @@ -0,0 +1,19 @@ +ParamOrbitAngle +=============== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: ParamOrbitAngle + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ParamOrbitAngle.orbit_to_param + ~ParamOrbitAngle.param_to_orbit + + .. rubric:: Methods Documentation + + .. automethod:: orbit_to_param + .. automethod:: param_to_orbit diff --git a/_sources/api/ssapy.rvsampler.ParamOrbitEquinoctial.rst.txt b/_sources/api/ssapy.rvsampler.ParamOrbitEquinoctial.rst.txt new file mode 100644 index 0000000..e1fbd88 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.ParamOrbitEquinoctial.rst.txt @@ -0,0 +1,23 @@ +ParamOrbitEquinoctial +===================== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: ParamOrbitEquinoctial + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ParamOrbitEquinoctial.input_param_translation + ~ParamOrbitEquinoctial.orbit_to_param + ~ParamOrbitEquinoctial.output_covar_translation + ~ParamOrbitEquinoctial.param_to_orbit + + .. rubric:: Methods Documentation + + .. automethod:: input_param_translation + .. automethod:: orbit_to_param + .. automethod:: output_covar_translation + .. automethod:: param_to_orbit diff --git a/_sources/api/ssapy.rvsampler.ParamOrbitRV.rst.txt b/_sources/api/ssapy.rvsampler.ParamOrbitRV.rst.txt new file mode 100644 index 0000000..41f4f31 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.ParamOrbitRV.rst.txt @@ -0,0 +1,19 @@ +ParamOrbitRV +============ + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: ParamOrbitRV + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ParamOrbitRV.orbit_to_param + ~ParamOrbitRV.param_to_orbit + + .. rubric:: Methods Documentation + + .. automethod:: orbit_to_param + .. automethod:: param_to_orbit diff --git a/_sources/api/ssapy.rvsampler.ParamOrbitTranslator.rst.txt b/_sources/api/ssapy.rvsampler.ParamOrbitTranslator.rst.txt new file mode 100644 index 0000000..2220b24 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.ParamOrbitTranslator.rst.txt @@ -0,0 +1,31 @@ +ParamOrbitTranslator +==================== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: ParamOrbitTranslator + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ParamOrbitTranslator.fullparam + ~ParamOrbitTranslator.get_propkw_from_fullparam + ~ParamOrbitTranslator.get_propkw_from_orbit + ~ParamOrbitTranslator.input_param_translation + ~ParamOrbitTranslator.optimizeparam + ~ParamOrbitTranslator.orbit_to_param + ~ParamOrbitTranslator.output_covar_translation + ~ParamOrbitTranslator.param_to_orbit + + .. rubric:: Methods Documentation + + .. automethod:: fullparam + .. automethod:: get_propkw_from_fullparam + .. automethod:: get_propkw_from_orbit + .. automethod:: input_param_translation + .. automethod:: optimizeparam + .. automethod:: orbit_to_param + .. automethod:: output_covar_translation + .. automethod:: param_to_orbit diff --git a/_sources/api/ssapy.rvsampler.RPrior.rst.txt b/_sources/api/ssapy.rvsampler.RPrior.rst.txt new file mode 100644 index 0000000..a7f2406 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.RPrior.rst.txt @@ -0,0 +1,17 @@ +RPrior +====== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: RPrior + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~RPrior.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.rvsampler.RVProbability.rst.txt b/_sources/api/ssapy.rvsampler.RVProbability.rst.txt new file mode 100644 index 0000000..a9d4fef --- /dev/null +++ b/_sources/api/ssapy.rvsampler.RVProbability.rst.txt @@ -0,0 +1,25 @@ +RVProbability +============= + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: RVProbability + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~RVProbability.__call__ + ~RVProbability.chi + ~RVProbability.lnlike + ~RVProbability.lnprior + ~RVProbability.lnprob + + .. rubric:: Methods Documentation + + .. automethod:: __call__ + .. automethod:: chi + .. automethod:: lnlike + .. automethod:: lnprior + .. automethod:: lnprob diff --git a/_sources/api/ssapy.rvsampler.RVSigmaProposal.rst.txt b/_sources/api/ssapy.rvsampler.RVSigmaProposal.rst.txt new file mode 100644 index 0000000..fbb9440 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.RVSigmaProposal.rst.txt @@ -0,0 +1,7 @@ +RVSigmaProposal +=============== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: RVSigmaProposal + :show-inheritance: diff --git a/_sources/api/ssapy.rvsampler.SGP4LMOptimizer.rst.txt b/_sources/api/ssapy.rvsampler.SGP4LMOptimizer.rst.txt new file mode 100644 index 0000000..72207cf --- /dev/null +++ b/_sources/api/ssapy.rvsampler.SGP4LMOptimizer.rst.txt @@ -0,0 +1,17 @@ +SGP4LMOptimizer +=============== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: SGP4LMOptimizer + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~SGP4LMOptimizer.optimize + + .. rubric:: Methods Documentation + + .. automethod:: optimize diff --git a/_sources/api/ssapy.rvsampler.VPrior.rst.txt b/_sources/api/ssapy.rvsampler.VPrior.rst.txt new file mode 100644 index 0000000..d2d554c --- /dev/null +++ b/_sources/api/ssapy.rvsampler.VPrior.rst.txt @@ -0,0 +1,17 @@ +VPrior +====== + +.. currentmodule:: ssapy.rvsampler + +.. autoclass:: VPrior + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~VPrior.__call__ + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/api/ssapy.rvsampler.circular_guess.rst.txt b/_sources/api/ssapy.rvsampler.circular_guess.rst.txt new file mode 100644 index 0000000..9cd905e --- /dev/null +++ b/_sources/api/ssapy.rvsampler.circular_guess.rst.txt @@ -0,0 +1,6 @@ +circular_guess +============== + +.. currentmodule:: ssapy.rvsampler + +.. autofunction:: circular_guess diff --git a/_sources/api/ssapy.rvsampler.damper.rst.txt b/_sources/api/ssapy.rvsampler.damper.rst.txt new file mode 100644 index 0000000..99a9b7e --- /dev/null +++ b/_sources/api/ssapy.rvsampler.damper.rst.txt @@ -0,0 +1,6 @@ +damper +====== + +.. currentmodule:: ssapy.rvsampler + +.. autofunction:: damper diff --git a/_sources/api/ssapy.rvsampler.damper_deriv.rst.txt b/_sources/api/ssapy.rvsampler.damper_deriv.rst.txt new file mode 100644 index 0000000..0e2dbe6 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.damper_deriv.rst.txt @@ -0,0 +1,6 @@ +damper_deriv +============ + +.. currentmodule:: ssapy.rvsampler + +.. autofunction:: damper_deriv diff --git a/_sources/api/ssapy.rvsampler.eq2kep.rst.txt b/_sources/api/ssapy.rvsampler.eq2kep.rst.txt new file mode 100644 index 0000000..bd636ce --- /dev/null +++ b/_sources/api/ssapy.rvsampler.eq2kep.rst.txt @@ -0,0 +1,6 @@ +eq2kep +====== + +.. currentmodule:: ssapy.rvsampler + +.. autofunction:: eq2kep diff --git a/_sources/api/ssapy.rvsampler.sample_ball.rst.txt b/_sources/api/ssapy.rvsampler.sample_ball.rst.txt new file mode 100644 index 0000000..96b2554 --- /dev/null +++ b/_sources/api/ssapy.rvsampler.sample_ball.rst.txt @@ -0,0 +1,6 @@ +sample_ball +=========== + +.. currentmodule:: ssapy.rvsampler + +.. autofunction:: sample_ball diff --git a/_sources/api/ssapy.utils.LRU_Cache.rst.txt b/_sources/api/ssapy.utils.LRU_Cache.rst.txt new file mode 100644 index 0000000..dae3509 --- /dev/null +++ b/_sources/api/ssapy.utils.LRU_Cache.rst.txt @@ -0,0 +1,19 @@ +LRU_Cache +========= + +.. currentmodule:: ssapy.utils + +.. autoclass:: LRU_Cache + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~LRU_Cache.__call__ + ~LRU_Cache.resize + + .. rubric:: Methods Documentation + + .. automethod:: __call__ + .. automethod:: resize diff --git a/_sources/api/ssapy.utils.catalog_to_apparent.rst.txt b/_sources/api/ssapy.utils.catalog_to_apparent.rst.txt new file mode 100644 index 0000000..630f457 --- /dev/null +++ b/_sources/api/ssapy.utils.catalog_to_apparent.rst.txt @@ -0,0 +1,6 @@ +catalog_to_apparent +=================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: catalog_to_apparent diff --git a/_sources/api/ssapy.utils.check_lunar_collision.rst.txt b/_sources/api/ssapy.utils.check_lunar_collision.rst.txt new file mode 100644 index 0000000..7e0b36f --- /dev/null +++ b/_sources/api/ssapy.utils.check_lunar_collision.rst.txt @@ -0,0 +1,6 @@ +check_lunar_collision +===================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: check_lunar_collision diff --git a/_sources/api/ssapy.utils.cluster_emcee_walkers.rst.txt b/_sources/api/ssapy.utils.cluster_emcee_walkers.rst.txt new file mode 100644 index 0000000..b2cb563 --- /dev/null +++ b/_sources/api/ssapy.utils.cluster_emcee_walkers.rst.txt @@ -0,0 +1,6 @@ +cluster_emcee_walkers +===================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: cluster_emcee_walkers diff --git a/_sources/api/ssapy.utils.continueClass.rst.txt b/_sources/api/ssapy.utils.continueClass.rst.txt new file mode 100644 index 0000000..9b204e8 --- /dev/null +++ b/_sources/api/ssapy.utils.continueClass.rst.txt @@ -0,0 +1,6 @@ +continueClass +============= + +.. currentmodule:: ssapy.utils + +.. autofunction:: continueClass diff --git a/_sources/api/ssapy.utils.find_all_zeros.rst.txt b/_sources/api/ssapy.utils.find_all_zeros.rst.txt new file mode 100644 index 0000000..ddc706a --- /dev/null +++ b/_sources/api/ssapy.utils.find_all_zeros.rst.txt @@ -0,0 +1,6 @@ +find_all_zeros +============== + +.. currentmodule:: ssapy.utils + +.. autofunction:: find_all_zeros diff --git a/_sources/api/ssapy.utils.find_extrema_brackets.rst.txt b/_sources/api/ssapy.utils.find_extrema_brackets.rst.txt new file mode 100644 index 0000000..53ae31c --- /dev/null +++ b/_sources/api/ssapy.utils.find_extrema_brackets.rst.txt @@ -0,0 +1,6 @@ +find_extrema_brackets +===================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: find_extrema_brackets diff --git a/_sources/api/ssapy.utils.find_file.rst.txt b/_sources/api/ssapy.utils.find_file.rst.txt new file mode 100644 index 0000000..e7a1e7d --- /dev/null +++ b/_sources/api/ssapy.utils.find_file.rst.txt @@ -0,0 +1,6 @@ +find_file +========= + +.. currentmodule:: ssapy.utils + +.. autofunction:: find_file diff --git a/_sources/api/ssapy.utils.find_nearest_indices.rst.txt b/_sources/api/ssapy.utils.find_nearest_indices.rst.txt new file mode 100644 index 0000000..c3cda4d --- /dev/null +++ b/_sources/api/ssapy.utils.find_nearest_indices.rst.txt @@ -0,0 +1,6 @@ +find_nearest_indices +==================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: find_nearest_indices diff --git a/_sources/api/ssapy.utils.gcrf_to_ecef.rst.txt b/_sources/api/ssapy.utils.gcrf_to_ecef.rst.txt new file mode 100644 index 0000000..1633891 --- /dev/null +++ b/_sources/api/ssapy.utils.gcrf_to_ecef.rst.txt @@ -0,0 +1,6 @@ +gcrf_to_ecef +============ + +.. currentmodule:: ssapy.utils + +.. autofunction:: gcrf_to_ecef diff --git a/_sources/api/ssapy.utils.gcrf_to_lunar.rst.txt b/_sources/api/ssapy.utils.gcrf_to_lunar.rst.txt new file mode 100644 index 0000000..a06440e --- /dev/null +++ b/_sources/api/ssapy.utils.gcrf_to_lunar.rst.txt @@ -0,0 +1,6 @@ +gcrf_to_lunar +============= + +.. currentmodule:: ssapy.utils + +.. autofunction:: gcrf_to_lunar diff --git a/_sources/api/ssapy.utils.gcrf_to_stationary_lunar.rst.txt b/_sources/api/ssapy.utils.gcrf_to_stationary_lunar.rst.txt new file mode 100644 index 0000000..e006c91 --- /dev/null +++ b/_sources/api/ssapy.utils.gcrf_to_stationary_lunar.rst.txt @@ -0,0 +1,6 @@ +gcrf_to_stationary_lunar +======================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: gcrf_to_stationary_lunar diff --git a/_sources/api/ssapy.utils.gcrf_to_teme.rst.txt b/_sources/api/ssapy.utils.gcrf_to_teme.rst.txt new file mode 100644 index 0000000..f275ed6 --- /dev/null +++ b/_sources/api/ssapy.utils.gcrf_to_teme.rst.txt @@ -0,0 +1,6 @@ +gcrf_to_teme +============ + +.. currentmodule:: ssapy.utils + +.. autofunction:: gcrf_to_teme diff --git a/_sources/api/ssapy.utils.get_kernel_cov.rst.txt b/_sources/api/ssapy.utils.get_kernel_cov.rst.txt new file mode 100644 index 0000000..c1396dd --- /dev/null +++ b/_sources/api/ssapy.utils.get_kernel_cov.rst.txt @@ -0,0 +1,6 @@ +get_kernel_cov +============== + +.. currentmodule:: ssapy.utils + +.. autofunction:: get_kernel_cov diff --git a/_sources/api/ssapy.utils.get_normed_weights.rst.txt b/_sources/api/ssapy.utils.get_normed_weights.rst.txt new file mode 100644 index 0000000..a82f50f --- /dev/null +++ b/_sources/api/ssapy.utils.get_normed_weights.rst.txt @@ -0,0 +1,6 @@ +get_normed_weights +================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: get_normed_weights diff --git a/_sources/api/ssapy.utils.get_times.rst.txt b/_sources/api/ssapy.utils.get_times.rst.txt new file mode 100644 index 0000000..74f2871 --- /dev/null +++ b/_sources/api/ssapy.utils.get_times.rst.txt @@ -0,0 +1,6 @@ +get_times +========= + +.. currentmodule:: ssapy.utils + +.. autofunction:: get_times diff --git a/_sources/api/ssapy.utils.iers_interp.rst.txt b/_sources/api/ssapy.utils.iers_interp.rst.txt new file mode 100644 index 0000000..8adde35 --- /dev/null +++ b/_sources/api/ssapy.utils.iers_interp.rst.txt @@ -0,0 +1,6 @@ +iers_interp +=========== + +.. currentmodule:: ssapy.utils + +.. autofunction:: iers_interp diff --git a/_sources/api/ssapy.utils.integrate_orbit_best_model.rst.txt b/_sources/api/ssapy.utils.integrate_orbit_best_model.rst.txt new file mode 100644 index 0000000..69b701e --- /dev/null +++ b/_sources/api/ssapy.utils.integrate_orbit_best_model.rst.txt @@ -0,0 +1,6 @@ +integrate_orbit_best_model +========================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: integrate_orbit_best_model diff --git a/_sources/api/ssapy.utils.interpolate_points_between.rst.txt b/_sources/api/ssapy.utils.interpolate_points_between.rst.txt new file mode 100644 index 0000000..1ab2d67 --- /dev/null +++ b/_sources/api/ssapy.utils.interpolate_points_between.rst.txt @@ -0,0 +1,6 @@ +interpolate_points_between +========================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: interpolate_points_between diff --git a/_sources/api/ssapy.utils.isAttributeSafeToTransfer.rst.txt b/_sources/api/ssapy.utils.isAttributeSafeToTransfer.rst.txt new file mode 100644 index 0000000..ffde743 --- /dev/null +++ b/_sources/api/ssapy.utils.isAttributeSafeToTransfer.rst.txt @@ -0,0 +1,6 @@ +isAttributeSafeToTransfer +========================= + +.. currentmodule:: ssapy.utils + +.. autofunction:: isAttributeSafeToTransfer diff --git a/_sources/api/ssapy.utils.lazy_property.rst.txt b/_sources/api/ssapy.utils.lazy_property.rst.txt new file mode 100644 index 0000000..e123e7c --- /dev/null +++ b/_sources/api/ssapy.utils.lazy_property.rst.txt @@ -0,0 +1,7 @@ +lazy_property +============= + +.. currentmodule:: ssapy.utils + +.. autoclass:: lazy_property + :show-inheritance: diff --git a/_sources/api/ssapy.utils.lb_to_tan.rst.txt b/_sources/api/ssapy.utils.lb_to_tan.rst.txt new file mode 100644 index 0000000..914334d --- /dev/null +++ b/_sources/api/ssapy.utils.lb_to_tan.rst.txt @@ -0,0 +1,6 @@ +lb_to_tan +========= + +.. currentmodule:: ssapy.utils + +.. autofunction:: lb_to_tan diff --git a/_sources/api/ssapy.utils.lb_to_tp.rst.txt b/_sources/api/ssapy.utils.lb_to_tp.rst.txt new file mode 100644 index 0000000..8165d69 --- /dev/null +++ b/_sources/api/ssapy.utils.lb_to_tp.rst.txt @@ -0,0 +1,6 @@ +lb_to_tp +======== + +.. currentmodule:: ssapy.utils + +.. autofunction:: lb_to_tp diff --git a/_sources/api/ssapy.utils.lb_to_unit.rst.txt b/_sources/api/ssapy.utils.lb_to_unit.rst.txt new file mode 100644 index 0000000..5ec5741 --- /dev/null +++ b/_sources/api/ssapy.utils.lb_to_unit.rst.txt @@ -0,0 +1,6 @@ +lb_to_unit +========== + +.. currentmodule:: ssapy.utils + +.. autofunction:: lb_to_unit diff --git a/_sources/api/ssapy.utils.moonPos.rst.txt b/_sources/api/ssapy.utils.moonPos.rst.txt new file mode 100644 index 0000000..472a8f7 --- /dev/null +++ b/_sources/api/ssapy.utils.moonPos.rst.txt @@ -0,0 +1,6 @@ +moonPos +======= + +.. currentmodule:: ssapy.utils + +.. autofunction:: moonPos diff --git a/_sources/api/ssapy.utils.newton_raphson.rst.txt b/_sources/api/ssapy.utils.newton_raphson.rst.txt new file mode 100644 index 0000000..64856d0 --- /dev/null +++ b/_sources/api/ssapy.utils.newton_raphson.rst.txt @@ -0,0 +1,6 @@ +newton_raphson +============== + +.. currentmodule:: ssapy.utils + +.. autofunction:: newton_raphson diff --git a/_sources/api/ssapy.utils.norm.rst.txt b/_sources/api/ssapy.utils.norm.rst.txt new file mode 100644 index 0000000..2f06b74 --- /dev/null +++ b/_sources/api/ssapy.utils.norm.rst.txt @@ -0,0 +1,6 @@ +norm +==== + +.. currentmodule:: ssapy.utils + +.. autofunction:: norm diff --git a/_sources/api/ssapy.utils.normSq.rst.txt b/_sources/api/ssapy.utils.normSq.rst.txt new file mode 100644 index 0000000..54b35b4 --- /dev/null +++ b/_sources/api/ssapy.utils.normSq.rst.txt @@ -0,0 +1,6 @@ +normSq +====== + +.. currentmodule:: ssapy.utils + +.. autofunction:: normSq diff --git a/_sources/api/ssapy.utils.normed.rst.txt b/_sources/api/ssapy.utils.normed.rst.txt new file mode 100644 index 0000000..4350c7c --- /dev/null +++ b/_sources/api/ssapy.utils.normed.rst.txt @@ -0,0 +1,6 @@ +normed +====== + +.. currentmodule:: ssapy.utils + +.. autofunction:: normed diff --git a/_sources/api/ssapy.utils.ntw_to_r.rst.txt b/_sources/api/ssapy.utils.ntw_to_r.rst.txt new file mode 100644 index 0000000..6c355a4 --- /dev/null +++ b/_sources/api/ssapy.utils.ntw_to_r.rst.txt @@ -0,0 +1,6 @@ +ntw_to_r +======== + +.. currentmodule:: ssapy.utils + +.. autofunction:: ntw_to_r diff --git a/_sources/api/ssapy.utils.num_wraps.rst.txt b/_sources/api/ssapy.utils.num_wraps.rst.txt new file mode 100644 index 0000000..48810c3 --- /dev/null +++ b/_sources/api/ssapy.utils.num_wraps.rst.txt @@ -0,0 +1,6 @@ +num_wraps +========= + +.. currentmodule:: ssapy.utils + +.. autofunction:: num_wraps diff --git a/_sources/api/ssapy.utils.regularize_default.rst.txt b/_sources/api/ssapy.utils.regularize_default.rst.txt new file mode 100644 index 0000000..fad049e --- /dev/null +++ b/_sources/api/ssapy.utils.regularize_default.rst.txt @@ -0,0 +1,6 @@ +regularize_default +================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: regularize_default diff --git a/_sources/api/ssapy.utils.resample.rst.txt b/_sources/api/ssapy.utils.resample.rst.txt new file mode 100644 index 0000000..347568f --- /dev/null +++ b/_sources/api/ssapy.utils.resample.rst.txt @@ -0,0 +1,6 @@ +resample +======== + +.. currentmodule:: ssapy.utils + +.. autofunction:: resample diff --git a/_sources/api/ssapy.utils.rv_to_ntw.rst.txt b/_sources/api/ssapy.utils.rv_to_ntw.rst.txt new file mode 100644 index 0000000..f66c1b2 --- /dev/null +++ b/_sources/api/ssapy.utils.rv_to_ntw.rst.txt @@ -0,0 +1,6 @@ +rv_to_ntw +========= + +.. currentmodule:: ssapy.utils + +.. autofunction:: rv_to_ntw diff --git a/_sources/api/ssapy.utils.sample_points.rst.txt b/_sources/api/ssapy.utils.sample_points.rst.txt new file mode 100644 index 0000000..cc68751 --- /dev/null +++ b/_sources/api/ssapy.utils.sample_points.rst.txt @@ -0,0 +1,6 @@ +sample_points +============= + +.. currentmodule:: ssapy.utils + +.. autofunction:: sample_points diff --git a/_sources/api/ssapy.utils.sigma_points.rst.txt b/_sources/api/ssapy.utils.sigma_points.rst.txt new file mode 100644 index 0000000..cdc2982 --- /dev/null +++ b/_sources/api/ssapy.utils.sigma_points.rst.txt @@ -0,0 +1,6 @@ +sigma_points +============ + +.. currentmodule:: ssapy.utils + +.. autofunction:: sigma_points diff --git a/_sources/api/ssapy.utils.subsample_high_lnprob.rst.txt b/_sources/api/ssapy.utils.subsample_high_lnprob.rst.txt new file mode 100644 index 0000000..11bf47c --- /dev/null +++ b/_sources/api/ssapy.utils.subsample_high_lnprob.rst.txt @@ -0,0 +1,6 @@ +subsample_high_lnprob +===================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: subsample_high_lnprob diff --git a/_sources/api/ssapy.utils.sunPos.rst.txt b/_sources/api/ssapy.utils.sunPos.rst.txt new file mode 100644 index 0000000..178f3ec --- /dev/null +++ b/_sources/api/ssapy.utils.sunPos.rst.txt @@ -0,0 +1,6 @@ +sunPos +====== + +.. currentmodule:: ssapy.utils + +.. autofunction:: sunPos diff --git a/_sources/api/ssapy.utils.tan_to_lb.rst.txt b/_sources/api/ssapy.utils.tan_to_lb.rst.txt new file mode 100644 index 0000000..66c7b18 --- /dev/null +++ b/_sources/api/ssapy.utils.tan_to_lb.rst.txt @@ -0,0 +1,6 @@ +tan_to_lb +========= + +.. currentmodule:: ssapy.utils + +.. autofunction:: tan_to_lb diff --git a/_sources/api/ssapy.utils.teme_to_gcrf.rst.txt b/_sources/api/ssapy.utils.teme_to_gcrf.rst.txt new file mode 100644 index 0000000..06f0a3e --- /dev/null +++ b/_sources/api/ssapy.utils.teme_to_gcrf.rst.txt @@ -0,0 +1,6 @@ +teme_to_gcrf +============ + +.. currentmodule:: ssapy.utils + +.. autofunction:: teme_to_gcrf diff --git a/_sources/api/ssapy.utils.tp_to_lb.rst.txt b/_sources/api/ssapy.utils.tp_to_lb.rst.txt new file mode 100644 index 0000000..11af439 --- /dev/null +++ b/_sources/api/ssapy.utils.tp_to_lb.rst.txt @@ -0,0 +1,6 @@ +tp_to_lb +======== + +.. currentmodule:: ssapy.utils + +.. autofunction:: tp_to_lb diff --git a/_sources/api/ssapy.utils.tp_to_unit.rst.txt b/_sources/api/ssapy.utils.tp_to_unit.rst.txt new file mode 100644 index 0000000..4f325a8 --- /dev/null +++ b/_sources/api/ssapy.utils.tp_to_unit.rst.txt @@ -0,0 +1,6 @@ +tp_to_unit +========== + +.. currentmodule:: ssapy.utils + +.. autofunction:: tp_to_unit diff --git a/_sources/api/ssapy.utils.unitAngle3.rst.txt b/_sources/api/ssapy.utils.unitAngle3.rst.txt new file mode 100644 index 0000000..04ccc6a --- /dev/null +++ b/_sources/api/ssapy.utils.unitAngle3.rst.txt @@ -0,0 +1,6 @@ +unitAngle3 +========== + +.. currentmodule:: ssapy.utils + +.. autofunction:: unitAngle3 diff --git a/_sources/api/ssapy.utils.unit_to_lb.rst.txt b/_sources/api/ssapy.utils.unit_to_lb.rst.txt new file mode 100644 index 0000000..81af816 --- /dev/null +++ b/_sources/api/ssapy.utils.unit_to_lb.rst.txt @@ -0,0 +1,6 @@ +unit_to_lb +========== + +.. currentmodule:: ssapy.utils + +.. autofunction:: unit_to_lb diff --git a/_sources/api/ssapy.utils.unit_to_tp.rst.txt b/_sources/api/ssapy.utils.unit_to_tp.rst.txt new file mode 100644 index 0000000..4fcaa13 --- /dev/null +++ b/_sources/api/ssapy.utils.unit_to_tp.rst.txt @@ -0,0 +1,6 @@ +unit_to_tp +========== + +.. currentmodule:: ssapy.utils + +.. autofunction:: unit_to_tp diff --git a/_sources/api/ssapy.utils.unscented_transform_mean_covar.rst.txt b/_sources/api/ssapy.utils.unscented_transform_mean_covar.rst.txt new file mode 100644 index 0000000..6152e17 --- /dev/null +++ b/_sources/api/ssapy.utils.unscented_transform_mean_covar.rst.txt @@ -0,0 +1,6 @@ +unscented_transform_mean_covar +============================== + +.. currentmodule:: ssapy.utils + +.. autofunction:: unscented_transform_mean_covar diff --git a/_sources/api/ssapy.utils.xyz_to_lb.rst.txt b/_sources/api/ssapy.utils.xyz_to_lb.rst.txt new file mode 100644 index 0000000..1f3e420 --- /dev/null +++ b/_sources/api/ssapy.utils.xyz_to_lb.rst.txt @@ -0,0 +1,6 @@ +xyz_to_lb +========= + +.. currentmodule:: ssapy.utils + +.. autofunction:: xyz_to_lb diff --git a/_sources/api/ssapy.utils.xyz_to_tp.rst.txt b/_sources/api/ssapy.utils.xyz_to_tp.rst.txt new file mode 100644 index 0000000..5c999a6 --- /dev/null +++ b/_sources/api/ssapy.utils.xyz_to_tp.rst.txt @@ -0,0 +1,6 @@ +xyz_to_tp +========= + +.. currentmodule:: ssapy.utils + +.. autofunction:: xyz_to_tp diff --git a/_sources/concepts.rst.txt b/_sources/concepts.rst.txt new file mode 100644 index 0000000..9b1b6c9 --- /dev/null +++ b/_sources/concepts.rst.txt @@ -0,0 +1,113 @@ +SSAPy Concepts +============== + +THIS PAGE IS UNDER DEVELOPMENT + +This page explains concepts and terminology used within the SSAPy package. +It is intended to provide a high-level overview, while details can be found in other sections of the documentation. + +.. _def-coordinate-systems: + +Coordinate Systems +------------------ +A `coordinate system `_ is a set of one or more values which define a unique position in space. The SSAPy package is capable of using a variety of coordinate systems: + +.. + - Cartesian coordinates + - ra/dec of stars from catalog positions (J2000/ICRS) + - apparent positions + - NTW + - T gives the projection of (rcoord - r) along V (tangent to track) + - W gives the projection of (rcoord - r) along (V cross r) (normal to plane) + - N gives the projection of (rcoord - r) along (V cross (V cross r)) + (in plane, perpendicular to T) + - theta-phi-like coordinates: the system where theta is the angle between zenith and the point in question, and phi is the corresponding azimuthal angle. (radians) + - lb-like coordinates & proper motions + - if converting from theta-phi, sets b = pi - theta and renames phi -> l. Everything is in radians. + - orthographic tangent plane (radiants) + - if converting from lb-like coordinates, the tangent plane is always chosen so that +Y is towards b = 90, and +X is towards +l. + - GCRF + - IERS + - GCRS Cartesian Coordinate + - TEME cartesian coordinate + + Not every function will be able to make use of every coordinate system, so please be sure to read the documentation associated with a given operation. + +.. _def-time-standards: + +Time Standards +-------------- +.. + - UTC vs others + +.. _def-orbits: + +Types of Standard Orbits +------------------------ +While SSAPy is not technically limited to modeling a specific orbit, there are certain types of orbits which are more closely related to SSAPy's capabilities. Those orbit types are listed below: + +- Low Earth Orbit (LEO): +- Mid-earth orbit (MEO) +- Geosynchronous Earth Orbit (GEO): +- Geostationary Earth Orbit: +- Highly Elliptical Orbit (HEO) +- Cislunar Orbits: + +Of course, many other types of near Earth orbits are possible (i.e. lunar rectilinear halo orbits). The sky, or the universe as it may be, is the limit! + +.. _def-models: + +Types of Models +--------------- +.. + Some text about why we model these things + +Gravitational models +^^^^^^^^^^^^^^^^^^^^ +.. + - What means to have harmonics turned on + - What it means to be a point source + - Solar/Planetary point source modeling + - Earth/Lunar modeling + +Radiation pressure +^^^^^^^^^^^^^^^^^^ +.. + text + +Atmospheric Modeling +^^^^^^^^^^^^^^^^^^^^ +.. + text + +.. _def-numerical-integrators: + +Numerical Integrators +--------------------- +.. + - Why different + - What step sizes mean + +.. _def-computing-considerations: + +Computing Considerations +------------------------ +.. + - Many orbits + - vectorization + - orbit sampling and propagation for error estimation (rvsampling) + - Linking observations together + +.. _def-other-codes: + +Other Codes +----------- +Below is a list of other orbit propagation codes, both commercial and free. While these other pieces of software may have some features in common with SSAPy, we believe SSAPy brings a more complete list of capabilities within one package. + +- `General Mission Analysis Tool (GMAT) `_ +- `Ansys Systems Tool Kit (STK) `_ +- `a.i. solutions FreeFlyer Astrodynamics Software `_ +- `MathWorks MATLAB `_ +- `AstroPy `_ +- `REBOUND `_ + - `REBOUNDx `_ diff --git a/_sources/contribution_guide.rst.txt b/_sources/contribution_guide.rst.txt new file mode 100644 index 0000000..982d7e4 --- /dev/null +++ b/_sources/contribution_guide.rst.txt @@ -0,0 +1,528 @@ +.. Copyright 2013-2024 Lawrence Livermore National Security, LLC. See the top-level LICENSE file for details. + + SPDX-License-Identifier: MIT + +.. _contribution-guide: + +================== +Contribution Guide +================== + +This guide is intended for developers or administrators who want to +contribute a new feature or bugfix to SSAPy. +It assumes that you have at least some familiarity with Git and GitHub. +The guide will show a few examples of contributing workflows and discuss +the granularity of pull-requests (PRs). It will also discuss the tests your +PR must pass in order to be accepted into SSAPy. + +First, what is a PR? Quoting `Bitbucket's tutorials `_: + + Pull requests are a mechanism for a developer to notify team members that + they have **completed a feature**. The pull request is more than just a + notification—it’s a dedicated forum for discussing the proposed feature. + +The emphasis is on a **completed feature**. The changes one proposes in a PR should +correspond to one feature/bugfix/extension/etc. One can create PRs with +changes relevant to different ideas, however reviewing such PRs becomes tedious +and error prone. If possible, try to follow the **one-PR-one-feature** rule. + +-------- +Branches +-------- + +SSAPy's ``develop`` branch has the latest contributions. Nearly all pull +requests should start from ``develop`` and target ``develop``. + +There is a branch for each major release series. Release branches +originate from ``develop`` and have tags for each point release in the +series. For example, ``releases/v0.14`` might have tags for ``0.14.0``, +``0.14.1``, ``0.14.2``, etc. versions of SSAPy. We backport important bug +fixes to these branches, but we do not advance the package versions or +make other changes that would change the way SSAPy concretizes +dependencies. Currently, the maintainers manage these branches by +cherry-picking from ``develop``. See :ref:`releases` for more +information. + +---------------------- +Continuous Integration +---------------------- + +SSAPy uses `Github Actions `_ for Continuous Integration +testing. This means that every time you submit a pull request, a series of tests will +be run to make sure you didn't accidentally introduce any bugs into SSAPy. **Your PR +will not be accepted until it passes all of these tests.** While you can certainly wait +for the results of these tests after submitting a PR, we recommend that you run them +locally to speed up the review process. + +.. note:: + + Oftentimes, CI will fail for reasons other than a problem with your PR. + For example, apt-get, pip, or homebrew will fail to download one of the + dependencies for the test suite, or a transient bug will cause the unit tests + to timeout. If any job fails, click the "Details" link and click on the test(s) + that is failing. If it doesn't look like it is failing for reasons related to + your PR, you have two options. If you have write permissions for the SSAPy + repository, you should see a "Restart workflow" button on the right-hand side. If + not, you can close and reopen your PR to rerun all of the tests. If the same + test keeps failing, there may be a problem with your PR. If you notice that + every recent PR is failing with the same error message, it may be that an issue + occurred with the CI infrastructure or one of SSAPy's dependencies put out a + new release that is causing problems. If this is the case, please file an issue. + + +We currently test against Python 3.10 on both macOS and Linux and +perform 3 types of tests: + +.. _cmd-ssapy-unit-test: + +^^^^^^^^^^ +Unit Tests +^^^^^^^^^^ + +Unit tests ensure that core SSAPy features like fetching or spec resolution are +working as expected. If your PR only adds new packages or modifies existing ones, +there's very little chance that your changes could cause the unit tests to fail. +However, if you make changes to SSAPy's core libraries, you should run the unit +tests to make sure you didn't break anything. + +Since they test things like fetching from VCS repos, the unit tests require +`git `_, `mercurial `_, +and `subversion `_ to run. Make sure these are +installed on your system and can be found in your ``PATH``. All of these can be +installed with SSAPy or with your system package manager. + +To run *all* of the unit tests, use: + +.. code-block:: console + + $ ssapy unit-test + +These tests may take several minutes to complete. If you know you are +only modifying a single SSAPy feature, you can run subsets of tests at a +time. For example, this would run all the tests in +``tests/*.py``: + +.. code-block:: console + + $ ssapy unit-test tests/*.py + +This allows you to develop iteratively: make a change, test that change, +make another change, test that change, etc. We use `pytest +`_ as our tests framework, and these types of +arguments are just passed to the ``pytest`` command underneath. See `the +pytest docs +`_ +for more details on test selection syntax. + +By default, ``pytest`` captures the output of all unit tests, and it will +print any captured output for failed tests. Sometimes it's helpful to see +your output interactively, while the tests run (e.g., if you add print +statements to a unit tests). To see the output *live*, use the ``-s`` +argument to ``pytest``: + +.. code-block:: console + + $ ssapy unit-test -s --list-long tests/architecture.py::test_platform + +Unit tests are crucial to making sure bugs aren't introduced into +SSAPy. If you are modifying core SSAPy libraries or adding new +functionality, please add new unit tests for your feature, and consider +strengthening existing tests. You will likely be asked to do this if you +submit a pull request to the SSAPy project on GitHub. Check out the +`pytest docs `_ and feel free to ask for guidance on +how to write tests! + +^^^^^^^^^^^^ +Style Tests +^^^^^^^^^^^^ + +SSAPy uses `Flake8 `_ to test for +`PEP 8 `_ conformance and +`mypy ` for type checking. PEP 8 is +a series of style guides for Python that provide suggestions for everything +from variable naming to indentation. In order to limit the number of PRs that +were mostly style changes, we decided to enforce PEP 8 conformance. Your PR +needs to comply with PEP 8 in order to be accepted, and if it modifies the +ssapy library it needs to successfully type-check with mypy as well. + +Testing for compliance with ssapy's style is easy. Simply run the ``ssapy style`` +command: + +.. code-block:: console + + $ ssapy style + +``ssapy style`` has a couple advantages over running the tools by hand: + +#. It only tests files that you have modified since branching off of + ``develop``. + +#. It works regardless of what directory you are in. + +#. It automatically adds approved exemptions from the ``flake8`` + checks. For example, URLs are often longer than 80 characters, so we + exempt them from line length checks. We also exempt lines that start + with "homepage", "url", "version", "variant", "depends_on", and + "extends" in ``package.py`` files. This is now also possible when directly + running flake8 if you can use the ``ssapy`` formatter plugin included with + ssapy. + +More approved flake8 exemptions can be found +`here `_. + +If all is well, you'll see something like this: + +.. code-block:: console + + $ run-flake8-tests + Dependencies found. + ======================================================= + flake8: running flake8 code checks on SSAPy. + + Modified files: + + var/ssapy/repos/builtin/packages/hdf5/package.py + var/ssapy/repos/builtin/packages/hdf/package.py + var/ssapy/repos/builtin/packages/netcdf/package.py + ======================================================= + Flake8 checks were clean. + +However, if you aren't compliant with PEP 8, flake8 will complain: + +.. code-block:: console + + var/ssapy/repos/builtin/packages/netcdf/package.py:26: [F401] 'os' imported but unused + var/ssapy/repos/builtin/packages/netcdf/package.py:61: [E303] too many blank lines (2) + var/ssapy/repos/builtin/packages/netcdf/package.py:106: [E501] line too long (92 > 79 characters) + Flake8 found errors. + +Most of the error messages are straightforward, but if you don't understand what +they mean, just ask questions about them when you submit your PR. The line numbers +will change if you add or delete lines, so simply run ``ssapy style`` again +to update them. + +.. tip:: + + Try fixing flake8 errors in reverse order. This eliminates the need for + multiple runs of ``ssapy style`` just to re-compute line numbers and + makes it much easier to fix errors directly off of the CI output. + + +^^^^^^^^^^^^^^^^^^^ +Documentation Tests +^^^^^^^^^^^^^^^^^^^ + +SSAPy uses `Sphinx `_ to build its +documentation. In order to prevent things like broken links and missing imports, +we added documentation tests that build the documentation and fail if there +are any warning or error messages. + +Building the documentation requires several dependencies: + +* docutils +* sphinx +* sphinx-rtd-theme +* sphinx-copybutton +* sphinx-autobuild +* sphinx-tabs +* sphinx-automodapi +* myst-parser +* graphviz + +All of these can be installed with Pip, e.g. + +.. code-block:: console + + $ python3 -m pip install docutils sphinx, sphinx-rtd-theme sphinx-copybutton sphinx-autobuild sphinx-tabs sphinx-automodapi myst-parser graphviz + +Once all of the dependencies are installed, you can try building the documentation: + +.. code-block:: console + + $ cd path/to/ssapy/docs/ + $ make clean + $ make + +If you see any warning or error messages, you will have to correct those before your PR +is accepted. If you are editing the documentation, you should be running the +documentation tests to make sure there are no errors. Documentation changes can result +in some obfuscated warning messages. If you don't understand what they mean, feel free +to ask when you submit your PR. + +-------- +Coverage +-------- + +SSAPy uses `Codecov `_ to generate and report unit test +coverage. This helps us tell what percentage of lines of code in SSAPy are +covered by unit tests. Although code covered by unit tests can still contain +bugs, it is much less error prone than code that is not covered by unit tests. + +Codecov provides `browser extensions `_ +for Google Chrome and Firefox. These extensions integrate with GitHub +and allow you to see coverage line-by-line when viewing the SSAPy repository. +If you are new to SSAPy, a great way to get started is to write unit tests to +increase coverage! + +Unlike with CI on Github Actions Codecov tests are not required to pass in order for your +PR to be merged. If you modify core SSAPy libraries, we would greatly +appreciate unit tests that cover these changed lines. Otherwise, we have no +way of knowing whether or not your changes introduce a bug. If you make +substantial changes to the core, we may request unit tests to increase coverage. + +.. note:: + + You may notice that the Codecov tests fail even though + you didn't modify any core files. This means that SSAPy's overall coverage + has increased since you branched off of develop. This is a good thing! + If you really want to get the Codecov tests to pass, you can rebase off of + the latest develop, but again, this is not required. + + +------------- +Git Workflows +------------- + +SSAPy is still in the beta stages of development. Most of our users run off of +the develop branch, and fixes and new features are constantly being merged. So +how do you keep up-to-date with upstream while maintaining your own local +differences and contributing PRs to SSAPy? + +^^^^^^^^^ +Branching +^^^^^^^^^ + +The easiest way to contribute a pull request is to make all of your changes on +new branches. Make sure your ``develop`` is up-to-date and create a new branch +off of it: + +.. code-block:: console + + $ git checkout develop + $ git pull upstream develop + $ git branch + $ git checkout + +Here we assume that the local ``develop`` branch tracks the upstream develop +branch of SSAPy. This is not a requirement and you could also do the same with +remote branches. But for some it is more convenient to have a local branch that +tracks upstream. + +Normally we prefer that commits pertaining to a package ```` have +a message ``: descriptive message``. It is important to add +descriptive message so that others, who might be looking at your changes later +(in a year or maybe two), would understand the rationale behind them. + +Now, you can make your changes while keeping the ``develop`` branch pure. +Edit a few files and commit them by running: + +.. code-block:: console + + $ git add + $ git commit --message + +Next, push it to your remote fork and create a PR: + +.. code-block:: console + + $ git push origin --set-upstream + +GitHub provides a `tutorial `_ +on how to file a pull request. When you send the request, make ``develop`` the +destination branch. + +If you need this change immediately and don't have time to wait for your PR to +be merged, you can always work on this branch. But if you have multiple PRs, +another option is to maintain a Frankenstein branch that combines all of your +other branches: + +.. code-block:: console + + $ git co develop + $ git branch + $ git checkout + $ git merge + +This can be done with each new PR you submit. Just make sure to keep this local +branch up-to-date with upstream ``develop`` too. + +^^^^^^^^^^^^^^ +Cherry-Picking +^^^^^^^^^^^^^^ + +What if you made some changes to your local modified develop branch and already +committed them, but later decided to contribute them to SSAPy? You can use +cherry-picking to create a new branch with only these commits. + +First, check out your local modified develop branch: + +.. code-block:: console + + $ git checkout + +Now, get the hashes of the commits you want from the output of: + +.. code-block:: console + + $ git log + +Next, create a new branch off of upstream ``develop`` and copy the commits +that you want in your PR: + +.. code-block:: console + + $ git checkout develop + $ git pull upstream develop + $ git branch + $ git checkout + $ git cherry-pick + $ git push origin --set-upstream + +Now you can create a PR from the web-interface of GitHub. The net result is as +follows: + +#. You patched your local version of SSAPy and can use it further. +#. You "cherry-picked" these changes in a stand-alone branch and submitted it + as a PR upstream. + +Should you have several commits to contribute, you could follow the same +procedure by getting hashes of all of them and cherry-picking to the PR branch. + +.. note:: + + It is important that whenever you change something that might be of + importance upstream, create a pull request as soon as possible. Do not wait + for weeks/months to do this, because: + + #. you might forget why you modified certain files + #. it could get difficult to isolate this change into a stand-alone clean PR. + +^^^^^^^^ +Rebasing +^^^^^^^^ + +Other developers are constantly making contributions to SSAPy, possibly on the +same files that your PR changed. If their PR is merged before yours, it can +create a merge conflict. This means that your PR can no longer be automatically +merged without a chance of breaking your changes. In this case, you will be +asked to rebase on top of the latest upstream ``develop``. + +First, make sure your develop branch is up-to-date: + +.. code-block:: console + + $ git checkout develop + $ git pull upstream develop + +Now, we need to switch to the branch you submitted for your PR and rebase it +on top of develop: + +.. code-block:: console + + $ git checkout + $ git rebase develop + +Git will likely ask you to resolve conflicts. Edit the file that it says can't +be merged automatically and resolve the conflict. Then, run: + +.. code-block:: console + + $ git add + $ git rebase --continue + +You may have to repeat this process multiple times until all conflicts are resolved. +Once this is done, simply force push your rebased branch to your remote fork: + +.. code-block:: console + + $ git push --force origin + +^^^^^^^^^^^^^^^^^^^^^^^^^ +Rebasing with cherry-pick +^^^^^^^^^^^^^^^^^^^^^^^^^ + +You can also perform a rebase using ``cherry-pick``. First, create a temporary +backup branch: + +.. code-block:: console + + $ git checkout + $ git branch tmp + +If anything goes wrong, you can always go back to your ``tmp`` branch. +Now, look at the logs and save the hashes of any commits you would like to keep: + +.. code-block:: console + + $ git log + +Next, go back to the original branch and reset it to ``develop``. +Before doing so, make sure that you local ``develop`` branch is up-to-date +with upstream: + +.. code-block:: console + + $ git checkout develop + $ git pull upstream develop + $ git checkout + $ git reset --hard develop + +Now you can cherry-pick relevant commits: + +.. code-block:: console + + $ git cherry-pick + $ git cherry-pick + +Push the modified branch to your fork: + +.. code-block:: console + + $ git push --force origin + +If everything looks good, delete the backup branch: + +.. code-block:: console + + $ git branch --delete --force tmp + +^^^^^^^^^^^^^^^^^^ +Re-writing History +^^^^^^^^^^^^^^^^^^ + +Sometimes you may end up on a branch that has diverged so much from develop +that it cannot easily be rebased. If the current commits history is more of +an experimental nature and only the net result is important, you may rewrite +the history. + +First, merge upstream ``develop`` and reset you branch to it. On the branch +in question, run: + +.. code-block:: console + + $ git merge develop + $ git reset develop + +At this point your branch will point to the same commit as develop and +thereby the two are indistinguishable. However, all the files that were +previously modified will stay as such. In other words, you do not lose the +changes you made. Changes can be reviewed by looking at diffs: + +.. code-block:: console + + $ git status + $ git diff + +The next step is to rewrite the history by adding files and creating commits: + +.. code-block:: console + + $ git add + $ git commit --message + +After all changed files are committed, you can push the branch to your fork +and create a PR: + +.. code-block:: console + + $ git push origin --set-upstream diff --git a/_sources/examples.rst.txt b/_sources/examples.rst.txt new file mode 100644 index 0000000..1527c56 --- /dev/null +++ b/_sources/examples.rst.txt @@ -0,0 +1,12 @@ +SSAPy by Example +================ + +The following pages are rendered jupyter notebooks that provide an overview and example usage of SSAPy features. +Each notebook builds on the previous one so it is recommended to go through them in order. + +THIS PAGE IS UNDER DEVELOPMENT + +.. toctree:: + +.. notebooks/nanoevents.ipynb +.. notebooks/applying_corrections.ipynb diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 0000000..18ed6cb --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,28 @@ +.. SSAPy documentation master file, created by + sphinx-quickstart on Fri Aug 4 16:23:59 2023. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +.. include:: ../../README.rst + +.. toctree:: + :maxdepth: 2 + :caption: Basics + + installation + examples + concepts + contribution_guide + +.. toctree:: + :maxdepth: 2 + :caption: API DOCS + + API Reference Guide + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/_sources/installation.rst.txt b/_sources/installation.rst.txt new file mode 100644 index 0000000..7529184 --- /dev/null +++ b/_sources/installation.rst.txt @@ -0,0 +1,64 @@ +Getting Started +=============== + +System Prerequisites +-------------------- + +``SSAPy`` has the following minimum system requirements, which are assumed to be present on the machine where ``SSAPy`` is run: + +.. csv-table:: System prerequisites for SSAPy + :file: tables/system_prerequisites.csv + :header-rows: 1 + +These requirements can be easily installed on most modern macOS and Linux systems. + +.. tabs:: + + .. tab:: Debian/Ubuntu + + .. code-block:: console + + apt update + apt install build-essential git git-lfs python3 python3-distutils python3-venv graphviz + + .. tab:: RHEL + + .. code-block:: console + + dnf install epel-release + dnf group install "Development Tools" + dnf install git git-lfs gcc-gfortran python3 python3-pip python3-setuptools graphviz + + .. tab:: macOS Brew + + .. code-block:: console + + brew update + brew install gcc git git-lfs python3 svn graphviz + +Installation +------------ + +As the package has not yet been published on `PyPI `_, it CANNOT be installed using pip. Instead, use the following directions to install the package. + +After cloning the main git repository, you must run the following command to clone the submodules: + +.. code-block:: console + + git submodule update --init --recursive + +Then run the usual setup commands: + +.. code-block:: console + + python3 setup.py build + python3 setup.py install + +Orekit dependency +^^^^^^^^^^^^^^^^^ + +`Orekit `_ is an optional dependency, including the ``Orekit`` Python wrapper that is hard to find. Clone the python wrappper from here: + + `https://gitlab.orekit.org/orekit-labs/python-wrapper `_ + +Alternatively, the ``Orekit`` python wrapper can be installed from `Anaconda `_. diff --git a/_sources/modules/ssapy.accel.rst.txt b/_sources/modules/ssapy.accel.rst.txt new file mode 100644 index 0000000..d90924d --- /dev/null +++ b/_sources/modules/ssapy.accel.rst.txt @@ -0,0 +1,5 @@ +ssapy.accel +=========== + +.. automodapi:: ssapy.accel + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.body.rst.txt b/_sources/modules/ssapy.body.rst.txt new file mode 100644 index 0000000..49f7232 --- /dev/null +++ b/_sources/modules/ssapy.body.rst.txt @@ -0,0 +1,5 @@ +ssapy.body +========== + +.. automodapi:: ssapy.body + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.compute.rst.txt b/_sources/modules/ssapy.compute.rst.txt new file mode 100644 index 0000000..6a5e5f0 --- /dev/null +++ b/_sources/modules/ssapy.compute.rst.txt @@ -0,0 +1,5 @@ +ssapy.compute +============= + +.. automodapi:: ssapy.compute + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.constants.rst.txt b/_sources/modules/ssapy.constants.rst.txt new file mode 100644 index 0000000..994b458 --- /dev/null +++ b/_sources/modules/ssapy.constants.rst.txt @@ -0,0 +1,5 @@ +ssapy.constants +=============== + +.. automodapi:: ssapy.constants + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.correlate_tracks.rst.txt b/_sources/modules/ssapy.correlate_tracks.rst.txt new file mode 100644 index 0000000..0662038 --- /dev/null +++ b/_sources/modules/ssapy.correlate_tracks.rst.txt @@ -0,0 +1,5 @@ +ssapy.correlate_tracks +====================== + +.. automodapi:: ssapy.correlate_tracks + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.ellipsoid.rst.txt b/_sources/modules/ssapy.ellipsoid.rst.txt new file mode 100644 index 0000000..426ce24 --- /dev/null +++ b/_sources/modules/ssapy.ellipsoid.rst.txt @@ -0,0 +1,5 @@ +ssapy.ellipsoid +=============== + +.. automodapi:: ssapy.ellipsoid + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.gravity.rst.txt b/_sources/modules/ssapy.gravity.rst.txt new file mode 100644 index 0000000..f8ea582 --- /dev/null +++ b/_sources/modules/ssapy.gravity.rst.txt @@ -0,0 +1,5 @@ +ssapy.gravity +============= + +.. automodapi:: ssapy.gravity + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.io.rst.txt b/_sources/modules/ssapy.io.rst.txt new file mode 100644 index 0000000..b675ae4 --- /dev/null +++ b/_sources/modules/ssapy.io.rst.txt @@ -0,0 +1,5 @@ +ssapy.io +======== + +.. automodapi:: ssapy.io + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.linker.rst.txt b/_sources/modules/ssapy.linker.rst.txt new file mode 100644 index 0000000..3c32dd3 --- /dev/null +++ b/_sources/modules/ssapy.linker.rst.txt @@ -0,0 +1,5 @@ +ssapy.linker +============ + +.. automodapi:: ssapy.linker + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.orbit.rst.txt b/_sources/modules/ssapy.orbit.rst.txt new file mode 100644 index 0000000..cd73a40 --- /dev/null +++ b/_sources/modules/ssapy.orbit.rst.txt @@ -0,0 +1,5 @@ +ssapy.orbit +=========== + +.. automodapi:: ssapy.orbit + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.orbit_solver.rst.txt b/_sources/modules/ssapy.orbit_solver.rst.txt new file mode 100644 index 0000000..767a23a --- /dev/null +++ b/_sources/modules/ssapy.orbit_solver.rst.txt @@ -0,0 +1,5 @@ +ssapy.orbit_solver +================== + +.. automodapi:: ssapy.orbit_solver + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.particles.rst.txt b/_sources/modules/ssapy.particles.rst.txt new file mode 100644 index 0000000..9a581e0 --- /dev/null +++ b/_sources/modules/ssapy.particles.rst.txt @@ -0,0 +1,5 @@ +ssapy.particles +=============== + +.. automodapi:: ssapy.particles + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.plotUtils.rst.txt b/_sources/modules/ssapy.plotUtils.rst.txt new file mode 100644 index 0000000..7fddbed --- /dev/null +++ b/_sources/modules/ssapy.plotUtils.rst.txt @@ -0,0 +1,5 @@ +ssapy.plotUtils +=============== + +.. automodapi:: ssapy.plotUtils + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.propagator.rst.txt b/_sources/modules/ssapy.propagator.rst.txt new file mode 100644 index 0000000..036c2d4 --- /dev/null +++ b/_sources/modules/ssapy.propagator.rst.txt @@ -0,0 +1,5 @@ +ssapy.propagator +================ + +.. automodapi:: ssapy.propagator + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.rvsampler.rst.txt b/_sources/modules/ssapy.rvsampler.rst.txt new file mode 100644 index 0000000..a60dc40 --- /dev/null +++ b/_sources/modules/ssapy.rvsampler.rst.txt @@ -0,0 +1,5 @@ +ssapy.rvsampler +=============== + +.. automodapi:: ssapy.rvsampler + :no-heading: \ No newline at end of file diff --git a/_sources/modules/ssapy.utils.rst.txt b/_sources/modules/ssapy.utils.rst.txt new file mode 100644 index 0000000..dbc7819 --- /dev/null +++ b/_sources/modules/ssapy.utils.rst.txt @@ -0,0 +1,5 @@ +ssapy.utils +=========== + +.. automodapi:: ssapy.utils + :no-heading: \ No newline at end of file diff --git a/_sources/reference.rst.txt b/_sources/reference.rst.txt new file mode 100644 index 0000000..6000007 --- /dev/null +++ b/_sources/reference.rst.txt @@ -0,0 +1,32 @@ +API Reference Guide +******************* +SSAPy: Space Situational Awareness for Python + +When executing + + >>> import SSAPy + +a subset of the full SSAPy package is imported into the python environment. +Some packages must be imported explicitly, so as to avoid importing unnecessary +and/or heavy dependencies. Below lists the packages available in the ``ssapy`` namespace. + +.. autosummary:: + :toctree: modules + :template: automodapi_templ.rst + + ssapy.accel + ssapy.body + ssapy.compute + ssapy.constants + ssapy.correlate_tracks + ssapy.ellipsoid + ssapy.gravity + ssapy.io + ssapy.linker + ssapy.orbit_solver + ssapy.orbit + ssapy.particles + ssapy.plotUtils + ssapy.propagator + ssapy.rvsampler + ssapy.utils diff --git a/_static/_sphinx_javascript_frameworks_compat.js b/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 0000000..8141580 --- /dev/null +++ b/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,123 @@ +/* Compatability shim for jQuery and underscores.js. + * + * Copyright Sphinx contributors + * Released under the two clause BSD licence + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 0000000..f316efc --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 0000000..92fad4b --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 0000000..54b3c46 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 0000000..f1916ec --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 0000000..2ea7ff3 --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 0000000..dbe1aaa --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/css/badge_only.css b/_static/css/badge_only.css new file mode 100644 index 0000000..c718cee --- /dev/null +++ b/_static/css/badge_only.css @@ -0,0 +1 @@ +.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff b/_static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 0000000..6cb6000 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff2 b/_static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 0000000..7059e23 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff b/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 0000000..f815f63 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff2 b/_static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 0000000..f2c76e5 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/_static/css/fonts/fontawesome-webfont.eot b/_static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.eot differ diff --git a/_static/css/fonts/fontawesome-webfont.svg b/_static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/_static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/css/fonts/fontawesome-webfont.ttf b/_static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.ttf differ diff --git a/_static/css/fonts/fontawesome-webfont.woff b/_static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff differ diff --git a/_static/css/fonts/fontawesome-webfont.woff2 b/_static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/_static/css/fonts/lato-bold-italic.woff b/_static/css/fonts/lato-bold-italic.woff new file mode 100644 index 0000000..88ad05b Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff differ diff --git a/_static/css/fonts/lato-bold-italic.woff2 b/_static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 0000000..c4e3d80 Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff2 differ diff --git a/_static/css/fonts/lato-bold.woff b/_static/css/fonts/lato-bold.woff new file mode 100644 index 0000000..c6dff51 Binary files /dev/null and b/_static/css/fonts/lato-bold.woff differ diff --git a/_static/css/fonts/lato-bold.woff2 b/_static/css/fonts/lato-bold.woff2 new file mode 100644 index 0000000..bb19504 Binary files /dev/null and b/_static/css/fonts/lato-bold.woff2 differ diff --git a/_static/css/fonts/lato-normal-italic.woff b/_static/css/fonts/lato-normal-italic.woff new file mode 100644 index 0000000..76114bc Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff differ diff --git a/_static/css/fonts/lato-normal-italic.woff2 b/_static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 0000000..3404f37 Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff2 differ diff --git a/_static/css/fonts/lato-normal.woff b/_static/css/fonts/lato-normal.woff new file mode 100644 index 0000000..ae1307f Binary files /dev/null and b/_static/css/fonts/lato-normal.woff differ diff --git a/_static/css/fonts/lato-normal.woff2 b/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 0000000..3bf9843 Binary files /dev/null and b/_static/css/fonts/lato-normal.woff2 differ diff --git a/_static/css/theme.css b/_static/css/theme.css new file mode 100644 index 0000000..19a446a --- /dev/null +++ b/_static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 0000000..4d67807 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 0000000..7e4c114 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000..a858a41 Binary files /dev/null and b/_static/file.png differ diff --git a/_static/graphviz.css b/_static/graphviz.css new file mode 100644 index 0000000..027576e --- /dev/null +++ b/_static/graphviz.css @@ -0,0 +1,19 @@ +/* + * graphviz.css + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- graphviz extension. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +img.graphviz { + border: 0; + max-width: 100%; +} + +object.graphviz { + max-width: 100%; +} diff --git a/_static/jquery.js b/_static/jquery.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/_static/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/_static/js/html5shiv.min.js b/_static/js/html5shiv.min.js new file mode 100644 index 0000000..cd1c674 --- /dev/null +++ b/_static/js/html5shiv.min.js @@ -0,0 +1,4 @@ +/** +* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/_static/js/theme.js b/_static/js/theme.js new file mode 100644 index 0000000..1fddb6e --- /dev/null +++ b/_static/js/theme.js @@ -0,0 +1 @@ +!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000..d96755f Binary files /dev/null and b/_static/minus.png differ diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000..7107cec Binary files /dev/null and b/_static/plus.png differ diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 0000000..84ab303 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,75 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #9C6500 } /* Comment.Preproc */ +.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #E40000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #008400 } /* Generic.Inserted */ +.highlight .go { color: #717171 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #687822 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #767600 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #666666 } /* Literal.Number.Bin */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sa { color: #BA2121 } /* Literal.String.Affix */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #A45A77 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #0000FF } /* Name.Function.Magic */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .vm { color: #19177C } /* Name.Variable.Magic */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 0000000..92da3f8 --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,619 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + "Search finished, found ${resultCount} page(s) matching the search query." + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlinks", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/_static/ssapy_logo.ico b/_static/ssapy_logo.ico new file mode 100644 index 0000000..271d865 Binary files /dev/null and b/_static/ssapy_logo.ico differ diff --git a/_static/ssapy_logo.svg b/_static/ssapy_logo.svg new file mode 100644 index 0000000..2eb676b --- /dev/null +++ b/_static/ssapy_logo.svg @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/tabs.css b/_static/tabs.css new file mode 100644 index 0000000..957ba60 --- /dev/null +++ b/_static/tabs.css @@ -0,0 +1,89 @@ +.sphinx-tabs { + margin-bottom: 1rem; +} + +[role="tablist"] { + border-bottom: 1px solid #a0b3bf; +} + +.sphinx-tabs-tab { + position: relative; + font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif; + color: #1D5C87; + line-height: 24px; + margin: 0; + font-size: 16px; + font-weight: 400; + background-color: rgba(255, 255, 255, 0); + border-radius: 5px 5px 0 0; + border: 0; + padding: 1rem 1.5rem; + margin-bottom: 0; +} + +.sphinx-tabs-tab[aria-selected="true"] { + font-weight: 700; + border: 1px solid #a0b3bf; + border-bottom: 1px solid white; + margin: -1px; + background-color: white; +} + +.sphinx-tabs-tab:focus { + z-index: 1; + outline-offset: 1px; +} + +.sphinx-tabs-panel { + position: relative; + padding: 1rem; + border: 1px solid #a0b3bf; + margin: 0px -1px -1px -1px; + border-radius: 0 0 5px 5px; + border-top: 0; + background: white; +} + +.sphinx-tabs-panel.code-tab { + padding: 0.4rem; +} + +.sphinx-tab img { + margin-bottom: 24 px; +} + +/* Dark theme preference styling */ + +@media (prefers-color-scheme: dark) { + body[data-theme="auto"] .sphinx-tabs-panel { + color: white; + background-color: rgb(50, 50, 50); + } + + body[data-theme="auto"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); + } + + body[data-theme="auto"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 1px solid rgb(50, 50, 50); + background-color: rgb(50, 50, 50); + } +} + +/* Explicit dark theme styling */ + +body[data-theme="dark"] .sphinx-tabs-panel { + color: white; + background-color: rgb(50, 50, 50); +} + +body[data-theme="dark"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); +} + +body[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 2px solid rgb(50, 50, 50); + background-color: rgb(50, 50, 50); +} diff --git a/_static/tabs.js b/_static/tabs.js new file mode 100644 index 0000000..48dc303 --- /dev/null +++ b/_static/tabs.js @@ -0,0 +1,145 @@ +try { + var session = window.sessionStorage || {}; +} catch (e) { + var session = {}; +} + +window.addEventListener("DOMContentLoaded", () => { + const allTabs = document.querySelectorAll('.sphinx-tabs-tab'); + const tabLists = document.querySelectorAll('[role="tablist"]'); + + allTabs.forEach(tab => { + tab.addEventListener("click", changeTabs); + }); + + tabLists.forEach(tabList => { + tabList.addEventListener("keydown", keyTabs); + }); + + // Restore group tab selection from session + const lastSelected = session.getItem('sphinx-tabs-last-selected'); + if (lastSelected != null) selectNamedTabs(lastSelected); +}); + +/** + * Key focus left and right between sibling elements using arrows + * @param {Node} e the element in focus when key was pressed + */ +function keyTabs(e) { + const tab = e.target; + let nextTab = null; + if (e.keyCode === 39 || e.keyCode === 37) { + tab.setAttribute("tabindex", -1); + // Move right + if (e.keyCode === 39) { + nextTab = tab.nextElementSibling; + if (nextTab === null) { + nextTab = tab.parentNode.firstElementChild; + } + // Move left + } else if (e.keyCode === 37) { + nextTab = tab.previousElementSibling; + if (nextTab === null) { + nextTab = tab.parentNode.lastElementChild; + } + } + } + + if (nextTab !== null) { + nextTab.setAttribute("tabindex", 0); + nextTab.focus(); + } +} + +/** + * Select or deselect clicked tab. If a group tab + * is selected, also select tab in other tabLists. + * @param {Node} e the element that was clicked + */ +function changeTabs(e) { + // Use this instead of the element that was clicked, in case it's a child + const notSelected = this.getAttribute("aria-selected") === "false"; + const positionBefore = this.parentNode.getBoundingClientRect().top; + const notClosable = !this.parentNode.classList.contains("closeable"); + + deselectTabList(this); + + if (notSelected || notClosable) { + selectTab(this); + const name = this.getAttribute("name"); + selectNamedTabs(name, this.id); + + if (this.classList.contains("group-tab")) { + // Persist during session + session.setItem('sphinx-tabs-last-selected', name); + } + } + + const positionAfter = this.parentNode.getBoundingClientRect().top; + const positionDelta = positionAfter - positionBefore; + // Scroll to offset content resizing + window.scrollTo(0, window.scrollY + positionDelta); +} + +/** + * Select tab and show associated panel. + * @param {Node} tab tab to select + */ +function selectTab(tab) { + tab.setAttribute("aria-selected", true); + + // Show the associated panel + document + .getElementById(tab.getAttribute("aria-controls")) + .removeAttribute("hidden"); +} + +/** + * Hide the panels associated with all tabs within the + * tablist containing this tab. + * @param {Node} tab a tab within the tablist to deselect + */ +function deselectTabList(tab) { + const parent = tab.parentNode; + const grandparent = parent.parentNode; + + Array.from(parent.children) + .forEach(t => t.setAttribute("aria-selected", false)); + + Array.from(grandparent.children) + .slice(1) // Skip tablist + .forEach(panel => panel.setAttribute("hidden", true)); +} + +/** + * Select grouped tabs with the same name, but no the tab + * with the given id. + * @param {Node} name name of grouped tab to be selected + * @param {Node} clickedId id of clicked tab + */ +function selectNamedTabs(name, clickedId=null) { + const groupedTabs = document.querySelectorAll(`.sphinx-tabs-tab[name="${name}"]`); + const tabLists = Array.from(groupedTabs).map(tab => tab.parentNode); + + tabLists + .forEach(tabList => { + // Don't want to change the tabList containing the clicked tab + const clickedTab = tabList.querySelector(`[id="${clickedId}"]`); + if (clickedTab === null ) { + // Select first tab with matching name + const tab = tabList.querySelector(`.sphinx-tabs-tab[name="${name}"]`); + deselectTabList(tab); + selectTab(tab); + } + }) +} + +if (typeof exports === 'undefined') { + exports = {}; +} + +exports.keyTabs = keyTabs; +exports.changeTabs = changeTabs; +exports.selectTab = selectTab; +exports.deselectTabList = deselectTabList; +exports.selectNamedTabs = selectNamedTabs; diff --git a/api/ssapy.accel.Accel.html b/api/ssapy.accel.Accel.html new file mode 100644 index 0000000..d2b728a --- /dev/null +++ b/api/ssapy.accel.Accel.html @@ -0,0 +1,127 @@ + + + + + + + Accel — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Accel

+
+
+class ssapy.accel.Accel(time_breakpoints=None)[source]
+

Bases: object

+

Base class for accelerations.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.accel.AccelConstNTW.html b/api/ssapy.accel.AccelConstNTW.html new file mode 100644 index 0000000..bcaef4d --- /dev/null +++ b/api/ssapy.accel.AccelConstNTW.html @@ -0,0 +1,159 @@ + + + + + + + AccelConstNTW — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AccelConstNTW

+
+
+class ssapy.accel.AccelConstNTW(accelntw, time_breakpoints=None)[source]
+

Bases: Accel

+

Constant acceleration in NTW coordinates.

+

Intended to enable maneuvers. Semimajor axis changes are often done by +accelerating in the in-track direction at perigee, while inclination +change maneuvers are done by accelerating in the cross-track direction. +So these maneuvers are both conveniently implemented in NTW space.

+

This class supports a constant acceleration burn in a fixed direction in +NTW space at a specified time and duration.

+
+

Parameters

+
+
accelntwarray_like, shape(3,)

Direction and magnitude of acceleration in NTW frame, m/s^2.

+
+
time_breakpointsarray_like

Times in GPS seconds when acceleration should be turned on and off. +These alternate; first time is on, second time is off, third time is +back on. must be sorted.

+
+
+

Methods Summary

+ + + + + + +

__call__(r, v, t, **kwargs)

Call self as a function.

+

Methods Documentation

+
+
+__call__(r, v, t, **kwargs)[source]
+

Call self as a function.

+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.accel.AccelDrag.html b/api/ssapy.accel.AccelDrag.html new file mode 100644 index 0000000..a978910 --- /dev/null +++ b/api/ssapy.accel.AccelDrag.html @@ -0,0 +1,184 @@ + + + + + + + AccelDrag — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AccelDrag

+
+
+class ssapy.accel.AccelDrag(recalc_threshold=2592000, **defaultkw)[source]
+

Bases: Accel

+

Acceleration due to atmospheric drag.

+

This class uses the Harris-Priester density model, which includes diurnal +variation in the atmospheric bulge, but omits longer period seasonal +variations.

+

The acceleration also depends on a drag coefficient, which is hard to +determine a priori, but takes on typical values around ~2 to ~2.3 for most +satellites.

+

See Section 3.5 of Montenbruck and Gill for more details.

+
+

Parameters

+
+
recalc_thresholdfloat, optional

Number of seconds past which the code will recompute the +precession/nutation matrix. Default: 86400*30 (30 days)

+
+
defaultkwdict

default parameters for kwargs passed to __call__, +(area, mass, CR)

+
+
+

Methods Summary

+ + + + + + +

__call__(r, v, t[, _T])

Evaluate acceleration at particular place/moment.

+

Methods Documentation

+
+
+__call__(r, v, t, _T=None, **kwargs)[source]
+

Evaluate acceleration at particular place/moment.

+
+

Parameters

+
+
rarray_like, shape(3, )

Position in meters in GCRF frame.

+
+
varray_like, shape(3, )

Velocity in meters per second in GCRF frame.

+
+
tfloat

Time as GPS seconds

+
+
areafloat

Area in meters^2.

+
+
massflat

Mass in kg.

+
+
CDfloat

Drag coefficient. Typical values are ~ 2 - 2.3

+
+
+
+
+

Returns

+
+
accelarray_like, shape(3,)

Acceleration in meters per second^2

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.accel.AccelEarthRad.html b/api/ssapy.accel.AccelEarthRad.html new file mode 100644 index 0000000..6ea4239 --- /dev/null +++ b/api/ssapy.accel.AccelEarthRad.html @@ -0,0 +1,195 @@ + + + + + + + AccelEarthRad — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AccelEarthRad

+
+
+class ssapy.accel.AccelEarthRad(**defaultkw)[source]
+

Bases: Accel

+

Acceleration due to Earth radiation pressure.

+

This is a very simple model in which the direction of the acceleration +is directly away from the Earth and the magnitude is modulated by a single +solar radiation pressure coefficient CR. The coefficient is 1.0 for +purely absorbed light, and 2.0 for purely reflected light. Rough typical +values for a variety of different satellite components are

+
+

~ 1.2 for solar panels +~ 1.3 for a high gain antenna +~ 1.9 for a aluminum coated mylar solar sail.

+
+

The radiation pressure at the Earth’s surface is given as +(230 + 459*k) W/m^2, where 230 is from the thermal radiation of the +earth, and 459 is the reflected sunlight. k is the illuminated +fraction of the earth as seen from the satellite, +assuming the earth is point-like (i.e., neglecting that the +satellite will see less than a full hemisphere for LEO objects). The +radiation pressure goes down like 1/r^2 as an object moves away from the +earth.

+

This is a simplification of the more complex model presented in MG 3.7.1, +neglecting spatial variation in the emitted light and the different +angles to different parts of the earth.

+
+

Parameters

+
+
defaultkwdict

default parameters for kwargs passed to __call__, +(area, mass, CR)

+
+
+

Methods Summary

+ + + + + + +

__call__(r, v, t, **kwargs)

Evaluate acceleration at particular place/moment.

+

Methods Documentation

+
+
+__call__(r, v, t, **kwargs)[source]
+

Evaluate acceleration at particular place/moment.

+
+

Parameters

+
+
rarray_like, shape(3, )

Position in meters in GCRF frame.

+
+
varray_like, shape(3, )

Velocity in meters per second. Unused.

+
+
tfloat

Time as GPS seconds

+
+
areafloat

Area in meters^2.

+
+
massflat

Mass in kg.

+
+
CRfloat

Radiation pressure coefficient.

+
+
+
+
+

Returns

+
+
accelarray_like, shape(3,)

Acceleration in meters per second^2

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.accel.AccelKepler.html b/api/ssapy.accel.AccelKepler.html new file mode 100644 index 0000000..358e0b8 --- /dev/null +++ b/api/ssapy.accel.AccelKepler.html @@ -0,0 +1,168 @@ + + + + + + + AccelKepler — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AccelKepler

+
+
+class ssapy.accel.AccelKepler(mu=398600441800000.0)[source]
+

Bases: Accel

+

Keplerian acceleration. I.e., force is proportional to 1/|r|^2.

+
+

Parameters

+
+
mufloat, optional

Gravitational constant of central body in m^3/s^2. (Default: Earth’s +gravitational constant in WGS84).

+
+
+

Methods Summary

+ + + + + + +

__call__(r, v, t, **kwargs)

Evaluate acceleration at particular place/moment.

+

Methods Documentation

+
+
+__call__(r, v, t, **kwargs)[source]
+

Evaluate acceleration at particular place/moment.

+
+

Parameters

+
+
rarray_like, shape(3, )

Position in meters.

+
+
varray_like, shape(3, )

Velocity in meters per second. Unused.

+
+
tfloat

Time as GPS seconds. Unused

+
+
+
+
+

Returns

+
+
accelarray_like, shape(3,)

Acceleration in meters per second^2

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.accel.AccelProd.html b/api/ssapy.accel.AccelProd.html new file mode 100644 index 0000000..e905440 --- /dev/null +++ b/api/ssapy.accel.AccelProd.html @@ -0,0 +1,141 @@ + + + + + + + AccelProd — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AccelProd

+
+
+class ssapy.accel.AccelProd(accel, factor)[source]
+

Bases: Accel

+

Methods Summary

+ + + + + + +

__call__(r, v, t, **kwargs)

Call self as a function.

+

Methods Documentation

+
+
+__call__(r, v, t, **kwargs)[source]
+

Call self as a function.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.accel.AccelSolRad.html b/api/ssapy.accel.AccelSolRad.html new file mode 100644 index 0000000..177a44b --- /dev/null +++ b/api/ssapy.accel.AccelSolRad.html @@ -0,0 +1,189 @@ + + + + + + + AccelSolRad — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AccelSolRad

+
+
+class ssapy.accel.AccelSolRad(**defaultkw)[source]
+

Bases: Accel

+

Acceleration due to solar radiation pressure.

+

This is a relatively simple model in which the direction of the acceleration +is directly away from the sun and the magnitude is modulated by a single +solar radiation pressure coefficient CR. The coefficient is 1.0 for +purely absorbed light, and 2.0 for purely reflected light. Rough typical +values for a variety of different satellite components are

+
+

~ 1.2 for solar panels +~ 1.3 for a high gain antenna +~ 1.9 for a aluminum coated mylar solar sail.

+
+

Additionally, this class models the Earth’s shadow as a cylinder. Either +the satellite is inside the cylinder, in which case the acceleration from +this term is 0, or the satellite is outside the cylinder, in which case the +full magnitude of the acceleration is computed.

+

More details can be found in Section 3.4 of Montenbruck and Gill.

+
+

Parameters

+
+
defaultkwdict

default parameters for kwargs passed to __call__, +(area, mass, CR)

+
+
+

Methods Summary

+ + + + + + +

__call__(r, v, t, **kwargs)

Evaluate acceleration at particular place/moment.

+

Methods Documentation

+
+
+__call__(r, v, t, **kwargs)[source]
+

Evaluate acceleration at particular place/moment.

+
+

Parameters

+
+
rarray_like, shape(3, )

Position in meters in GCRF frame.

+
+
varray_like, shape(3, )

Velocity in meters per second. Unused.

+
+
tfloat

Time as GPS seconds

+
+
areafloat

Area in meters^2.

+
+
massflat

Mass in kg.

+
+
CRfloat

Radiation pressure coefficient.

+
+
+
+
+

Returns

+
+
accelarray_like, shape(3,)

Acceleration in meters per second^2

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.accel.AccelSum.html b/api/ssapy.accel.AccelSum.html new file mode 100644 index 0000000..1c1d4c0 --- /dev/null +++ b/api/ssapy.accel.AccelSum.html @@ -0,0 +1,171 @@ + + + + + + + AccelSum — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AccelSum

+
+
+class ssapy.accel.AccelSum(accels)[source]
+

Bases: Accel

+

Acceleration defined as the sum of other accelerations.

+

Note, besides directly invoking this class, you can simply use the + +operator on any two Accel subclasses too.

+
+

Parameters

+
+
accelslist of Accel

Accelerations to add

+
+
+

Methods Summary

+ + + + + + +

__call__(r, v, t, **kwargs)

Evaluate acceleration at particular place/moment.

+

Methods Documentation

+
+
+__call__(r, v, t, **kwargs)[source]
+

Evaluate acceleration at particular place/moment.

+
+

Parameters

+
+
rarray_like, shape(3, )

Position in meters.

+
+
varray_like, shape(3, )

Velocity in meters per second.

+
+
tfloat

Time as GPS seconds

+
+
**kwargsdict

Other arguments to pass on to individual terms of sum.

+
+
+
+
+

Returns

+
+
accelarray_like, shape(3,)

Acceleration in meters per second^2

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.body.Body.html b/api/ssapy.body.Body.html new file mode 100644 index 0000000..6a97c03 --- /dev/null +++ b/api/ssapy.body.Body.html @@ -0,0 +1,144 @@ + + + + + + + Body — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Body

+
+
+class ssapy.body.Body(mu, radius, position=<function Body.<lambda>>, orientation=<function Body.<lambda>>, harmonics=None)[source]
+

Bases: object

+

A celestial body.

+
+

Parameters

+
+
mufloat

Gravitational parameter of the body in m^3/s^2.

+
+
radiusfloat

Radius of the body in meters.

+
+
positioncallable, optional

A callable that returns the position vector of the body in GCRF at a +given time. [default: zero vector]

+
+
orientationcallable, optional

A callable that returns the orientation matrix of the body in GCRF at a +given time. [default: identity matrix]

+
+
harmonicsHarmonicCoefficients, optional

Harmonic coefficients for the body. [default: None]

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.body.EarthOrientation.html b/api/ssapy.body.EarthOrientation.html new file mode 100644 index 0000000..a24cd87 --- /dev/null +++ b/api/ssapy.body.EarthOrientation.html @@ -0,0 +1,164 @@ + + + + + + + EarthOrientation — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

EarthOrientation

+
+
+class ssapy.body.EarthOrientation(recalc_threshold=2592000)[source]
+

Bases: object

+

Orientation of earth in GCRF. This is a callable class that returns the +orientation matrix at a given time.

+
+

Parameters

+
+
recalc_thresholdfloat

Threshold for recomputing the orientation matrix. Default is 30 days.

+
+
+

Methods Summary

+ + + + + + +

__call__(t[, _E])

Return the orientation matrix at time t.

+

Methods Documentation

+
+
+__call__(t, _E=None)[source]
+

Return the orientation matrix at time t.

+
+

Parameters

+
+
tfloat

Time in GPS seconds.

+
+
+
+
+

Returns

+
+
Enumpy.ndarray

Orientation matrix at time t.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.body.MoonOrientation.html b/api/ssapy.body.MoonOrientation.html new file mode 100644 index 0000000..ef50b3c --- /dev/null +++ b/api/ssapy.body.MoonOrientation.html @@ -0,0 +1,157 @@ + + + + + + + MoonOrientation — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

MoonOrientation

+
+
+class ssapy.body.MoonOrientation[source]
+

Bases: object

+

Orientation of moon in GCRF. This is a callable class that returns the +orientation matrix at a given time.

+

Methods Summary

+ + + + + + +

__call__(t[, _E])

Return the orientation matrix at time t.

+

Methods Documentation

+
+
+__call__(t, _E=None)[source]
+

Return the orientation matrix at time t.

+
+

Parameters

+
+
tfloat

Time in GPS seconds.

+
+
+
+
+

Returns

+
+
Enumpy.ndarray

Orientation matrix at time t.

+
+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.body.MoonPosition.html b/api/ssapy.body.MoonPosition.html new file mode 100644 index 0000000..af34277 --- /dev/null +++ b/api/ssapy.body.MoonPosition.html @@ -0,0 +1,157 @@ + + + + + + + MoonPosition — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

MoonPosition

+
+
+class ssapy.body.MoonPosition[source]
+

Bases: object

+

Position of moon in GCRF. This is a callable class that returns the +position vector at a given time.

+

Methods Summary

+ + + + + + +

__call__(t)

Return the position vector at time t.

+

Methods Documentation

+
+
+__call__(t)[source]
+

Return the position vector at time t.

+
+

Parameters

+
+
tfloat

Time in GPS seconds.

+
+
+
+
+

Returns

+
+
posnumpy.ndarray

Position vector at time t in meters.

+
+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.body.PlanetPosition.html b/api/ssapy.body.PlanetPosition.html new file mode 100644 index 0000000..3b1805e --- /dev/null +++ b/api/ssapy.body.PlanetPosition.html @@ -0,0 +1,157 @@ + + + + + + + PlanetPosition — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

PlanetPosition

+
+
+class ssapy.body.PlanetPosition(planet_index)[source]
+

Bases: object

+

Position of a planet in GCRF. This is a callable class that returns the +position vector at a given time.

+

Methods Summary

+ + + + + + +

__call__(t)

Return the position vector at time t.

+

Methods Documentation

+
+
+__call__(t)[source]
+

Return the position vector at time t.

+
+

Parameters

+
+
tfloat

Time in GPS seconds.

+
+
+
+
+

Returns

+
+
posnumpy.ndarray

Position vector at time t in meters.

+
+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.body.SunPosition.html b/api/ssapy.body.SunPosition.html new file mode 100644 index 0000000..1dde571 --- /dev/null +++ b/api/ssapy.body.SunPosition.html @@ -0,0 +1,157 @@ + + + + + + + SunPosition — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

SunPosition

+
+
+class ssapy.body.SunPosition[source]
+

Bases: object

+

Position of sun in GCRF. This is a callable class that returns the +position vector at a given time.

+

Methods Summary

+ + + + + + +

__call__(t)

Return the position vector at time t.

+

Methods Documentation

+
+
+__call__(t)[source]
+

Return the position vector at time t.

+
+

Parameters

+
+
tfloat

Time in GPS seconds.

+
+
+
+
+

Returns

+
+
posnumpy.ndarray

Position vector at time t in meters.

+
+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.body.get_body.html b/api/ssapy.body.get_body.html new file mode 100644 index 0000000..ac3ff4c --- /dev/null +++ b/api/ssapy.body.get_body.html @@ -0,0 +1,142 @@ + + + + + + + get_body — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_body

+
+
+ssapy.body.get_body(name, model=None)[source]
+

Get a Body object for a named body.

+
+

Parameters

+
+
namestr

Name of the body. Must be one of “earth”, “moon”, “sun”, or other supported planets.

+
+
modelstr, optional only available for Earth

Name of the Earth harmonic model to use. Default is EGM84. options: EGM96, EGM2008.

+
+
+
+
+

Returns

+
+
bodyBody

Body object for the named body.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.HashableArrayContainer.html b/api/ssapy.compute.HashableArrayContainer.html new file mode 100644 index 0000000..619c88d --- /dev/null +++ b/api/ssapy.compute.HashableArrayContainer.html @@ -0,0 +1,126 @@ + + + + + + + HashableArrayContainer — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

HashableArrayContainer

+
+
+class ssapy.compute.HashableArrayContainer(arr)[source]
+

Bases: object

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.M_v.html b/api/ssapy.compute.M_v.html new file mode 100644 index 0000000..1ce287f --- /dev/null +++ b/api/ssapy.compute.M_v.html @@ -0,0 +1,125 @@ + + + + + + + M_v — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

M_v

+
+
+ssapy.compute.M_v(r_sat, r_earth, r_sun, r_moon=False, radius=0.4, albedo=0.2, sun_Mag=4.8, albedo_earth=0.3, albedo_moon=0.12, albedo_back=0.5, albedo_front=0.05, area_panels=100, return_components=False)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.altaz.html b/api/ssapy.compute.altaz.html new file mode 100644 index 0000000..80f7526 --- /dev/null +++ b/api/ssapy.compute.altaz.html @@ -0,0 +1,166 @@ + + + + + + + altaz — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

altaz

+
+
+ssapy.compute.altaz(orbit, time, observer, propagator=KeplerianPropagator(), obsAngleCorrection=None)[source]
+

Calculate observed altitude and azimuth of orbiting objects as viewed at +specified times and locations.

+
+

Parameters

+
+
orbitOrbit or list of Orbit (n,)

Orbits for which to calculate direction cosines.

+
+
timearray_like or astropy.time.Time (m,)

If float (array), then should correspond to GPS seconds; i.e., seconds +since 1980-01-06 00:00:00 UTC

+
+
observerEarthObserver

Where on Earth to compute alt and az.

+
+
propagatorPropagator, optional

The propagator instance to use.

+
+
obsAngleCorrection{None, “linear”, “exact”}, optional

Correct actual angle to observed angle, meaning account for light-time +delay, and aberration due to the observer’s velocity. None means don’t +do any correction. “linear” means do an aberration correction and first +order light-time correction. “exact” means do an aberration correction +and iteratively solve for the exact light-time correction. (The +“linear” correction is almost always sufficiently accuration).

+
+
+
+
+

Notes

+

If orbit is scalar-valued (an Orbit instead of a list of Orbit), then that +dimension will be squeezed out in the return value. Likewise, if time is +scalar, that dimension will be squeezed out.

+

For Keplerian orbit propagation it is more efficient to use a “vector Orbit” +instead of a list of single scalar Orbits.

+

When doing light time corrections, the time argument is the arrival time of +the photons at the observer, as opposed to the emission time at the +satellite.

+
+
+

Returns

+
+
alt, azarray_like (n, m)

Altitude and azimuth in radians.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.dircos.html b/api/ssapy.compute.dircos.html new file mode 100644 index 0000000..89f43c4 --- /dev/null +++ b/api/ssapy.compute.dircos.html @@ -0,0 +1,179 @@ + + + + + + + dircos — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

dircos

+
+
+ssapy.compute.dircos(orbit, time, obsPos=None, obsVel=None, observer=None, propagator=KeplerianPropagator(), obsAngleCorrection=None)[source]
+

Calculate observed direction-cosines of orbiting objects as viewed at +specified times and positions.

+

The direction cosines are the cosines of the angles between the vector +pointing towards the orbiting object and the x, y, z axes. An equivalent +description is that they are the components of the unit vector pointing +towards the orbiting object.

+
+

Parameters

+
+
orbitOrbit or list of Orbit (n,)

Orbit(s) for which to calculate direction cosines.

+
+
timearray_like or astropy.time.Time (m,)

If float (array), then should correspond to GPS seconds; i.e., seconds +since 1980-01-06 00:00:00 UTC

+
+
obsPosarray_like (m, 3), optional

Position of observer at given time.

+
+
obsVelarray_like (m, 3), optional

Velocity of observer at given time. Only required if correcting for +diurnal aberration.

+
+
observerObserver or list of Observers (m,), optional

Observer(s) used to calculate obsPos and obsVel.

+
+
propagatorPropagator, optional

The propagator instance to use.

+
+
obsAngleCorrection{None, “linear”, “exact”}, optional

Correct actual angle to observed angle, meaning account for light-time +delay, and aberration due to the observer’s velocity. None means don’t +do any correction. “linear” means do an aberration correction and first +order light-time correction. “exact” means do an aberration correction +and iteratively solve for the exact light-time correction. (The +“linear” correction is almost always sufficiently accuration).

+
+
+
+
+

Notes

+

Exactly 1 of obsPos and observer must be supplied. observer and +obsPos follow similar broadcasting rules as detailed below explicitly only +for obsPos.

+

The length of time and obsPos must match or be broadcastable to match. +If orbit is scalar-valued (an Orbit instead of a list of Orbit), then that +dimension will be squeezed out in the return value. Likewise, if both +time and obsPos are scalar, that dimension will be squeezed out.

+

For Keplerian orbit propagation it is more efficient to use a “vector Orbit” +instead of a list of single scalar Orbits.

+

When doing light time corrections, the time argument is the arrival time of +the photons at the observer, as opposed to the emission time at the +satellite.

+
+
+

Returns

+
+
dircosarray_like (n, m, 3)

Direction cosines on the outer product of orbit(s) and time/obsPos.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.earthShadowCoords.html b/api/ssapy.compute.earthShadowCoords.html new file mode 100644 index 0000000..54cbac9 --- /dev/null +++ b/api/ssapy.compute.earthShadowCoords.html @@ -0,0 +1,153 @@ + + + + + + + earthShadowCoords — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

earthShadowCoords

+
+
+ssapy.compute.earthShadowCoords(r, time)[source]
+

Determine components of position r parallel and perpendicular to sun +unit vector.

+

The sun unit vector points from the center of the sun through the center of +the Earth. Decomposing a satellite position into these coordinates yields a +simple model of whether or not the satellite is in Earth’s shadow:

+
+

r_par, r_perp = earthShadowCoords(r, time) +inShadow = r_par > 0 and r_perp < EARTH_RADIUS

+
+
+

Parameters

+
+
rndarray (3,)

Position (GCRF) in meters

+
+
timefloat or astropy.time.Time

If float, then should correspond to GPS seconds; i.e., seconds +since 1980-01-06 00:00:00 UTC

+
+
+
+
+

Returns

+
+
r_parfloat

Position of satellite projected onto the sun unit vector in meters.

+
+
r_perpfloat

Distance of satellite from Earth-Sun line in meters.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.earth_shine.html b/api/ssapy.compute.earth_shine.html new file mode 100644 index 0000000..99fd3e1 --- /dev/null +++ b/api/ssapy.compute.earth_shine.html @@ -0,0 +1,125 @@ + + + + + + + earth_shine — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

earth_shine

+
+
+ssapy.compute.earth_shine(r_sat, r_earth, r_sun, radius, albedo, albedo_earth, albedo_back, area_panels)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.find_passes.html b/api/ssapy.compute.find_passes.html new file mode 100644 index 0000000..4025ba6 --- /dev/null +++ b/api/ssapy.compute.find_passes.html @@ -0,0 +1,172 @@ + + + + + + + find_passes — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

find_passes

+
+
+ssapy.compute.find_passes(orbit, observers, tStart, tSpan, dt, propagator=KeplerianPropagator(), horizon=0.3490658503988659)[source]
+

Find satellite overhead passes for a collection of observers.

+

Uses a brute force test of a grid of time points from tStart to tStart+tSpan +separated by dt.

+

Returns passes even if they occur during the daytime or if the satellite is +not illuminated by the sun. The only criterion for a successful “pass” is +for the topocentric altitude of the satellite to be above the input +horizon. More details about a pass can subsequently be obtained by +running the refine_passes function.

+

Note this function is only suitable for `EarthObserver`s and not +`OrbitalObserver`s.

+
+

Parameters

+
+
orbitOrbit

Satellite orbit in question.

+
+
observersList of EarthObserver.

Earth observers for which to check satellite visibility.

+
+
tStartfloat or astropy.time.Time

Beginning of search window. +If float, then should correspond to GPS seconds; i.e., seconds +since 1980-01-06 00:00:00 UTC

+
+
tSpanfloat or Quantity

Time span in which to search for passes. +If float, then seconds.

+
+
dtfloat or Quantity

Time increment to use during search. Satellite visibility will be +computed every dt increment. Smaller values will decrease the +probability that a short duration pass will be missed, but will make the +search take longer to complete. +If float, then seconds.

+
+
propagatorPropagator, optional

The propagator instance to use.

+
+
horizonfloat or Quantity, optional

Minimum altitude for which to consider a satellite “visible”. +If float, then should be in radians.

+
+
+
+
+

Returns

+
+
passDictdict

keys are EarthObserver`s. +values are lists (possibly empty) of `astropy.Time corresponding to +visible passes of the satellite. Only one time is returned per pass, +so multiple times in the return list indicate multiple distinct passes.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.getAngle.html b/api/ssapy.compute.getAngle.html new file mode 100644 index 0000000..edbda4a --- /dev/null +++ b/api/ssapy.compute.getAngle.html @@ -0,0 +1,125 @@ + + + + + + + getAngle — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

getAngle

+
+
+ssapy.compute.getAngle(a, b, c)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.groundTrack.html b/api/ssapy.compute.groundTrack.html new file mode 100644 index 0000000..6bc1281 --- /dev/null +++ b/api/ssapy.compute.groundTrack.html @@ -0,0 +1,166 @@ + + + + + + + groundTrack — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

groundTrack

+
+
+ssapy.compute.groundTrack(orbit, time, propagator=KeplerianPropagator(), format='geodetic')[source]
+

Calculate satellite ground track on the outer product of all supplied times and +statevectors or orbits.

+
+

Parameters

+

r : array_like (n,3) Position (m)

+
+
timearray_like or astropy.time.Time (m,)

If float (array), then should correspond to GPS seconds; i.e., seconds +since 1980-01-06 00:00:00 UTC

+
+
+

or

+
+
orbitrarray_like (n,3) Position (m) or

Orbit or list of Orbit (n,) +Desired orbit(s)

+
+
propagatorPropagator, optional

The propagator instance to use.

+
+
format‘geodetic’ or ‘cartesian’

If ‘geodetic’, then returns longitude, latitude, height. +If ‘cartesian’, then returns xyz in ITRF frame.

+
+
+
+
+

Notes

+

If orbit or time is scalar valued (as opposed to a list of Orbit, e.g.) then +the corresponding dimension of the output will be squeezed out.

+

For Keplerian orbit propagation it is more efficient to use a “vector Orbit” +instead of a list of single scalar Orbits.

+
+
+

Returns

+
+
lon, lat, heightarray_like (n, m, 3)

Radians and meters.

+
+
+

or

+
+
x, y, zarray_like(n, m, 3)

Meters.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.keplerian_orbital_elements.html b/api/ssapy.compute.keplerian_orbital_elements.html new file mode 100644 index 0000000..3c6e5fe --- /dev/null +++ b/api/ssapy.compute.keplerian_orbital_elements.html @@ -0,0 +1,125 @@ + + + + + + + keplerian_orbital_elements — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

keplerian_orbital_elements

+
+
+ssapy.compute.keplerian_orbital_elements(r_, v_, mu_barycenter=398600441800000.0)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.moon_shine.html b/api/ssapy.compute.moon_shine.html new file mode 100644 index 0000000..603462f --- /dev/null +++ b/api/ssapy.compute.moon_shine.html @@ -0,0 +1,125 @@ + + + + + + + moon_shine — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

moon_shine

+
+
+ssapy.compute.moon_shine(r_moon, r_sat, r_earth, r_sun, radius, albedo, albedo_moon, albedo_back, albedo_front, area_panels)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.quickAltAz.html b/api/ssapy.compute.quickAltAz.html new file mode 100644 index 0000000..75bffde --- /dev/null +++ b/api/ssapy.compute.quickAltAz.html @@ -0,0 +1,169 @@ + + + + + + + quickAltAz — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

quickAltAz

+
+
+ssapy.compute.quickAltAz(orbit, time, observer, propagator=KeplerianPropagator(), obsAngleCorrection=None)[source]
+

Quickly estimate observed altitude and azimuth of orbiting objects as +viewed at specified times and locations.

+

This algorithm approximates “up” as pointing directly away from the center +of the Earth, instead of normal to the reference ellipsoid. Use altAz if +you want values wrt the reference ellipsoid.

+
+

Parameters

+
+
orbitOrbit or list of Orbit (n,)

Orbits for which to calculate direction cosines.

+
+
timearray_like or astropy.time.Time (m,)

If float (array), then should correspond to GPS seconds; i.e., seconds +since 1980-01-06 00:00:00 UTC

+
+
observerEarthObserver

Where on Earth to compute alt and az.

+
+
propagatorPropagator, optional

The propagator instance to use.

+
+
obsAngleCorrection{None, “linear”, “exact”}, optional

Correct actual angle to observed angle, meaning account for light-time +delay, and aberration due to the observer’s velocity. None means don’t +do any correction. “linear” means do an aberration correction and first +order light-time correction. “exact” means do an aberration correction +and iteratively solve for the exact light-time correction. (The +“linear” correction is almost always sufficiently accuration).

+
+
+
+
+

Notes

+

If orbit is scalar-valued (an Orbit instead of a list of Orbit), then that +dimension will be squeezed out in the return value. Likewise, if time is +scalar, that dimension will be squeezed out.

+

For Keplerian orbit propagation it is more efficient to use a “vector Orbit” +instead of a list of single scalar Orbits.

+

When doing light time corrections, the time argument is the arrival time of +the photons at the observer, as opposed to the emission time at the +satellite.

+
+
+

Returns

+
+
alt, azarray_like (n, m)

Altitude and azimuth in radians.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.radec.html b/api/ssapy.compute.radec.html new file mode 100644 index 0000000..dc26fc5 --- /dev/null +++ b/api/ssapy.compute.radec.html @@ -0,0 +1,190 @@ + + + + + + + radec — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

radec

+
+
+ssapy.compute.radec(orbit, time, obsPos=None, obsVel=None, observer=None, propagator=KeplerianPropagator(), obsAngleCorrection=None, rate=False)[source]
+

Calculate observed right ascension, declination, and slant range of +orbiting objects as viewed at specified times and positions.

+
+

Parameters

+
+
orbitOrbit or list of Orbit (n,)

Orbit(s) for which to calculate ra and dec.

+
+
timearray_like or astropy.time.Time (m,)

If float (array), then should correspond to GPS seconds; i.e., seconds +since 1980-01-06 00:00:00 UTC

+
+
obsPosarray_like (m, 3), optional

Positions of observers at given times.

+
+
obsVelarray_like (m, 3), optional

Velocity of observers at given times.

+
+
observerObserver or list of Observers (m,), optional

Observer(s) used to calculate obsPos.

+
+
propagatorPropagator, optional

The propagator instance to use.

+
+
ratebool

If True, return additionally the time derivatives of the quantity, times +cos(dec) in the case of right ascension.

+
+
obsAngleCorrection{None, “linear”, “exact”}, optional

Correct actual angle to observed angle, meaning account for light-time +delay, and aberration due to the observer’s velocity. None means don’t +do any correction. “linear” means do an aberration correction and first +order light-time correction. “exact” means do an aberration correction +and iteratively solve for the exact light-time correction. (The +“linear” correction is almost always sufficiently accuration).

+
+
+
+
+

Notes

+

Exactly 1 of obsPos and observer must be supplied. observer and +obsPos follow similar broadcasting rules as detailed below explicitly only +for obsPos.

+

The length of time and obsPos must match or be broadcastable to match. +If orbit is scalar-valued (an Orbit instead of a list of Orbit), then that +dimension will be squeezed out in the return value. Likewise, if both +time and obsPos are scalar, that dimension will be squeezed out.

+

For Keplerian orbit propagation it is more efficient to use a “vector Orbit” +instead of a list of single scalar Orbits.

+

When doing light time corrections, the time argument is the arrival time of +the photons at the observer, as opposed to the emission time at the +satellite.

+
+
+

Returns

+
+
ra, decarray_like (n, m)

Right ascension and declination in radians.

+
+
rangearray_like (n, m)

(Slant) range in meters.

+
+
+

If rate, also: +raRate : array_like (n, m)

+
+

Time derivatives of right ascension times cos(dec), rad / sec.

+
+
+
decRatearray_like (n, m)

Time derivative of declination, rad / sec.

+
+
rangeRatearray_like (n, m)

Time derivative of range, meter / s.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.radecRate.html b/api/ssapy.compute.radecRate.html new file mode 100644 index 0000000..08aa017 --- /dev/null +++ b/api/ssapy.compute.radecRate.html @@ -0,0 +1,186 @@ + + + + + + + radecRate — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

radecRate

+
+
+ssapy.compute.radecRate(orbit, time, obsPos=None, obsVel=None, observer=None, propagator=KeplerianPropagator(), obsAngleCorrection=None)[source]
+

Calculate ra/dec rate and slant range rate of orbit at specified times +and observer positions and velocities.

+

DEPRECATED. Use radec(…, rate=True) in new code.

+
+

Parameters

+
+
orbitOrbit or list of Orbit (n,)

Orbit(s) for which to calculate slant range rate.

+
+
timearray_like or astropy.time.Time (m,)

If float (array), then should correspond to GPS seconds; i.e., seconds +since 1980-01-06 00:00:00 UTC

+
+
obsPosarray_like (m, 3), optional

Positions of observers at given times.

+
+
obsVelarray_like (m, 3), optional

Velocity of observers at given times.

+
+
observerObserver or list of Observers (m,), optional

Observer(s) used to calculate obsPos and obsVel.

+
+
propagatorPropagator, optional

The propagator instance to use.

+
+
obsAngleCorrection{None, “linear”, “exact”}, optional

Correct actual angle to observed angle, meaning account for light-time +delay, and aberration due to the observer’s velocity. None means don’t +do any correction. “linear” means do an aberration correction and first +order light-time correction. “exact” means do an aberration correction +and iteratively solve for the exact light-time correction. (The +“linear” correction is almost always sufficiently accuration).

+
+
+
+
+

Notes

+

Exactly 1 of obsPos and observer must be supplied. observer and +obsPos follow similar broadcasting rules as detailed below explicitly only +for obsPos. If obsPos is specified, obsVel must also be specified and +congruent to obsPos.

+

The length of time and obsPos must match or be broadcastable to match. +If orbit is scalar-valued (an Orbit instead of a list of Orbit), then that +dimension will be squeezed out in the return value. Likewise, if both +time and obsPos are scalar, that dimension will be squeezed out.

+

For Keplerian orbit propagation it is more efficient to use a “vector Orbit” +instead of a list of single scalar Orbits.

+

When doing light time corrections, the time argument is the arrival time of +the photons at the observer, as opposed to the emission time at the +satellite.

+
+
+

Returns

+
+
raarray_like (n, m)

right ascension in radians

+
+
raRatearray_like (n, m)

Rate of change of right ascension*cos(dec) in radians per second.

+
+
decarray_link (n, m)

declination in radians

+
+
decRatearray_like (n, m)

Rate of change of declination in radians per second.

+
+
slantRangearray_like (n, m)

Range in meters

+
+
slantRangeRatearray_like (n, m)

Slant range rate in meters per second.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.radecRateObsToRV.html b/api/ssapy.compute.radecRateObsToRV.html new file mode 100644 index 0000000..c34b952 --- /dev/null +++ b/api/ssapy.compute.radecRateObsToRV.html @@ -0,0 +1,161 @@ + + + + + + + radecRateObsToRV — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

radecRateObsToRV

+
+
+ssapy.compute.radecRateObsToRV(ra, dec, slantRange, raRate=None, decRate=None, slantRangeRate=None, obsPos=None, obsVel=None)[source]
+

Convert object angles and observer position to 3D observer position

+

This only does the geometric part; it ignores light travel time. This +is the inverse of rvObsToRaDecRate.

+

If obsVel is None, then the returned velocity will also be None.

+
+

Parameters

+
+
raarray_like (…)

right ascension in radians

+
+
decarray_like (…)

declination in radians

+
+
slantRangearray_like (…)

Range in meters

+
+
raRatearray_like (…)

Rate of change of right ascension*cos(dec) in radians per second.

+
+
decRatearray_like (…)

Rate of change of declination in radians per second.

+
+
slantRangeRatearray_like (…)

Slant range rate in meters per second.

+
+
obsPosarray_like (…, 3)

Observer position in meters

+
+
obsVelarray_like (…, 3)

Observer velocity in meters

+
+
+
+
+

Returns

+
+
rarray_like (…, 3)

object position in meters

+
+
varray_like (…, 3)

object velocity in meters per second +observer velocity in meters per second

+
+
+

v is None if obsVel is None.

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.refine_pass.html b/api/ssapy.compute.refine_pass.html new file mode 100644 index 0000000..f03e8ac --- /dev/null +++ b/api/ssapy.compute.refine_pass.html @@ -0,0 +1,181 @@ + + + + + + + refine_pass — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

refine_pass

+
+
+ssapy.compute.refine_pass(orbit, observer, time, propagator=KeplerianPropagator(), horizon=0.3490658503988659, maxSpan=86400.0)[source]
+

Refine a satellite overhead pass.

+
+

Parameters

+
+
orbitOrbit

Orbit in question.

+
+
observerEarthObserver.

Observer for which to refine pass.

+
+
timefloat or astropy.time.Time

A time when satellite is visible to observer. (Found using +find_passes, for instance) +If float, then should correspond to GPS seconds; i.e., seconds +since 1980-01-06 00:00:00 UTC

+
+
propagatorPropagator, optional

The propagator instance to use.

+
+
horizonfloat or Quantity, optional

Minimum altitude for which to consider a satellite “visible”. +If float, then should be in radians.

+
+
maxSpanfloat or Quantity, optional

Maximum amount of time before or after time to search for +rise/set times, or time of max altitude. +If float, then seconds.

+
+
+
+
+

Returns

+
+
dict

Key/values are: +tStart : Time

+
+

Time at which Orbit rises above horizon

+
+
+
tEndTime

Time at which Orbit rises above horizon

+
+
tMaxAltTime

Time Orbit passes through maximum altitude

+
+
maxAltQuantity

Maximum altitude

+
+
durationQuantity

Duration of pass.

+
+
illumAtStartbool

Is satellite illuminated at tStart?

+
+
illumAtEndbool

Is satellite illuminated at tEnd?

+
+
tTerminatorTime or None

If illumAtStart != illumAtEnd, then time satellite passes through +cylindrical terminator shadow. Otherwise, None.

+
+
sunAltStartQuantity

Altitude of sun at tStart

+
+
sunAltEndQuantity

Altitude of sun at tEnd

+
+
+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.rv.html b/api/ssapy.compute.rv.html new file mode 100644 index 0000000..e7f2995 --- /dev/null +++ b/api/ssapy.compute.rv.html @@ -0,0 +1,155 @@ + + + + + + + rv — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

rv

+
+
+ssapy.compute.rv(orbit, time, propagator=KeplerianPropagator())[source]
+

Calculate positions and velocities on the outer product of all supplied +orbits and times.

+
+

Parameters

+
+
orbitOrbit or list of Orbit (n,)

Desired orbit(s)

+
+
timearray_like or astropy.time.Time (m,)

If float (array), then should correspond to GPS seconds; i.e., seconds +since 1980-01-06 00:00:00 UTC

+
+
propagatorPropagator, optional

The propagator instance to use.

+
+
+
+
+

Notes

+

If orbit or time is scalar valued (as opposed to a list of Orbit, e.g.) then +the corresponding dimension of the output will be squeezed out.

+

For Keplerian orbit propagation it is more efficient to use a “vector Orbit” +instead of a list of single scalar Orbits.

+
+
+

Returns

+
+
rarray_like (n, m, 3)

Position in meters.

+
+
varray_like (n, m, 3)

Velocity in meters per second.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.rvObsToRaDecRate.html b/api/ssapy.compute.rvObsToRaDecRate.html new file mode 100644 index 0000000..d68b003 --- /dev/null +++ b/api/ssapy.compute.rvObsToRaDecRate.html @@ -0,0 +1,159 @@ + + + + + + + rvObsToRaDecRate — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

rvObsToRaDecRate

+
+
+ssapy.compute.rvObsToRaDecRate(r, v, obsPos=None, obsVel=None)[source]
+

Convert object and observer position and velocity to angles.

+

This only does the geometric part; it ignores light travel time, +which may be applied to the object location before input. Assumes +that r, v, obsPos, and obsVel all have common shape.

+
+

Parameters

+
+
rarray_like (…, 3)

object position in meters

+
+
varray_like (…, 3)

object velocity in meters per second

+
+
obsPosarray_like (…, 3)

observer position in meters

+
+
obsVelarray_like (…, 3), optional

observer velocity in meters per second

+
+
+
+
+

Returns

+
+
raarray_like (…)

right ascension in radians

+
+
decarray_link (…)

declination in radians

+
+
slantRangearray_like (…)

Range in meters

+
+
raRatearray_like (…)

Rate of change of right ascension*cos(dec) in radians per second.

+
+
decRatearray_like (…)

Rate of change of declination in radians per second.

+
+
slantRangeRatearray_like (…)

Slant range rate in meters per second.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.compute.sun_shine.html b/api/ssapy.compute.sun_shine.html new file mode 100644 index 0000000..77b1fe1 --- /dev/null +++ b/api/ssapy.compute.sun_shine.html @@ -0,0 +1,125 @@ + + + + + + + sun_shine — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

sun_shine

+
+
+ssapy.compute.sun_shine(r_sat, r_earth, r_sun, radius, albedo, albedo_front, area_panels)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.CircVelocityPrior.html b/api/ssapy.correlate_tracks.CircVelocityPrior.html new file mode 100644 index 0000000..a88d6f2 --- /dev/null +++ b/api/ssapy.correlate_tracks.CircVelocityPrior.html @@ -0,0 +1,177 @@ + + + + + + + CircVelocityPrior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

CircVelocityPrior

+
+
+class ssapy.correlate_tracks.CircVelocityPrior(sigma=0.19804205158855578)[source]
+

Bases: object

+

Gaussian prior that log(GM/r/v^2) = 0.

+
+

Parameters

+
+
sigmafloat

Prior standard deviation on log(GM/r/v^2), dimensionless.

+
+
+
+
+

Attributes

+

sigma

+
+
+

Methods

+
+
__call__(orbit)

Returns log prior probability of given orbit.

+
+
+

Methods Summary

+ + + + + + +

__call__(orbit, distance[, chi])

Return log prior probability of given orbit.

+

Methods Documentation

+
+
+__call__(orbit, distance, chi=False)[source]
+

Return log prior probability of given orbit.

+
+

Parameters

+
+
orbitOrbit

The given orbit.

+
+
chibool

If True, return chi corresponding to log probability, rather than +log probability.

+
+
+
+
+

Returns

+
+
logpriorfloat

The log of the prior probability for given orbit.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.GaussPrior.html b/api/ssapy.correlate_tracks.GaussPrior.html new file mode 100644 index 0000000..3199502 --- /dev/null +++ b/api/ssapy.correlate_tracks.GaussPrior.html @@ -0,0 +1,182 @@ + + + + + + + GaussPrior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

GaussPrior

+
+
+class ssapy.correlate_tracks.GaussPrior(mu, cinvcholfac, translator)[source]
+

Bases: object

+

Gaussian prior on parameters.

+
+

Parameters

+
+
muarray_like (6)

Mean of prior

+
+
cinvcholfacarray_like (6, 6)

Inverse Cholesky factor for covariance matrix, +chi = cinvcholfac*(param-mu)

+
+
translatorfunction(orbit) -> param

function that translates from orbits to parameters

+
+
+
+
+

Attributes

+

mu, cinvcholfac, tranlator

+
+
+

Methods

+
+
__call__(orbit)

Returns log prior probability of given orbit.

+
+
+

Methods Summary

+ + + + + + +

__call__(orbit[, distance, chi])

Return log prior probability of given orbit.

+

Methods Documentation

+
+
+__call__(orbit, distance=None, chi=False)[source]
+

Return log prior probability of given orbit.

+
+

Parameters

+
+
orbitOrbit

The given orbit.

+
+
chibool

If True, return chi corresponding to log probability, rather than +log probability.

+
+
+
+
+

Returns

+
+
logpriorfloat

The log of the prior probability for given orbit.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.Hypothesis.html b/api/ssapy.correlate_tracks.Hypothesis.html new file mode 100644 index 0000000..a7a37e6 --- /dev/null +++ b/api/ssapy.correlate_tracks.Hypothesis.html @@ -0,0 +1,229 @@ + + + + + + + Hypothesis — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Hypothesis

+
+
+class ssapy.correlate_tracks.Hypothesis(tracks, nsat=1000)[source]
+

Bases: object

+

Assignment of detections to multiple tracks.

+

This class represents an assignment of detections to multiple tracks. The +goal of Multiple Hypothesis Tracking to to find the Hypothesis (track +assignment) that has the highest likelihood.

+
+

Parameters

+
+
trackslist of Tracks

The tracks in the hypothesis. Each track must correspond to +different observations, and all observations under consideration +must be accounted for

+
+
+
+
+

Attributes

+
+
trackslist

the tracks in this hypothesis

+
+
lnprobfloat

the log probability of this hypothesis

+
+
nsatint

the total number of satellites in the sky that could be observed

+
+
+

Methods Summary

+ + + + + + + + + + + + + + + +

addto(hypothesis, track[, oldtrack])

Add a new track to a Hypothesis.

difference(hypothesis)

Print the difference between two hypotheses.

ntracklet()

Number of observations in tracks in the hypothesis.

summarize([verbose])

Summarize the Hypothesis as a string.

+

Methods Documentation

+
+
+static addto(hypothesis, track, oldtrack=None, **kw)[source]
+

Add a new track to a Hypothesis.

+
+

Parameters

+
+
hypothesisHypothesis

hypothesis to which to add

+
+
trackTrack

track to add to hypothesis

+
+
oldtrackTrack

track to remove from hypothesis, if the new track updates the +old track.

+
+
+
+
+

Returns

+

new Hypothesis, with track added, replacing oldtrack if oldtrack is +not None.

+
+
+ +
+
+difference(hypothesis)[source]
+

Print the difference between two hypotheses.

+

Often two hypotheses are very similar. This makes it easier to +inspect only the differences between them.

+
+

Parameters

+
+
hypothesisHypothesis

hypothesis to which to compare this hypothesis

+
+
+
+
+ +
+
+ntracklet()[source]
+

Number of observations in tracks in the hypothesis.

+
+ +
+
+summarize(verbose=False)[source]
+

Summarize the Hypothesis as a string.

+
+

Parameters

+
+
verbosebool

Include information about each track in the hypothesis.

+
+
+
+
+

Returns

+

A string summarizing the hypothesis.

+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.MHT.html b/api/ssapy.correlate_tracks.MHT.html new file mode 100644 index 0000000..a4cf81f --- /dev/null +++ b/api/ssapy.correlate_tracks.MHT.html @@ -0,0 +1,305 @@ + + + + + + + MHT — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

MHT

+
+
+class ssapy.correlate_tracks.MHT(data, nsat=1000, truth=None, hypotheses=None, propagator=None, mode='rv', fitonly=None, approximate=False, orbitattr=None, priors=None)[source]
+

Bases: object

+

Multiple Hypothesis Tracking of many hypotheses explaining data.

+

This class manages the assessment of which hypothesis are most likely +to explain data, building a set of tracks observation by observation.

+

Initialize the MHT with the data, do mht.run(), and inspect the most +likely hypotheses using [h.lnprob for h in mht.hypotheses].

+
+

Parameters

+
+
dataarray_like[N]

data to model. Must contain angles of observations, observer +locations and velocities, times, detection IDs, etc.

+
+
nsatint

total number of satellites in the sky. Affects the overall +prior and the preference for new tracks vs. additional assignments +to existing tracks.

+
+
truthdict

when true assignments are known, this argument can provide debug +information about when the tracker has lost the true assignment

+
+
hypotheseslist of Hypothesis

initialize the MHT with this existing list of Hypotheses. +Default None.

+
+
propagatorinstance of ssa Propagator

propagator to use. Default to None (Keplerian)

+
+
fitonlyndarray[N] bool

entries in data to fit

+
+
+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + +

add_tracklet(satid, **kw)

Add an observation from data to the MHT analysis.

flag_inconsistency(track2hyp, hyp)

Debug method checking to see if there are any inconsistencies between the tracks tracked by the MHT and the hypotheses tracked by the MHT.

prune(satid[, nkeepmax, pkeep, ...])

Prune unlikely hypotheses from the MHT.

prune_stale_hypotheses(newdeadtracks)

Prune hypotheses that are different from better hypotheses only in dead tracks.

prune_tracks(satid[, nconfirm])

Prune tracks that are now nearly identical from the MHT analysis.

run([first, last, verbose, order])

Run the MHT analysis.

+

Methods Documentation

+
+
+add_tracklet(satid, **kw)[source]
+

Add an observation from data to the MHT analysis.

+
+

Parameters

+
+
satidint

the ID of the observation to add.

+
+
+
+
+ +
+
+static flag_inconsistency(track2hyp, hyp)[source]
+

Debug method checking to see if there are any inconsistencies +between the tracks tracked by the MHT and the hypotheses tracked +by the MHT. Should only be needed for debugging.

+

Every hypothesis in track2hyp[track] should include the Track track. +Every hypothesis in hyp should be in the list of track2hyp[track] for +each of its tracks. +Every track should be in a hypothesis.

+
+

Parameters

+

track2hyp : dict[Track -> list(Hypothesis)] +hyp: list(Hypothesis)

+
+
+

Returns

+

True if everything is consistent.

+
+
+ +
+
+prune(satid, nkeepmax=10000, pkeep=1e-09, keeponlytrue=False, nconfirm=6)[source]
+

Prune unlikely hypotheses from the MHT.

+
+

Parameters

+
+
satidint

the detection ID most recently added to the MHT

+
+
nkeepmaxint

keep no more than nkeepmax hypotheses

+
+
pkeepfloat

keep no hypotheses more than pkeep times less likely than the +most likely hypothesis

+
+
keeponlytruebool

keep only the single hypothesis known to be true for speed +comparison purposes.

+
+
nconfirmint

only keep one variant of tracks that agree in the last nconfirm +detections

+
+
+
+
+ +
+
+prune_stale_hypotheses(newdeadtracks)[source]
+

Prune hypotheses that are different from better hypotheses only in +dead tracks.

+

Note: implentation relies on identical tracks always having the same +id. The MHT code tries to guarantee this—otherwise it must do +extra work matching identical tracks to new detections, etc. But +using id(Track) feels horrible to me.

+
+

Parameters

+
+
newdeadtrackslist of Track

list of tracks that died since the last pruning.

+
+
+
+
+

Returns

+

boolean mask indicating hypotheses to keep

+
+
+ +
+
+prune_tracks(satid, nconfirm=6)[source]
+

Prune tracks that are now nearly identical from the MHT analysis.

+

As the MHT adds observations to tracks, eventually some tracks +have a number of confirming observations. For these long tracks, +we really only need to keep different Tracks and Hypotheses for cases +where there are recent disagreements with how those tracks continue; +if hypotheses agree that the track continues in the same way, +we don’t need to continue tracking the past differences. So +we prune out cases of former disagreement.

+

This tries to identify such overlapping tracks and keep only one of +them.

+
+

Parameters

+
+
satidint

the satID of the most-recently added detection to the MHT

+
+
nconfirmint

if two tracks are identical in their last nconfirm observations +delete the tracks not in the most likely hypothesis.

+
+
+
+
+

Returns

+

boolean array indicating hypotheses to keep

+
+
+ +
+
+run(first=None, last=None, verbose=False, order='forward', **kw)[source]
+

Run the MHT analysis.

+
+

Parameters

+
+
firstint

First tracklet to consider

+
+
lastint

Last tracklet to consider

+
+
verbosebool

print extra progress information while running

+
+
**kwdict

extra keyword arguments to pass to MHT.prune.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.Track.html b/api/ssapy.correlate_tracks.Track.html new file mode 100644 index 0000000..2b60b41 --- /dev/null +++ b/api/ssapy.correlate_tracks.Track.html @@ -0,0 +1,190 @@ + + + + + + + Track — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Track

+
+
+class ssapy.correlate_tracks.Track(satIDs, data, guess=None, initial_lnprob=0, priors=None, mode='rv', propagator=None, orbitattr=None)[source]
+

Bases: TrackBase

+

Set of observations to be fit as an object moving through space.

+

Subclasses TrackBase, which could have other implementations +(for example, a subclass that doesn’t fit the whole track simultaneously, +but instead approximates past information with a single Gaussian +prior on the parameters).

+
+

Parameters

+

satIDs : see TrackBase +data : see TrackBase +guess : array_like, float

+
+

guess of initial parameters fitting orbit

+
+
+
initial_lnprobfloat

adjust probability of this track by initial_lnprob (default: 0)

+
+
priorsrvsampler.Prior instance

list of priors to use when fitting this track

+
+
modestr

fitting mode to use. One of ‘rv’, ‘angle’, or ‘equinoctial’ +parameters have different meanings in these modes

+
+
propagatorPropagator instance

ssa Propagator instance to use for propagation. Default None (Keplerian)

+
+
+

Methods Summary

+ + + + + + + + + +

addto(satid)

Add a detection to this track.

gaussian_approximation([propagator])

Get Gaussian approximation of this track.

+

Methods Documentation

+
+
+addto(satid)[source]
+

Add a detection to this track.

+
+

Parameters

+
+
satIDint or list(int)

the detection ID of the observation to add to this track

+
+
+
+
+

Returns

+

A new Track, including the additional observation.

+
+
+ +
+
+gaussian_approximation(propagator=None)[source]
+

Get Gaussian approximation of this track.

+
+

Returns

+

TrackGauss, giving Gaussian approximation of this track.

+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.TrackBase.html b/api/ssapy.correlate_tracks.TrackBase.html new file mode 100644 index 0000000..c13b0d4 --- /dev/null +++ b/api/ssapy.correlate_tracks.TrackBase.html @@ -0,0 +1,317 @@ + + + + + + + TrackBase — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

TrackBase

+
+
+class ssapy.correlate_tracks.TrackBase(satIDs, data, volume=None, mode='rv', propagator=None, orbitattr=None)[source]
+

Bases: object

+

Set of observations fit together as an orbital track.

+

This class represents a set of observations that are being modeled +as the motion of a single object through space.

+
+

Parameters

+
+
satIDsarray_like

list of detection IDs considered part of this track

+
+
dataarray_like

observations that could be part of this track. Observations that are +actually part of this track are specified in satIDs. +data is must contain a number of fields used in fitting, like +ra, dec, obsPos, obsVel, and time.

+
+
volumefloat

the volume in 6-D orbital element space in which objects could be +found, needed to normalize false-positive vs. new satellite odds +default to a very rough number only applicable for RV parameterization

+
+
propagatorssa Propagator instance

the propagator to use when propagating the orbit. Default to None +(Keplerian)

+
+
+
+
+

Attributes

+
+
satIDsarray_like, int

the detection IDs that are part of this Track

+
+
dataarray_like

observations that could be part of this track; see constructor

+
+
volumefloat

the prior volume in 6-D parameter where satellites may be observed

+
+
timesarray_like, float

the GPS times at which this object was observed

+
+
modestr

the type of parameterization to use to fit the track +one of ‘rv’, ‘angle’, ‘equinoctial’

+
+
lnprobfloat

the log probability of this association of observations to an orbit +contains contributions both from priors and likelihood.

+
+
+

Attributes Summary

+ + + + + + +

lnprob

meant to be used for lazy evaluation of an object attribute.

+

Methods Summary

+ + + + + + + + + + + + + + + +

gate(arc[, return_nwrap])

Compute chi^2 that this track could be associated with arc.

predict(arc0[, return_sigma, return_nwrap])

Predict the location and uncertainty of this object at future times.

propagaterdz(param[, arc0, return_nwrap])

Propagate param to times and locations specified in arc0.

update(time[, rStation, vStation])

Shift this track to a new time.

+

Attributes Documentation

+
+
+lnprob
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +

Methods Documentation

+
+
+gate(arc, return_nwrap=False)[source]
+

Compute chi^2 that this track could be associated with arc.

+
+

Parameters

+
+
arcarray_like, structure array

must contain fields: +time: future time (GPS) (float) +rStation_GCRF: GCRF position of observer at future time (3, float) +vStation_GCRF: GCRF velocity of observer at future time (3, float) +ra: observed ra (float) +pmra: observed proper motion in ra (float) +dec: observed dec (float) +pmdec: observed proper motion in dec (float) +dra: uncertainty in ra (float) +ddec: uncertainty in dec (float) +dpmra: uncertainty in proper motion in ra (float) +dpmdec uncertainty in proper motion in dec (float)

+
+
return_nwrapbool

if True, also return the standard deviation of the number of +orbits the object could have made at the time of observation.

+
+
+
+
+

Returns

+

chi2, nwrapsig +chi2 : float

+
+

The chi-squared implied by associating this observation with this +track.

+
+
+
nwrapsigfloat

if return_nwrap, the standard deviation of the number of orbits the +object could have made at the time of observation

+
+
+
+
+ +
+
+predict(arc0, return_sigma=False, return_nwrap=True)[source]
+

Predict the location and uncertainty of this object at future times.

+
+

Parameters

+
+
arc0array_like, structure array

must contain fields: +time: future times (GPS) (float) +rStation_GCRF: GCRF position of observer at future time (3, float) +vStation_GCRF: GCRF velocity of observer at future time (3, float)

+
+
return_sigmabool

if True, also return the sigma points used to compute the +future covariance

+
+
return_nwrapbool

if True, also return the number of orbital wrappings of the +sigma points.

+
+
+
+
+

Returns

+

mean, covar, fsigma +mean : array_like (4, n)

+
+

ra, dec, dra/dt*cos(dec), ddec/dt at future times (rad, rad/s)

+
+
+
covararray_like (4, 4, n)

covariance of mean parameters at future times

+
+
fsigmaarray_like (4, 13, n)

13 sigma points used to compute covar +fsigma[:, 0, :] is identical to mean.

+
+
+
+
+ +
+
+propagaterdz(param, arc0=None, return_nwrap=False)[source]
+

Propagate param to times and locations specified in arc0.

+
+

Parameters

+
+
paramarray_like

parameters corresponding to self.mode for orbit to propagate

+
+
arc0arary_like, must contain observation fields

array containing fields specifying times and observer locations +to which track fit should be propagated.

+
+
return_nwrapbool

if True, additionally return nwrap

+
+
+
+
+

Returns

+

array([rr, pmrr, dd, pmdd, nwrap]) +rr : ra at future times, radians +dd : dec at future times, radians +pmrr : proper motion in ra at future times, rad / s +pmdd : proper motion in dec at future times, rad / s +nwrap : number of orbits completed. Only provided if return_nwrap

+
+

is True.

+
+
+
+ +
+
+update(time, rStation=None, vStation=None)[source]
+

Shift this track to a new time.

+

Only implemented for numerical propagators where time-shifting can provide a big +speed up.

+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.TrackGauss.html b/api/ssapy.correlate_tracks.TrackGauss.html new file mode 100644 index 0000000..5332983 --- /dev/null +++ b/api/ssapy.correlate_tracks.TrackGauss.html @@ -0,0 +1,248 @@ + + + + + + + TrackGauss — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

TrackGauss

+
+
+class ssapy.correlate_tracks.TrackGauss(satIDs, data, param, covar, chi2, mode='rv', propagator=None, sigma_points=None, priors=None, orbitattr=None)[source]
+

Bases: TrackBase

+

Set of observations to be fit as an object moving through space.

+

Subclasses TrackBase. This implementation does not fit the entire +track simultaneously, but instead approximates past tracklets with +a single Gaussian prior on the parameters. This information is then +updated with each new observation in a Kalman-filter approach.

+
+

Parameters

+

satIDs : see TrackBase +data : see TrackBase +param : array_like, float

+
+

mean of Gaussian

+
+
+
covararray_like, float

covariance of Gaussian

+
+
chi2float

chi2 of fit at center of Gaussian

+
+
modestr

fitting mode to use. One of ‘rv’, ‘angle’, or ‘equinoctial’ +parameters have different meanings in these modes

+
+
propagatorPropagator instance

ssa Propagator instance to use for propagation. Default None +(Keplerian)

+
+
priorslist of Priors instances

priors used in initially fitting this orbit. Their influence +should now be completely recorded in param + covar, but they are +recorded here for reference.

+
+
+

Methods Summary

+ + + + + + + + + + + + + + + +

addto(satid)

Add a detection to this track.

at(t[, rStation, vStation])

Get Gaussian approximation of this track at different epoch.

gaussian_approximation(propagator)

Get Gaussian approximation of this track.

update(t[, rStation, vStation])

Move this track to a different epoch.

+

Methods Documentation

+
+
+addto(satid)[source]
+

Add a detection to this track.

+

This also shifts the track’s epoch to the epoch of the added +observation.

+
+

Parameters

+
+
satIDint

the detection ID of the observation to add to this track

+
+
+
+
+

Returns

+

A new TrackGauss, including the additional observation.

+
+
+ +
+
+at(t, rStation=None, vStation=None)[source]
+

Get Gaussian approximation of this track at different epoch.

+

This just copies the track and then updates it to be at the new time.

+
+

Parameters

+
+
tastropy.time.Time

epoch for new TrackGauss

+
+
rStationarray_like (3)

position of station at new time (m, GCRF); required if +mode == ‘angle’

+
+
vStationarray_like (3)

velocity of station at new time (m, GCRF); required if +mode == ‘angle’

+
+
+
+
+

Returns

+

Gaussian-approximated track (TrackGauss) at new time.

+
+
+ +
+
+gaussian_approximation(propagator)[source]
+

Get Gaussian approximation of this track.

+
+

Returns

+

self. No op; this track already is a Gaussian approximation.

+
+
+ +
+
+update(t, rStation=None, vStation=None)[source]
+

Move this track to a different epoch.

+

Does not bother updating if t is different from the current +track time by less than one microsecond.

+
+

Parameters

+
+
tastropy.time.Time

epoch for new TrackGauss

+
+
rStationarray_like (3)

position of station at new time (m, GCRF); required if +mode == ‘angle’

+
+
vStationarray_like (3)

velocity of station at new time (m, GCRF); required if +mode == ‘angle’

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.VolumeDistancePrior.html b/api/ssapy.correlate_tracks.VolumeDistancePrior.html new file mode 100644 index 0000000..5d70a98 --- /dev/null +++ b/api/ssapy.correlate_tracks.VolumeDistancePrior.html @@ -0,0 +1,169 @@ + + + + + + + VolumeDistancePrior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

VolumeDistancePrior

+
+
+class ssapy.correlate_tracks.VolumeDistancePrior(scale=42164172.36450565)[source]
+

Bases: object

+

Prior on range like r^2*exp(-r/scale), preferring larger distances where +there is more volume.

+
+

Methods

+
+
__call__(orbit)

Returns log prior probability of given orbit.

+
+
+

Methods Summary

+ + + + + + +

__call__(orbit, distance[, chi])

Return log prior probability of given orbit.

+

Methods Documentation

+
+
+__call__(orbit, distance, chi=False)[source]
+

Return log prior probability of given orbit.

+
+

Parameters

+
+
orbitOrbit

The given orbit.

+
+
distancefloat

Distance between object and observer (m)

+
+
chibool

If True, return chi corresponding to log probability, rather than +log probability.

+
+
+
+
+

Returns

+
+
logpriorfloat

The log of the prior probability for given orbit.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.ZeroRadialVelocityPrior.html b/api/ssapy.correlate_tracks.ZeroRadialVelocityPrior.html new file mode 100644 index 0000000..b8e8c26 --- /dev/null +++ b/api/ssapy.correlate_tracks.ZeroRadialVelocityPrior.html @@ -0,0 +1,177 @@ + + + + + + + ZeroRadialVelocityPrior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ZeroRadialVelocityPrior

+
+
+class ssapy.correlate_tracks.ZeroRadialVelocityPrior(sigma=0.25)[source]
+

Bases: object

+

Gaussian prior that v_R = 0.

+
+

Parameters

+
+
sigmafloat

Prior standard deviation on np.dot(v, r)/|v|/|r|, dimensionless.

+
+
+
+
+

Attributes

+

sigma

+
+
+

Methods

+
+
__call__(orbit)

Returns log prior probability of given orbit.

+
+
+

Methods Summary

+ + + + + + +

__call__(orbit, distance[, chi])

Return log prior probability of given orbit.

+

Methods Documentation

+
+
+__call__(orbit, distance, chi=False)[source]
+

Return log prior probability of given orbit.

+
+

Parameters

+
+
orbitOrbit

The given orbit.

+
+
chibool

If True, return chi corresponding to log probability, rather than +log probability.

+
+
+
+
+

Returns

+
+
logpriorfloat

The log of the prior probability for given orbit.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.combinatoric_lnprior.html b/api/ssapy.correlate_tracks.combinatoric_lnprior.html new file mode 100644 index 0000000..a6fa768 --- /dev/null +++ b/api/ssapy.correlate_tracks.combinatoric_lnprior.html @@ -0,0 +1,139 @@ + + + + + + + combinatoric_lnprior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

combinatoric_lnprior

+
+
+ssapy.correlate_tracks.combinatoric_lnprior(nsat, ntrack, ndet)[source]
+

Prior probability of assigning detections to tracks of satellites.

+

This function intends to give the prior probability that ndet detections +of nsat total satellites correspond to ntrack satellites.

+
+

Parameters

+
+
nsatint

number of satellites that could possibly be observed

+
+
ntrackint

number of tracks in current solution

+
+
ndetint

number of detections of these satellites

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.data_for_satellite.html b/api/ssapy.correlate_tracks.data_for_satellite.html new file mode 100644 index 0000000..8fa9421 --- /dev/null +++ b/api/ssapy.correlate_tracks.data_for_satellite.html @@ -0,0 +1,138 @@ + + + + + + + data_for_satellite — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

data_for_satellite

+
+
+ssapy.correlate_tracks.data_for_satellite(data, satIDList)[source]
+

Extract data for specific satID.

+

This helper routine takes a set of observations containing a column +‘satID’, and returns the subset of those observations for which +‘satID’ is in the list satIDList.

+
+

Parameters

+
+
dataarray_like (n), including column ‘satID’

data from which to select matching rows

+
+
satIDListlist

list of satIDs to select from data

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.fit_arc.html b/api/ssapy.correlate_tracks.fit_arc.html new file mode 100644 index 0000000..8a3daa3 --- /dev/null +++ b/api/ssapy.correlate_tracks.fit_arc.html @@ -0,0 +1,168 @@ + + + + + + + fit_arc — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

fit_arc

+
+
+ssapy.correlate_tracks.fit_arc(arc, guess, verbose=False, propagator=KeplerianPropagator(), mode='rv', priors=None, damp=-1, optimizerkw={}, lsq=True, orbitattr=None, **kw)[source]
+

Fit an orbit to an arc.

+

See documentation for fit_arc_blind. fit_arc implements the same +interface, but takes a additional guess & epoch arguments. These specify +the initial guess in appropriate units given the chosen mode. epoch +specifies the time at which this initial guess applies.

+
+

Parameters

+
+
arcarray_like (n)

numpy ndarray containing several fields necessary for describing +observations. rStation_GCRF (m), vStation_GCRF (m), +time (astropy.time.Time or gps seconds), ra, dec, +pmra, pmdec are all required fields.

+
+
guessarray_like (n_par)

parameters for initial guess +guess[nparam] should be the epoch in GPS +guess[nparam:] should be extra parameters not optimized over

+
+
verbosebool

True for more verbose output

+
+
propagatorssapy.propagator.Propagator instance

propagator to use in fitting

+
+
modestr

Mode for fitting, must be one of ‘rv’, ‘equinoctial’, or ‘angle’. +In the +first case, the parameters defining the orbit are taken to be +the position and velocity of the object. In the second case, +the parameters are taken to be the equinoctial elements. In the +third case, the parameters are taken to be the angular position +and proper motion of the object, together with its line-of-sight +range and velocity.

+
+
priorslist of objects implementing ssa Prior interface

any priors to be applied in fitting

+
+
dampfloat

Damping used in pseudo-Huber loss function. Default of -1 means no +damping.

+
+
orbitattrlist(str)

Names of orbit attributes used for propagation (mass, area, …)

+
+
optimizerkwdict

any extra keywords to pass to the optimizer

+
+
**kwdict

any extra keywords to pass to optimizer.optimize()

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.fit_arc_blind.html b/api/ssapy.correlate_tracks.fit_arc_blind.html new file mode 100644 index 0000000..9c3936a --- /dev/null +++ b/api/ssapy.correlate_tracks.fit_arc_blind.html @@ -0,0 +1,168 @@ + + + + + + + fit_arc_blind — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

fit_arc_blind

+
+
+ssapy.correlate_tracks.fit_arc_blind(arc, verbose=False, mode='rv', priors=None, propagator=None, damp=-1, orbitattr=None, optimizerkw={}, lsq=True, factor=2, **kw)[source]
+

Fit an orbit to an arc.

+

The arc can be arbitrarily long. Orbits are initially fit to the initial +two observations and extended using a geomtrically increasing time baseline. +If no new observations are inside of a given baseline, the next obs is added. +The fit is least-squares, Levenberg-Marquardt, given specified priors and +propagator. If the factor is set to 1, the orbit is built out iteratively +by satID.

+
+

Parameters

+
+
arcarray_like (n)

numpy ndarray containing several fields necessary for describing +observations. rStation_GCRF (m), vStation_GCRF (m), +time (astropy.time.Time or gps seconds), ra, dec, +pmra, pmdec are all required fields.

+
+
verbosebool

True for more verbose output

+
+
modestr

Mode for fitting, must be one of ‘rv’, ‘equinoctial’, or ‘angle’. +In the +first case, the parameters defining the orbit are taken to be +the position and velocity of the object. In the second case, +the parameters are taken to be the equinoctial elements. In the +third case, the parameters are taken to be the angular position +and proper motion of the object, together with its line-of-sight +range and velocity.

+
+
priorslist of objects implementing ssa Prior interface

any priors to be applied in fitting

+
+
propagatorssapy.propagator.Propagator instance

propagator to use in fitting

+
+
dampfloat

damp chi residuals according to pseudo-Huber loss function. Default +of -1 means do not damp

+
+
orbitattrlist(str)

names of additional orbit propagation keywords to guess

+
+
optimizerkwdict

any extra keywords to pass to the optimizer

+
+
factorfloat

factor for geometrically increasing time baseline (default 2)

+
+
**kwdict

any extra keywords to pass to optimizer.optimize()

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.fit_arc_blind_via_track.html b/api/ssapy.correlate_tracks.fit_arc_blind_via_track.html new file mode 100644 index 0000000..240f272 --- /dev/null +++ b/api/ssapy.correlate_tracks.fit_arc_blind_via_track.html @@ -0,0 +1,151 @@ + + + + + + + fit_arc_blind_via_track — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

fit_arc_blind_via_track

+
+
+ssapy.correlate_tracks.fit_arc_blind_via_track(arc, propagator=None, verbose=False, reset_if_too_uncertain=False, mode='rv', priors=None, order='forward', approximate=False, orbitattr=None, factor=1)[source]
+

Fit a series of detections using the Track interface.

+
+

Parameters

+
+
arcndarry with many fields

The observations to fit. Must contain many fields (ra, dec, …)

+
+
propagatorPropagator instance

Propagator to use for orbit propagation. Default None (Keplerian).

+
+
verbosebool

print additional information during fitting if True

+
+
reset_if_too_uncertainbool

if the uncertainty in the number of wraps grows to be greater than +pi, start track fitting over, ignoring old tracklets.

+
+
factorfloat

factor for geometrically increasing time baseline (default 1)

+
+
orderstr

order to process observations; default ‘forward’. ‘backward’ +processes observations in reverse chronological order.

+
+
+
+
+

Returns

+

tracklist +A list of Tracks, giving the fits to the track as each observation +in added sequentially in time to the fit.

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.fit_arc_with_gaussian_prior.html b/api/ssapy.correlate_tracks.fit_arc_with_gaussian_prior.html new file mode 100644 index 0000000..840b194 --- /dev/null +++ b/api/ssapy.correlate_tracks.fit_arc_with_gaussian_prior.html @@ -0,0 +1,171 @@ + + + + + + + fit_arc_with_gaussian_prior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

fit_arc_with_gaussian_prior

+
+
+ssapy.correlate_tracks.fit_arc_with_gaussian_prior(arc, mu, cinvcholfac, verbose=False, propagator=KeplerianPropagator(), mode='rv', lsq=True, optimizerkw={}, orbitattr=None, **kw)[source]
+

Fit an orbit to an arc.

+

See documentation for fit_arc_blind. fit_arc_with_gaussian_prior +implements the same interface, but takes an additional mu, cinvcholfac, +and epoch arguments. These specify a gaussian prior on the parameters. +The mean and covariance of the Gaussian are given by mu and cinvcholfac, +the inverse Cholesky matrix corresponding to the covariance matrix. The +initial guess is taken to be the mean of the Gaussian prior. Presently, +any other priors are assumed to have been folded into the Gaussian. +epoch specifies the time at which Gaussian prior parameters are +applicable. For greatest speed, the arc should contain a single +observation and the epoch should be equal to the time of that +observation; then no propagations are needed in this function.

+
+

Parameters

+
+
arcarray_like (n)

numpy ndarray containing several fields necessary for describing +observations. rStation_GCRF (m), vStation_GCRF (m), +time (astropy.time.Time or gps seconds), ra, dec, +pmra, pmdec are all required fields.

+
+
muarray_like (n_par)

parameters for initial guess

+
+
cinvcholfacarray_like (n_par, n_par)

inverse cholesky matrix for covariance matrix

+
+
verbosebool

True for more verbose output

+
+
propagatorssapy.propagator.Propagator instance

propagator to use in fitting

+
+
modestr

Mode for fitting, must be one of ‘rv’, ‘equinoctial’, or ‘angle’. +In the +first case, the parameters defining the orbit are taken to be +the position and velocity of the object. In the second case, +the parameters are taken to be the equinoctial elements. In the +third case, the parameters are taken to be the angular position +and proper motion of the object, together with its line-of-sight +range and velocity.

+
+
orbitattrlist(str)

list of strings of names of additional propagation attributes to +fit (mass, area, cr, cd, …)

+
+
optimizerkwdict

any extra keywords to pass to the optimizer

+
+
**kwdict

any extra keywords to pass to optimizer.optimize()

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.iterate_mht.html b/api/ssapy.correlate_tracks.iterate_mht.html new file mode 100644 index 0000000..92e261e --- /dev/null +++ b/api/ssapy.correlate_tracks.iterate_mht.html @@ -0,0 +1,125 @@ + + + + + + + iterate_mht — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

iterate_mht

+
+
+ssapy.correlate_tracks.iterate_mht(data, oldmht, nminlength=20, trimends=2, **kw)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.make_optimizer.html b/api/ssapy.correlate_tracks.make_optimizer.html new file mode 100644 index 0000000..42c313a --- /dev/null +++ b/api/ssapy.correlate_tracks.make_optimizer.html @@ -0,0 +1,125 @@ + + + + + + + make_optimizer — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

make_optimizer

+
+
+ssapy.correlate_tracks.make_optimizer(mode, param, lsq=False)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.make_param_guess.html b/api/ssapy.correlate_tracks.make_param_guess.html new file mode 100644 index 0000000..daab8f4 --- /dev/null +++ b/api/ssapy.correlate_tracks.make_param_guess.html @@ -0,0 +1,125 @@ + + + + + + + make_param_guess — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

make_param_guess

+
+
+ssapy.correlate_tracks.make_param_guess(rvguess, arc, mode='rv', orbitattr=None)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.orbit_to_param.html b/api/ssapy.correlate_tracks.orbit_to_param.html new file mode 100644 index 0000000..00229f8 --- /dev/null +++ b/api/ssapy.correlate_tracks.orbit_to_param.html @@ -0,0 +1,137 @@ + + + + + + + orbit_to_param — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

orbit_to_param

+
+
+ssapy.correlate_tracks.orbit_to_param(orbit, mode='rv', orbitattr=None, rStation=None, vStation=None, fitonly=False)[source]
+

Convert Orbits to parameters.

+

Note: Orbits are converted so that they are all bound orbits to +avoid challenges with hyperbolic orbit propagation.

+
+

Parameters

+
+
paramarray_like (n, n_param)

parameters for orbits

+
+
modestr

parameter type, one of ‘rv’, ‘angle’, ‘orbit’

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.param_to_orbit.html b/api/ssapy.correlate_tracks.param_to_orbit.html new file mode 100644 index 0000000..3636c14 --- /dev/null +++ b/api/ssapy.correlate_tracks.param_to_orbit.html @@ -0,0 +1,137 @@ + + + + + + + param_to_orbit — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

param_to_orbit

+
+
+ssapy.correlate_tracks.param_to_orbit(param, mode='rv', orbitattr=None)[source]
+

Convert parameters to Orbits.

+

Note: Orbits are converted so that they are all bound orbits to +avoid challenges with hyperbolic orbit propagation.

+
+

Parameters

+
+
paramarray_like (n, n_param)

parameters for orbits

+
+
modestr

parameter type, one of ‘rv’, ‘angle’, ‘orbit’

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.radeczn.html b/api/ssapy.correlate_tracks.radeczn.html new file mode 100644 index 0000000..66418e6 --- /dev/null +++ b/api/ssapy.correlate_tracks.radeczn.html @@ -0,0 +1,125 @@ + + + + + + + radeczn — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

radeczn

+
+
+ssapy.correlate_tracks.radeczn(orbit, arc, **kw)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.summarize_tracklet.html b/api/ssapy.correlate_tracks.summarize_tracklet.html new file mode 100644 index 0000000..d8944ca --- /dev/null +++ b/api/ssapy.correlate_tracks.summarize_tracklet.html @@ -0,0 +1,139 @@ + + + + + + + summarize_tracklet — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

summarize_tracklet

+
+
+ssapy.correlate_tracks.summarize_tracklet(arc)[source]
+

Compute mean ra/dec, uncertainty in mean, proper motion, uncertainty +for a short arc.

+
+

Parameters

+

arc : the short arc of detections

+
+
+

Returns

+

[(ra, dec), (dra, ddec), (pmra, pmdec), (dpmra, dpmdec)] +ra, dec: the mean position in right ascension and declination +dra, ddec: the uncertainty in the mean RA and declination +pmra, pmdec: the proper motion in right ascension and declination +dpmra, dpmdec: the uncertainty in the proper motion in RA and declination

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.summarize_tracklets.html b/api/ssapy.correlate_tracks.summarize_tracklets.html new file mode 100644 index 0000000..b11b6aa --- /dev/null +++ b/api/ssapy.correlate_tracks.summarize_tracklets.html @@ -0,0 +1,143 @@ + + + + + + + summarize_tracklets — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

summarize_tracklets

+
+
+ssapy.correlate_tracks.summarize_tracklets(data, posuncfloor=None, pmuncfloor=None)[source]
+

Add fields to default data set to accommodate MHT fitting.

+
+

Parameters

+
+
dataarray_like

data to add fields to

+
+
posuncfloorfloat or None

add a positional uncertainty floor to the ra/dec uncertainties (deg)

+
+
pmuncfloorfloat or None

add a proper motion uncertainty floor to the ra/dec proper motion +uncertainties (deg/s)

+
+
+
+
+

Returns

+

array parallel to data with additional fields dra, ddec, +pmra, pmdec, dpmra, dpmdec

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.time_ordered_satIDs.html b/api/ssapy.correlate_tracks.time_ordered_satIDs.html new file mode 100644 index 0000000..1b68e2b --- /dev/null +++ b/api/ssapy.correlate_tracks.time_ordered_satIDs.html @@ -0,0 +1,142 @@ + + + + + + + time_ordered_satIDs — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

time_ordered_satIDs

+
+
+ssapy.correlate_tracks.time_ordered_satIDs(data, with_time=False, order='forward')[source]
+

Give satIDs in data in order of observation. +Optionally includes first times for each ID.

+
+

Parameters

+
+
dataarray_like

the data to consider

+
+
with_timebool

Option to also output list of corresponding gps times

+
+
+

order : ‘forward’ or ‘backward’

+
+
+

Returns

+

list of satIDs in data, ordered by observation time

+

list of corresponding gps times of first obs per ID

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.correlate_tracks.wrap_angle_difference.html b/api/ssapy.correlate_tracks.wrap_angle_difference.html new file mode 100644 index 0000000..e23a910 --- /dev/null +++ b/api/ssapy.correlate_tracks.wrap_angle_difference.html @@ -0,0 +1,125 @@ + + + + + + + wrap_angle_difference — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

wrap_angle_difference

+
+
+ssapy.correlate_tracks.wrap_angle_difference(dl, wrap, center=0.5)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.gravity.AccelHarmonic.html b/api/ssapy.gravity.AccelHarmonic.html new file mode 100644 index 0000000..29e0ff1 --- /dev/null +++ b/api/ssapy.gravity.AccelHarmonic.html @@ -0,0 +1,171 @@ + + + + + + + AccelHarmonic — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AccelHarmonic

+
+
+class ssapy.gravity.AccelHarmonic(body, n_max=None, m_max=None)[source]
+

Bases: Accel

+

Acceleration due to a harmonic potential.

+
+

Parameters

+
+
bodyssapy.Body

The body.

+
+
n_maxint

The maximum degree of the potential.

+
+
m_maxint

The maximum order of the potential.

+
+
+

Methods Summary

+ + + + + + +

__call__(r, v, t[, _E])

Evaluate acceleration at particular place/moment.

+

Methods Documentation

+
+
+__call__(r, v, t, _E=None, **kwargs)[source]
+

Evaluate acceleration at particular place/moment.

+
+

Parameters

+
+
rarray_like, shape(3, )

Position in meters.

+
+
varray_like, shape(3, )

Velocity in meters per second. Unused.

+
+
tfloat

Time as GPS seconds. Unused

+
+
+
+
+

Returns

+
+
accelarray_like, shape(3,)

Acceleration in meters per second^2

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.gravity.AccelThirdBody.html b/api/ssapy.gravity.AccelThirdBody.html new file mode 100644 index 0000000..16172f9 --- /dev/null +++ b/api/ssapy.gravity.AccelThirdBody.html @@ -0,0 +1,167 @@ + + + + + + + AccelThirdBody — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AccelThirdBody

+
+
+class ssapy.gravity.AccelThirdBody(body)[source]
+

Bases: Accel

+

Acceleration due to a third body.

+
+

Parameters

+
+
bodyssapy.Body

The third body.

+
+
+

Methods Summary

+ + + + + + +

__call__(r, v, t, **kwargs)

Evaluate acceleration at particular place/moment.

+

Methods Documentation

+
+
+__call__(r, v, t, **kwargs)[source]
+

Evaluate acceleration at particular place/moment.

+
+

Parameters

+
+
rarray_like, shape(3, )

Position in meters.

+
+
varray_like, shape(3, )

Velocity in meters per second. Unused.

+
+
tfloat

Time as GPS seconds. Unused

+
+
+
+
+

Returns

+
+
accelarray_like, shape(3,)

Acceleration in meters per second^2

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.gravity.HarmonicCoefficients.html b/api/ssapy.gravity.HarmonicCoefficients.html new file mode 100644 index 0000000..99c5a3e --- /dev/null +++ b/api/ssapy.gravity.HarmonicCoefficients.html @@ -0,0 +1,173 @@ + + + + + + + HarmonicCoefficients — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

HarmonicCoefficients

+
+
+class ssapy.gravity.HarmonicCoefficients[source]
+

Bases: object

+

Class to hold coefficients for a spherical harmonic expansion of a +gravitational potential.

+

Methods Summary

+ + + + + + + + + +

fromEGM(filename)

Construct a HarmonicCoefficients object from a .egm/.cof file pair as available from https://geographiclib.sourceforge.io/html/gravity.html

fromTAB(filename[, n_max, m_max])

Construct a HarmonicCoefficients object from a .tab file as available from https://pgda.gsfc.nasa.gov/products/50

+

Methods Documentation

+
+
+classmethod fromEGM(filename)[source]
+

Construct a HarmonicCoefficients object from a .egm/.cof file pair as +available from https://geographiclib.sourceforge.io/html/gravity.html

+

SSAPy comes with four models for Earth gravity of varying degrees and +orders:

+
+

name | degree | order

+

WGS84 | 20 | 0 +EGM84 | 180 | 180 +EGM96 | 360 | 360 +EGM2008 | 2190 | 2159

+

Note that many coefficients with large degree and/or order underflow +double precision floats when denormalized for use in computing +accelerations and are therefore effectively ignored.

+
+
+

Parameters

+
+
filenamestr

Either the name of the .egm file or one of the names listed above.

+
+
+
+
+ +
+
+classmethod fromTAB(filename, n_max=40, m_max=40)[source]
+

Construct a HarmonicCoefficients object from a .tab file as available +from https://pgda.gsfc.nasa.gov/products/50

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.append_csv.html b/api/ssapy.io.append_csv.html new file mode 100644 index 0000000..a51407b --- /dev/null +++ b/api/ssapy.io.append_csv.html @@ -0,0 +1,135 @@ + + + + + + + append_csv — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

append_csv

+
+
+ssapy.io.append_csv(file_names, save_path='combined_data.csv', sep=None, dtypes=None, progress=None)[source]
+

Appends multiple CSV files into a single CSV file.

+
+
Args:

file_names (list): A list of CSV file names. +save_path (str): The path to the output CSV file. If not specified, the output will be saved to the current working directory. +sep (str): The delimiter used in the CSV files. +dtypes (dict): A dictionary specifying data types for columns.

+
+
Returns:

None

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.append_csv_on_disk.html b/api/ssapy.io.append_csv_on_disk.html new file mode 100644 index 0000000..6dadca2 --- /dev/null +++ b/api/ssapy.io.append_csv_on_disk.html @@ -0,0 +1,125 @@ + + + + + + + append_csv_on_disk — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

append_csv_on_disk

+
+
+ssapy.io.append_csv_on_disk(csv_files, output_file)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.b3obs2pos.html b/api/ssapy.io.b3obs2pos.html new file mode 100644 index 0000000..77d8239 --- /dev/null +++ b/api/ssapy.io.b3obs2pos.html @@ -0,0 +1,129 @@ + + + + + + + b3obs2pos — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

b3obs2pos

+
+
+ssapy.io.b3obs2pos(b3line)[source]
+

Return an SGP4 Satellite imported from B3OBS data.

+

Intended to mimic the sgp4 twoline2rv function

+

Data format reference: +http://help.agi.com/odtk/index.html?page=source%2Fod%2FODObjectsMeasurementFormatsandMeasurementTypes.htm

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.exists.html b/api/ssapy.io.exists.html new file mode 100644 index 0000000..8b232b1 --- /dev/null +++ b/api/ssapy.io.exists.html @@ -0,0 +1,125 @@ + + + + + + + exists — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

exists

+
+
+ssapy.io.exists(pathname)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.exists_in_csv.html b/api/ssapy.io.exists_in_csv.html new file mode 100644 index 0000000..13db316 --- /dev/null +++ b/api/ssapy.io.exists_in_csv.html @@ -0,0 +1,125 @@ + + + + + + + exists_in_csv — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

exists_in_csv

+
+
+ssapy.io.exists_in_csv(csv_file, column_name, number, sep='\t')[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.get_memory_usage.html b/api/ssapy.io.get_memory_usage.html new file mode 100644 index 0000000..fdf7959 --- /dev/null +++ b/api/ssapy.io.get_memory_usage.html @@ -0,0 +1,125 @@ + + + + + + + get_memory_usage — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_memory_usage

+
+
+ssapy.io.get_memory_usage()[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.get_tel_pos_itrf_to_gcrs.html b/api/ssapy.io.get_tel_pos_itrf_to_gcrs.html new file mode 100644 index 0000000..054da20 --- /dev/null +++ b/api/ssapy.io.get_tel_pos_itrf_to_gcrs.html @@ -0,0 +1,132 @@ + + + + + + + get_tel_pos_itrf_to_gcrs — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_tel_pos_itrf_to_gcrs

+
+
+ssapy.io.get_tel_pos_itrf_to_gcrs(time, tel_label='511')[source]
+

Convert telescope locations in ITRF (i.e., fixed to the earth) to GCRS +(i.e., geocentric celestial frame)

+
+
Parameters:
+

time (astropy.time.Time) – Time at which to evaluate the position

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.guess_csv_delimiter.html b/api/ssapy.io.guess_csv_delimiter.html new file mode 100644 index 0000000..c287684 --- /dev/null +++ b/api/ssapy.io.guess_csv_delimiter.html @@ -0,0 +1,125 @@ + + + + + + + guess_csv_delimiter — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

guess_csv_delimiter

+
+
+ssapy.io.guess_csv_delimiter(file_name)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.h5_key_exists.html b/api/ssapy.io.h5_key_exists.html new file mode 100644 index 0000000..1e4d283 --- /dev/null +++ b/api/ssapy.io.h5_key_exists.html @@ -0,0 +1,133 @@ + + + + + + + h5_key_exists — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

h5_key_exists

+
+
+ssapy.io.h5_key_exists(filename, key)[source]
+

Checks if a key exists in an HDF5 file.

+
+
Args:

filename (str): The filename of the HDF5 file. +key (str): The key to check.

+
+
Returns:

True if the key exists, False otherwise.

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.h5append.html b/api/ssapy.io.h5append.html new file mode 100644 index 0000000..ef496fb --- /dev/null +++ b/api/ssapy.io.h5append.html @@ -0,0 +1,134 @@ + + + + + + + h5append — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

h5append

+
+
+ssapy.io.h5append(filename, pathname, append_data)[source]
+

Append data to key in HDF5 file.

+
+
Args:

filename (str): The filename of the HDF5 file. +pathname (str): The path to the key in the HDF5 file. +append_data (any): The data to be appended.

+
+
Returns:

None

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.h5keys.html b/api/ssapy.io.h5keys.html new file mode 100644 index 0000000..9ec97dd --- /dev/null +++ b/api/ssapy.io.h5keys.html @@ -0,0 +1,132 @@ + + + + + + + h5keys — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

h5keys

+
+
+ssapy.io.h5keys(filename)[source]
+

List all groups in HDF5 file.

+
+
Args:

filename_ (str): The filename of the HDF5 file.

+
+
Returns:

A list of group keys in the HDF5 file.

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.h5load.html b/api/ssapy.io.h5load.html new file mode 100644 index 0000000..dee6046 --- /dev/null +++ b/api/ssapy.io.h5load.html @@ -0,0 +1,133 @@ + + + + + + + h5load — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

h5load

+
+
+ssapy.io.h5load(filename, pathname)[source]
+

Load data from HDF5 file.

+
+
Args:

filename_ (str): The filename of the HDF5 file. +pathname_ (str): The path to the data in the HDF5 file.

+
+
Returns:

The data loaded from the HDF5 file.

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.h5loadall.html b/api/ssapy.io.h5loadall.html new file mode 100644 index 0000000..0fccc2b --- /dev/null +++ b/api/ssapy.io.h5loadall.html @@ -0,0 +1,132 @@ + + + + + + + h5loadall — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

h5loadall

+
+
+ssapy.io.h5loadall(filename_)[source]
+

Load all data from HDF5 file.

+
+
Args:

filename_ (str): The filename of the HDF5 file.

+
+
Returns:

A dictionary of data loaded from the HDF5 file.

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.h5overwrite.html b/api/ssapy.io.h5overwrite.html new file mode 100644 index 0000000..b1cfc15 --- /dev/null +++ b/api/ssapy.io.h5overwrite.html @@ -0,0 +1,134 @@ + + + + + + + h5overwrite — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

h5overwrite

+
+
+ssapy.io.h5overwrite(filename, pathname, new_data)[source]
+

Overwrite key in HDF5 file.

+
+
Args:

filename (str): The filename of the HDF5 file. +pathname (str): The path to the key in the HDF5 file. +new_data (any): The data to be overwritten.

+
+
Returns:

None

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.h5save.html b/api/ssapy.io.h5save.html new file mode 100644 index 0000000..71d42c4 --- /dev/null +++ b/api/ssapy.io.h5save.html @@ -0,0 +1,134 @@ + + + + + + + h5save — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

h5save

+
+
+ssapy.io.h5save(filename, pathname, data)[source]
+

Save data to HDF5 file.

+
+
Args:

filename (str): The filename of the HDF5 file. +pathname (str): The path to the data in the HDF5 file. +data (any): The data to be saved.

+
+
Returns:

None

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.header_csv.html b/api/ssapy.io.header_csv.html new file mode 100644 index 0000000..e3596fc --- /dev/null +++ b/api/ssapy.io.header_csv.html @@ -0,0 +1,133 @@ + + + + + + + header_csv — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

header_csv

+
+
+ssapy.io.header_csv(file_name, sep=None)[source]
+

Get the header of a CSV file.

+
+
Args:

file_name (str): The filename of the CSV file. +sep (str) optional: The delimiter used in the CSV file.

+
+
Returns:

A list of the header fields.

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.listdir.html b/api/ssapy.io.listdir.html new file mode 100644 index 0000000..6338275 --- /dev/null +++ b/api/ssapy.io.listdir.html @@ -0,0 +1,125 @@ + + + + + + + listdir — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

listdir

+
+
+ssapy.io.listdir(dir_path='*', files_only=False, exclude=None)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.load_b3obs_file.html b/api/ssapy.io.load_b3obs_file.html new file mode 100644 index 0000000..e4925b9 --- /dev/null +++ b/api/ssapy.io.load_b3obs_file.html @@ -0,0 +1,126 @@ + + + + + + + load_b3obs_file — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

load_b3obs_file

+
+
+ssapy.io.load_b3obs_file(file_name)[source]
+

Convenience function to load all entries in a B3OBS file

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.make_tle.html b/api/ssapy.io.make_tle.html new file mode 100644 index 0000000..d5a3744 --- /dev/null +++ b/api/ssapy.io.make_tle.html @@ -0,0 +1,151 @@ + + + + + + + make_tle — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

make_tle

+
+
+ssapy.io.make_tle(a, e, i, pa, raan, trueAnomaly, t)[source]
+

Create a TLE from Kozai mean orbital elements

+
+

Parameters

+
+
afloat

Kozai mean semi-major axis in meters

+
+
efloat

Kozai mean eccentricity

+
+
ifloat

Kozai mean inclination in radians

+
+
pafloat

Kozai mean periapsis argument in radians

+
+
raanfloat

Kozai mean right ascension of the ascending node in radians

+
+
trueAnomalyfloat

Kozai mean true anomaly in radians

+
+
tfloat or astropy.time.Time

If float, then should correspond to GPS seconds; i.e., seconds since +1980-01-06 00:00:00 UTC

+
+
+
+
+

Notes

+

Dynamic TLE terms, including the drag coefficient and ballistic coefficient, +are ignored in this function.

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.makedf.html b/api/ssapy.io.makedf.html new file mode 100644 index 0000000..8760989 --- /dev/null +++ b/api/ssapy.io.makedf.html @@ -0,0 +1,125 @@ + + + + + + + makedf — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

makedf

+
+
+ssapy.io.makedf(df)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.merge_dicts.html b/api/ssapy.io.merge_dicts.html new file mode 100644 index 0000000..ef875e6 --- /dev/null +++ b/api/ssapy.io.merge_dicts.html @@ -0,0 +1,125 @@ + + + + + + + merge_dicts — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

merge_dicts

+
+
+ssapy.io.merge_dicts(file_names, save_path)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.mkdir.html b/api/ssapy.io.mkdir.html new file mode 100644 index 0000000..fe62829 --- /dev/null +++ b/api/ssapy.io.mkdir.html @@ -0,0 +1,125 @@ + + + + + + + mkdir — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

mkdir

+
+
+ssapy.io.mkdir(pathname)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.mpi_scatter.html b/api/ssapy.io.mpi_scatter.html new file mode 100644 index 0000000..d56ac30 --- /dev/null +++ b/api/ssapy.io.mpi_scatter.html @@ -0,0 +1,125 @@ + + + + + + + mpi_scatter — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

mpi_scatter

+
+
+ssapy.io.mpi_scatter(scatter_array)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.mpi_scatter_exclude_rank_0.html b/api/ssapy.io.mpi_scatter_exclude_rank_0.html new file mode 100644 index 0000000..d3de8d5 --- /dev/null +++ b/api/ssapy.io.mpi_scatter_exclude_rank_0.html @@ -0,0 +1,125 @@ + + + + + + + mpi_scatter_exclude_rank_0 — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

mpi_scatter_exclude_rank_0

+
+
+ssapy.io.mpi_scatter_exclude_rank_0(scatter_array)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.npload.html b/api/ssapy.io.npload.html new file mode 100644 index 0000000..2bf7d5e --- /dev/null +++ b/api/ssapy.io.npload.html @@ -0,0 +1,125 @@ + + + + + + + npload — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

npload

+
+
+ssapy.io.npload(filename_)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.npsave.html b/api/ssapy.io.npsave.html new file mode 100644 index 0000000..3112564 --- /dev/null +++ b/api/ssapy.io.npsave.html @@ -0,0 +1,125 @@ + + + + + + + npsave — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

npsave

+
+
+ssapy.io.npsave(filename_, data_)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.parseB3.html b/api/ssapy.io.parseB3.html new file mode 100644 index 0000000..b7b2bdc --- /dev/null +++ b/api/ssapy.io.parseB3.html @@ -0,0 +1,138 @@ + + + + + + + parseB3 — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

parseB3

+
+
+ssapy.io.parseB3(filename)[source]
+

Load data from a B3 observation file

+
+
Parameters:
+

filename (string) – Name of the B3 obs file to load

+
+
Returns:
+

A catalog of observations

+
+
Return type:
+

astropy.table.Table

+
+
+

Note that angles and positions are output in TEME frame.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.parseB3Line.html b/api/ssapy.io.parseB3Line.html new file mode 100644 index 0000000..98555e4 --- /dev/null +++ b/api/ssapy.io.parseB3Line.html @@ -0,0 +1,126 @@ + + + + + + + parseB3Line — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

parseB3Line

+
+
+ssapy.io.parseB3Line(line)[source]
+

Read one line of a B3 file and parse into distinct catalog components

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.parse_overpunched.html b/api/ssapy.io.parse_overpunched.html new file mode 100644 index 0000000..4257d61 --- /dev/null +++ b/api/ssapy.io.parse_overpunched.html @@ -0,0 +1,125 @@ + + + + + + + parse_overpunched — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

parse_overpunched

+
+
+ssapy.io.parse_overpunched(line)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.parse_tle.html b/api/ssapy.io.parse_tle.html new file mode 100644 index 0000000..a9a3bfd --- /dev/null +++ b/api/ssapy.io.parse_tle.html @@ -0,0 +1,157 @@ + + + + + + + parse_tle — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

parse_tle

+
+
+ssapy.io.parse_tle(tle)[source]
+

Parse a TLE returning Kozai mean orbital elements.

+
+

Parameters

+
+
tle2-tuple of str

Line1 and Line2 of TLE as strings

+
+
+
+
+

Returns

+
+
afloat

Kozai mean semi-major axis in meters

+
+
efloat

Kozai mean eccentricity

+
+
ifloat

Kozai mean inclination in radians

+
+
pafloat

Kozai mean periapsis argument in radians

+
+
raanfloat

Kozai mean right ascension of the ascending node in radians

+
+
trueAnomalyfloat

Kozai mean true anomaly in radians

+
+
tfloat

GPS seconds; i.e., seconds since 1980-01-06 00:00:00 UTC

+
+
+
+
+

Notes

+

Dynamic TLE terms, including the drag coefficient and ballistic coefficient, +are ignored in this function.

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.pd_flatten.html b/api/ssapy.io.pd_flatten.html new file mode 100644 index 0000000..bb33b15 --- /dev/null +++ b/api/ssapy.io.pd_flatten.html @@ -0,0 +1,125 @@ + + + + + + + pd_flatten — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pd_flatten

+
+
+ssapy.io.pd_flatten(data, factor=1)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.pdstr_to_arrays.html b/api/ssapy.io.pdstr_to_arrays.html new file mode 100644 index 0000000..b47e613 --- /dev/null +++ b/api/ssapy.io.pdstr_to_arrays.html @@ -0,0 +1,125 @@ + + + + + + + pdstr_to_arrays — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pdstr_to_arrays

+
+
+ssapy.io.pdstr_to_arrays(df)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.pload.html b/api/ssapy.io.pload.html new file mode 100644 index 0000000..b5f459b --- /dev/null +++ b/api/ssapy.io.pload.html @@ -0,0 +1,125 @@ + + + + + + + pload — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

pload

+
+
+ssapy.io.pload(filename_)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.psave.html b/api/ssapy.io.psave.html new file mode 100644 index 0000000..03a64fe --- /dev/null +++ b/api/ssapy.io.psave.html @@ -0,0 +1,125 @@ + + + + + + + psave — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

psave

+
+
+ssapy.io.psave(filename_, data_)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.read_csv.html b/api/ssapy.io.read_csv.html new file mode 100644 index 0000000..6927b87 --- /dev/null +++ b/api/ssapy.io.read_csv.html @@ -0,0 +1,152 @@ + + + + + + + read_csv — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

read_csv

+
+
+ssapy.io.read_csv(file_name, sep=None, dtypes=None, col=False, to_np=False, drop_nan=False, skiprows=[])[source]
+

Read a CSV file with options.

+
+

Parameters

+
+
file_namestr

The path to the CSV file.

+
+
sepstr, optional

The delimiter used in the CSV file. If None, delimiter will be guessed.

+
+
dtypesdict, optional

Dictionary specifying data types for columns.

+
+
colbool or list of str, optional

Specify columns to read. If False, read all columns.

+
+
to_npbool, optional

Convert the loaded data to a NumPy array.

+
+
drop_nanbool, optional

Drop rows with missing values (NaNs) from the loaded DataFrame.

+
+
skiprowslist of int, optional

Rows to skip while reading the CSV file.

+
+
+
+
+

Returns

+
+
DataFrame or NumPy array

The loaded data in either a DataFrame or a NumPy array format.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.read_tle.html b/api/ssapy.io.read_tle.html new file mode 100644 index 0000000..390f249 --- /dev/null +++ b/api/ssapy.io.read_tle.html @@ -0,0 +1,142 @@ + + + + + + + read_tle — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

read_tle

+
+
+ssapy.io.read_tle(sat_name, tle_filename)[source]
+

Get the TLE data from the file for the satellite with the given name

+
+

Parameters

+
+
sat_namestr

NORAD name of the satellite

+
+
tle_filenamestr

Path and name of file where TLE is

+
+
+
+
+

Returns

+
+
line1, line2str

Both lines of the satellite TLE

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.read_tle_catalog.html b/api/ssapy.io.read_tle_catalog.html new file mode 100644 index 0000000..da869f1 --- /dev/null +++ b/api/ssapy.io.read_tle_catalog.html @@ -0,0 +1,142 @@ + + + + + + + read_tle_catalog — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

read_tle_catalog

+
+
+ssapy.io.read_tle_catalog(fname, n_lines=2)[source]
+

Read in a TLE catalog file

+
+

Parameters

+
+
fnamestring

The filename

+
+
n_linesint

number of lines per tle, usually 2 but sometimes 3

+
+
+
+
+

Returns

+
+
cataloglist

lists containing TLEs

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.rmdir.html b/api/ssapy.io.rmdir.html new file mode 100644 index 0000000..97bb8dd --- /dev/null +++ b/api/ssapy.io.rmdir.html @@ -0,0 +1,125 @@ + + + + + + + rmdir — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

rmdir

+
+
+ssapy.io.rmdir(source_)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.rmfile.html b/api/ssapy.io.rmfile.html new file mode 100644 index 0000000..17c3cbd --- /dev/null +++ b/api/ssapy.io.rmfile.html @@ -0,0 +1,125 @@ + + + + + + + rmfile — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

rmfile

+
+
+ssapy.io.rmfile(pathname)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.save_csv.html b/api/ssapy.io.save_csv.html new file mode 100644 index 0000000..ad00bea --- /dev/null +++ b/api/ssapy.io.save_csv.html @@ -0,0 +1,135 @@ + + + + + + + save_csv — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

save_csv

+
+
+ssapy.io.save_csv(file_name, df, sep='\t', dtypes=None)[source]
+

Save a Pandas DataFrame to a CSV file.

+
+
Args:

file_name (str): The path to the CSV file. +df (DataFrame): The Pandas DataFrame to save. +sep (str): The delimiter used in the CSV file. +dtypes (dict): A dictionary specifying data types for columns.

+
+
Returns:

None

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.save_csv_line.html b/api/ssapy.io.save_csv_line.html new file mode 100644 index 0000000..82ee3d8 --- /dev/null +++ b/api/ssapy.io.save_csv_line.html @@ -0,0 +1,134 @@ + + + + + + + save_csv_line — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

save_csv_line

+
+
+ssapy.io.save_csv_line(file_name, df, sep='\t', dtypes=None)[source]
+

Save a Pandas DataFrame to a CSV file, appending the DataFrame to the file if it exists.

+
+
Args:

file_name (str): The path to the CSV file. +df (DataFrame): The Pandas DataFrame to save. +sep (str): The delimiter used in the CSV file.

+
+
Returns:

None

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.io.str_to_array.html b/api/ssapy.io.str_to_array.html new file mode 100644 index 0000000..b912ef7 --- /dev/null +++ b/api/ssapy.io.str_to_array.html @@ -0,0 +1,125 @@ + + + + + + + str_to_array — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

str_to_array

+
+
+ssapy.io.str_to_array(s)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.linker.BinarySelectorParams.html b/api/ssapy.linker.BinarySelectorParams.html new file mode 100644 index 0000000..7184b9e --- /dev/null +++ b/api/ssapy.linker.BinarySelectorParams.html @@ -0,0 +1,152 @@ + + + + + + + BinarySelectorParams — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

BinarySelectorParams

+
+
+class ssapy.linker.BinarySelectorParams(num_tracks, num_orbits, init_value=1, dtype=<class 'numpy.float64'>)[source]
+

Bases: ModelSelectorParams

+

Special methods for the binary model selection variables

+

TODO: Use a masked array here?

+

Methods Summary

+ + + + + + + + + +

get_linked_track_indices(model_index)

Select those tracks that are linked to the given model_index

get_unlinked_track_indices()

Select those models that are not linked to any tracks

+

Methods Documentation

+
+
+get_linked_track_indices(model_index)[source]
+

Select those tracks that are linked to the given model_index

+
+ +
+
+get_unlinked_track_indices()[source]
+

Select those models that are not linked to any tracks

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.linker.Linker.html b/api/ssapy.linker.Linker.html new file mode 100644 index 0000000..377f368 --- /dev/null +++ b/api/ssapy.linker.Linker.html @@ -0,0 +1,307 @@ + + + + + + + Linker — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Linker

+
+
+class ssapy.linker.Linker(iods, num_orbits=None, a_orbit=0.01)[source]
+

Bases: object

+

Monte Carlo linking of uncorrelated orbit tracks

+
+

Parameters

+
+
iodslist

List of Particles class instances summarizing initial orbit determinations (iods)

+
+
num_orbitsint, optional

Number of orbit models to fit. If not specified, set num_orbits = num_tracks

+
+
a_orbitfloat, optional

Clustering hyperparameter in the Dirichlet prior on P_orbit (Default: 0.01)

+
+
+
+
+

Attributes

+
+
iodslist

List of Particles class instances summarizing initial orbit determinations (iods)

+
+
num_tracksint

Number of observed tracks. Equal to the length of the iods list.

+
+
num_orbitsint, optional

Number of orbit models to fit. If not specified, set num_orbits = num_tracks

+
+
orbit_selectorsBinarySelectorParams

The orbit selector parameters

+
+
p_orbitModelSelectorParams

The prior parameters on the orbit selectors

+
+
+
+
+

Methods

+
+
sample_Porbit_conditional_dist(track_ndx)

Sample from the conditional distribution for p_orbit at track_index

+
+
sample_orbit_selectors_from_data_conditional(track_ndx)

Sample from the conditional distribution for orbit_selector at track_index

+
+
update_orbit_parameters()

Find the groups of linked tracks and update all particles across linked groups

+
+
update_params_using_carlin_chib()

Perform MCMC step using algorithm of Carlin & Chib (1995).

+
+
save_step(outfile_head)

Save MCMC step to file

+
+
+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + +

sample([nStep, outfile_head])

Run the top-level MCMC to link tracks and refine orbit parameters

sample_Porbit_conditional_dist(track_ndx)

Sample from the conditional distribution for p_orbit at track_index

sample_orbit_selectors_from_data_conditional(...)

Sample from the conditional distribution for orbit_selector at track_index ignoring the dependence orbit selector dependence of the conditional priors for the orbital elements.

save_step(outfile_head)

Save MCMC step to file

update_orbit_parameters()

Find the groups of linked tracks and update all particles across linked groups

update_params_using_carlin_chib([verbose])

Perform MCMC step using algorithm of Carlin & Chib (1995).

+

Methods Documentation

+
+
+sample(nStep=100, outfile_head='linker')[source]
+

Run the top-level MCMC to link tracks and refine orbit parameters

+
+

Parameters

+
+
nStepint

Number of MCMC steps

+
+
outfile_headstr, optional

Head (i.e., first part) of the output file name for chain steps

+
+
+
+
+ +
+
+sample_Porbit_conditional_dist(track_ndx)[source]
+

Sample from the conditional distribution for p_orbit at track_index

+
+

Parameters

+
+
track_indexint

The observation list index

+
+
+
+
+

Returns

+
+
p_orbitarray_like

Draw from the conditional distribution for the p.orbit parameters

+
+
+
+
+ +
+
+sample_orbit_selectors_from_data_conditional(track_ndx, verbose=True)[source]
+

Sample from the conditional distribution for orbit_selector at track_index ignoring the +dependence orbit selector dependence of the conditional priors for the orbital elements.

+

Draw from :math:P(y | k, theta_k) P(k | P_orbit):

+
+

Parameters

+
+
track_indexint

The observation list index

+
+
+
+
+

Returns

+
+
orbit_selectorsarray_like

Draw from the conditional distribution for the orbit_selectors parameters

+
+
+
+
+ +
+
+save_step(outfile_head)[source]
+

Save MCMC step to file

+
+

Parameters

+
+
outfile_headstr

Head (i.e., first part) of the output file name for chain steps

+
+
+
+
+ +
+
+update_orbit_parameters()[source]
+

Find the groups of linked tracks and update all particles across linked groups

+
+ +
+
+update_params_using_carlin_chib(verbose=True)[source]
+

Perform MCMC step using algorithm of Carlin & Chib (1995).

+

Sample the “active” orbit parameters from their conditional distribution +(in a Gibbs update), the “inactive” orbit parameters from the +pseudo-prior, and Gibbs updates for the orbit selectors and their prior +parameters. This method is distinct from the Reversible Jump MCMC +(RJMCMC) updates that have no need of the pseudo-prior at the expense of +finding a suitable proposal distribution for the model updates.

+

The Gibbs updates for each class of parameters in turn defines a blocking +procedure that can, in principle, give more efficient sampling than the +joint updates in RJMCMC if a good proposal distribution for the orbit +selectors is not known (see Godsill 2001).

+

Here the pseudo-prior for the “inactive” orbit parameters is not conjugate +to the orbit selector prior, so there is no direct method to perform Gibbs +samples of the orbit selectors. Instead, this function performs an MH +update of orbit selectors with a proposal from the distribution determined +by the product of the orbit likelihoods and the orbit selector prior (which +would be the orbit selector conditional distribution if the orbit priors were +independent of the orbit selectors).

+
+

Returns

+
+
lnPfloat

Current log-posterior value

+
+
+
+
+

References

+

Carlin, B., Chib, S., 1995. Bayesian model choice via Markov chain +Monte Carlo methods. Journal of the Royal Statistical Society. +Series B (Method- ological) 57 (3), 473?484.

+

Godsill, S., 2001. On the relationship between Markov chain Monte Carlo +methods for model uncertainty. Journal of Computational and Graphical +Statistics 10 (2), 230?248.

+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.linker.ModelSelectorParams.html b/api/ssapy.linker.ModelSelectorParams.html new file mode 100644 index 0000000..3b49164 --- /dev/null +++ b/api/ssapy.linker.ModelSelectorParams.html @@ -0,0 +1,141 @@ + + + + + + + ModelSelectorParams — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ModelSelectorParams

+
+
+class ssapy.linker.ModelSelectorParams(num_tracks, num_orbits, init_val=1.0, dtype=<class 'numpy.float64'>)[source]
+

Bases: object

+

Container to hold model selection parameters or hyperparameters

+

Methods Summary

+ + + + + + +

normalize()

+

Methods Documentation

+
+
+normalize()[source]
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.orbit.EarthObserver.html b/api/ssapy.orbit.EarthObserver.html new file mode 100644 index 0000000..f1fc256 --- /dev/null +++ b/api/ssapy.orbit.EarthObserver.html @@ -0,0 +1,219 @@ + + + + + + + EarthObserver — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

EarthObserver

+
+
+class ssapy.orbit.EarthObserver(lon, lat, elevation=0, fast=False)[source]
+

Bases: object

+

An earth-bound observer.

+
+

Parameters

+
+
lonfloat

Geodetic longitude in degrees (increasing to the East).

+
+
latfloat

Geodetic latitude in degrees.

+
+
elevationfloat, optional

Elevation in meters.

+
+
fastbool, optional

Use fast lookup tables for Earth Orientation parameters. ~ meter and +~10 micron/sec accurate for dates between approximately 1973 and the +present. Less accurate outside this range.

+
+
+
+
+

Attributes

+

lon +lat +elevation +itrs : array_like (3,)

+
+

ITRS coordinates in meters.

+
+
+
+

Methods

+
+
getRV(time)

Get position and velocity at specified time(s) in the GCRF frame.

+
+
+

Methods Summary

+ + + + + + + + + +

getRV(time)

Get position and velocity at specified time(s).

sunAlt(time)

Get Sun altitude for observer at time.

+

Methods Documentation

+
+
+getRV(time)[source]
+

Get position and velocity at specified time(s).

+
+

Parameters

+
+
timearray_like or astropy.time.Time (n,)

If float (array), then should correspond to GPS seconds; +i.e., seconds since 1980-01-06 00:00:00 UTC

+
+
+
+
+

Returns

+
+
rarray_like (n, 3)

Position in meters.

+
+
varray_like (n, 3)

Velocity in meters per second.

+
+
+
+
+

Notes

+

The returned position and velocity are in the GCRF frame.

+
+
+ +
+
+sunAlt(time)[source]
+

Get Sun altitude for observer at time.

+
+

Parameters

+
+
timearray_like or astropy.time.Time (n,)

If float (array), then should correspond to GPS seconds; +i.e., seconds since 1980-01-06 00:00:00 UTC

+
+
+
+
+

Returns

+
+
altarray_like(n,)

Altitude of sun in radians.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.orbit.Orbit.html b/api/ssapy.orbit.Orbit.html new file mode 100644 index 0000000..418126d --- /dev/null +++ b/api/ssapy.orbit.Orbit.html @@ -0,0 +1,709 @@ + + + + + + + Orbit — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Orbit

+
+
+class ssapy.orbit.Orbit(r, v, t, mu=398600441800000.0, propkw=None)[source]
+

Bases: object

+

Orbital state of one or more objects.

+

This class represents one or more instantaneous (osculating) states of +orbiting bodies. Representations in Cartesian, Keplerian, and equinoctial +elements are available. The default initializer requires Cartesian +elements, though class methods are also available to initialize with +Keplerian or equinoctial elements.

+

Note that generally this class can represent either a single scalar orbit, +in which case attributes will generally be scalar floats, or a vector of +orbits, in which case attributes will be ndarrays of floats. For attributes +that are intrinsically vectors even for a single orbit (position, velocity, +…), a 2d array will be used for a “vector of orbits”, with the first +dimension representing the different orbits.

+

For simplicity, we will only indicate the “single scalar Orbit” dimensions +in docstrings. For a vector-Orbit, most scalar input arguments can be +supplied as broadcastable arrays, and scalar attributes become array +attributes. When a multi-dimensional array is required, the first dimension +is the one over different orbits.

+
+

Parameters

+
+
r(3,) array_like

Position of orbiting object in meters.

+
+
v(3,) array_like

Velocity of orbiting objects in meters per second.

+
+
tfloat or astropy.time.Time

If float or array of float, then should correspond to GPS seconds; i.e., +seconds since 1980-01-06 00:00:00 UTC

+
+
mufloat, optional

Gravitational constant of central body in m^3/s^2. (Default: Earth’s +gravitational constant in WGS84).

+
+
+
+
+

Attributes

+
+
r(3,) array_like

Position of orbiting object in meters.

+
+
v(3,) array_like

Velocity of orbiting object in meters per second.

+
+
tfloat

GPS seconds; i.e., seconds since 1980-01-06 00:00:00 UTC

+
+
mufloat

Gravitational constant of central body in m^3/s^2

+
+
afloat

Semimajor axis in meters.

+
+
hx, hyfloat

Components of the equinoctial inclination vector.

+
+
ex, eyfloat

Components of the equinoctial eccentricity vector.

+
+
lvfloat

True longitude in radians.

+
+
lEfloat

Eccentric longitude in radians.

+
+
lMfloat

Mean longitude in radians.

+
+
efloat

Keplerian eccentricity.

+
+
ifloat

Keplerian inclination in radians.

+
+
pafloat

Keplerian periapsis argument in radians.

+
+
raanfloat

Keplerian right ascension of the ascending node in radians.

+
+
trueAnomalyfloat

Keplerian true anomaly in radians.

+
+
eccentricAnomalyfloat

Keplerian eccentric anomaly in radians.

+
+
meanAnomalyfloat

Keplerian mean anomaly in radians.

+
+
periodfloat

Orbital period in seconds.

+
+
meanMotionfloat

Keplerian mean motion in radians per second.

+
+
pfloat

Semi-latus rectum in meters.

+
+
angularMomentum(3,) array_like

(Specific) angular momentum in m^2/s.

+
+
energy: float

(Specific) orbital energy in m^2/s^2.

+
+
LRL(3,) array_like

Laplace-Runge-Lenz vector in m^3/s^2.

+
+
periapsis(3,) array_like

Periapsis coordinate of orbit in meters.

+
+
apoapsis(3,) array_like

Apoapsis coordinate of orbit in meters.

+
+
+

equinoctialElements +keplerianElements

+
+
+

Methods

+
+
fromKeplerianElements(a, e, i, pa, raan, trueAnomaly, t, mu)

Construct an Orbit from Keplerian elements.

+
+
fromEquinoctialElements(a, hx, hy, ex, ey, lv, t, mu)

Construct an Orbit from Equinoctial elements.

+
+
at(t, propagator)

Propagate orbit to time t and return new Orbit.

+
+
+
+
+

Notes

+

Although much of the Orbit class here is agnostic with respect to the +coordinate reference frame, we strongly recommend that positions and +velocities be specified in the GCRF frame. Some other classes in this +module do insist on this frame, (e.g., EarthObserver). We will try to +indicate where the GCRF frame is required, but make no guarantees that we +don’t miss any such instances.

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

LRL

meant to be used for lazy evaluation of an object attribute.

a

meant to be used for lazy evaluation of an object attribute.

angularMomentum

meant to be used for lazy evaluation of an object attribute.

apoapsis

meant to be used for lazy evaluation of an object attribute.

e

meant to be used for lazy evaluation of an object attribute.

eccentricAnomaly

meant to be used for lazy evaluation of an object attribute.

energy

meant to be used for lazy evaluation of an object attribute.

equinoctialElements

Equinoctial elements (a, hx, hy, ex, ey, lv).

ex

meant to be used for lazy evaluation of an object attribute.

ey

meant to be used for lazy evaluation of an object attribute.

hx

meant to be used for lazy evaluation of an object attribute.

hy

meant to be used for lazy evaluation of an object attribute.

i

meant to be used for lazy evaluation of an object attribute.

keplerianElements

Keplerian elements (a, e, i, pa, raan, trueAnomaly).

kozaiMeanKeplerianElements

meant to be used for lazy evaluation of an object attribute.

lE

meant to be used for lazy evaluation of an object attribute.

lM

meant to be used for lazy evaluation of an object attribute.

lonPa

meant to be used for lazy evaluation of an object attribute.

lv

meant to be used for lazy evaluation of an object attribute.

meanAnomaly

meant to be used for lazy evaluation of an object attribute.

meanMotion

meant to be used for lazy evaluation of an object attribute.

p

meant to be used for lazy evaluation of an object attribute.

pa

meant to be used for lazy evaluation of an object attribute.

periapsis

meant to be used for lazy evaluation of an object attribute.

period

meant to be used for lazy evaluation of an object attribute.

raan

meant to be used for lazy evaluation of an object attribute.

tle

meant to be used for lazy evaluation of an object attribute.

trueAnomaly

meant to be used for lazy evaluation of an object attribute.

+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + +

at(t[, propagator])

Propagate this orbit to time t.

fromEquinoctialElements(a, hx, hy, ex, ey, lv, t)

Construct an Orbit from equinoctial elements.

fromKeplerianElements(a, e, i, pa, raan, ...)

Construct an Orbit from Keplerian elements.

fromKozaiMeanKeplerianElements(a, e, i, pa, ...)

Construct an Orbit from Kozai mean Keplerian elements.

fromTLE(sat_name, tle_filename[, propkw])

Construct an Orbit from a TLE file

fromTLETuple(tle[, propkw])

Construct an Orbit from a TLE tuple

+

Attributes Documentation

+
+
+LRL
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+a
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+angularMomentum
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+apoapsis
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+e
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+eccentricAnomaly
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+energy
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+equinoctialElements
+

Equinoctial elements (a, hx, hy, ex, ey, lv).

+
+ +
+
+ex
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+ey
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+hx
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+hy
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+i
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+keplerianElements
+

Keplerian elements (a, e, i, pa, raan, trueAnomaly).

+
+ +
+
+kozaiMeanKeplerianElements
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+lE
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+lM
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+lonPa
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+lv
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+meanAnomaly
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+meanMotion
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+p
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+pa
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+periapsis
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+period
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+raan
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+tle
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+trueAnomaly
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +

Methods Documentation

+
+
+at(t, propagator=KeplerianPropagator())[source]
+

Propagate this orbit to time t.

+
+

Parameters

+
+
tfloat or astropy.time.Time

If float, then should correspond to GPS seconds; i.e., seconds since +1980-01-06 00:00:00 UTC

+
+
propagatorPropagator, optional

The propagator instance to use.

+
+
+
+
+

Returns

+
+
Orbit

Propagated Orbit.

+
+
+
+
+ +
+
+classmethod fromEquinoctialElements(a, hx, hy, ex, ey, lv, t, mu=398600441800000.0, propkw=None)[source]
+

Construct an Orbit from equinoctial elements.

+
+

Parameters

+
+
afloat

Semimajor axis in meters.

+
+
hx, hyfloat

Components of the equinoctial inclination vector.

+
+
ex, eyfloat

Components of the equinoctial eccentricity vector.

+
+
lvfloat

True longitude in radians.

+
+
tfloat or astropy.time.Time

If float, then should correspond to GPS seconds; i.e., seconds since +1980-01-06 00:00:00 UTC

+
+
mufloat, optional

Gravitational constant of central body in m^3/s^2. (Default: +Earth’s gravitational constant in WGS84).

+
+
+
+
+

Returns

+
+
Orbit

The Orbit with given parameters.

+
+
+
+
+ +
+
+classmethod fromKeplerianElements(a, e, i, pa, raan, trueAnomaly, t, mu=398600441800000.0, propkw=None)[source]
+

Construct an Orbit from Keplerian elements.

+
+

Parameters

+
+
afloat

Semimajor axis in meters.

+
+
efloat

Keplerian eccentricity.

+
+
ifloat

Keplerian inclination in radians.

+
+
pafloat

Keplerian periapsis argument in radians.

+
+
raanfloat

Keplerian right ascension of the ascending node in radians.

+
+
trueAnomalyfloat

Keplerian true anomaly in radians.

+
+
tfloat or astropy.time.Time

If float, then should correspond to GPS seconds; i.e., seconds since +1980-01-06 00:00:00 UTC

+
+
mufloat, optional

Gravitational constant of central body in m^3/s^2. (Default: +Earth’s gravitational constant in WGS84).

+
+
+
+
+

Returns

+
+
Orbit

The Orbit with given parameters.

+
+
+
+
+ +
+
+classmethod fromKozaiMeanKeplerianElements(a, e, i, pa, raan, trueAnomaly, t, mu=398600441800000.0, _useTEME=False, propkw=None)[source]
+

Construct an Orbit from Kozai mean Keplerian elements. By default, +this method also converts from the TEME reference frame to the GCRF +frame. This is mainly to support TLEs and SGP4, so the default +gravitational parameter is WGS84.

+
+

Parameters

+
+
afloat

Semimajor axis in meters.

+
+
efloat

Keplerian eccentricity.

+
+
ifloat

Keplerian inclination in radians.

+
+
pafloat

Keplerian periapsis argument in radians.

+
+
raanfloat

Keplerian right ascension of the ascending node in radians.

+
+
trueAnomalyfloat

Keplerian true anomaly in radians.

+
+
tfloat or astropy.time.Time

If float, then should correspond to GPS seconds; i.e., seconds since +1980-01-06 00:00:00 UTC

+
+
mufloat, optional

Gravitational constant of central body in m^3/s^2. (Default: +Earth’s gravitational constant in WGS84).

+
+
+
+
+

Returns

+
+
Orbit

The Orbit with given parameters.

+
+
+
+
+ +
+
+classmethod fromTLE(sat_name, tle_filename, propkw=None)[source]
+

Construct an Orbit from a TLE file

+
+

Parameters

+
+
sat_namestr

NORAD name of the satellite

+
+
tle_filenamestr

Path and name of file where TLE is

+
+
+
+
+

Returns

+

Orbit

+
+
+ +
+
+classmethod fromTLETuple(tle, propkw=None)[source]
+

Construct an Orbit from a TLE tuple

+
+

Parameters

+
+
tle2-tuple of str

Line1 and Line2 of TLE as strings

+
+
+
+
+

Returns

+

Orbit

+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.orbit.OrbitalObserver.html b/api/ssapy.orbit.OrbitalObserver.html new file mode 100644 index 0000000..69a58cb --- /dev/null +++ b/api/ssapy.orbit.OrbitalObserver.html @@ -0,0 +1,180 @@ + + + + + + + OrbitalObserver — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

OrbitalObserver

+
+
+class ssapy.orbit.OrbitalObserver(orbit, propagator=KeplerianPropagator())[source]
+

Bases: object

+

An observer in orbit.

+
+

Parameters

+
+
orbitOrbit

The orbit of the observer.

+
+
propagatorPropagator, optional

The propagator instance to use.

+
+
+
+
+

Attributes

+

orbit +propagator

+
+
+

Methods

+
+
getRV(time)

Get position and velocity at specified time(s).

+
+
+

Methods Summary

+ + + + + + +

getRV(time)

Get position and velocity at specified time(s).

+

Methods Documentation

+
+
+getRV(time)[source]
+

Get position and velocity at specified time(s).

+
+

Parameters

+
+
timearray_like or astropy.time.Time (n,)

If float (array), then should correspond to GPS seconds; +i.e., seconds since 1980-01-06 00:00:00 UTC

+
+
+
+
+

Returns

+
+
rarray_like (n, 3)

Position in meters.

+
+
varray_like (n, 3)

Velocity in meters per second.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.orbit_solver.DanchickTwoPosOrbitSolver.html b/api/ssapy.orbit_solver.DanchickTwoPosOrbitSolver.html new file mode 100644 index 0000000..d02f6c7 --- /dev/null +++ b/api/ssapy.orbit_solver.DanchickTwoPosOrbitSolver.html @@ -0,0 +1,148 @@ + + + + + + + DanchickTwoPosOrbitSolver — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

DanchickTwoPosOrbitSolver

+
+
+class ssapy.orbit_solver.DanchickTwoPosOrbitSolver(*args, **kwargs)[source]
+

Bases: TwoPosOrbitSolver

+

Methods Summary

+ + + + + + + + + +

X(g)

dXdg(g)

+

Methods Documentation

+
+
+static X(g)[source]
+
+ +
+
+static dXdg(g)[source]
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.orbit_solver.GaussTwoPosOrbitSolver.html b/api/ssapy.orbit_solver.GaussTwoPosOrbitSolver.html new file mode 100644 index 0000000..8708786 --- /dev/null +++ b/api/ssapy.orbit_solver.GaussTwoPosOrbitSolver.html @@ -0,0 +1,126 @@ + + + + + + + GaussTwoPosOrbitSolver — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

GaussTwoPosOrbitSolver

+
+
+class ssapy.orbit_solver.GaussTwoPosOrbitSolver(*args, **kwargs)[source]
+

Bases: TwoPosOrbitSolver

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.orbit_solver.SheferTwoPosOrbitSolver.html b/api/ssapy.orbit_solver.SheferTwoPosOrbitSolver.html new file mode 100644 index 0000000..4164cf0 --- /dev/null +++ b/api/ssapy.orbit_solver.SheferTwoPosOrbitSolver.html @@ -0,0 +1,236 @@ + + + + + + + SheferTwoPosOrbitSolver — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

SheferTwoPosOrbitSolver

+
+
+class ssapy.orbit_solver.SheferTwoPosOrbitSolver(*args, **kwargs)[source]
+

Bases: TwoPosOrbitSolver

+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

D(x)

F(x)

Flam0(x)

G(xi)

X(x)

Y(x)

Yxi(xi)

Z(xi)

alpha(x)

beta(xi)

semiMajorAxis(x)

solve()

yPoly(y)

+

Methods Documentation

+
+
+D(x)[source]
+
+ +
+
+F(x)[source]
+
+ +
+
+Flam0(x)[source]
+
+ +
+
+G(xi)[source]
+
+ +
+
+static X(x)[source]
+
+ +
+
+Y(x)[source]
+
+ +
+
+Yxi(xi)[source]
+
+ +
+
+static Z(xi)[source]
+
+ +
+
+alpha(x)[source]
+
+ +
+
+beta(xi)[source]
+
+ +
+
+semiMajorAxis(x)[source]
+
+ +
+
+solve()[source]
+
+ +
+
+yPoly(y)[source]
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.orbit_solver.ThreeAngleOrbitSolver.html b/api/ssapy.orbit_solver.ThreeAngleOrbitSolver.html new file mode 100644 index 0000000..8e17e03 --- /dev/null +++ b/api/ssapy.orbit_solver.ThreeAngleOrbitSolver.html @@ -0,0 +1,350 @@ + + + + + + + ThreeAngleOrbitSolver — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ThreeAngleOrbitSolver

+
+
+class ssapy.orbit_solver.ThreeAngleOrbitSolver(e1, e2, e3, R1, R2, R3, t1, t2, t3, mu=398600441800000.0, tol=1e-08, maxiter=100)[source]
+

Bases: object

+

Determine orbit of satellite for set of three angle-only observations.

+

Might only work well for smallish changes in sector position of +observations.

+
+

Parameters

+
+
e1, e2, e3(3,) array_like

Unit vectors indicating observed directions (dimensionless).

+
+
R1, R2, R3(3,) array_like

Vectors indicating the positions of the observers (in meters).

+
+
t1, t2, t3float or astropy.time.Time

Times of observations. +If float, then should correspond to GPS seconds; i.e., seconds since +1980-01-06 00:00:00 UTC

+
+
mufloat, optional

Gravitational constant of central body in m^3/s^2. (Default: Earth’s +gravitational constant in WGS84).

+
+
tolfloat, optional

Tolerance to use to stop iteratively improving solution. +(default 1e-8).

+
+
maxiterint, optional

Maximum number of iterations to use. (default: 100)

+
+
+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

D

meant to be used for lazy evaluation of an object attribute.

D11

meant to be used for lazy evaluation of an object attribute.

D12

meant to be used for lazy evaluation of an object attribute.

D13

meant to be used for lazy evaluation of an object attribute.

D21

meant to be used for lazy evaluation of an object attribute.

D22

meant to be used for lazy evaluation of an object attribute.

D23

meant to be used for lazy evaluation of an object attribute.

D31

meant to be used for lazy evaluation of an object attribute.

D32

meant to be used for lazy evaluation of an object attribute.

D33

meant to be used for lazy evaluation of an object attribute.

d1

meant to be used for lazy evaluation of an object attribute.

d2

meant to be used for lazy evaluation of an object attribute.

d3

meant to be used for lazy evaluation of an object attribute.

t21

meant to be used for lazy evaluation of an object attribute.

t2131

meant to be used for lazy evaluation of an object attribute.

t31

meant to be used for lazy evaluation of an object attribute.

t32

meant to be used for lazy evaluation of an object attribute.

t3231

meant to be used for lazy evaluation of an object attribute.

+

Methods Summary

+ + + + + + +

solve()

+

Attributes Documentation

+
+
+D
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+D11
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+D12
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+D13
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+D21
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+D22
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+D23
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+D31
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+D32
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+D33
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+d1
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+d2
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+d3
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+t21
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+t2131
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+t31
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+t32
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+
+t3231
+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +

Methods Documentation

+
+
+solve()[source]
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.orbit_solver.TwoPosOrbitSolver.html b/api/ssapy.orbit_solver.TwoPosOrbitSolver.html new file mode 100644 index 0000000..326e8a1 --- /dev/null +++ b/api/ssapy.orbit_solver.TwoPosOrbitSolver.html @@ -0,0 +1,162 @@ + + + + + + + TwoPosOrbitSolver — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

TwoPosOrbitSolver

+
+
+class ssapy.orbit_solver.TwoPosOrbitSolver(r1, r2, t1, t2, mu=398600441800000.0, kappaSign=1, lam=0, eps=3e-16, maxiter=100)[source]
+

Bases: object

+
+

Parameters

+
+
r1, r2(3,) array_like

Positions at t1 and t2 in meters.

+
+
t1, t2float or astropy.time.Time

Times of observations. +If float, then should correspond to GPS seconds; i.e., seconds since +1980-01-06 00:00:00 UTC

+
+
mufloat, optional

Gravitational constant of central body in m^3/s^2. (Default: Earth’s +gravitational constant in WGS84).

+
+
kappaSignint, optional

+1 for prograde, -1 for retrograde

+
+
lamint, optional

Number of complete orbits between observations. (Default: 0)

+
+
epsfloat, optional

Iteration tolerance.

+
+
maxiterint, optional

Maximum number of iterations.

+
+
+

Methods Summary

+ + + + + + +

solve()

+

Methods Documentation

+
+
+solve()[source]
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.particles.Particles.html b/api/ssapy.particles.Particles.html new file mode 100644 index 0000000..fdc59b1 --- /dev/null +++ b/api/ssapy.particles.Particles.html @@ -0,0 +1,389 @@ + + + + + + + Particles — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Particles

+
+
+class ssapy.particles.Particles(particles, rvprobability, lnpriors=None, ln_weights=None)[source]
+

Bases: object

+

A class for importance (re-)sampling orbit model parameter samples

+
+

Parameters

+
+
particles(num_particles, 6) array_like

Positions and velocities of orbiting object at epoch in meters and meters / second. +The ‘chain’ part of the output from rvsampler.XXSampler.sample

+
+
rvprobabilityclass instance

An instance of an RVProbability for this epoch. The Particles class wraps the lnlike +method of the supplied RVProbability object.

+
+
ln_weights(num_particles,) array_like, optional

Weights for each particle in the input particles

+
+
+
+
+

Attributes

+
+
particles(num_particles, ) array_like

Positions and velocities of orbiting object at epoch in meters and meters / second. +The ‘chain’ part of the output from RVSampler.sample

+
+
rvprobabilityclass instance

An instance of an RVProbability for this epoch. The Particles class wraps the lnlike +method of the supplied RVProbability object.

+
+
ln_wts(num_particles,) array_like

Log weights for each particle.

+
+
num_particlesint

Number of particles

+
+
initial_particles(num_particles, 6) array_like

Copy of input particles to enable reset_to_pseudo_prior()

+
+
initial_ln_wts(num_particles,) array_like

Copy of input log weights to enable reset_to_pseudo_prior()

+
+
epochfloat or astropy.time.Time

The time at which the model parameters (position and velocity) are specified. If float, +then should correspond to GPS seconds; i.e., seconds since 1980-01-06 00:00:00 UTC.

+
+
orbitslist

List of Orbit class instances derived from each particle

+
+
lnpriors(num_particles,) array_like

Log prior probabilities for each particle. The priors are as set in the input RVProbability +object.

+
+
+
+
+

Methods

+
+
reset_to_pseudo_prior()

Reset the particles and weights to their values at instantiation

+
+
move(epoch)

Move particles to the specified epoch

+
+
lnlike(epoch_particles)

Evaluate the log-likelihood of the input particles given internally stored measurements

+
+
reweight(epoch_particles)

Reweight particles using cross-epoch likelihoods

+
+
resample(num_particles)

Resample particles to achieve near-uniform weighting per particle

+
+
fuse(epoch_particles, verbose)

Fuse particles from a different epoch and fuse internal particles and weights

+
+
draw_orbit()

Draw a single orbit model from the internal list of particles

+
+
mean()

Evaluate the weighted mean of the particle values

+
+
+

Attributes Summary

+ + + + + + + + + + + + +

epoch

Get the epoch time at which the particles (i.e., position and velocity) are defined

lnpriors

Get an array of log prior probabilities for each particle

orbits

Get a list of orbits corresponding to each stored particle

+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

draw_orbit()

Draw a single orbit model from the internal particle collection with probability proportional to the internal weights.

fuse(epoch_particles[, verbose])

Add particles from a new epoch and fuse all epoch particles and weights accordingly

lnlike(orbits)

Evaluate this epoch likelihood given one or more particles

mean()

Evaluate the weighted mean of all particles

move(epoch)

Move particles to the given epoch

resample(num_particles)

Resample particles to achieve near-uniform weighting per particle

reset_to_pseudo_prior()

reweight(epoch_particles)

Reweight particles using cross-epoch likelihoods

+

Attributes Documentation

+
+
+epoch
+

Get the epoch time at which the particles (i.e., position and velocity) are defined

+
+ +
+
+lnpriors
+

Get an array of log prior probabilities for each particle

+
+ +
+
+orbits
+

Get a list of orbits corresponding to each stored particle

+
+ +

Methods Documentation

+
+
+draw_orbit()[source]
+

Draw a single orbit model from the internal particle collection with probability +proportional to the internal weights.

+
+

Returns

+
+
particlearray (1, 6)

Position and velocity for one particle

+
+
+
+
+ +
+
+fuse(epoch_particles, verbose=False)[source]
+

Add particles from a new epoch and fuse all epoch particles and weights accordingly

+
+

Parameters

+
+
epoch_particlesParticles

The particles object from another observation

+
+
verbosebool, optional

Enable verbose output to stdout

+
+
+
+
+

Returns

+
+

None. Side effect is to fuse the internal particles state.

+
+
+
+ +
+
+lnlike(orbits)[source]
+

Evaluate this epoch likelihood given one or more particles

+
+

Parameters

+
+
orbitsList of Orbit class instances

A list of the Orbit models for each particle, e.g., as generated by Particles.orbits

+
+
+
+
+

Returns

+
+
lnlikearray (num_particles, )

Array of log-likelihood values for each particle

+
+
+
+
+ +
+
+mean()[source]
+

Evaluate the weighted mean of all particles

+
+

Returns

+
+
mean(6,) array_like

Weighted mean of the particle values (3*m, 3*m/s)

+
+
+
+
+ +
+
+move(epoch)[source]
+

Move particles to the given epoch

+
+

Parameters

+

epoch : astropy.time.Time

+
+
+

Returns

+
+
particlesarray (num_particles, 6)

Position and velocity for each particle at the new epoch

+
+
+
+
+ +
+
+resample(num_particles)[source]
+

Resample particles to achieve near-uniform weighting per particle

+
+

Parameters

+
+
num_particlesint

The number of particles to keep

+
+
+
+
+

Returns

+
+

None. Side effect is to update the internal particles state.

+
+
+
+ +
+
+reset_to_pseudo_prior()[source]
+
+ +
+
+reweight(epoch_particles)[source]
+

Reweight particles using cross-epoch likelihoods

+
+
The weights for the kth particle are,
+
w_k = log(Prod_i L_(d_i | theta_k) / L(d_j | theta_k))

= Sum_{i /= j} log(L(d_i | theta_k))

+
+
+
+
+

where j is the current epoch, theta are the particle parameters, and d_i is the data from +epoch i.

+
+

Parameters

+
+
epoch_particlesParticles

The particles object from another observation

+
+
+
+
+

Returns

+
+
statusbool

Status (True means success). Side effect is to update the internal particles state.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.check_numpy_array.html b/api/ssapy.plotUtils.check_numpy_array.html new file mode 100644 index 0000000..8d49591 --- /dev/null +++ b/api/ssapy.plotUtils.check_numpy_array.html @@ -0,0 +1,125 @@ + + + + + + + check_numpy_array — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

check_numpy_array

+
+
+ssapy.plotUtils.check_numpy_array(variable)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.drawEarth.html b/api/ssapy.plotUtils.drawEarth.html new file mode 100644 index 0000000..54ff9f1 --- /dev/null +++ b/api/ssapy.plotUtils.drawEarth.html @@ -0,0 +1,139 @@ + + + + + + + drawEarth — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

drawEarth

+
+
+ssapy.plotUtils.drawEarth(time, ngrid=100, R=6378137.0, rfactor=1)[source]
+
+

Parameters

+
+
timearray_like or astropy.time.Time (n,)

If float (array), then should correspond to GPS seconds; +i.e., seconds since 1980-01-06 00:00:00 UTC

+
+
ngrid: int

Number of grid points in Earth model.

+
+
R: float

Earth radius in meters. Default is WGS84 value.

+
+
rfactor: float

Factor by which to enlarge Earth (for visualization purposes)

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.ecef_plot.html b/api/ssapy.plotUtils.ecef_plot.html new file mode 100644 index 0000000..5f73094 --- /dev/null +++ b/api/ssapy.plotUtils.ecef_plot.html @@ -0,0 +1,135 @@ + + + + + + + ecef_plot — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ecef_plot

+
+
+ssapy.plotUtils.ecef_plot(r, times, limits=False, title='', save_path=False, figsize=(7, 7))[source]
+
+

Parameters

+
+
r(n,3) or array of [(n,3), …, (n,3)] array_like

Position of orbiting object(s) in meters.

+
+
+

times: times when r was calculated. +limits: optional - x and y limits of the plot +title: optional - title of the plot

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.format_xaxis_decimal_year.html b/api/ssapy.plotUtils.format_xaxis_decimal_year.html new file mode 100644 index 0000000..c8e63ed --- /dev/null +++ b/api/ssapy.plotUtils.format_xaxis_decimal_year.html @@ -0,0 +1,125 @@ + + + + + + + format_xaxis_decimal_year — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

format_xaxis_decimal_year

+
+
+ssapy.plotUtils.format_xaxis_decimal_year(time_array, ax)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.gcrf_plot.html b/api/ssapy.plotUtils.gcrf_plot.html new file mode 100644 index 0000000..6d0c6de --- /dev/null +++ b/api/ssapy.plotUtils.gcrf_plot.html @@ -0,0 +1,135 @@ + + + + + + + gcrf_plot — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

gcrf_plot

+
+
+ssapy.plotUtils.gcrf_plot(r, times=[], limits=False, title='', save_path=False, figsize=(7, 7))[source]
+
+

Parameters

+
+
r(n,3) or array of [(n,3), …, (n,3)] array_like

Position of orbiting object(s) in meters.

+
+
+

times: optional - times when r was calculated. +limits: optional - x and y limits of the plot +title: optional - title of the plot

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.groundTrackPlot.html b/api/ssapy.plotUtils.groundTrackPlot.html new file mode 100644 index 0000000..ed9f234 --- /dev/null +++ b/api/ssapy.plotUtils.groundTrackPlot.html @@ -0,0 +1,131 @@ + + + + + + + groundTrackPlot — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

groundTrackPlot

+
+
+ssapy.plotUtils.groundTrackPlot(r, time, ground_stations=None)[source]
+
+

Parameters

+

r : (3,) array_like - Orbit positions in meters. +times: (n,) array_like - array of Astropy Time objects or time in gps seconds.

+

optional - ground_stations: (n,2) array of of ground station (lat,lon) in degrees

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.groundTrackVideo.html b/api/ssapy.plotUtils.groundTrackVideo.html new file mode 100644 index 0000000..8c20367 --- /dev/null +++ b/api/ssapy.plotUtils.groundTrackVideo.html @@ -0,0 +1,135 @@ + + + + + + + groundTrackVideo — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

groundTrackVideo

+
+
+ssapy.plotUtils.groundTrackVideo(r, time)[source]
+
+

Parameters

+
+
r(3,) array_like

Position of orbiting object in meters.

+
+
tfloat or astropy.time.Time

If float or array of float, then should correspond to GPS seconds; i.e., +seconds since 1980-01-06 00:00:00 UTC

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.load_earth_file.html b/api/ssapy.plotUtils.load_earth_file.html new file mode 100644 index 0000000..5888377 --- /dev/null +++ b/api/ssapy.plotUtils.load_earth_file.html @@ -0,0 +1,125 @@ + + + + + + + load_earth_file — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

load_earth_file

+
+
+ssapy.plotUtils.load_earth_file()[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.load_moon_file.html b/api/ssapy.plotUtils.load_moon_file.html new file mode 100644 index 0000000..9481559 --- /dev/null +++ b/api/ssapy.plotUtils.load_moon_file.html @@ -0,0 +1,125 @@ + + + + + + + load_moon_file — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

load_moon_file

+
+
+ssapy.plotUtils.load_moon_file()[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.lunar_plot.html b/api/ssapy.plotUtils.lunar_plot.html new file mode 100644 index 0000000..6824e3d --- /dev/null +++ b/api/ssapy.plotUtils.lunar_plot.html @@ -0,0 +1,135 @@ + + + + + + + lunar_plot — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

lunar_plot

+
+
+ssapy.plotUtils.lunar_plot(r, times, limits=False, title='', save_path=False, figsize=(7, 7))[source]
+
+

Parameters

+
+
r(n,3) or array of [(n,3), …, (n,3)] array_like

Position of orbiting object(s) in meters.

+
+
+

times: array of Astropy time objects +limits: optional - x and y limits of the plot +title: optional - title of the plot

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.lunar_stationary_plot.html b/api/ssapy.plotUtils.lunar_stationary_plot.html new file mode 100644 index 0000000..0df9837 --- /dev/null +++ b/api/ssapy.plotUtils.lunar_stationary_plot.html @@ -0,0 +1,135 @@ + + + + + + + lunar_stationary_plot — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

lunar_stationary_plot

+
+
+ssapy.plotUtils.lunar_stationary_plot(r, times, limits=False, title='', save_path=False, figsize=(7, 7))[source]
+
+

Parameters

+
+
r(n,3) or array of [(n,3), …, (n,3)] array_like

Position of orbiting object(s) in meters.

+
+
+

times: array of Astropy time objects +limits: optional - x and y limits of the plot +title: optional - title of the plot

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.plotRVCorner.html b/api/ssapy.plotUtils.plotRVCorner.html new file mode 100644 index 0000000..49c2485 --- /dev/null +++ b/api/ssapy.plotUtils.plotRVCorner.html @@ -0,0 +1,147 @@ + + + + + + + plotRVCorner — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

plotRVCorner

+
+
+ssapy.plotUtils.plotRVCorner(chain, lnprob, lnprior, start=0, **kwargs)[source]
+

Make rv samples corner plot.

+
+

Parameters

+
+
chainarray_like (nStep, nChain, 6)

MCMC sample chain.

+
+
lnprobarray_like (nStep, nChain)

Log posterior probability of sample chain.

+
+
lnpriorarray_like (nStep, nChain)

Log prior probability of sample chain.

+
+
startint, optional

Optional starting index for selecting samples

+
+
+

kwargs : optional kwargs to pass on to corner.corner

+
+
+

Returns

+
+
figmatplotlib.Figure

Figure instance from corner.corner.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.plotRVTrace.html b/api/ssapy.plotUtils.plotRVTrace.html new file mode 100644 index 0000000..93842b2 --- /dev/null +++ b/api/ssapy.plotUtils.plotRVTrace.html @@ -0,0 +1,141 @@ + + + + + + + plotRVTrace — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

plotRVTrace

+
+
+ssapy.plotUtils.plotRVTrace(chain, lnprob, lnprior, start=0, fig=None)[source]
+

Plot rv MCMC traces.

+
+

Parameters

+
+
chainarray_like (nStep, nChain, 6)

MCMC sample chain.

+
+
lnprobarray_like (nStep, nChain)

Log posterior probability of sample chain.

+
+
lnpriorarray_like (nStep, nChain)

Log posterior probability of sample chain.

+
+
startint, optional

Optional starting index for plot

+
+
figmatplotlib Figure, optional

Where to make plots. Will be created if not explicitly supplied.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.save_plot_to_pdf.html b/api/ssapy.plotUtils.save_plot_to_pdf.html new file mode 100644 index 0000000..813eb2a --- /dev/null +++ b/api/ssapy.plotUtils.save_plot_to_pdf.html @@ -0,0 +1,125 @@ + + + + + + + save_plot_to_pdf — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

save_plot_to_pdf

+
+
+ssapy.plotUtils.save_plot_to_pdf(figure, pdf_path)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.save_plot_to_png.html b/api/ssapy.plotUtils.save_plot_to_png.html new file mode 100644 index 0000000..c385f4a --- /dev/null +++ b/api/ssapy.plotUtils.save_plot_to_png.html @@ -0,0 +1,133 @@ + + + + + + + save_plot_to_png — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

save_plot_to_png

+
+
+ssapy.plotUtils.save_plot_to_png(figure, save_path, dpi=200)[source]
+

Save a Python figure as a PNG image.

+
+
Parameters:

figure (matplotlib.figure.Figure): The figure object to be saved. +save_path (str): The file path where the PNG image will be saved.

+
+
Returns:

None

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.plotUtils.tracking_plot.html b/api/ssapy.plotUtils.tracking_plot.html new file mode 100644 index 0000000..5ab5947 --- /dev/null +++ b/api/ssapy.plotUtils.tracking_plot.html @@ -0,0 +1,184 @@ + + + + + + + tracking_plot — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

tracking_plot

+
+
+ssapy.plotUtils.tracking_plot(r, times, ground_stations=None, limits=False, title='', figsize=(7, 8), save_path=False, elev=30, azim=90, scale=5)[source]
+

Create a 3D tracking plot of satellite positions over time on Earth’s surface.

+
+

Parameters

+
+
rnumpy.ndarray or list of numpy.ndarray

Satellite positions in GCRF coordinates. If a single numpy array, it represents the satellite’s position vector over time. If a list of numpy arrays, it represents multiple satellite position vectors.

+
+
timesnumpy.ndarray

Timestamps corresponding to the satellite positions.

+
+
ground_stationslist of tuples, optional

List of ground stations represented as (latitude, longitude) pairs. Default is None.

+
+
limitsfloat or bool, optional

The plot limits for x, y, and z axes. If a float, it sets the limits for all axes. If False, the limits are automatically determined based on the data. Default is False.

+
+
titlestr, optional

Title for the plot. Default is an empty string.

+
+
figsizetuple, optional

Figure size in inches (width, height). Default is (7, 8).

+
+
save_pathstr or bool, optional

Path to save the plot as an image or PDF. If False, the plot is not saved. Default is False.

+
+
elevfloat, optional

Elevation angle for the 3D plot view. Default is 30 degrees.

+
+
azimfloat, optional

Azimuthal angle for the 3D plot view. Default is 90 degrees.

+
+
scaleint, optional

Scaling factor for the Earth’s image. Default is 5.

+
+
framestr, optional

Coordinate frame for the satellite positions, “gcrf” or “ecef”. Default is “gcrf”.

+
+
+
+
+

Returns

+
+
matplotlib.figure.Figure

The created tracking plot figure.

+
+
+
+
+

Notes

+
    +
  • The function supports plotting the positions of one or multiple satellites over time.

  • +
  • Ground station locations can be optionally displayed on the plot.

  • +
  • The limits parameter can be set to specify the plot’s axis limits or automatically determined if set to False.

  • +
  • The frame parameter determines the coordinate frame for the satellite positions, “gcrf” (default) or “ecef”.

  • +
+
+
+

Example Usage

+
    +
  • Single satellite tracking plot: +tracking_plot(r_satellite, times, ground_stations=[(40, -75)], title=”Satellite Tracking”)

  • +
  • Multiple satellite tracking plot: +tracking_plot([r_satellite_1, r_satellite_2], times, title=”Multiple Satellite Tracking”)

  • +
  • Save the plot as a PNG image: +tracking_plot(r_satellite, times, save_path=”satellite_tracking.png”)

  • +
  • Customize the plot view: +tracking_plot(r_satellite, times, elev=45, azim=120)

  • +
  • Set custom axis limits: +tracking_plot(r_satellite, times, limits=500)

  • +
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.propagator.KeplerianPropagator.html b/api/ssapy.propagator.KeplerianPropagator.html new file mode 100644 index 0000000..1261530 --- /dev/null +++ b/api/ssapy.propagator.KeplerianPropagator.html @@ -0,0 +1,128 @@ + + + + + + + KeplerianPropagator — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

KeplerianPropagator

+
+
+class ssapy.propagator.KeplerianPropagator[source]
+

Bases: Propagator

+

A basic Keplerian propagator for finding the position and velocity of an +orbiting object at some future or past time.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.propagator.Propagator.html b/api/ssapy.propagator.Propagator.html new file mode 100644 index 0000000..8944c3b --- /dev/null +++ b/api/ssapy.propagator.Propagator.html @@ -0,0 +1,128 @@ + + + + + + + Propagator — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Propagator

+
+
+class ssapy.propagator.Propagator[source]
+

Bases: ABC

+

Abstract base class for orbit propagators.

+

Note, the interface for propagators is through functions in ssapy.compute.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.propagator.RK4Propagator.html b/api/ssapy.propagator.RK4Propagator.html new file mode 100644 index 0000000..0d90db7 --- /dev/null +++ b/api/ssapy.propagator.RK4Propagator.html @@ -0,0 +1,138 @@ + + + + + + + RK4Propagator — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

RK4Propagator

+
+
+class ssapy.propagator.RK4Propagator(accel, h)[source]
+

Bases: RKPropagator

+

Runge-Kutta 4th order numerical integrator.

+
+

Parameters

+
+
accelssapy.Accel

Accel object containing the acceleration model by which to propagate.

+
+
hfloat

Step size in seconds. Reasonable values are ~50s for LEO propagations +over a ~day for ~meter accuracy, or 1000s for GEO propagations over a +few days with ~meter accuracy. For best results, check for convergence.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.propagator.RK78Propagator.html b/api/ssapy.propagator.RK78Propagator.html new file mode 100644 index 0000000..481ef0a --- /dev/null +++ b/api/ssapy.propagator.RK78Propagator.html @@ -0,0 +1,157 @@ + + + + + + + RK78Propagator — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

RK78Propagator

+
+
+class ssapy.propagator.RK78Propagator(accel, h, tol=(1e-06, 1e-06, 1e-06, 1e-09, 1e-09, 1e-09))[source]
+

Bases: RK8Propagator

+

Runge-Kutta 8th order numerical integrator with adaptive step size +computed from embedded 7th order integrator error estimate.

+
+

Parameters

+
+
accelssapy.Accel

Accel object containing the acceleration model by which to propagate.

+
+
hfloat

Initial step size in seconds. A few 10s of seconds is usually a good +starting point here; it’ll automatically be adjusted by the algorithm.

+
+
tolfloat or array of float.

Tolerance for a single integrator step. Used to adaptively change the +integrator step size. Broadcasts to 6-dimensions. A good target is +usually ~[1e-6, 1e-6, 1e-6, 1e-9, 1e-9, 1e-9] for cm accuracy at GEO +over a few days, or around LEO over a few hours.

+
+
+

Attributes Summary

+ + + + + + +

b7

+

Attributes Documentation

+
+
+b7 = array([ 0.02955321,  0.        ,  0.        ,  0.        ,  0.        ,        -0.82860628,  0.3112409 ,  2.46734519, -2.54694165,  1.44354858,         0.0794156 ,  0.04444444,  0.        ])
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.propagator.RK8Propagator.html b/api/ssapy.propagator.RK8Propagator.html new file mode 100644 index 0000000..a51660a --- /dev/null +++ b/api/ssapy.propagator.RK8Propagator.html @@ -0,0 +1,168 @@ + + + + + + + RK8Propagator — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

RK8Propagator

+
+
+class ssapy.propagator.RK8Propagator(accel, h)[source]
+

Bases: RKPropagator

+

Runge-Kutta 8th order numerical integrator.

+
+

Parameters

+
+
accelssapy.Accel

Accel object containing the acceleration model by which to propagate.

+
+
hfloat

Step size in seconds. ~70s yields accuracy of ~1e-6 meters at GEO over +a couple of days. ~20s yields accuracy of ~1e-5 meters at LEO over a +few hours.

+
+
+

Attributes Summary

+ + + + + + + + + + + + +

a

b8

c

+

Attributes Documentation

+
+
+a = array([[ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00],        [ 5.55555556e-02,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00],        [ 2.08333333e-02,  6.25000000e-02,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00],        [ 3.12500000e-02,  0.00000000e+00,  9.37500000e-02,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00],        [ 3.12500000e-01,  0.00000000e+00, -1.17187500e+00,          1.17187500e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00],        [ 3.75000000e-02,  0.00000000e+00,  0.00000000e+00,          1.87500000e-01,  1.50000000e-01,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00],        [ 4.79101371e-02,  0.00000000e+00,  0.00000000e+00,          1.12248713e-01, -2.55056738e-02,  1.28468239e-02,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00],        [ 1.69179898e-02,  0.00000000e+00,  0.00000000e+00,          3.87848278e-01,  3.59773699e-02,  1.96970214e-01,         -1.72713852e-01,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00],        [ 6.90957534e-02,  0.00000000e+00,  0.00000000e+00,         -6.34247977e-01, -1.61197575e-01,  1.38650309e-01,          9.40928614e-01,  2.11636326e-01,  0.00000000e+00,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00],        [ 1.83556997e-01,  0.00000000e+00,  0.00000000e+00,         -2.46876808e+00, -2.91286888e-01, -2.64730202e-02,          2.84783876e+00,  2.81387331e-01,  1.23744900e-01,          0.00000000e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00],        [-1.21542482e+00,  0.00000000e+00,  0.00000000e+00,          1.66726087e+01,  9.15741828e-01, -6.05660580e+00,         -1.60035736e+01,  1.48493031e+01, -1.33715757e+01,          5.13418265e+00,  0.00000000e+00,  0.00000000e+00,          0.00000000e+00],        [ 2.58860916e-01,  0.00000000e+00,  0.00000000e+00,         -4.77448579e+00, -4.35093014e-01, -3.04948333e+00,          5.57792004e+00,  6.15583159e+00, -5.06210459e+00,          2.19392617e+00,  1.34627999e-01,  0.00000000e+00,          0.00000000e+00],        [ 8.22427600e-01,  0.00000000e+00,  0.00000000e+00,         -1.16586733e+01, -7.57622117e-01,  7.13973588e-01,          1.20757750e+01, -2.12765911e+00,  1.99016621e+00,         -2.34286472e-01,  1.75898578e-01,  0.00000000e+00,          0.00000000e+00]])
+
+ +
+
+b8 = array([ 0.04174749,  0.        ,  0.        ,  0.        ,  0.        ,        -0.05545233,  0.23931281,  0.70351067, -0.75975961,  0.66056303,         0.15818748, -0.23810954,  0.25      ])
+
+ +
+
+c = array([0.        , 0.05555556, 0.08333333, 0.125     , 0.3125    ,        0.375     , 0.1475    , 0.465     , 0.56486545, 0.65      ,        0.92465628, 1.        , 1.        ])
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.propagator.RKPropagator.html b/api/ssapy.propagator.RKPropagator.html new file mode 100644 index 0000000..7eb2875 --- /dev/null +++ b/api/ssapy.propagator.RKPropagator.html @@ -0,0 +1,126 @@ + + + + + + + RKPropagator — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

RKPropagator

+
+
+class ssapy.propagator.RKPropagator[source]
+

Bases: Propagator, ABC

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.propagator.SGP4Propagator.html b/api/ssapy.propagator.SGP4Propagator.html new file mode 100644 index 0000000..d18bc1e --- /dev/null +++ b/api/ssapy.propagator.SGP4Propagator.html @@ -0,0 +1,146 @@ + + + + + + + SGP4Propagator — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

SGP4Propagator

+
+
+class ssapy.propagator.SGP4Propagator(t=None, truncate=False)[source]
+

Bases: Propagator

+

Propagate using simplified perturbation model SGP4.

+
+

Parameters

+
+
tfloat or astropy.time.Time, optional

Reference time at which to compute frame transformation between GCRF +and TEME. SGP4 calculations occur in the TEME frame, but useful input +and output is in the GCRF frame. In principle, one could do the +transformation at every instant in time for which the orbit is queried. +However, the rate of change in the transformation is small, ~0.15 arcsec +per day, so here we just use a single transformation.

+

If float, then should correspond to GPS seconds; +i.e., seconds since 1980-01-06 00:00:00 UTC

+

If None, then use the time of the orbit being propagated.

+
+
truncatebool, optional

Truncate elements to precision of TLE ASCII format? This may be +required in order to reproduce the results of running sgp4 directly from +a TLE.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.propagator.SciPyPropagator.html b/api/ssapy.propagator.SciPyPropagator.html new file mode 100644 index 0000000..b2ee0df --- /dev/null +++ b/api/ssapy.propagator.SciPyPropagator.html @@ -0,0 +1,138 @@ + + + + + + + SciPyPropagator — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

SciPyPropagator

+
+
+class ssapy.propagator.SciPyPropagator(accel, ode_kwargs=None)[source]
+

Bases: Propagator

+

Propagate using the scipy.integrate.solve_ivp ODE solver.

+
+

Parameters

+
+
accelssapy.Accel

Accel object containing the acceleration model by which to propagate.

+
+
ode_kwargsdict

Keyword arguments to pass to scipy.integrate.solve_ivp. Of particular +interest may be the kwarg rtol, which usually yields reasonable +results when set ~1e-7. For best results, check for convergence.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.propagator.SeriesPropagator.html b/api/ssapy.propagator.SeriesPropagator.html new file mode 100644 index 0000000..582a15c --- /dev/null +++ b/api/ssapy.propagator.SeriesPropagator.html @@ -0,0 +1,138 @@ + + + + + + + SeriesPropagator — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

SeriesPropagator

+
+
+class ssapy.propagator.SeriesPropagator(order=2)[source]
+

Bases: Propagator

+

Propagate using Taylor series expansion of Keplerian motion. This is +quite a bit faster than the full Keplerian propagator, but only valid for +short time intervals. Using order=2 for a few seconds of time though is +definitely reasonable.

+
+

Parameters

+
+
orderint, optional

Order of series expansion. 1 = constant velocity, 2 = constant +acceleration

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.propagator.default_numerical.html b/api/ssapy.propagator.default_numerical.html new file mode 100644 index 0000000..2e53a44 --- /dev/null +++ b/api/ssapy.propagator.default_numerical.html @@ -0,0 +1,143 @@ + + + + + + + default_numerical — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

default_numerical

+
+
+ssapy.propagator.default_numerical(*args, cls=None, accel=None, extra_accel=None)[source]
+

Construct a numerical propagator with sensible default acceleration.

+
+

Parameters

+
+
*argslist

Arguments to Propagator

+
+
clsPropagator

class to use. Default of None means SciPyPropagator.

+
+
accelAccel

acceleration model to use. Default of None means Earth(4, 4), sun, moon.

+
+
extra_accelAccel or list of Accel, optional

Additional accelerations to add to accel.

+
+
+
+
+

Returns

+

Instance of Propagator with desired Accel model.

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.APrior.html b/api/ssapy.rvsampler.APrior.html new file mode 100644 index 0000000..3f3ed0a --- /dev/null +++ b/api/ssapy.rvsampler.APrior.html @@ -0,0 +1,179 @@ + + + + + + + APrior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

APrior

+
+
+class ssapy.rvsampler.APrior(amean, asigma)[source]
+

Bases: object

+

Gaussian prior on orbit semimajor axis a.

+
+

Parameters

+
+
ameanfloat

Prior mean on a in meters.

+
+
asigmafloat

Prior standard deviation on a in meters.

+
+
+
+
+

Attributes

+

aMean +aSigma

+
+
+

Methods

+
+
__call__(orbit)

Returns log prior probability of given orbit.

+
+
+

Methods Summary

+ + + + + + +

__call__(orbit[, distance, chi])

Return log prior probability of given orbit.

+

Methods Documentation

+
+
+__call__(orbit, distance=None, chi=False)[source]
+

Return log prior probability of given orbit.

+
+

Parameters

+
+
orbitOrbit

The given orbit.

+
+
distance: float, optional

Distance between object and observer (m) [not used]

+
+
+
+
+

Returns

+
+
logpriorfloat

The log of the prior probability for given orbit.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.AreaPrior.html b/api/ssapy.rvsampler.AreaPrior.html new file mode 100644 index 0000000..978ff7e --- /dev/null +++ b/api/ssapy.rvsampler.AreaPrior.html @@ -0,0 +1,181 @@ + + + + + + + AreaPrior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AreaPrior

+
+
+class ssapy.rvsampler.AreaPrior(mean=0, sigma=2)[source]
+

Bases: object

+

Gaussian prior on log10(area) of object.

+
+

Parameters

+
+
meanfloat

mean of log10(area)

+
+
sigmafloat

standard deviation of log10(area)

+
+
+
+
+

Attributes

+

mean, sigma

+
+
+

Methods

+
+
__call__(orbit)

Returns log prior probability of given orbit.

+
+
+

Methods Summary

+ + + + + + +

__call__(orbit[, distance, chi])

Return log prior probability of given orbit.

+

Methods Documentation

+
+
+__call__(orbit, distance=None, chi=False)[source]
+

Return log prior probability of given orbit.

+
+

Parameters

+
+
orbitOrbit

The given orbit.

+
+
distancefloat

Distance between object and observer (m)

+
+
chibool

If True, return chi corresponding to log probability, rather than +log probability.

+
+
+
+
+

Returns

+
+
logpriorfloat

The log of the prior probability for given orbit.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.DirectInitializer.html b/api/ssapy.rvsampler.DirectInitializer.html new file mode 100644 index 0000000..1769dfa --- /dev/null +++ b/api/ssapy.rvsampler.DirectInitializer.html @@ -0,0 +1,186 @@ + + + + + + + DirectInitializer — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

DirectInitializer

+
+
+class ssapy.rvsampler.DirectInitializer(samples, replace=False)[source]
+

Bases: object

+

Directly specify initial position and velocity samples. This can be +useful if restarting sampling after some previous sampling step has +completed, for instance, if adding new observations to a previously sampled +arc.

+
+

Parameters

+
+
samplesarray_like (nSample, 6)

Samples in position (in meters) and velocity (in meters per second). +Columns are [x, y, z, vx, vy, vz].

+
+
replacebool, optional

Whether to sample with or without replacement.

+
+
+
+
+

Attributes

+

samples +replace

+
+
+

Methods

+
+
__call__(nSample)

Returns nSample initial samples.

+
+
+

Methods Summary

+ + + + + + +

__call__([nSample])

Return samples.

+

Methods Documentation

+
+
+__call__(nSample=50)[source]
+

Return samples.

+
+

Parameters

+
+
nSampleint

Number of samples to return.

+
+
+
+
+

Returns

+
+
samplesarray_like, (nSample, 6)

Generated samples. Columns are [x, y, z, vx, vy, vz].

+
+
+
+
+

Notes

+

If self.replace=False and nSample is greater than the number of input +samples, then some samples will be duplicated.

+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.DistanceProjectionInitializer.html b/api/ssapy.rvsampler.DistanceProjectionInitializer.html new file mode 100644 index 0000000..ed680c5 --- /dev/null +++ b/api/ssapy.rvsampler.DistanceProjectionInitializer.html @@ -0,0 +1,180 @@ + + + + + + + DistanceProjectionInitializer — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

DistanceProjectionInitializer

+
+
+class ssapy.rvsampler.DistanceProjectionInitializer(arc, rho, indices=[0, 1], rSigma=4216417.236450565, vSigma=307.46599995993046)[source]
+

Bases: object

+

Initialize position and velocity from two closely spaced (in time) +observations of ra/dec. The position is initialized by projecting along the +direction of the first observation a given slant range. The velocity is +then initialized assuming that the slant range derivative is zero, and that +the motion in between observations is inertial.

+
+

Parameters

+
+
arcQTable with columns for ‘ra’, ‘dec’, ‘rStation_GCRF’.

The set of observations used to initialize samples. Note, only the +first row of the given QTable will be used.

+
+
rhoDistance in meters to project, measured from the position of the

observer (not the center of the Earth).

+
+
indiceslist of indices indicating which two observations in arc to use

for initialization. Default: [0, 1]; i.e., use the first two +observations.

+
+
rSigmafloat, optional

Standard deviation of sample positions dispersion in meters.

+
+
vSigmafloat, optional

Standard deviation of sample velocity dispersion in meters per second.

+
+
+
+
+

Attributes

+
+
observationsQTable

Indicated two rows of the input arc.

+
+
+

rho +rSigma +vSigma

+
+
+

Methods

+
+
__call__(nSample)

Returns nSample initial samples.

+
+
+

Methods Summary

+ + + + + + +

__call__(nSample)

Call self as a function.

+

Methods Documentation

+
+
+__call__(nSample)[source]
+

Call self as a function.

+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.EPrior.html b/api/ssapy.rvsampler.EPrior.html new file mode 100644 index 0000000..b664fc9 --- /dev/null +++ b/api/ssapy.rvsampler.EPrior.html @@ -0,0 +1,181 @@ + + + + + + + EPrior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

EPrior

+
+
+class ssapy.rvsampler.EPrior(emean, esigma)[source]
+

Bases: object

+

Gaussian prior on orbit eccentricity e.

+
+

Parameters

+
+
emeanfloat

Prior mean on e.

+
+
esigmafloat

Prior standard deviation on e.

+
+
+
+
+

Attributes

+

eMean +eSigma

+
+
+

Methods

+
+
__call__(orbit)

Returns log prior probability of given orbit.

+
+
+

Methods Summary

+ + + + + + +

__call__(orbit[, distance, chi])

Return log prior probability of given orbit.

+

Methods Documentation

+
+
+__call__(orbit, distance=None, chi=False)[source]
+

Return log prior probability of given orbit.

+
+

Parameters

+
+
orbitOrbit

The given orbit.

+
+
distance: float, optional

Distance between object and observer (m) [not used]

+
+
chibool

If true, return chi rather than ln(prob)

+
+
+
+
+

Returns

+
+
logpriorfloat

The log of the prior probability for given orbit.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.EmceeSampler.html b/api/ssapy.rvsampler.EmceeSampler.html new file mode 100644 index 0000000..c20b60d --- /dev/null +++ b/api/ssapy.rvsampler.EmceeSampler.html @@ -0,0 +1,193 @@ + + + + + + + EmceeSampler — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

EmceeSampler

+
+
+class ssapy.rvsampler.EmceeSampler(probfn, initializer, nWalker=50)[source]
+

Bases: object

+

A sampler built on the emcee package.

+

The emcee packages implements the Goodman and Weare (2010) affine-invariant +sampler. This is often an efficient sampler to use when selecting a +proposal distribution is not simple.

+
+

Parameters

+
+
probfnCallable

Callable that accepts sampling parameters p and returns posterior +probability.

+
+
initializerCallable

Callable that accepts number of desired initial samples and returns +samples. Note, the initial samples should be (at least mostly) unique.

+
+
nWalkerint

Number of ‘walkers’ to use in the Goodman & Weare algorithm. This +should generally be at least 12 for the 6-dimensional problem.

+
+
+
+
+

Attributes

+

probfn +initializer +nWalker

+
+
+

Methods

+
+
sample(nBurn, nStep)

Generate samples, first discarding nBurn steps, and then keeping nStep +steps.

+
+
+

Methods Summary

+ + + + + + +

sample([nBurn, nStep])

Generate samples.

+

Methods Documentation

+
+
+sample(nBurn=1000, nStep=500)[source]
+

Generate samples.

+
+

Parameters

+
+
nBurnint

Number of initial steps to take but discard.

+
+
nStepint

Number of subsequent steps to keep and return.

+
+
+
+
+

Returns

+
+
chainarray (nStep, nWalker, 6)

Generated samples. Columns are [x, y, z, vx, vy, vz].

+
+
lnprobarray (nStep, nWalker)

The log posterior probabilities of the samples.

+
+
lnpriorarray(nStep, nWalker)

The log prior values for each step.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.EquinoctialExEyPrior.html b/api/ssapy.rvsampler.EquinoctialExEyPrior.html new file mode 100644 index 0000000..1ab7cbd --- /dev/null +++ b/api/ssapy.rvsampler.EquinoctialExEyPrior.html @@ -0,0 +1,179 @@ + + + + + + + EquinoctialExEyPrior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

EquinoctialExEyPrior

+
+
+class ssapy.rvsampler.EquinoctialExEyPrior(sigma)[source]
+

Bases: object

+

Gaussian prior on equinoctial ex and ey, favoring ex = ey = 0.

+
+

Parameters

+
+
sigmafloat

standard deviation on ex and ey

+
+
+
+
+

Attributes

+

sigma

+
+
+

Methods

+
+
__call__(orbit)

Returns log prior probability of given orbit.

+
+
+

Methods Summary

+ + + + + + +

__call__(orbit[, distance, chi])

Return log prior probability of given orbit.

+

Methods Documentation

+
+
+__call__(orbit, distance=None, chi=False)[source]
+

Return log prior probability of given orbit.

+
+

Parameters

+
+
orbitOrbit

The given orbit.

+
+
distancefloat

Distance between object and observer (m)

+
+
chibool

If True, return chi corresponding to log probability, rather than +log probability.

+
+
+
+
+

Returns

+
+
logpriorfloat

The log of the prior probability for given orbit.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.EquinoctialLMOptimizer.html b/api/ssapy.rvsampler.EquinoctialLMOptimizer.html new file mode 100644 index 0000000..3753d1f --- /dev/null +++ b/api/ssapy.rvsampler.EquinoctialLMOptimizer.html @@ -0,0 +1,148 @@ + + + + + + + EquinoctialLMOptimizer — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

EquinoctialLMOptimizer

+
+
+class ssapy.rvsampler.EquinoctialLMOptimizer(probfn, initel, fracstep=[1e-07, 1e-09, 1e-09, 1e-06, 1e-06, 1e-09], absstep=[1e-07, 1e-05, 1e-05, 0.0001, 0.0001, 0.0001], orbitattr=None)[source]
+

Bases: object

+

Methods Summary

+ + + + + + +

optimize(**fit_kws)

Run the optimizer and return the resulting fit parameters.

+

Methods Documentation

+
+
+optimize(**fit_kws)[source]
+

Run the optimizer and return the resulting fit parameters.

+
+

Returns

+
+
fit(6,) array_like

Least-squares fit as [a, e, i, pa, raan, trueAnomaly]

+
+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.GEOProjectionInitializer.html b/api/ssapy.rvsampler.GEOProjectionInitializer.html new file mode 100644 index 0000000..3341ab1 --- /dev/null +++ b/api/ssapy.rvsampler.GEOProjectionInitializer.html @@ -0,0 +1,187 @@ + + + + + + + GEOProjectionInitializer — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

GEOProjectionInitializer

+
+
+class ssapy.rvsampler.GEOProjectionInitializer(arc, rSigma=4216417.236450565, vSigma=307.46599995993046)[source]
+

Bases: object

+

Initialize position and velocity samples by projecting an observed ra/dec +into the equatorial plane and assuming a GEO statationary orbital velocity. +Samples are dispersed from this given position and velocity using an +isotropic Gaussian distribution.

+
+

Parameters

+
+
arcQTable with columns for ‘ra’, ‘dec’, ‘rStation_GCRF’.

The set of observations used to initialize samples. Note, only the +first row of the given QTable will be used.

+
+
rSigmafloat, optional

Standard deviation of sample positions dispersion in meters.

+
+
vSigmafloat, optional

Standard deviation of sample velocity dispersion in meters per second.

+
+
+
+
+

Attributes

+

rSigma +vSigma +observation : QTable

+
+

First row of input arc.

+
+
+
+

Methods

+
+
__call__(nSample)

Returns nSample initial samples.

+
+
+

Methods Summary

+ + + + + + +

__call__(nSample)

Generate samples.

+

Methods Documentation

+
+
+__call__(nSample)[source]
+

Generate samples.

+
+

Parameters

+
+
nSampleint

Number of samples to return.

+
+
+
+
+

Returns

+
+
samplesarray_like, (nSample, 6)

Generated samples. Columns are [x, y, z, vx, vy, vz].

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.GaussianRVInitializer.html b/api/ssapy.rvsampler.GaussianRVInitializer.html new file mode 100644 index 0000000..df853b9 --- /dev/null +++ b/api/ssapy.rvsampler.GaussianRVInitializer.html @@ -0,0 +1,184 @@ + + + + + + + GaussianRVInitializer — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

GaussianRVInitializer

+
+
+class ssapy.rvsampler.GaussianRVInitializer(rMean, vMean, rSigma=4216417.236450565, vSigma=307.46599995993046)[source]
+

Bases: object

+

Generate position and velocity samples as an isotropic Gaussian +distribution around an asserted position and velocity.

+
+

Parameters

+
+
rMeanarray_like (3,)

Mean of sample positions in meters.

+
+
vMeanarray_like (3,)

Mean of sample velocities in meters per second.

+
+
rSigmafloat, optional

Standard deviation of sample positions dispersion in meters.

+
+
vSigmafloat, optional

Standard deviation of sample velocity dispersion in meters per second.

+
+
+
+
+

Attributes

+

rMean +vMean +rSigma +vSigma

+
+
+

Methods

+
+
__call__(nSample)

Returns nSample initial samples.

+
+
+

Methods Summary

+ + + + + + +

__call__(nSample)

Generate initial samples.

+

Methods Documentation

+
+
+__call__(nSample)[source]
+

Generate initial samples.

+
+

Parameters

+
+
nSampleint

Number of samples to return.

+
+
+
+
+

Returns

+
+
samplesarray_like, (nSample, 6)

Generated samples. Columns are [x, y, z, vx, vy, vz].

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.LMOptimizer.html b/api/ssapy.rvsampler.LMOptimizer.html new file mode 100644 index 0000000..e742da0 --- /dev/null +++ b/api/ssapy.rvsampler.LMOptimizer.html @@ -0,0 +1,149 @@ + + + + + + + LMOptimizer — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

LMOptimizer

+
+
+class ssapy.rvsampler.LMOptimizer(probfn, initRV, fracstep=[1e-08, 1e-08, 1e-08, 1e-09, 1e-09, 1e-09], absstep=[1, 1, 1, 1e-06, 1e-06, 1e-06], orbitattr=None)[source]
+

Bases: object

+

Methods Summary

+ + + + + + +

optimize([usejac])

Run the optimizer and return the resulting fit parameters.

+

Methods Documentation

+
+
+optimize(usejac=True, **fit_kws)[source]
+

Run the optimizer and return the resulting fit parameters.

+
+

Returns

+
+
fit(6,) array_like

Least-squares fit as [x, y, z, vx, vy, vz] in meters, and +meters/second.

+
+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.LMOptimizerAngular.html b/api/ssapy.rvsampler.LMOptimizerAngular.html new file mode 100644 index 0000000..cae6519 --- /dev/null +++ b/api/ssapy.rvsampler.LMOptimizerAngular.html @@ -0,0 +1,149 @@ + + + + + + + LMOptimizerAngular — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

LMOptimizerAngular

+
+
+class ssapy.rvsampler.LMOptimizerAngular(probfn, initGuess, initObsPos, initObsVel, fracstep=[1e-07, 1e-07, 1e-07, 1e-07, 1e-07, 1e-07], absstep=[2.7777777777777775e-06, 2.7777777777777775e-06, 1, 2.7777777777777776e-09, 2.7777777777777776e-09, 0.01], orbitattr=None)[source]
+

Bases: object

+

Methods Summary

+ + + + + + +

optimize([usejac])

Run the optimizer and return the resulting fit parameters.

+

Methods Documentation

+
+
+optimize(usejac=True, **fit_kws)[source]
+

Run the optimizer and return the resulting fit parameters.

+
+

Returns

+
+
fit(6,) array_like

Least-squares fit as [ra, dec, slant, raRate, decRate, +slantRate] in rad, rad, m, rad/s, rad/s, m/s.

+
+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.LeastSquaresOptimizer.html b/api/ssapy.rvsampler.LeastSquaresOptimizer.html new file mode 100644 index 0000000..4bcdf27 --- /dev/null +++ b/api/ssapy.rvsampler.LeastSquaresOptimizer.html @@ -0,0 +1,158 @@ + + + + + + + LeastSquaresOptimizer — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

LeastSquaresOptimizer

+
+
+class ssapy.rvsampler.LeastSquaresOptimizer(probfn, initparam, translatorcls, absstep=None, fracstep=None, **kw)[source]
+

Bases: object

+

Base class for LeastSquaresOptimizers

+

Methods Summary

+ + + + + + + + + +

optimize(**fit_kws)

Run the optimizer and return the resulting fit parameters.

resid(p)

+

Methods Documentation

+
+
+optimize(**fit_kws)[source]
+

Run the optimizer and return the resulting fit parameters.

+
+

Returns

+
+
fit(6,) array_like

Least-squares fit as [x, y, z, vx, vy, vz] in meters, and +meters/second.

+
+
+
+
+ +
+
+resid(p)[source]
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.Log10AreaPrior.html b/api/ssapy.rvsampler.Log10AreaPrior.html new file mode 100644 index 0000000..37b2611 --- /dev/null +++ b/api/ssapy.rvsampler.Log10AreaPrior.html @@ -0,0 +1,181 @@ + + + + + + + Log10AreaPrior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Log10AreaPrior

+
+
+class ssapy.rvsampler.Log10AreaPrior(mean=-0.5, sigma=1.5)[source]
+

Bases: object

+

Gaussian prior on log10(area) of object.

+
+

Parameters

+
+
meanfloat

mean of log10(area)

+
+
sigmafloat

standard deviation of log10(area)

+
+
+
+
+

Attributes

+

mean, sigma

+
+
+

Methods

+
+
__call__(orbit)

Returns log prior probability of given orbit.

+
+
+

Methods Summary

+ + + + + + +

__call__(orbit[, distance, chi])

Return log prior probability of given orbit.

+

Methods Documentation

+
+
+__call__(orbit, distance=None, chi=False)[source]
+

Return log prior probability of given orbit.

+
+

Parameters

+
+
orbitOrbit

The given orbit.

+
+
distancefloat

Distance between object and observer (m)

+
+
chibool

If True, return chi corresponding to log probability, rather than +log probability.

+
+
+
+
+

Returns

+
+
logpriorfloat

The log of the prior probability for given orbit.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.MHSampler.html b/api/ssapy.rvsampler.MHSampler.html new file mode 100644 index 0000000..45718d5 --- /dev/null +++ b/api/ssapy.rvsampler.MHSampler.html @@ -0,0 +1,232 @@ + + + + + + + MHSampler — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

MHSampler

+
+
+class ssapy.rvsampler.MHSampler(probfn, initializer, proposer, nChain)[source]
+

Bases: object

+

Generate MCMC samples using a Metropolis-Hastings sampler.

+
+

Parameters

+
+
probfnCallable

Callable that accepts sampling parameters p and returns posterior +probability.

+
+
initializerCallable

Callable that accepts number of desired initial samples and returns +samples. Note, the initial samples should be (at least mostly) unique.

+
+
proposerCallable

Callable that accepts a “current” sample and returns a “proposed” sample +to either accept or reject at each step.

+
+
nChainint

Number of independent chains to use.

+
+
+
+
+

Attributes

+

probfn +initializer +proposer +nChain +chain : array_like (nStep, nChain, 6)

+
+

MCMC sample chain.

+
+
+
lnprobarray_like (nStep, nChain)

Log posterior probability of sample chain.

+
+
nAcceptint

Total number of accepted proposals.

+
+
nStepint

Total number of proposal steps.

+
+
+
+
+

Methods

+
+
reset()

Reset chains.

+
+
sample(nBurn, nStep)

Generate samples, first discarding nBurn steps, and then keeping nStep +steps.

+
+
+

Attributes Summary

+ + + + + + +

acceptanceRatio

Ratio of accepted to proposed steps.

+

Methods Summary

+ + + + + + + + + +

reset()

Reset chain, including chain, lnprob, nAccept, and nStep attributes.

sample([nBurn, nStep])

Generate samples.

+

Attributes Documentation

+
+
+acceptanceRatio
+

Ratio of accepted to proposed steps.

+
+ +

Methods Documentation

+
+
+reset()[source]
+

Reset chain, including chain, lnprob, nAccept, and nStep +attributes.

+
+ +
+
+sample(nBurn=1000, nStep=500)[source]
+

Generate samples.

+
+

Parameters

+
+
nBurnint

Number of initial steps to take but discard.

+
+
nStepint

Number of subsequent steps to keep and return.

+
+
+
+
+

Returns

+
+
chainarray (nStep, nChain, 6)

Generated samples. Columns are [x, y, z, vx, vy, vz].

+
+
lnprobarray (nStep, nChain)

The log posterior probabilities of the samples.

+
+
lnpriorarray (nStep, nChain)

The log prior probabilities of the samples.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.MVNormalProposal.html b/api/ssapy.rvsampler.MVNormalProposal.html new file mode 100644 index 0000000..285f33c --- /dev/null +++ b/api/ssapy.rvsampler.MVNormalProposal.html @@ -0,0 +1,176 @@ + + + + + + + MVNormalProposal — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

MVNormalProposal

+
+
+class ssapy.rvsampler.MVNormalProposal(cov)[source]
+

Bases: object

+

A multivariate normal proposal distribution.

+
+

Params

+
+
covarray_like(6, 6)

Covariance of multivariate normal distribution from which to sample. +The order of variables is [x, y, z, vx, vy, vz] in meters and meters per +second.

+
+
+
+
+

Attributes

+

cov

+
+
+

Methods

+
+
propose(p)

Generate a new proposal.

+
+
+

Methods Summary

+ + + + + + +

propose(p)

Generate a proposal.

+

Methods Documentation

+
+
+propose(p)[source]
+

Generate a proposal.

+
+

Parameters

+
+
parray (6,)

Mean around which to generate a proposal.

+
+
+
+
+

Returns

+
+
newparray (6,)

Generated proposal.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.ParamOrbitAngle.html b/api/ssapy.rvsampler.ParamOrbitAngle.html new file mode 100644 index 0000000..cf86dce --- /dev/null +++ b/api/ssapy.rvsampler.ParamOrbitAngle.html @@ -0,0 +1,148 @@ + + + + + + + ParamOrbitAngle — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ParamOrbitAngle

+
+
+class ssapy.rvsampler.ParamOrbitAngle(initparam, epoch, initObsPos, initObsVel, **kwargs)[source]
+

Bases: ParamOrbitTranslator

+

Methods Summary

+ + + + + + + + + +

orbit_to_param(orbit)

param_to_orbit(p)

+

Methods Documentation

+
+
+orbit_to_param(orbit)[source]
+
+ +
+
+param_to_orbit(p)[source]
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.ParamOrbitEquinoctial.html b/api/ssapy.rvsampler.ParamOrbitEquinoctial.html new file mode 100644 index 0000000..bc88b4c --- /dev/null +++ b/api/ssapy.rvsampler.ParamOrbitEquinoctial.html @@ -0,0 +1,164 @@ + + + + + + + ParamOrbitEquinoctial — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ParamOrbitEquinoctial

+
+
+class ssapy.rvsampler.ParamOrbitEquinoctial(*args, **kwargs)[source]
+

Bases: ParamOrbitTranslator

+

Methods Summary

+ + + + + + + + + + + + + + + +

input_param_translation(p)

orbit_to_param(orbit)

output_covar_translation(covar)

param_to_orbit(p)

+

Methods Documentation

+
+
+input_param_translation(p)[source]
+
+ +
+
+orbit_to_param(orbit)[source]
+
+ +
+
+output_covar_translation(covar)[source]
+
+ +
+
+param_to_orbit(p)[source]
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.ParamOrbitRV.html b/api/ssapy.rvsampler.ParamOrbitRV.html new file mode 100644 index 0000000..d52549c --- /dev/null +++ b/api/ssapy.rvsampler.ParamOrbitRV.html @@ -0,0 +1,148 @@ + + + + + + + ParamOrbitRV — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ParamOrbitRV

+
+
+class ssapy.rvsampler.ParamOrbitRV(*args, **kwargs)[source]
+

Bases: ParamOrbitTranslator

+

Methods Summary

+ + + + + + + + + +

orbit_to_param(orbit)

param_to_orbit(p)

+

Methods Documentation

+
+
+orbit_to_param(orbit)[source]
+
+ +
+
+param_to_orbit(p)[source]
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.ParamOrbitTranslator.html b/api/ssapy.rvsampler.ParamOrbitTranslator.html new file mode 100644 index 0000000..7c249a9 --- /dev/null +++ b/api/ssapy.rvsampler.ParamOrbitTranslator.html @@ -0,0 +1,197 @@ + + + + + + + ParamOrbitTranslator — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ParamOrbitTranslator

+
+
+class ssapy.rvsampler.ParamOrbitTranslator(initparam, epoch, fixed=None, orbitattr=None)[source]
+

Bases: object

+

Class for making parameters into Orbits and vice-versa.

+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

fullparam(p)

get_propkw_from_fullparam(fullparam)

get_propkw_from_orbit(orbit)

input_param_translation(p)

optimizeparam(p)

orbit_to_param()

output_covar_translation(covar)

param_to_orbit()

+

Methods Documentation

+
+
+fullparam(p)[source]
+
+ +
+
+get_propkw_from_fullparam(fullparam)[source]
+
+ +
+
+get_propkw_from_orbit(orbit)[source]
+
+ +
+
+input_param_translation(p)[source]
+
+ +
+
+optimizeparam(p)[source]
+
+ +
+
+orbit_to_param()[source]
+
+ +
+
+output_covar_translation(covar)[source]
+
+ +
+
+param_to_orbit()[source]
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.RPrior.html b/api/ssapy.rvsampler.RPrior.html new file mode 100644 index 0000000..0b8d62e --- /dev/null +++ b/api/ssapy.rvsampler.RPrior.html @@ -0,0 +1,179 @@ + + + + + + + RPrior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

RPrior

+
+
+class ssapy.rvsampler.RPrior(rmean, rsigma)[source]
+

Bases: object

+

Gaussian prior on distance from origin |r|.

+
+

Parameters

+
+
rmeanfloat

Prior mean on |r| in meters.

+
+
rsigmafloat

Prior standard deviation on |r| in meters.

+
+
+
+
+

Attributes

+

rMean +rSigma

+
+
+

Methods

+
+
__call__(orbit)

Returns log prior probability of given orbit.

+
+
+

Methods Summary

+ + + + + + +

__call__(orbit[, distance, chi])

Return log prior probability of given orbit.

+

Methods Documentation

+
+
+__call__(orbit, distance=None, chi=False)[source]
+

Return log prior probability of given orbit.

+
+

Parameters

+
+
orbitOrbit

The given orbit.

+
+
distance: float, optional

Distance between object and observer (m) [not used]

+
+
+
+
+

Returns

+
+
logpriorfloat

The log of the prior probability for given orbit.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.RVProbability.html b/api/ssapy.rvsampler.RVProbability.html new file mode 100644 index 0000000..2e96a7c --- /dev/null +++ b/api/ssapy.rvsampler.RVProbability.html @@ -0,0 +1,320 @@ + + + + + + + RVProbability — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

RVProbability

+
+
+class ssapy.rvsampler.RVProbability(arc, epoch, priors=[<ssapy.rvsampler.RPrior object>, <ssapy.rvsampler.APrior object>], propagator=KeplerianPropagator(), meanpm=False, damp=-1)[source]
+

Bases: object

+

A class to manage MCMC sampling of orbits (parameterized by position and +velocity at a given epoch) given some angular observations.

+
+

Parameters

+
+
arcQTable with one row per observation and columns:
+
+
‘ra’, ‘dec’Angle

Observed angular position in ICRS (topocentric).

+
+
‘rStation_GCRF’Quantity

Position of observer in GCRF.

+
+
‘sigma’Quantity

Isotropic uncertainty in observed angular position.

+
+
‘time’float or astropy.time.Time

Time of observation. If float, then should correspond to GPS +seconds; i.e., seconds since 1980-01-06 00:00:00 UTC

+
+
+
+

The arc is a linked set of observations assumed to be of the same +object.

+
+
epochfloat or astropy.time.Time

The time at which the model parameters (position and velocity) are +specified. It probably makes sense to make this the same as one of the +observation times, but it’s not required to be. If float, then should +correspond to GPS seconds; i.e., seconds since 1980-01-06 00:00:00 UTC

+
+
priorslist of priors, optional

A list of class instances similar to RPrior() or APrior() to apply +jointly to the posterior probability.

+
+
propagatorclass, optional

The propagator class to use.

+
+
meanpmbool

fit model to mean positions and proper motions rather than to +individual epochs along each streak.

+
+
dampfloat

damp chi residuals with pseudo-Huber loss function. Default -1: do +not damp.

+
+
+
+
+

Attributes

+

arc +epoch +priors +propagator

+
+
+

Methods

+
+
lnlike(orbit)

Calculate log likelihood of observations given orbit.

+
+
lnprob(p)

Calculate log posterior probability of orbit parameters p given +observations (up to a constant). Parameters p are [x, y, z, vx, vy, vz] +at epoch.

+
+
__call__(p)

Alias for lnprob(p)

+
+
+

Methods Summary

+ + + + + + + + + + + + + + + + + + +

__call__(p)

Calculate the log posterior probability of parameters p given observations.

chi(orbit)

Calculate chi residuals for use with lmfit.

lnlike(orbit)

Calculate the log likelihood of the observations given an orbit.

lnprior(orbit)

Calculate the log prior probability of the observations given an orbit.

lnprob(p)

Calculate the log posterior probability of parameters p given observations.

+

Methods Documentation

+
+
+__call__(p)[source]
+

Calculate the log posterior probability of parameters p given +observations.

+
+

Parameters

+
+
parray (6,)

Sampling parameters. [x, y, z, vx, vy, vz] in meters and meters per +second. Understood to be the parameters at epoch.

+
+
+
+
+

Returns

+
+
lnprobfloat

Log posterior probability.

+
+
lnpriorfloat

Log prior probability.

+
+
+
+
+ +
+
+chi(orbit)[source]
+

Calculate chi residuals for use with lmfit.

+

This is essentially the input to a chi^2 statistic, just without the +squaring and without the summing over observations. I.e., it’s

+

[(data_i - model_i)/err_i for i in 0..nobs]

+
+

Parameters

+
+
orbitOrbit

Orbit in question. The model.

+
+
+
+
+

Returns

+
+
chilikearray_like (nobs,)

chi residual array for likelihoods

+
+
chipriorarray_like (nprior,)

chi residual array for priors

+
+
+
+
+ +
+
+lnlike(orbit)[source]
+

Calculate the log likelihood of the observations given an orbit.

+
+

Parameters

+
+
orbitOrbit

Orbit in question.

+
+
+
+
+

Returns

+
+
lnlikefloat

Log likelihood.

+
+
+
+
+ +
+
+lnprior(orbit)[source]
+

Calculate the log prior probability of the observations given an +orbit.

+
+

Parameters

+
+
orbitOrbit

Orbit in question.

+
+
+
+
+

Returns

+
+
lnpriorfloat

Log prior probability.

+
+
+
+
+ +
+
+lnprob(p)[source]
+

Calculate the log posterior probability of parameters p given +observations.

+
+

Parameters

+
+
parray (6,)

Sampling parameters. [x, y, z, vx, vy, vz] in meters and meters per +second. Understood to be the parameters at epoch.

+
+
+
+
+

Returns

+
+
lnprobfloat

Log posterior probability.

+
+
lnpriorfloat

Log prior probability.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.RVSigmaProposal.html b/api/ssapy.rvsampler.RVSigmaProposal.html new file mode 100644 index 0000000..bf2a26f --- /dev/null +++ b/api/ssapy.rvsampler.RVSigmaProposal.html @@ -0,0 +1,147 @@ + + + + + + + RVSigmaProposal — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

RVSigmaProposal

+
+
+class ssapy.rvsampler.RVSigmaProposal(rSigma, vSigma)[source]
+

Bases: MVNormalProposal

+

Isotropic multivariate normal proposal distribution.

+
+

Params

+
+
rSigmafloat

Isotropic standard deviation in position to use.

+
+
vSigmafloat

Isotropic standard deviation in velocity to use.

+
+
+
+
+

Attributes

+

cov

+
+
+

Methods

+
+
propose(p)

Generate a new proposal.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.SGP4LMOptimizer.html b/api/ssapy.rvsampler.SGP4LMOptimizer.html new file mode 100644 index 0000000..bb49736 --- /dev/null +++ b/api/ssapy.rvsampler.SGP4LMOptimizer.html @@ -0,0 +1,148 @@ + + + + + + + SGP4LMOptimizer — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

SGP4LMOptimizer

+
+
+class ssapy.rvsampler.SGP4LMOptimizer(probfn, initel, fracstep=[1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08], absstep=[100, 1e-05, 1e-05, 0.0001, 0.0001, 0.0001])[source]
+

Bases: object

+

Methods Summary

+ + + + + + +

optimize(**fit_kws)

Run the optimizer and return the resulting fit parameters.

+

Methods Documentation

+
+
+optimize(**fit_kws)[source]
+

Run the optimizer and return the resulting fit parameters.

+
+

Returns

+
+
fit(6,) array_like

Least-squares fit as [a, e, i, pa, raan, trueAnomaly]

+
+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.VPrior.html b/api/ssapy.rvsampler.VPrior.html new file mode 100644 index 0000000..f765640 --- /dev/null +++ b/api/ssapy.rvsampler.VPrior.html @@ -0,0 +1,179 @@ + + + + + + + VPrior — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

VPrior

+
+
+class ssapy.rvsampler.VPrior(vmean, vsigma)[source]
+

Bases: object

+

Gaussian prior on velocity magnitude |v|.

+
+

Parameters

+
+
vmeanfloat

Prior mean on |v| in meters per second.

+
+
vsigmafloat

Prior standard deviation on |v| in meters per second.

+
+
+
+
+

Attributes

+

vMean +vSigma

+
+
+

Methods

+
+
__call__(orbit)

Returns log prior probability of given orbit.

+
+
+

Methods Summary

+ + + + + + +

__call__(orbit[, distance, chi])

Return log prior probability of given orbit.

+

Methods Documentation

+
+
+__call__(orbit, distance=None, chi=False)[source]
+

Return log prior probability of given orbit.

+
+

Parameters

+
+
orbitOrbit

The given orbit.

+
+
distance: float, optional

Distance between object and observer (m) [not used]

+
+
+
+
+

Returns

+
+
logpriorfloat

The log of the prior probability for given orbit.

+
+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.circular_guess.html b/api/ssapy.rvsampler.circular_guess.html new file mode 100644 index 0000000..8241e07 --- /dev/null +++ b/api/ssapy.rvsampler.circular_guess.html @@ -0,0 +1,148 @@ + + + + + + + circular_guess — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

circular_guess

+
+
+ssapy.rvsampler.circular_guess(arc, indices=[0, 1])[source]
+

Guess position and velocity from two closely spaced (in time) +observations of ra/dec.

+

The state is inferred by finding the circular orbit passing +through the two points, assuming the motion in between the +observations is inertial.

+
+

Parameters

+
+
arcQTable with columns for ‘ra’, ‘dec’, ‘rStation_GCRF’.

The set of observations used to make the guess. Note, only indices +rows of the given QTable will be used.

+
+
indiceslist of indices indicating which two observations in arc to use

for initialization. Default: [0, 1]; i.e., use the first two +observations.

+
+
+
+
+

Returns

+
+
state: array_like, (6,)

state corresponding to orbit passing through points

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.damper.html b/api/ssapy.rvsampler.damper.html new file mode 100644 index 0000000..e1db61a --- /dev/null +++ b/api/ssapy.rvsampler.damper.html @@ -0,0 +1,126 @@ + + + + + + + damper — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

damper

+
+
+ssapy.rvsampler.damper(chi, damp)[source]
+

Pseudo-Huber loss function.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.damper_deriv.html b/api/ssapy.rvsampler.damper_deriv.html new file mode 100644 index 0000000..28b5b2f --- /dev/null +++ b/api/ssapy.rvsampler.damper_deriv.html @@ -0,0 +1,126 @@ + + + + + + + damper_deriv — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

damper_deriv

+
+
+ssapy.rvsampler.damper_deriv(chi, damp, derivnum=1)[source]
+

Derivative of the pseudo-Huber loss function.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.eq2kep.html b/api/ssapy.rvsampler.eq2kep.html new file mode 100644 index 0000000..e222960 --- /dev/null +++ b/api/ssapy.rvsampler.eq2kep.html @@ -0,0 +1,125 @@ + + + + + + + eq2kep — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

eq2kep

+
+
+ssapy.rvsampler.eq2kep(eq)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.rvsampler.sample_ball.html b/api/ssapy.rvsampler.sample_ball.html new file mode 100644 index 0000000..c916bcd --- /dev/null +++ b/api/ssapy.rvsampler.sample_ball.html @@ -0,0 +1,144 @@ + + + + + + + sample_ball — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

sample_ball

+
+
+ssapy.rvsampler.sample_ball(p0, std, nSample=1)[source]
+

Produce a ball of walkers around an initial parameter value.

+
+

Parameters

+
+
p0array_like, (d,)

Central parameter values.

+
+
stdarray_like, (d,)

Axis-aligned standard deviations.

+
+
nSampleint, optional

The number of samples to produce.

+
+
+
+
+

Returns

+
+
samplesarray_like (nSample, d)

The samples.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.LRU_Cache.html b/api/ssapy.utils.LRU_Cache.html new file mode 100644 index 0000000..82eab5b --- /dev/null +++ b/api/ssapy.utils.LRU_Cache.html @@ -0,0 +1,177 @@ + + + + + + + LRU_Cache — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

LRU_Cache

+
+
+class ssapy.utils.LRU_Cache(user_function, maxsize=1024)[source]
+

Bases: object

+

Simplified Least Recently Used Cache.

+

Mostly stolen from http://code.activestate.com/recipes/577970-simplified-lru-cache/, +but added a method for dynamic resizing. The least recently used cached item is +overwritten on a cache miss.

+
+
Parameters:

user_function: A python function to cache. +maxsize: Maximum number of inputs to cache. [Default: 1024]

+
+
+

Example:

+
>>> def slow_function(*args) # A slow-to-evaluate python function
+>>>    ...
+>>>
+>>> v1 = slow_function(*k1)  # Calling function is slow
+>>> v1 = slow_function(*k1)  # Calling again with same args is still slow
+>>> cache = LRU_Cache(slow_function)
+>>> v1 = cache(*k1)  # Returns slow_function(*k1), slowly the first time
+>>> v1 = cache(*k1)  # Returns slow_function(*k1) again, but fast this time.
+
+
+

Methods Summary

+ + + + + + + + + +

__call__(*key)

Call self as a function.

resize(maxsize)

Resize the cache.

+

Methods Documentation

+
+
+__call__(*key)[source]
+

Call self as a function.

+
+ +
+
+resize(maxsize)[source]
+

Resize the cache.

+

Increasing the size of the cache is non-destructive, i.e., previously cached inputs remain +in the cache. Decreasing the size of the cache will necessarily remove items from the +cache if the cache is already filled. Items are removed in least recently used order.

+
+
Parameters:

maxsize: The new maximum number of inputs to cache.

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.catalog_to_apparent.html b/api/ssapy.utils.catalog_to_apparent.html new file mode 100644 index 0000000..cc301c2 --- /dev/null +++ b/api/ssapy.utils.catalog_to_apparent.html @@ -0,0 +1,156 @@ + + + + + + + catalog_to_apparent — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

catalog_to_apparent

+
+
+ssapy.utils.catalog_to_apparent(ra, dec, t, observer=None, pmra=0, pmdec=0, parallax=0, skipAberration=False)[source]
+

Convert ra/dec of stars from catalog positions (J2000/ICRS) to apparent +positions, correcting for proper motion, parallax, annual and diurnal +aberration.

+
+

Parameters

+
+
raarray_like

J2000 right ascension in radians.

+
+
decarray_like

J2000 declination in radians.

+
+
tfloat or astropy.time.Time

If float, then should correspond to GPS seconds; i.e., seconds since +1980-01-06 00:00:00 UTC

+
+
observerObserver, optional

Observer to use for diurnal aberration correction. If None, then no +diurnal aberration correction is performed.

+
+
pmra, pmdecarray_like, optional

proper motion in right ascension / declination, in milliarcsec per year

+
+
parallaxarray_like, optional

annual parallax in arcseconds

+
+
skipAberrationbool, optional

Don’t apply aberration correction. Mostly useful during testing…

+
+
+
+
+

Returns

+
+
ara, adecarray_like

Apparent RA and dec in radians

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.check_lunar_collision.html b/api/ssapy.utils.check_lunar_collision.html new file mode 100644 index 0000000..02adad3 --- /dev/null +++ b/api/ssapy.utils.check_lunar_collision.html @@ -0,0 +1,125 @@ + + + + + + + check_lunar_collision — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

check_lunar_collision

+
+
+ssapy.utils.check_lunar_collision(r, times, m=1000)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.cluster_emcee_walkers.html b/api/ssapy.utils.cluster_emcee_walkers.html new file mode 100644 index 0000000..7cfb233 --- /dev/null +++ b/api/ssapy.utils.cluster_emcee_walkers.html @@ -0,0 +1,127 @@ + + + + + + + cluster_emcee_walkers — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

cluster_emcee_walkers

+
+
+ssapy.utils.cluster_emcee_walkers(chain, lnprob, lnprior, thresh_multiplier=1, verbose=False)[source]
+

Down-select emcee walkers to those with the largest mean posteriors

+

Follows the algorithm of Hou, Goodman, Hogg et al. (2012)

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.continueClass.html b/api/ssapy.utils.continueClass.html new file mode 100644 index 0000000..2b36ffc --- /dev/null +++ b/api/ssapy.utils.continueClass.html @@ -0,0 +1,160 @@ + + + + + + + continueClass — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

continueClass

+
+
+ssapy.utils.continueClass(cls)[source]
+

Re-open the decorated class, adding any new definitions into the +original. +For example: +.. code-block:: python

+
+
+
class Foo:

pass

+
+
+

@continueClass +class Foo:

+
+
+
def run(self):

return None

+
+
+
+
+

is equivalent to: +.. code-block:: python

+
+
+
class Foo:
+
def run(self):

return None

+
+
+
+
+
+
+

Warning

+

Python’s built-in super function does not behave properly in classes +decorated with continueClass. Base class methods must be invoked +directly using their explicit types instead.

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.find_all_zeros.html b/api/ssapy.utils.find_all_zeros.html new file mode 100644 index 0000000..049d947 --- /dev/null +++ b/api/ssapy.utils.find_all_zeros.html @@ -0,0 +1,127 @@ + + + + + + + find_all_zeros — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

find_all_zeros

+
+
+ssapy.utils.find_all_zeros(f, low, high, n=100)[source]
+

Attempt to find all zeros of a function between given bounds. Uses n +initial samples to characterize the zero-landscape of the interval.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.find_extrema_brackets.html b/api/ssapy.utils.find_extrema_brackets.html new file mode 100644 index 0000000..1c3255b --- /dev/null +++ b/api/ssapy.utils.find_extrema_brackets.html @@ -0,0 +1,127 @@ + + + + + + + find_extrema_brackets — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

find_extrema_brackets

+
+
+ssapy.utils.find_extrema_brackets(fs)[source]
+

Find triplets bracketing extrema from an ordered set of function +evaluations.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.find_file.html b/api/ssapy.utils.find_file.html new file mode 100644 index 0000000..e08677a --- /dev/null +++ b/api/ssapy.utils.find_file.html @@ -0,0 +1,127 @@ + + + + + + + find_file — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

find_file

+
+
+ssapy.utils.find_file(filename, ext=None)[source]
+

Find a file in the current directory or the ssapy datadir. If ext is +not None, also try appending ext to the filename.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.find_nearest_indices.html b/api/ssapy.utils.find_nearest_indices.html new file mode 100644 index 0000000..c072748 --- /dev/null +++ b/api/ssapy.utils.find_nearest_indices.html @@ -0,0 +1,125 @@ + + + + + + + find_nearest_indices — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

find_nearest_indices

+
+
+ssapy.utils.find_nearest_indices(A, B)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.gcrf_to_ecef.html b/api/ssapy.utils.gcrf_to_ecef.html new file mode 100644 index 0000000..37db27f --- /dev/null +++ b/api/ssapy.utils.gcrf_to_ecef.html @@ -0,0 +1,125 @@ + + + + + + + gcrf_to_ecef — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

gcrf_to_ecef

+
+
+ssapy.utils.gcrf_to_ecef(r_gcrf, t)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.gcrf_to_lunar.html b/api/ssapy.utils.gcrf_to_lunar.html new file mode 100644 index 0000000..c1130f5 --- /dev/null +++ b/api/ssapy.utils.gcrf_to_lunar.html @@ -0,0 +1,125 @@ + + + + + + + gcrf_to_lunar — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

gcrf_to_lunar

+
+
+ssapy.utils.gcrf_to_lunar(r, times)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.gcrf_to_stationary_lunar.html b/api/ssapy.utils.gcrf_to_stationary_lunar.html new file mode 100644 index 0000000..f1fb566 --- /dev/null +++ b/api/ssapy.utils.gcrf_to_stationary_lunar.html @@ -0,0 +1,125 @@ + + + + + + + gcrf_to_stationary_lunar — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

gcrf_to_stationary_lunar

+
+
+ssapy.utils.gcrf_to_stationary_lunar(r, times)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.gcrf_to_teme.html b/api/ssapy.utils.gcrf_to_teme.html new file mode 100644 index 0000000..e9ac5c3 --- /dev/null +++ b/api/ssapy.utils.gcrf_to_teme.html @@ -0,0 +1,142 @@ + + + + + + + gcrf_to_teme — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

gcrf_to_teme

+
+
+ssapy.utils.gcrf_to_teme(t)[source]
+

Return the rotation matrix that converts GCRS cartesian coordinates +to TEME cartesian coordinates.

+
+

Parameters

+
+
tfloat or astropy.time.Time

If float or array of float, then should correspond to GPS seconds; i.e., +seconds since 1980-01-06 00:00:00 UTC

+
+
+
+
+

Returns

+
+
rotarray (3,3)

Rotation matrix to apply to GCRS to yield TEME.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.get_kernel_cov.html b/api/ssapy.utils.get_kernel_cov.html new file mode 100644 index 0000000..feea32f --- /dev/null +++ b/api/ssapy.utils.get_kernel_cov.html @@ -0,0 +1,140 @@ + + + + + + + get_kernel_cov — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_kernel_cov

+
+
+ssapy.utils.get_kernel_cov(kernel_mat, weights)[source]
+

Get the covariance matrix of kernel_mat. This a wrapper for numpy’s cov

+
+
Parameters:
+
+
+
Returns:
+

numpy.ndarray

+
+
Return type:
+

Covariance matrix

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.get_normed_weights.html b/api/ssapy.utils.get_normed_weights.html new file mode 100644 index 0000000..999eaaf --- /dev/null +++ b/api/ssapy.utils.get_normed_weights.html @@ -0,0 +1,125 @@ + + + + + + + get_normed_weights — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_normed_weights

+
+
+ssapy.utils.get_normed_weights(ln_weights)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.get_times.html b/api/ssapy.utils.get_times.html new file mode 100644 index 0000000..0bb153c --- /dev/null +++ b/api/ssapy.utils.get_times.html @@ -0,0 +1,144 @@ + + + + + + + get_times — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_times

+
+
+ssapy.utils.get_times(duration=(30, 'day'), freq=(1, 'hr'), t=<Time object: scale='utc' format='iso' value=2025-01-01 00:00:00.000>)[source]
+

Calculate a list of times spaced equally apart over a specified duration.

+
+

Parameters

+
+
duration: int

The length of time to calculate times for.

+
+
freq: int, unit: str

frequency of time outputs in units provided

+
+
t: ssapy.utils.Time, optional

The starting time. Default is “2025-01-01”.

+
+
+
+
+

Returns

+
+
times: array-like

A list of times spaced equally apart over the specified duration.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.iers_interp.html b/api/ssapy.utils.iers_interp.html new file mode 100644 index 0000000..b1b8c50 --- /dev/null +++ b/api/ssapy.utils.iers_interp.html @@ -0,0 +1,143 @@ + + + + + + + iers_interp — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

iers_interp

+
+
+ssapy.utils.iers_interp(t)[source]
+

Interpolate IERS values

+
+

Parameters

+
+
tfloat or astropy.time.Time

If float or array of float, then should correspond to GPS seconds; i.e., +seconds since 1980-01-06 00:00:00 UTC

+
+
+
+
+

Returns

+
+
dut1: array_like (n)

Time difference UT1 - TT in days.

+
+
pmx, pmyarray_like (n)

Polar motion values in radians.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.integrate_orbit_best_model.html b/api/ssapy.utils.integrate_orbit_best_model.html new file mode 100644 index 0000000..62a2001 --- /dev/null +++ b/api/ssapy.utils.integrate_orbit_best_model.html @@ -0,0 +1,176 @@ + + + + + + + integrate_orbit_best_model — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

integrate_orbit_best_model

+
+
+ssapy.utils.integrate_orbit_best_model(r=None, v=None, t=None, koe=None, duration=None, freq=None, start_date=None, mass=250, area=0.22)[source]
+

Integrate satellite orbit trajectory using either (r, v) or Keplerian orbital elements.

+
+

Parameters:

+
+
rarray_like, optional

Initial position vector [x, y, z] in meters.

+
+
varray_like, optional

Initial velocity vector [vx, vy, vz] in meters per second.

+
+
tarray_like, optional

Array of time values for integration in seconds since the start date.

+
+
koedict, optional
+
Dictionary containing Keplerian orbital elements:
    +
  • ‘a’: Semi-major axis in meters

  • +
  • ‘e’: Eccentricity

  • +
  • ‘i’: Inclination in radians

  • +
  • ‘trueAnomaly’: True anomaly in radians

  • +
  • ‘pa’: Argument of perigee in radians

  • +
  • ‘raan’: Right ascension of ascending node in radians

  • +
+
+
+
+
durationtuple, optional

Duration of integration (value, unit), e.g., (30, ‘day’).

+
+
freqtuple, optional

Frequency of integration steps (value, unit), e.g., (1, ‘hr’).

+
+
start_datestr, optional

Start date in the format “YYYY-MM-DD” for time calculations.

+
+
mass: float, optional

Mass of the orbiting object in kg.

+
+
area: float, optional

Cross sectional area of the orbiting object in m^2.

+
+
+
+
+

Returns:

+
+
rndarray

Array of position vectors [x, y, z] over the integrated trajectory.

+
+
vndarray

Array of velocity vectors [vx, vy, vz] corresponding to the position vectors.

+
+
+
+
+

Notes:

+

The function integrates the satellite orbit trajectory using either initial position and +velocity vectors or Keplerian orbital elements.

+

Either (r, v) or ‘koe’ must be provided, but not both. +If ‘koe’ are provided, Keplerian-to-Cartesian conversion must be implemented.

+

If ‘t’ is not provided, ‘duration’, ‘freq’, and ‘start_date’ must be provided for time calculation.

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.interpolate_points_between.html b/api/ssapy.utils.interpolate_points_between.html new file mode 100644 index 0000000..1ddf135 --- /dev/null +++ b/api/ssapy.utils.interpolate_points_between.html @@ -0,0 +1,133 @@ + + + + + + + interpolate_points_between — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

interpolate_points_between

+
+
+ssapy.utils.interpolate_points_between(r, m)[source]
+

Interpolates points between the given points.

+
+
Args:

r: An (n, 3) numpy array of the original points. +m: The number of points to interpolate between each pair of points.

+
+
Returns:

An (n * m) numpy array of the interpolated points.

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.isAttributeSafeToTransfer.html b/api/ssapy.utils.isAttributeSafeToTransfer.html new file mode 100644 index 0000000..c14b283 --- /dev/null +++ b/api/ssapy.utils.isAttributeSafeToTransfer.html @@ -0,0 +1,130 @@ + + + + + + + isAttributeSafeToTransfer — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

isAttributeSafeToTransfer

+
+
+ssapy.utils.isAttributeSafeToTransfer(name, value)[source]
+

Return True if an attribute is safe to monkeypatch-transfer to another +class. +This rejects special methods that are defined automatically for all +classes, leaving only those explicitly defined in a class decorated by +continueClass or registered with an instance of TemplateMeta.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.lazy_property.html b/api/ssapy.utils.lazy_property.html new file mode 100644 index 0000000..046c871 --- /dev/null +++ b/api/ssapy.utils.lazy_property.html @@ -0,0 +1,128 @@ + + + + + + + lazy_property — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

lazy_property

+
+
+class ssapy.utils.lazy_property(fget)[source]
+

Bases: object

+

meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.lb_to_tan.html b/api/ssapy.utils.lb_to_tan.html new file mode 100644 index 0000000..ced5012 --- /dev/null +++ b/api/ssapy.utils.lb_to_tan.html @@ -0,0 +1,165 @@ + + + + + + + lb_to_tan — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

lb_to_tan

+
+
+ssapy.utils.lb_to_tan(lb, b, mul=None, mub=None, lcen=None, bcen=None)[source]
+

Convert lb-like coordinates & proper motions to orthographic tangent plane.

+

Everything is in radians. If mul is None (default), transformed +proper motions will not be returned. The tangent plane is always chosen +so that +Y is towards b = 90, and +X is towards +lb.

+
+

Parameters

+
+
lbarray_like (n)

right ascension of point

+
+
barray_like (n)

declination of point

+
+
mularray_like (n)

proper motion in ra of point (arbitrary units) +rate of change in lb is mul / np.cos(b); i.e., length of proper motion +vector on sphere is np.hypot(mul, mub)

+
+
mubarray_like (n)

proper motion in dec of point (arbitrary units)

+
+
lcenarray_like (n)

right ascension to use for center of tangent plane +if None, use spherical mean of (lb, b)

+
+
bcenarray_like (n)

declination to use for center of tangent plane

+
+
+
+
+

Returns

+

if mul is None, (x, y) otherwise (x, y, vx, vy) +x : array_like (n)

+
+

x coordinate of tangent plane projection of lb, b

+
+
+
yarray_like (n)

y coordinate of tangent plane projection of lb, b

+
+
vxarray_like (n)

x coordinate of tangent plane projection of (mul, mub)

+
+
vyarray_like (n)

y coordinate of tangent plane projection of (mul, mub)

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.lb_to_tp.html b/api/ssapy.utils.lb_to_tp.html new file mode 100644 index 0000000..63c5fc0 --- /dev/null +++ b/api/ssapy.utils.lb_to_tp.html @@ -0,0 +1,131 @@ + + + + + + + lb_to_tp — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

lb_to_tp

+
+
+ssapy.utils.lb_to_tp(lb, b)[source]
+

Convert lb-like coordinates to theta-phi like coordinates.

+

Here ‘theta-phi’ coordinates refers to the system where theta is the +angle between zenith and the point in question, and phi is the +corresponding azimuthal angle.

+

This just sets theta = pi - b and renames lb -> phi. Everything is in +radians.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.lb_to_unit.html b/api/ssapy.utils.lb_to_unit.html new file mode 100644 index 0000000..9571f18 --- /dev/null +++ b/api/ssapy.utils.lb_to_unit.html @@ -0,0 +1,127 @@ + + + + + + + lb_to_unit — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

lb_to_unit

+
+
+ssapy.utils.lb_to_unit(r, d)[source]
+

Convert lb-like coordinates to unit vectors.

+

Everything is in radians.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.moonPos.html b/api/ssapy.utils.moonPos.html new file mode 100644 index 0000000..ba80089 --- /dev/null +++ b/api/ssapy.utils.moonPos.html @@ -0,0 +1,141 @@ + + + + + + + moonPos — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

moonPos

+
+
+ssapy.utils.moonPos(t)[source]
+

Compute GCRF position of the moon.

+
+

Parameters

+
+
tfloat or astropy.time.Time

If float or array of float, then should correspond to GPS seconds; i.e., +seconds since 1980-01-06 00:00:00 UTC

+
+
+
+
+

Returns

+
+
rarray_like (n)

position in meters

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.newton_raphson.html b/api/ssapy.utils.newton_raphson.html new file mode 100644 index 0000000..0a76e99 --- /dev/null +++ b/api/ssapy.utils.newton_raphson.html @@ -0,0 +1,149 @@ + + + + + + + newton_raphson — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

newton_raphson

+
+
+ssapy.utils.newton_raphson(guess, f, fprime=None, eps=3e-16, maxiter=100, **kwargs)[source]
+

Find a root of a univariate function with known gradient using +Newton-Raphson iterations.

+
+

Parameters

+
+
guessfloat

Initial guess.

+
+
fcallable function of 1 argument.

Function for which to find a zero. If fprime is None, then the return +value of f should be a 2-tuple with the value of the function and the +first derivative. If fprime is given separately, then f should just +return the value of the function.

+
+
fprimecallable function of 1 argument, optional

Derivative of f. Default None.

+
+
epsfloat, optional

Absolute tolerance for finding a zero. Default 3e-16.

+
+
maxiterint, optional

Maximum number of iterations to try. Default 100.

+
+
+
+
+

Returns

+

solution: float

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.norm.html b/api/ssapy.utils.norm.html new file mode 100644 index 0000000..d9a7771 --- /dev/null +++ b/api/ssapy.utils.norm.html @@ -0,0 +1,125 @@ + + + + + + + norm — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

norm

+
+
+ssapy.utils.norm(arr)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.normSq.html b/api/ssapy.utils.normSq.html new file mode 100644 index 0000000..8359b5f --- /dev/null +++ b/api/ssapy.utils.normSq.html @@ -0,0 +1,125 @@ + + + + + + + normSq — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

normSq

+
+
+ssapy.utils.normSq(arr)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.normed.html b/api/ssapy.utils.normed.html new file mode 100644 index 0000000..78b6718 --- /dev/null +++ b/api/ssapy.utils.normed.html @@ -0,0 +1,125 @@ + + + + + + + normed — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

normed

+
+
+ssapy.utils.normed(arr)[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.ntw_to_r.html b/api/ssapy.utils.ntw_to_r.html new file mode 100644 index 0000000..0fe0ab6 --- /dev/null +++ b/api/ssapy.utils.ntw_to_r.html @@ -0,0 +1,154 @@ + + + + + + + ntw_to_r — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ntw_to_r

+
+
+ssapy.utils.ntw_to_r(r, v, ntw, relative=False)[source]
+

Convert NTW coordinates to cartesian coordinates, using r, v to define +NTW system.

+

T gives the projection of (rcoord - r) along V (tangent to track) +W gives the projection of (rcoord - r) along (V cross r) (normal to plane) +N gives the projection of (rcoord - r) along (V cross (V cross r))

+
+

(in plane, perpendicular to T)

+
+
+

Parameters

+
+
rarray_like (n, 3)

central positions defining coordinate system

+
+
varray_like (n, 3)

velocity defining coordinate system

+
+
ntwarray_like (n, 3)

ntw coordinates to transform to cartesian coordinates

+
+
relativebool

if True, just rotate the NTW coordinates to Cartesian; do not offset +the origin so that NTW = 0 -> Cartesian r.

+
+
+
+
+

Returns

+
+
rarray_like (n, 3)

cartesian x, y, z coordinates

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.num_wraps.html b/api/ssapy.utils.num_wraps.html new file mode 100644 index 0000000..dae92e9 --- /dev/null +++ b/api/ssapy.utils.num_wraps.html @@ -0,0 +1,133 @@ + + + + + + + num_wraps — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

num_wraps

+
+
+ssapy.utils.num_wraps(ang)[source]
+

Return number of times angle ang has wrapped around.

+
+

Returns

+
+
int

Number of wraps

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.regularize_default.html b/api/ssapy.utils.regularize_default.html new file mode 100644 index 0000000..4095124 --- /dev/null +++ b/api/ssapy.utils.regularize_default.html @@ -0,0 +1,150 @@ + + + + + + + regularize_default — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

regularize_default

+
+
+ssapy.utils.regularize_default(particles, weights, num_particles_out=None, dimension=6)[source]
+

Perform particle regularization. This generates a perturbation from the +particles’ original values to prevent singularity issues. +From “Bayesian Multiple Target Tracking” (2nd ed.) p. 101-102

+
+
Parameters:
+
    +
  • particles (numpy.ndarray) – Particles to reqularize. Each row is an nD particle

  • +
  • weights (numpy.ndarray) – 1D array of particle weight. Should be same length as number +of particles.

  • +
  • num_particles_out (int | None, optional) – Number of particles to return, defaults to None. +If not specified, will return the same number of particles as in the +input particles.

  • +
  • dimension (int, optional) – Dimension of the parameter space for resampling. Assumes +the first dimension columns of particles are the parameters to use. +Any remaining columns are carried through without modification (e.g., +time columns). Default: 6

  • +
+
+
Returns:
+

Deltas from original particles and their weights

+
+
Return type:
+

(numpy.ndarray, numpy.ndarry)

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.resample.html b/api/ssapy.utils.resample.html new file mode 100644 index 0000000..850145f --- /dev/null +++ b/api/ssapy.utils.resample.html @@ -0,0 +1,148 @@ + + + + + + + resample — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

resample

+
+
+ssapy.utils.resample(particles, ln_weights, obs_times=None, pod=False)[source]
+

Resample particles to achieve more uniform weights. +This produces the same number of particles as are input (i.n. dimension +matches “particles”) +From “Bayesian Multiple Target Tracking” (2nd ed.) p. 100

+
+
Parameters:
+
    +
  • particles (numpy.ndarray) – 2D array of particles. Each row is an nD particles

  • +
  • ln_weights (numpy.ndarray) – 1D array of particle log-weights. Length should match +number of particles

  • +
  • obs_times ([type], optional) – Time at which observation occured. This is only used if +pod=True, defaults to None

  • +
  • pod (bool, optional) – Specify whether this is the special case of regularizing orbit +parameters, defaults to False

  • +
+
+
Returns:
+

Resampled particles and weights (same number as input)

+
+
Return type:
+

(numpy.ndarray, numpy.ndarray)

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.rv_to_ntw.html b/api/ssapy.utils.rv_to_ntw.html new file mode 100644 index 0000000..287b6d5 --- /dev/null +++ b/api/ssapy.utils.rv_to_ntw.html @@ -0,0 +1,150 @@ + + + + + + + rv_to_ntw — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

rv_to_ntw

+
+
+ssapy.utils.rv_to_ntw(r, v, rcoord)[source]
+

Convert coordinates to NTW coordinates, using r, v to define NTW system.

+

T gives the projection of (rcoord - r) along V (tangent to track) +W gives the projection of (rcoord - r) along (V cross r) (normal to plane) +N gives the projection of (rcoord - r) along (V cross (V cross r))

+
+

(in plane, perpendicular to T)

+
+
+

Parameters

+
+
rarray_like (n, 3)

central positions defining coordinate system

+
+
varray_like (n, 3)

velocity defining coordinate system

+
+
rcoordarray_like (n, 3)

positions to transform to NTW coordinates

+
+
+
+
+

Returns

+
+
ntwarray_like (n, 3)

n, t, w positions

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.sample_points.html b/api/ssapy.utils.sample_points.html new file mode 100644 index 0000000..532d830 --- /dev/null +++ b/api/ssapy.utils.sample_points.html @@ -0,0 +1,143 @@ + + + + + + + sample_points — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

sample_points

+
+
+ssapy.utils.sample_points(x, C, npts, sqrt=False)[source]
+

Sample points around x according to covariance matrix.

+
+

Parameters

+
+
xarray_like (n)

point to sample around

+
+
Carray_like (n, n)

covariance matrix corresponding to x

+
+
nptsint

number of points to sample

+
+
sqrtbool

use sqrt(C) rather than an SVD. The SVD is often more stable.

+
+
+
+
+

Returns

+

Gaussian samples around x corresponding to covariance matrix C

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.sigma_points.html b/api/ssapy.utils.sigma_points.html new file mode 100644 index 0000000..4166c0e --- /dev/null +++ b/api/ssapy.utils.sigma_points.html @@ -0,0 +1,147 @@ + + + + + + + sigma_points — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

sigma_points

+
+
+ssapy.utils.sigma_points(f, x, C, scale=1, fixed_dimensions=None)[source]
+

Compute f(sigma points) for sigma points of C around x.

+

There are many possible definitions of sigma points. This one +takes the singular value decomposition of C and uses +the eigenvectors times sqrt(dimension)*scale*(+/-1) as the sigma points. +It then evaluates the given function f at x plus those sigma points.

+
+

Parameters

+
+
ffunction

the function to evaluate at the sigma points

+
+
xarray_like (n)

the central value to evaluate the function around

+
+
Carray_like (n, n)

the covariance matrix corresponding to x

+
+
scalefloat

return scale-sigma points rather than n-sigma points. e.g., +for 5 sigma, set scale = 5.

+
+
fixed_dimensionsarray_like, (n), bool

boolean array specifying dimensions of x that are fixed +and not specified in C

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.subsample_high_lnprob.html b/api/ssapy.utils.subsample_high_lnprob.html new file mode 100644 index 0000000..ae46705 --- /dev/null +++ b/api/ssapy.utils.subsample_high_lnprob.html @@ -0,0 +1,150 @@ + + + + + + + subsample_high_lnprob — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

subsample_high_lnprob

+
+
+ssapy.utils.subsample_high_lnprob(chain, lnprob, lnprior, nSample, thresh=-10)[source]
+

Select MCMC samples with probabilities above some relative threshold

+
+

Parameters

+
+
chainarray_like, (nWalker, nStep, 6)

Input MCMC chain from EmceeSampler.sample()

+
+
lnprobarray_like, (nWalker, nStep)

Input MCMC lnprob from EmceeSampler.sample()

+
+
lnpriorarray_like, (nWalker, nStep)

Input MCMC lnprior from EmceeSampler.sample()

+
+
nSampleint

Number of samples to return. If fewer than nSample samples +exceed threshold, then return the nSample most probable +samples.

+
+
threshfloat, optional

Threshold w.r.t. max(lnprob) below which to exclude samples.

+
+
+
+
+

Returns

+
+
samplesarray_like, (nSample, 6)

Output samples

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.sunPos.html b/api/ssapy.utils.sunPos.html new file mode 100644 index 0000000..25e6ca4 --- /dev/null +++ b/api/ssapy.utils.sunPos.html @@ -0,0 +1,143 @@ + + + + + + + sunPos — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

sunPos

+
+
+ssapy.utils.sunPos(t, fast=True)[source]
+

Compute GCRF position of the sun.

+
+

Parameters

+
+
tfloat or astropy.time.Time

If float or array of float, then should correspond to GPS seconds; i.e., +seconds since 1980-01-06 00:00:00 UTC

+
+
fastbool

Use fast approximation?

+
+
+
+
+

Returns

+
+
rarray_like (n)

position in meters

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.tan_to_lb.html b/api/ssapy.utils.tan_to_lb.html new file mode 100644 index 0000000..9ccd9da --- /dev/null +++ b/api/ssapy.utils.tan_to_lb.html @@ -0,0 +1,148 @@ + + + + + + + tan_to_lb — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

tan_to_lb

+
+
+ssapy.utils.tan_to_lb(xx, yy, lcen, bcen)[source]
+

Convert orthographic tangent plane coordinates to lb coordinates.

+
+

Parameters

+
+
xxarray_like (n)

tangent plane x coordinate (radians)

+
+
yyarray_like (n)

targent plane y coordinate (radians

+
+
lcenfloat, array_like (n)

right ascension of center of tangent plane

+
+
bcenfloat, array_linke (n)

declination of center of tangent plane

+
+
+
+
+

Returns

+
+
lbarray_like (n)

right ascension corresponding to xx, yy

+
+
barray_like (n)

declination corresponding to xx, yy

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.teme_to_gcrf.html b/api/ssapy.utils.teme_to_gcrf.html new file mode 100644 index 0000000..03c8671 --- /dev/null +++ b/api/ssapy.utils.teme_to_gcrf.html @@ -0,0 +1,142 @@ + + + + + + + teme_to_gcrf — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

teme_to_gcrf

+
+
+ssapy.utils.teme_to_gcrf(t)[source]
+

Return the rotation matrix that converts TEME cartesian coordinates +to GCRS cartesian coordinates.

+
+

Parameters

+
+
tfloat or astropy.time.Time

If float or array of float, then should correspond to GPS seconds; i.e., +seconds since 1980-01-06 00:00:00 UTC

+
+
+
+
+

Returns

+
+
rotarray (3,3)

Rotation matrix to apply to TEME to yield GCRS.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.tp_to_lb.html b/api/ssapy.utils.tp_to_lb.html new file mode 100644 index 0000000..58ee807 --- /dev/null +++ b/api/ssapy.utils.tp_to_lb.html @@ -0,0 +1,131 @@ + + + + + + + tp_to_lb — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

tp_to_lb

+
+
+ssapy.utils.tp_to_lb(t, p)[source]
+

Convert theta-phi-like coordinates to lb-like coordinates.

+

Here ‘theta-phi’ coordinates refers to the system where theta is the +angle between zenith and the point in question, and phi is the +corresponding azimuthal angle.

+

This just sets b = pi - theta and renames phi -> lb. Everything is in +radians.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.tp_to_unit.html b/api/ssapy.utils.tp_to_unit.html new file mode 100644 index 0000000..efe3432 --- /dev/null +++ b/api/ssapy.utils.tp_to_unit.html @@ -0,0 +1,130 @@ + + + + + + + tp_to_unit — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

tp_to_unit

+
+
+ssapy.utils.tp_to_unit(t, p)[source]
+

Convert theta-phi-like coordinates to unit vectors.

+

Here ‘theta-phi’ coordinates refers to the system where theta is the +angle between zenith and the point in question, and phi is the +corresponding azimuthal angle.

+

Everything is in radians.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.unitAngle3.html b/api/ssapy.utils.unitAngle3.html new file mode 100644 index 0000000..cc68ed6 --- /dev/null +++ b/api/ssapy.utils.unitAngle3.html @@ -0,0 +1,127 @@ + + + + + + + unitAngle3 — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

unitAngle3

+
+
+ssapy.utils.unitAngle3(r1, r2)[source]
+

Robustly compute angle between unit vectors r1 and r2. +Vectorized for multiple triplets.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.unit_to_lb.html b/api/ssapy.utils.unit_to_lb.html new file mode 100644 index 0000000..0667867 --- /dev/null +++ b/api/ssapy.utils.unit_to_lb.html @@ -0,0 +1,127 @@ + + + + + + + unit_to_lb — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

unit_to_lb

+
+
+ssapy.utils.unit_to_lb(unit)[source]
+

Convert unit vectors to lb-like coordinates.

+

Everything is in radians.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.unit_to_tp.html b/api/ssapy.utils.unit_to_tp.html new file mode 100644 index 0000000..4f935f4 --- /dev/null +++ b/api/ssapy.utils.unit_to_tp.html @@ -0,0 +1,130 @@ + + + + + + + unit_to_tp — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

unit_to_tp

+
+
+ssapy.utils.unit_to_tp(unit)[source]
+

Convert unit vectors to theta-phi-like coordinates.

+

Here ‘theta-phi’ coordinates refers to the system where theta is the +angle between zenith and the point in question, and phi is the +corresponding azimuthal angle.

+

Everything is in radians.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.unscented_transform_mean_covar.html b/api/ssapy.utils.unscented_transform_mean_covar.html new file mode 100644 index 0000000..02bdaf0 --- /dev/null +++ b/api/ssapy.utils.unscented_transform_mean_covar.html @@ -0,0 +1,144 @@ + + + + + + + unscented_transform_mean_covar — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

unscented_transform_mean_covar

+
+
+ssapy.utils.unscented_transform_mean_covar(f, x, C, scale=1)[source]
+

Compute mean and covar using unscented transform given a transformation +f, a point x, and a covariance C.

+

This uses the sigma point convention from sigma_points. It assumes that +f(sigma_points)[i] is f evaluated at the ith sigma point. If f does +not obey this convention, this function will produce undefined results.

+
+

Parameters

+
+
ffunction

the function to evaluate at the sigma points.

+
+
xarray_like (n)

the central value to evaluate the function around

+
+
Carray_like (n, n)

the covariance matrix corresponding to x

+
+
scalefloat

return scale-sigma points rather than n-sigma points. e.g., +for 5 sigma, set scale = 5.

+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.xyz_to_lb.html b/api/ssapy.utils.xyz_to_lb.html new file mode 100644 index 0000000..eac14e0 --- /dev/null +++ b/api/ssapy.utils.xyz_to_lb.html @@ -0,0 +1,127 @@ + + + + + + + xyz_to_lb — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

xyz_to_lb

+
+
+ssapy.utils.xyz_to_lb(x, y, z)[source]
+

Convert x, y, z vectors to lb-like coordinates.

+

Everything is in radians.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/api/ssapy.utils.xyz_to_tp.html b/api/ssapy.utils.xyz_to_tp.html new file mode 100644 index 0000000..f88c5ae --- /dev/null +++ b/api/ssapy.utils.xyz_to_tp.html @@ -0,0 +1,130 @@ + + + + + + + xyz_to_tp — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

xyz_to_tp

+
+
+ssapy.utils.xyz_to_tp(x, y, z)[source]
+

Convert x, y, z vectors to theta-phi-like coordinates.

+

Here ‘theta-phi’ coordinates refers to the system where theta is the +angle between zenith and the point in question, and phi is the +corresponding azimuthal angle.

+

Everything is in radians.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/concepts.html b/concepts.html new file mode 100644 index 0000000..d21c686 --- /dev/null +++ b/concepts.html @@ -0,0 +1,198 @@ + + + + + + + SSAPy Concepts — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

SSAPy Concepts

+

THIS PAGE IS UNDER DEVELOPMENT

+

This page explains concepts and terminology used within the SSAPy package. +It is intended to provide a high-level overview, while details can be found in other sections of the documentation.

+
+

Coordinate Systems

+

A coordinate system is a set of one or more values which define a unique position in space. The SSAPy package is capable of using a variety of coordinate systems:

+
+
+

Time Standards

+
+
+

Types of Standard Orbits

+

While SSAPy is not technically limited to modeling a specific orbit, there are certain types of orbits which are more closely related to SSAPy’s capabilities. Those orbit types are listed below:

+
    +
  • Low Earth Orbit (LEO):

  • +
  • Mid-earth orbit (MEO)

  • +
  • Geosynchronous Earth Orbit (GEO):

  • +
  • Geostationary Earth Orbit:

  • +
  • Highly Elliptical Orbit (HEO)

  • +
  • Cislunar Orbits:

  • +
+

Of course, many other types of near Earth orbits are possible (i.e. lunar rectilinear halo orbits). The sky, or the universe as it may be, is the limit!

+
+
+

Types of Models

+
+

Gravitational models

+
+
+

Radiation pressure

+
+
+

Atmospheric Modeling

+
+
+
+

Numerical Integrators

+
+
+

Computing Considerations

+
+
+

Other Codes

+

Below is a list of other orbit propagation codes, both commercial and free. While these other pieces of software may have some features in common with SSAPy, we believe SSAPy brings a more complete list of capabilities within one package.

+ +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/contribution_guide.html b/contribution_guide.html new file mode 100644 index 0000000..2d7d49d --- /dev/null +++ b/contribution_guide.html @@ -0,0 +1,557 @@ + + + + + + + Contribution Guide — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Contribution Guide

+

This guide is intended for developers or administrators who want to +contribute a new feature or bugfix to SSAPy. +It assumes that you have at least some familiarity with Git and GitHub. +The guide will show a few examples of contributing workflows and discuss +the granularity of pull-requests (PRs). It will also discuss the tests your +PR must pass in order to be accepted into SSAPy.

+

First, what is a PR? Quoting Bitbucket’s tutorials:

+
+

Pull requests are a mechanism for a developer to notify team members that +they have completed a feature. The pull request is more than just a +notification—it’s a dedicated forum for discussing the proposed feature.

+
+

The emphasis is on a completed feature. The changes one proposes in a PR should +correspond to one feature/bugfix/extension/etc. One can create PRs with +changes relevant to different ideas, however reviewing such PRs becomes tedious +and error prone. If possible, try to follow the one-PR-one-feature rule.

+
+

Branches

+

SSAPy’s develop branch has the latest contributions. Nearly all pull +requests should start from develop and target develop.

+

There is a branch for each major release series. Release branches +originate from develop and have tags for each point release in the +series. For example, releases/v0.14 might have tags for 0.14.0, +0.14.1, 0.14.2, etc. versions of SSAPy. We backport important bug +fixes to these branches, but we do not advance the package versions or +make other changes that would change the way SSAPy concretizes +dependencies. Currently, the maintainers manage these branches by +cherry-picking from develop. See releases for more +information.

+
+
+

Continuous Integration

+

SSAPy uses Github Actions for Continuous Integration +testing. This means that every time you submit a pull request, a series of tests will +be run to make sure you didn’t accidentally introduce any bugs into SSAPy. Your PR +will not be accepted until it passes all of these tests. While you can certainly wait +for the results of these tests after submitting a PR, we recommend that you run them +locally to speed up the review process.

+
+

Note

+

Oftentimes, CI will fail for reasons other than a problem with your PR. +For example, apt-get, pip, or homebrew will fail to download one of the +dependencies for the test suite, or a transient bug will cause the unit tests +to timeout. If any job fails, click the “Details” link and click on the test(s) +that is failing. If it doesn’t look like it is failing for reasons related to +your PR, you have two options. If you have write permissions for the SSAPy +repository, you should see a “Restart workflow” button on the right-hand side. If +not, you can close and reopen your PR to rerun all of the tests. If the same +test keeps failing, there may be a problem with your PR. If you notice that +every recent PR is failing with the same error message, it may be that an issue +occurred with the CI infrastructure or one of SSAPy’s dependencies put out a +new release that is causing problems. If this is the case, please file an issue.

+
+

We currently test against Python 3.10 on both macOS and Linux and +perform 3 types of tests:

+
+

Unit Tests

+

Unit tests ensure that core SSAPy features like fetching or spec resolution are +working as expected. If your PR only adds new packages or modifies existing ones, +there’s very little chance that your changes could cause the unit tests to fail. +However, if you make changes to SSAPy’s core libraries, you should run the unit +tests to make sure you didn’t break anything.

+

Since they test things like fetching from VCS repos, the unit tests require +git, mercurial, +and subversion to run. Make sure these are +installed on your system and can be found in your PATH. All of these can be +installed with SSAPy or with your system package manager.

+

To run all of the unit tests, use:

+
$ ssapy unit-test
+
+
+

These tests may take several minutes to complete. If you know you are +only modifying a single SSAPy feature, you can run subsets of tests at a +time. For example, this would run all the tests in +tests/*.py:

+
$ ssapy unit-test tests/*.py
+
+
+

This allows you to develop iteratively: make a change, test that change, +make another change, test that change, etc. We use pytest as our tests framework, and these types of +arguments are just passed to the pytest command underneath. See the +pytest docs +for more details on test selection syntax.

+

By default, pytest captures the output of all unit tests, and it will +print any captured output for failed tests. Sometimes it’s helpful to see +your output interactively, while the tests run (e.g., if you add print +statements to a unit tests). To see the output live, use the -s +argument to pytest:

+
$ ssapy unit-test -s --list-long tests/architecture.py::test_platform
+
+
+

Unit tests are crucial to making sure bugs aren’t introduced into +SSAPy. If you are modifying core SSAPy libraries or adding new +functionality, please add new unit tests for your feature, and consider +strengthening existing tests. You will likely be asked to do this if you +submit a pull request to the SSAPy project on GitHub. Check out the +pytest docs and feel free to ask for guidance on +how to write tests!

+
+
+

Style Tests

+

SSAPy uses Flake8 to test for +PEP 8 conformance and +mypy <https://mypy.readthedocs.io/en/stable/> for type checking. PEP 8 is +a series of style guides for Python that provide suggestions for everything +from variable naming to indentation. In order to limit the number of PRs that +were mostly style changes, we decided to enforce PEP 8 conformance. Your PR +needs to comply with PEP 8 in order to be accepted, and if it modifies the +ssapy library it needs to successfully type-check with mypy as well.

+

Testing for compliance with ssapy’s style is easy. Simply run the ssapy style +command:

+
$ ssapy style
+
+
+

ssapy style has a couple advantages over running the tools by hand:

+
    +
  1. It only tests files that you have modified since branching off of +develop.

  2. +
  3. It works regardless of what directory you are in.

  4. +
  5. It automatically adds approved exemptions from the flake8 +checks. For example, URLs are often longer than 80 characters, so we +exempt them from line length checks. We also exempt lines that start +with “homepage”, “url”, “version”, “variant”, “depends_on”, and +“extends” in package.py files. This is now also possible when directly +running flake8 if you can use the ssapy formatter plugin included with +ssapy.

  6. +
+

More approved flake8 exemptions can be found +here.

+

If all is well, you’ll see something like this:

+
$ run-flake8-tests
+Dependencies found.
+=======================================================
+flake8: running flake8 code checks on SSAPy.
+
+Modified files:
+
+  var/ssapy/repos/builtin/packages/hdf5/package.py
+  var/ssapy/repos/builtin/packages/hdf/package.py
+  var/ssapy/repos/builtin/packages/netcdf/package.py
+=======================================================
+Flake8 checks were clean.
+
+
+

However, if you aren’t compliant with PEP 8, flake8 will complain:

+
var/ssapy/repos/builtin/packages/netcdf/package.py:26: [F401] 'os' imported but unused
+var/ssapy/repos/builtin/packages/netcdf/package.py:61: [E303] too many blank lines (2)
+var/ssapy/repos/builtin/packages/netcdf/package.py:106: [E501] line too long (92 > 79 characters)
+Flake8 found errors.
+
+
+

Most of the error messages are straightforward, but if you don’t understand what +they mean, just ask questions about them when you submit your PR. The line numbers +will change if you add or delete lines, so simply run ssapy style again +to update them.

+
+

Tip

+

Try fixing flake8 errors in reverse order. This eliminates the need for +multiple runs of ssapy style just to re-compute line numbers and +makes it much easier to fix errors directly off of the CI output.

+
+
+
+

Documentation Tests

+

SSAPy uses Sphinx to build its +documentation. In order to prevent things like broken links and missing imports, +we added documentation tests that build the documentation and fail if there +are any warning or error messages.

+

Building the documentation requires several dependencies:

+
    +
  • docutils

  • +
  • sphinx

  • +
  • sphinx-rtd-theme

  • +
  • sphinx-copybutton

  • +
  • sphinx-autobuild

  • +
  • sphinx-tabs

  • +
  • sphinx-automodapi

  • +
  • myst-parser

  • +
  • graphviz

  • +
+

All of these can be installed with Pip, e.g.

+
$ python3 -m pip install docutils sphinx, sphinx-rtd-theme sphinx-copybutton sphinx-autobuild sphinx-tabs sphinx-automodapi myst-parser graphviz
+
+
+

Once all of the dependencies are installed, you can try building the documentation:

+
$ cd path/to/ssapy/docs/
+$ make clean
+$ make
+
+
+

If you see any warning or error messages, you will have to correct those before your PR +is accepted. If you are editing the documentation, you should be running the +documentation tests to make sure there are no errors. Documentation changes can result +in some obfuscated warning messages. If you don’t understand what they mean, feel free +to ask when you submit your PR.

+
+
+
+

Coverage

+

SSAPy uses Codecov to generate and report unit test +coverage. This helps us tell what percentage of lines of code in SSAPy are +covered by unit tests. Although code covered by unit tests can still contain +bugs, it is much less error prone than code that is not covered by unit tests.

+

Codecov provides browser extensions +for Google Chrome and Firefox. These extensions integrate with GitHub +and allow you to see coverage line-by-line when viewing the SSAPy repository. +If you are new to SSAPy, a great way to get started is to write unit tests to +increase coverage!

+

Unlike with CI on Github Actions Codecov tests are not required to pass in order for your +PR to be merged. If you modify core SSAPy libraries, we would greatly +appreciate unit tests that cover these changed lines. Otherwise, we have no +way of knowing whether or not your changes introduce a bug. If you make +substantial changes to the core, we may request unit tests to increase coverage.

+
+

Note

+

You may notice that the Codecov tests fail even though +you didn’t modify any core files. This means that SSAPy’s overall coverage +has increased since you branched off of develop. This is a good thing! +If you really want to get the Codecov tests to pass, you can rebase off of +the latest develop, but again, this is not required.

+
+
+
+

Git Workflows

+

SSAPy is still in the beta stages of development. Most of our users run off of +the develop branch, and fixes and new features are constantly being merged. So +how do you keep up-to-date with upstream while maintaining your own local +differences and contributing PRs to SSAPy?

+
+

Branching

+

The easiest way to contribute a pull request is to make all of your changes on +new branches. Make sure your develop is up-to-date and create a new branch +off of it:

+
$ git checkout develop
+$ git pull upstream develop
+$ git branch <descriptive_branch_name>
+$ git checkout <descriptive_branch_name>
+
+
+

Here we assume that the local develop branch tracks the upstream develop +branch of SSAPy. This is not a requirement and you could also do the same with +remote branches. But for some it is more convenient to have a local branch that +tracks upstream.

+

Normally we prefer that commits pertaining to a package <package-name> have +a message <package-name>: descriptive message. It is important to add +descriptive message so that others, who might be looking at your changes later +(in a year or maybe two), would understand the rationale behind them.

+

Now, you can make your changes while keeping the develop branch pure. +Edit a few files and commit them by running:

+
$ git add <files_to_be_part_of_the_commit>
+$ git commit --message <descriptive_message_of_this_particular_commit>
+
+
+

Next, push it to your remote fork and create a PR:

+
$ git push origin <descriptive_branch_name> --set-upstream
+
+
+

GitHub provides a tutorial +on how to file a pull request. When you send the request, make develop the +destination branch.

+

If you need this change immediately and don’t have time to wait for your PR to +be merged, you can always work on this branch. But if you have multiple PRs, +another option is to maintain a Frankenstein branch that combines all of your +other branches:

+
$ git co develop
+$ git branch <your_modified_develop_branch>
+$ git checkout <your_modified_develop_branch>
+$ git merge <descriptive_branch_name>
+
+
+

This can be done with each new PR you submit. Just make sure to keep this local +branch up-to-date with upstream develop too.

+
+
+

Cherry-Picking

+

What if you made some changes to your local modified develop branch and already +committed them, but later decided to contribute them to SSAPy? You can use +cherry-picking to create a new branch with only these commits.

+

First, check out your local modified develop branch:

+
$ git checkout <your_modified_develop_branch>
+
+
+

Now, get the hashes of the commits you want from the output of:

+
$ git log
+
+
+

Next, create a new branch off of upstream develop and copy the commits +that you want in your PR:

+
$ git checkout develop
+$ git pull upstream develop
+$ git branch <descriptive_branch_name>
+$ git checkout <descriptive_branch_name>
+$ git cherry-pick <hash>
+$ git push origin <descriptive_branch_name> --set-upstream
+
+
+

Now you can create a PR from the web-interface of GitHub. The net result is as +follows:

+
    +
  1. You patched your local version of SSAPy and can use it further.

  2. +
  3. You “cherry-picked” these changes in a stand-alone branch and submitted it +as a PR upstream.

  4. +
+

Should you have several commits to contribute, you could follow the same +procedure by getting hashes of all of them and cherry-picking to the PR branch.

+
+

Note

+

It is important that whenever you change something that might be of +importance upstream, create a pull request as soon as possible. Do not wait +for weeks/months to do this, because:

+
    +
  1. you might forget why you modified certain files

  2. +
  3. it could get difficult to isolate this change into a stand-alone clean PR.

  4. +
+
+
+
+

Rebasing

+

Other developers are constantly making contributions to SSAPy, possibly on the +same files that your PR changed. If their PR is merged before yours, it can +create a merge conflict. This means that your PR can no longer be automatically +merged without a chance of breaking your changes. In this case, you will be +asked to rebase on top of the latest upstream develop.

+

First, make sure your develop branch is up-to-date:

+
$ git checkout develop
+$ git pull upstream develop
+
+
+

Now, we need to switch to the branch you submitted for your PR and rebase it +on top of develop:

+
$ git checkout <descriptive_branch_name>
+$ git rebase develop
+
+
+

Git will likely ask you to resolve conflicts. Edit the file that it says can’t +be merged automatically and resolve the conflict. Then, run:

+
$ git add <file_that_could_not_be_merged>
+$ git rebase --continue
+
+
+

You may have to repeat this process multiple times until all conflicts are resolved. +Once this is done, simply force push your rebased branch to your remote fork:

+
$ git push --force origin <descriptive_branch_name>
+
+
+
+
+

Rebasing with cherry-pick

+

You can also perform a rebase using cherry-pick. First, create a temporary +backup branch:

+
$ git checkout <descriptive_branch_name>
+$ git branch tmp
+
+
+

If anything goes wrong, you can always go back to your tmp branch. +Now, look at the logs and save the hashes of any commits you would like to keep:

+
$ git log
+
+
+

Next, go back to the original branch and reset it to develop. +Before doing so, make sure that you local develop branch is up-to-date +with upstream:

+
$ git checkout develop
+$ git pull upstream develop
+$ git checkout <descriptive_branch_name>
+$ git reset --hard develop
+
+
+

Now you can cherry-pick relevant commits:

+
$ git cherry-pick <hash1>
+$ git cherry-pick <hash2>
+
+
+

Push the modified branch to your fork:

+
$ git push --force origin <descriptive_branch_name>
+
+
+

If everything looks good, delete the backup branch:

+
$ git branch --delete --force tmp
+
+
+
+
+

Re-writing History

+

Sometimes you may end up on a branch that has diverged so much from develop +that it cannot easily be rebased. If the current commits history is more of +an experimental nature and only the net result is important, you may rewrite +the history.

+

First, merge upstream develop and reset you branch to it. On the branch +in question, run:

+
$ git merge develop
+$ git reset develop
+
+
+

At this point your branch will point to the same commit as develop and +thereby the two are indistinguishable. However, all the files that were +previously modified will stay as such. In other words, you do not lose the +changes you made. Changes can be reviewed by looking at diffs:

+
$ git status
+$ git diff
+
+
+

The next step is to rewrite the history by adding files and creating commits:

+
$ git add <files_to_be_part_of_commit>
+$ git commit --message <descriptive_message>
+
+
+

After all changed files are committed, you can push the branch to your fork +and create a PR:

+
$ git push origin --set-upstream
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/examples.html b/examples.html new file mode 100644 index 0000000..d44da02 --- /dev/null +++ b/examples.html @@ -0,0 +1,132 @@ + + + + + + + SSAPy by Example — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

SSAPy by Example

+

The following pages are rendered jupyter notebooks that provide an overview and example usage of SSAPy features. +Each notebook builds on the previous one so it is recommended to go through them in order.

+

THIS PAGE IS UNDER DEVELOPMENT

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/genindex.html b/genindex.html new file mode 100644 index 0000000..a1de771 --- /dev/null +++ b/genindex.html @@ -0,0 +1,1337 @@ + + + + + + Index — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + +

Index

+ +
+ _ + | A + | B + | C + | D + | E + | F + | G + | H + | I + | K + | L + | M + | N + | O + | P + | Q + | R + | S + | T + | U + | V + | W + | X + | Y + | Z + +
+

_

+ + +
+ +

A

+ + + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

H

+ + + +
+ +

I

+ + + +
+ +

K

+ + + +
+ +

L

+ + + +
+ +

M

+ + + +
+ +

N

+ + + +
+ +

O

+ + + +
+ +

P

+ + + +
+ +

Q

+ + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + + +
+ +

V

+ + + +
+ +

W

+ + +
+ +

X

+ + + +
+ +

Y

+ + + +
+ +

Z

+ + + +
+ + + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..6bb03ca --- /dev/null +++ b/index.html @@ -0,0 +1,276 @@ + + + + + + + SSAPy - Space Situational Awareness for Python — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

SSAPy - Space Situational Awareness for Python

+

ci_badge container_badge docs_badge codecov_badge

+

SSAPy is a python package allowing for fast and precise orbital modeling.

+

SSAPy is much faster than other orbit modeling tools and offers:

+
    +
  • A variety of integrators, including Runge-Kutta, SciPy, SGP4, etc.

  • +
  • Customizable force propagation models, including a variety of Earth gravity models, lunar gravity, radiation pressure, etc.

  • +
  • Multiple-hypothesis tracking (MHT) UCT linker

  • +
  • Vectorized computations

  • +
  • Short arc probabilistic orbit determination

  • +
  • Conjunction probability estimation

  • +
  • Uncertainty quantification

  • +
  • Monte Carlo data fusion

  • +
  • Support for multiple coordinate frames (with coordinate frame conversions)

  • +
+
+

Installation

+

For installation details, see the Installing SSAPy section of the documentation.

+
+
+

Strict dependencies

+ +

The following are installed automatically when you install SSAPy:

+
    +
  • numpy;

  • +
  • scipy for many statistical functions;

  • +
  • astropy for astronomy related functions;

  • +
  • pyerfa a Python wrapper for the ERFA library;

  • +
  • emcee an affine-invariant ensemble sampler for Markov chain Monte Carlo;

  • +
  • lmfit a package for non-linear least-squares minimization and curve fitting;

  • +
  • sgp4 contains functions to compute the positions of satellites in Earth orbit;

  • +
  • matplotlib as a plotting backend;

  • +
  • and other utility packages, as enumerated in setup.py.

  • +
+
+
+

Documentation

+

All documentation is hosted at https://LLNL.github.io/SSAPy/.

+

The API documentation may also be seen by doing:

+
python3
+>>> import ssapy
+>>> help(ssapy)
+
+
+
+
+

Contributing

+

Contributing to SSAPy is relatively easy. Just send us a pull request. When you send your request, make develop the destination branch on the SSAPy repository.

+

Your PR must pass SSAPy’s unit tests and documentation tests, and must be PEP 8 compliant. We enforce these guidelines with our CI process. To run these tests locally, and for helpful tips on git, see our Contribution Guide.

+

SSAPy’s develop branch has the latest contributions. Pull requests should target develop, and users who want the latest package versions, features, etc. can use develop.

+
+
+

Releases

+

For multi-user site deployments or other use cases that need very stable software installations, we recommend using SSAPy’s stable releases.

+

Each SSAPy release series also has a corresponding branch, e.g. releases/v0.14 has 0.14.x versions of SSAPy, and releases/v0.13 has 0.13.x versions. We backport important bug fixes to these branches but we do not advance the package versions or make other changes that would change the way SSAPy concretizes dependencies within a release branch. So, you can base your SSAPy deployment on a release branch and git pull to get fixes, without the package churn that comes with develop.

+

The latest release is always available with the releases/latest tag.

+

See the docs on releases for more details.

+
+
+

Code of Conduct

+

Please note that SSAPy has a Code of Conduct. By participating in the SSAPy community, you agree to abide by its rules.

+
+
+

Authors

+

SSAPy was developed with support from Lawrence Livermore National Laboratory’s Laboratory Directed Research and Development (LDRD) Program under projects +19-SI-004 and +22-ERD-054, by the following individuals (in alphabetical order):

+ +

Many thanks go to SSAPy’s other contributors.

+
+
+

License

+

SSAPy is distributed under the terms of the MIT license. All new contributions must be made under the MIT license.

+

See Link to license and NOTICE for details.

+

SPDX-License-Identifier: MIT

+

LLNL-CODE-862420

+ + +
+
+
+

Indices and tables

+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/installation.html b/installation.html new file mode 100644 index 0000000..f22b97d --- /dev/null +++ b/installation.html @@ -0,0 +1,216 @@ + + + + + + + Getting Started — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Getting Started

+
+

System Prerequisites

+

SSAPy has the following minimum system requirements, which are assumed to be present on the machine where SSAPy is run:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
System prerequisites for SSAPy

Name

Supported Versions

Notes

Requirement Reason

Python

3.8–3.11

Interpreter

C/C++ Compilers

Building software

make

Build software

git

Manage software repositories

git-lfs

Track large binary files

graphviz

Local documentation building

+

These requirements can be easily installed on most modern macOS and Linux systems.

+
+
apt update
+apt install build-essential git git-lfs python3 python3-distutils python3-venv graphviz
+
+
+
+
+
+

Installation

+

As the package has not yet been published on PyPI, it CANNOT be installed using pip. Instead, use the following directions to install the package.

+

After cloning the main git repository, you must run the following command to clone the submodules:

+
git submodule update --init --recursive
+
+
+

Then run the usual setup commands:

+
python3 setup.py build
+python3 setup.py install
+
+
+
+

Orekit dependency

+

Orekit is an optional dependency, including the Orekit Python wrapper that is hard to find. Clone the python wrappper from here:

+
+
+

Alternatively, the Orekit python wrapper can be installed from Anaconda.

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.accel.html b/modules/ssapy.accel.html new file mode 100644 index 0000000..e1b7629 --- /dev/null +++ b/modules/ssapy.accel.html @@ -0,0 +1,205 @@ + + + + + + + ssapy.accel — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.accel

+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Accel([time_breakpoints])

Base class for accelerations.

AccelConstNTW(accelntw[, time_breakpoints])

Constant acceleration in NTW coordinates.

AccelDrag([recalc_threshold])

Acceleration due to atmospheric drag.

AccelEarthRad(**defaultkw)

Acceleration due to Earth radiation pressure.

AccelKepler([mu])

Keplerian acceleration. I.e., force is proportional to 1/|r|^2.

AccelProd(accel, factor)

AccelSolRad(**defaultkw)

Acceleration due to solar radiation pressure.

AccelSum(accels)

Acceleration defined as the sum of other accelerations.

Ellipsoid

+
+
+

Class Inheritance Diagram

+digraph inheritance83824c4f5d { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "Accel" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Base class for accelerations."]; + "AccelConstNTW" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Constant acceleration in NTW coordinates."]; + "Accel" -> "AccelConstNTW" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "AccelDrag" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Acceleration due to atmospheric drag."]; + "Accel" -> "AccelDrag" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "AccelEarthRad" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Acceleration due to Earth radiation pressure."]; + "Accel" -> "AccelEarthRad" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "AccelKepler" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Keplerian acceleration. I.e., force is proportional to 1/|r|^2."]; + "Accel" -> "AccelKepler" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "AccelProd" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "Accel" -> "AccelProd" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "AccelSolRad" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Acceleration due to solar radiation pressure."]; + "Accel" -> "AccelSolRad" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "AccelSum" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Acceleration defined as the sum of other accelerations."]; + "Accel" -> "AccelSum" [arrowsize=0.5,style="setlinewidth(0.5)"]; +} +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.body.html b/modules/ssapy.body.html new file mode 100644 index 0000000..7dddeaa --- /dev/null +++ b/modules/ssapy.body.html @@ -0,0 +1,204 @@ + + + + + + + ssapy.body — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.body

+
+

Functions

+ + + + + + + + + +

get_body(name[, model])

Get a Body object for a named body.

iers_interp(t)

Interpolate IERS values

+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + +

Body(mu, radius[, position, orientation, ...])

A celestial body.

EarthOrientation([recalc_threshold])

Orientation of earth in GCRF.

HarmonicCoefficients()

Class to hold coefficients for a spherical harmonic expansion of a gravitational potential.

MoonOrientation()

Orientation of moon in GCRF.

MoonPosition()

Position of moon in GCRF.

PlanetPosition(planet_index)

Position of a planet in GCRF.

SunPosition()

Position of sun in GCRF.

+
+
+

Class Inheritance Diagram

+digraph inheritance3ba1478d81 { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "Body" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="A celestial body."]; + "EarthOrientation" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Orientation of earth in GCRF. This is a callable class that returns the"]; + "MoonOrientation" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Orientation of moon in GCRF. This is a callable class that returns the"]; + "MoonPosition" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Position of moon in GCRF. This is a callable class that returns the"]; + "PlanetPosition" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Position of a planet in GCRF. This is a callable class that returns the"]; + "SunPosition" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Position of sun in GCRF. This is a callable class that returns the"]; +} +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.compute.html b/modules/ssapy.compute.html new file mode 100644 index 0000000..5dbf3b0 --- /dev/null +++ b/modules/ssapy.compute.html @@ -0,0 +1,262 @@ + + + + + + + ssapy.compute — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.compute

+
+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

M_v(r_sat, r_earth, r_sun[, r_moon, radius, ...])

altaz(orbit, time, observer[, propagator, ...])

Calculate observed altitude and azimuth of orbiting objects as viewed at specified times and locations.

dircos(orbit, time[, obsPos, obsVel, ...])

Calculate observed direction-cosines of orbiting objects as viewed at specified times and positions.

earthShadowCoords(r, time)

Determine components of position r parallel and perpendicular to sun unit vector.

earth_shine(r_sat, r_earth, r_sun, radius, ...)

find_passes(orbit, observers, tStart, tSpan, dt)

Find satellite overhead passes for a collection of observers.

getAngle(a, b, c)

groundTrack(orbit, time[, propagator, format])

Calculate satellite ground track on the outer product of all supplied times and statevectors or orbits.

iers_interp(t)

Interpolate IERS values

keplerian_orbital_elements(r_, v_[, ...])

lb_to_unit(r, d)

Convert lb-like coordinates to unit vectors.

moon_shine(r_moon, r_sat, r_earth, r_sun, ...)

norm(arr)

normed(arr)

quickAltAz(orbit, time, observer[, ...])

Quickly estimate observed altitude and azimuth of orbiting objects as viewed at specified times and locations.

radec(orbit, time[, obsPos, obsVel, ...])

Calculate observed right ascension, declination, and slant range of orbiting objects as viewed at specified times and positions.

radecRate(orbit, time[, obsPos, obsVel, ...])

Calculate ra/dec rate and slant range rate of orbit at specified times and observer positions and velocities.

radecRateObsToRV(ra, dec, slantRange[, ...])

Convert object angles and observer position to 3D observer position

refine_pass(orbit, observer, time[, ...])

Refine a satellite overhead pass.

rv(orbit, time[, propagator])

Calculate positions and velocities on the outer product of all supplied orbits and times.

rvObsToRaDecRate(r, v[, obsPos, obsVel])

Convert object and observer position and velocity to angles.

sunPos(t[, fast])

Compute GCRF position of the sun.

sun_shine(r_sat, r_earth, r_sun, radius, ...)

unitAngle3(r1, r2)

Robustly compute angle between unit vectors r1 and r2.

+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +

Ellipsoid

HashableArrayContainer(arr)

KeplerianPropagator()

A basic Keplerian propagator for finding the position and velocity of an orbiting object at some future or past time.

LRU_Cache(user_function[, maxsize])

Simplified Least Recently Used Cache.

Orbit(r, v, t[, mu, propkw])

Orbital state of one or more objects.

Time(val[, val2, format, scale, precision, ...])

Represent and manipulate times and dates for astronomy.

+
+
+

Class Inheritance Diagram

+digraph inheritancec10521549d { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "HashableArrayContainer" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; +} +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.constants.html b/modules/ssapy.constants.html new file mode 100644 index 0000000..7e8ad5d --- /dev/null +++ b/modules/ssapy.constants.html @@ -0,0 +1,144 @@ + + + + + + + ssapy.constants — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.constants

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.correlate_tracks.html b/modules/ssapy.correlate_tracks.html new file mode 100644 index 0000000..6e82d99 --- /dev/null +++ b/modules/ssapy.correlate_tracks.html @@ -0,0 +1,275 @@ + + + + + + + ssapy.correlate_tracks — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.correlate_tracks

+
+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

combinatoric_lnprior(nsat, ntrack, ndet)

Prior probability of assigning detections to tracks of satellites.

data_for_satellite(data, satIDList)

Extract data for specific satID.

fit_arc(arc, guess[, verbose, propagator, ...])

Fit an orbit to an arc.

fit_arc_blind(arc[, verbose, mode, priors, ...])

Fit an orbit to an arc.

fit_arc_blind_via_track(arc[, propagator, ...])

Fit a series of detections using the Track interface.

fit_arc_with_gaussian_prior(arc, mu, cinvcholfac)

Fit an orbit to an arc.

iterate_mht(data, oldmht[, nminlength, trimends])

make_optimizer(mode, param[, lsq])

make_param_guess(rvguess, arc[, mode, orbitattr])

norm(arr)

normSq(arr)

normed(arr)

orbit_to_param(orbit[, mode, orbitattr, ...])

Convert Orbits to parameters.

param_to_orbit(param[, mode, orbitattr])

Convert parameters to Orbits.

radeczn(orbit, arc, **kw)

summarize_tracklet(arc)

Compute mean ra/dec, uncertainty in mean, proper motion, uncertainty for a short arc.

summarize_tracklets(data[, posuncfloor, ...])

Add fields to default data set to accommodate MHT fitting.

time_ordered_satIDs(data[, with_time, order])

Give satIDs in data in order of observation.

wrap_angle_difference(dl, wrap[, center])

+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

CircVelocityPrior([sigma])

Gaussian prior that log(GM/r/v^2) = 0.

GaussPrior(mu, cinvcholfac, translator)

Gaussian prior on parameters.

Hypothesis(tracks[, nsat])

Assignment of detections to multiple tracks.

MHT(data[, nsat, truth, hypotheses, ...])

Multiple Hypothesis Tracking of many hypotheses explaining data.

Time(val[, val2, format, scale, precision, ...])

Represent and manipulate times and dates for astronomy.

Track(satIDs, data[, guess, initial_lnprob, ...])

Set of observations to be fit as an object moving through space.

TrackBase(satIDs, data[, volume, mode, ...])

Set of observations fit together as an orbital track.

TrackGauss(satIDs, data, param, covar, chi2)

Set of observations to be fit as an object moving through space.

VolumeDistancePrior([scale])

Prior on range like r^2*exp(-r/scale), preferring larger distances where there is more volume.

ZeroRadialVelocityPrior([sigma])

Gaussian prior that v_R = 0.

lazy_property(fget)

meant to be used for lazy evaluation of an object attribute.

partial

partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.

+
+
+

Class Inheritance Diagram

+digraph inheritance528131318c { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "CircVelocityPrior" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Gaussian prior that log(GM/r/v^2) = 0."]; + "GaussPrior" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Gaussian prior on parameters."]; + "Hypothesis" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Assignment of detections to multiple tracks."]; + "MHT" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Multiple Hypothesis Tracking of many hypotheses explaining data."]; + "Track" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Set of observations to be fit as an object moving through space."]; + "TrackBase" -> "Track" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "TrackBase" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Set of observations fit together as an orbital track."]; + "TrackGauss" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Set of observations to be fit as an object moving through space."]; + "TrackBase" -> "TrackGauss" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "VolumeDistancePrior" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Prior on range like r^2*exp(-r/scale), preferring larger distances where"]; + "ZeroRadialVelocityPrior" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Gaussian prior that v_R = 0."]; +} +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.ellipsoid.html b/modules/ssapy.ellipsoid.html new file mode 100644 index 0000000..bb33556 --- /dev/null +++ b/modules/ssapy.ellipsoid.html @@ -0,0 +1,144 @@ + + + + + + + ssapy.ellipsoid — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.ellipsoid

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.gravity.html b/modules/ssapy.gravity.html new file mode 100644 index 0000000..ac688ac --- /dev/null +++ b/modules/ssapy.gravity.html @@ -0,0 +1,181 @@ + + + + + + + ssapy.gravity — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.gravity

+
+

Classes

+ + + + + + + + + + + + + + + +

Accel([time_breakpoints])

Base class for accelerations.

AccelHarmonic(body[, n_max, m_max])

Acceleration due to a harmonic potential.

AccelThirdBody(body)

Acceleration due to a third body.

HarmonicCoefficients()

Class to hold coefficients for a spherical harmonic expansion of a gravitational potential.

+
+
+

Class Inheritance Diagram

+digraph inheritancef2cea3d887 { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "Accel" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Base class for accelerations."]; + "AccelHarmonic" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Acceleration due to a harmonic potential."]; + "Accel" -> "AccelHarmonic" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "AccelThirdBody" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Acceleration due to a third body."]; + "Accel" -> "AccelThirdBody" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "HarmonicCoefficients" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Class to hold coefficients for a spherical harmonic expansion of a"]; +} +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.io.html b/modules/ssapy.io.html new file mode 100644 index 0000000..7189944 --- /dev/null +++ b/modules/ssapy.io.html @@ -0,0 +1,280 @@ + + + + + + + ssapy.io — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.io

+
+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

append_csv(file_names[, save_path, sep, ...])

Appends multiple CSV files into a single CSV file.

append_csv_on_disk(csv_files, output_file)

b3obs2pos(b3line)

Return an SGP4 Satellite imported from B3OBS data.

exists(pathname)

exists_in_csv(csv_file, column_name, number)

get_memory_usage()

get_tel_pos_itrf_to_gcrs(time[, tel_label])

Convert telescope locations in ITRF (i.e., fixed to the earth) to GCRS (i.e., geocentric celestial frame)

guess_csv_delimiter(file_name)

h5_key_exists(filename, key)

Checks if a key exists in an HDF5 file.

h5append(filename, pathname, append_data)

Append data to key in HDF5 file.

h5keys(filename)

List all groups in HDF5 file.

h5load(filename, pathname)

Load data from HDF5 file.

h5loadall(filename_)

Load all data from HDF5 file.

h5overwrite(filename, pathname, new_data)

Overwrite key in HDF5 file.

h5save(filename, pathname, data)

Save data to HDF5 file.

header_csv(file_name[, sep])

Get the header of a CSV file.

listdir([dir_path, files_only, exclude])

load_b3obs_file(file_name)

Convenience function to load all entries in a B3OBS file

make_tle(a, e, i, pa, raan, trueAnomaly, t)

Create a TLE from Kozai mean orbital elements

makedf(df)

merge_dicts(file_names, save_path)

mkdir(pathname)

mpi_scatter(scatter_array)

mpi_scatter_exclude_rank_0(scatter_array)

npload(filename_)

npsave(filename_, data_)

parseB3(filename)

Load data from a B3 observation file

parseB3Line(line)

Read one line of a B3 file and parse into distinct catalog components

parse_overpunched(line)

parse_tle(tle)

Parse a TLE returning Kozai mean orbital elements.

pd_flatten(data[, factor])

pdstr_to_arrays(df)

pload(filename_)

psave(filename_, data_)

read_csv(file_name[, sep, dtypes, col, ...])

Read a CSV file with options.

read_tle(sat_name, tle_filename)

Get the TLE data from the file for the satellite with the given name

read_tle_catalog(fname[, n_lines])

Read in a TLE catalog file

rmdir(source_)

rmfile(pathname)

save_csv(file_name, df[, sep, dtypes])

Save a Pandas DataFrame to a CSV file.

save_csv_line(file_name, df[, sep, dtypes])

Save a Pandas DataFrame to a CSV file, appending the DataFrame to the file if it exists.

str_to_array(s)

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.linker.html b/modules/ssapy.linker.html new file mode 100644 index 0000000..fb9dee8 --- /dev/null +++ b/modules/ssapy.linker.html @@ -0,0 +1,179 @@ + + + + + + + ssapy.linker — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.linker

+
+

Classes

+ + + + + + + + + + + + + + + +

BinarySelectorParams(num_tracks, num_orbits)

Special methods for the binary model selection variables

Linker(iods[, num_orbits, a_orbit])

Monte Carlo linking of uncorrelated orbit tracks

ModelSelectorParams(num_tracks, num_orbits)

Container to hold model selection parameters or hyperparameters

Particles(particles, rvprobability[, ...])

A class for importance (re-)sampling orbit model parameter samples

+
+
+

Class Inheritance Diagram

+digraph inheritance6bc6f28b07 { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "BinarySelectorParams" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Special methods for the binary model selection variables"]; + "ModelSelectorParams" -> "BinarySelectorParams" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "Linker" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Monte Carlo linking of uncorrelated orbit tracks"]; + "ModelSelectorParams" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Container to hold model selection parameters or hyperparameters"]; +} +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.orbit.html b/modules/ssapy.orbit.html new file mode 100644 index 0000000..ba66927 --- /dev/null +++ b/modules/ssapy.orbit.html @@ -0,0 +1,184 @@ + + + + + + + ssapy.orbit — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.orbit

+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +

EarthObserver(lon, lat[, elevation, fast])

An earth-bound observer.

KeplerianPropagator()

A basic Keplerian propagator for finding the position and velocity of an orbiting object at some future or past time.

Orbit(r, v, t[, mu, propkw])

Orbital state of one or more objects.

OrbitalObserver(orbit[, propagator])

An observer in orbit.

Time(val[, val2, format, scale, precision, ...])

Represent and manipulate times and dates for astronomy.

lazy_property(fget)

meant to be used for lazy evaluation of an object attribute.

+
+
+

Class Inheritance Diagram

+digraph inheritance41f242dbcd { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "EarthObserver" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="An earth-bound observer."]; + "Orbit" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Orbital state of one or more objects."]; + "OrbitalObserver" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="An observer in orbit."]; +} +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.orbit_solver.html b/modules/ssapy.orbit_solver.html new file mode 100644 index 0000000..4c6fc10 --- /dev/null +++ b/modules/ssapy.orbit_solver.html @@ -0,0 +1,247 @@ + + + + + + + ssapy.orbit_solver — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.orbit_solver

+

Classes to solve for Keplerina orbital parameters from different initial inputs

+

# TODO: Provide overview of different solvers

+

TwoPosOrbitSolver:

+

GaussTwoPosOrbitSolver:

+

DanchickTwoPosOrbitSolver:

+

SheferTwoPosOrbitSolver:

+

ThreeAngleOrbitSolver

+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

DanchickTwoPosOrbitSolver(*args, **kwargs)

GaussTwoPosOrbitSolver(*args, **kwargs)

Orbit(r, v, t[, mu, propkw])

Orbital state of one or more objects.

SheferTwoPosOrbitSolver(*args, **kwargs)

ThreeAngleOrbitSolver(e1, e2, e3, R1, R2, ...)

Determine orbit of satellite for set of three angle-only observations.

Time(val[, val2, format, scale, precision, ...])

Represent and manipulate times and dates for astronomy.

TwoPosOrbitSolver(r1, r2, t1, t2[, mu, ...])

Parameters + +r1, r2 + +(3,) array_like + +Positions at t1 and t2 in meters. + +t1, t2 + +float or astropy.time.Time + +Times of observations. +If float, then should correspond to GPS seconds; i.e., seconds since +1980-01-06 00:00:00 UTC + +mu + +float, optional + +Gravitational constant of central body in m^3/s^2. (Default: Earth's +gravitational constant in WGS84). + +kappaSign + +int, optional + ++1 for prograde, -1 for retrograde + +lam + +int, optional + +Number of complete orbits between observations. (Default: 0) + +eps + +float, optional + +Iteration tolerance. + +maxiter + +int, optional + +Maximum number of iterations.

lazy_property(fget)

meant to be used for lazy evaluation of an object attribute.

+
+
+

Class Inheritance Diagram

+digraph inheritance315f952d9f { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "DanchickTwoPosOrbitSolver" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "TwoPosOrbitSolver" -> "DanchickTwoPosOrbitSolver" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "GaussTwoPosOrbitSolver" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "TwoPosOrbitSolver" -> "GaussTwoPosOrbitSolver" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "SheferTwoPosOrbitSolver" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "TwoPosOrbitSolver" -> "SheferTwoPosOrbitSolver" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "ThreeAngleOrbitSolver" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Determine orbit of satellite for set of three angle-only observations."]; + "TwoPosOrbitSolver" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Parameters"]; +} +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.particles.html b/modules/ssapy.particles.html new file mode 100644 index 0000000..c74af49 --- /dev/null +++ b/modules/ssapy.particles.html @@ -0,0 +1,170 @@ + + + + + + + ssapy.particles — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.particles

+
+

Classes

+ + + + + + + + + +

Orbit(r, v, t[, mu, propkw])

Orbital state of one or more objects.

Particles(particles, rvprobability[, ...])

A class for importance (re-)sampling orbit model parameter samples

+
+
+

Class Inheritance Diagram

+digraph inheritancec47771f723 { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "Particles" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="A class for importance (re-)sampling orbit model parameter samples"]; +} +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.plotUtils.html b/modules/ssapy.plotUtils.html new file mode 100644 index 0000000..e00f139 --- /dev/null +++ b/modules/ssapy.plotUtils.html @@ -0,0 +1,306 @@ + + + + + + + ssapy.plotUtils — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.plotUtils

+
+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

check_numpy_array(variable)

drawEarth(time[, ngrid, R, rfactor])

Parameters + +time + +array_like or astropy.time.Time (n,) + +If float (array), then should correspond to GPS seconds; +i.e., seconds since 1980-01-06 00:00:00 UTC + +ngrid: int + +Number of grid points in Earth model. + +R: float + +Earth radius in meters. Default is WGS84 value. + +rfactor: float + +Factor by which to enlarge Earth (for visualization purposes)

ecef_plot(r, times[, limits, title, ...])

Parameters + +r + +(n,3) or array of [(n,3), ..., (n,3)] array_like + +Position of orbiting object(s) in meters. + +:5: (WARNING/2) Definition list ends without a blank line; unexpected unindent. + +times: times when r was calculated. +limits: optional - x and y limits of the plot +title: optional - title of the plot

find_file(filename[, ext])

Find a file in the current directory or the ssapy datadir.

format_xaxis_decimal_year(time_array, ax)

gcrf_plot(r[, times, limits, title, ...])

Parameters + +r + +(n,3) or array of [(n,3), ..., (n,3)] array_like + +Position of orbiting object(s) in meters. + +:5: (WARNING/2) Definition list ends without a blank line; unexpected unindent. + +times: optional - times when r was calculated. +limits: optional - x and y limits of the plot +title: optional - title of the plot

gcrf_to_ecef(r_gcrf, t)

gcrf_to_lunar(r, times)

gcrf_to_stationary_lunar(r, times)

get_body(name[, model])

Get a Body object for a named body.

groundTrack(orbit, time[, propagator, format])

Calculate satellite ground track on the outer product of all supplied times and statevectors or orbits.

groundTrackPlot(r, time[, ground_stations])

Parameters + +r : (3,) array_like - Orbit positions in meters. +times: (n,) array_like - array of Astropy Time objects or time in gps seconds.

groundTrackVideo(r, time)

Parameters + +r + +(3,) array_like + +Position of orbiting object in meters. + +t + +float or astropy.time.Time + +If float or array of float, then should correspond to GPS seconds; i.e., +seconds since 1980-01-06 00:00:00 UTC

load_earth_file()

load_moon_file()

lunar_plot(r, times[, limits, title, ...])

Parameters + +r + +(n,3) or array of [(n,3), ..., (n,3)] array_like + +Position of orbiting object(s) in meters. + +:5: (WARNING/2) Definition list ends without a blank line; unexpected unindent. + +times: array of Astropy time objects +limits: optional - x and y limits of the plot +title: optional - title of the plot

lunar_stationary_plot(r, times[, limits, ...])

Parameters + +r + +(n,3) or array of [(n,3), ..., (n,3)] array_like + +Position of orbiting object(s) in meters. + +:5: (WARNING/2) Definition list ends without a blank line; unexpected unindent. + +times: array of Astropy time objects +limits: optional - x and y limits of the plot +title: optional - title of the plot

norm(arr)

plotRVCorner(chain, lnprob, lnprior[, start])

Make rv samples corner plot.

plotRVTrace(chain, lnprob, lnprior[, start, fig])

Plot rv MCMC traces.

save_plot_to_pdf(figure, pdf_path)

save_plot_to_png(figure, save_path[, dpi])

Save a Python figure as a PNG image.

tracking_plot(r, times[, ground_stations, ...])

Create a 3D tracking plot of satellite positions over time on Earth's surface.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.propagator.html b/modules/ssapy.propagator.html new file mode 100644 index 0000000..874801c --- /dev/null +++ b/modules/ssapy.propagator.html @@ -0,0 +1,239 @@ + + + + + + + ssapy.propagator — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.propagator

+
+

Functions

+ + + + + + + + + + + + + + + +

abstractmethod(funcobj)

A decorator indicating abstract methods.

default_numerical(*args[, cls, accel, ...])

Construct a numerical propagator with sensible default acceleration.

norm(arr)

teme_to_gcrf(t)

Return the rotation matrix that converts TEME cartesian coordinates to GCRS cartesian coordinates.

+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

ABC()

Helper class that provides a standard way to create an ABC using inheritance.

KeplerianPropagator()

A basic Keplerian propagator for finding the position and velocity of an orbiting object at some future or past time.

LRU_Cache(user_function[, maxsize])

Simplified Least Recently Used Cache.

Propagator()

Abstract base class for orbit propagators.

RK4Propagator(accel, h)

Runge-Kutta 4th order numerical integrator.

RK78Propagator(accel, h[, tol])

Runge-Kutta 8th order numerical integrator with adaptive step size computed from embedded 7th order integrator error estimate.

RK8Propagator(accel, h)

Runge-Kutta 8th order numerical integrator.

RKPropagator()

SGP4Propagator([t, truncate])

Propagate using simplified perturbation model SGP4.

SciPyPropagator(accel[, ode_kwargs])

Propagate using the scipy.integrate.solve_ivp ODE solver.

SeriesPropagator([order])

Propagate using Taylor series expansion of Keplerian motion.

Time(val[, val2, format, scale, precision, ...])

Represent and manipulate times and dates for astronomy.

+
+
+

Class Inheritance Diagram

+digraph inheritancef7cbe4f50d { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; + "KeplerianPropagator" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="A basic Keplerian propagator for finding the position and velocity of an"]; + "Propagator" -> "KeplerianPropagator" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "Propagator" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Abstract base class for orbit propagators."]; + "ABC" -> "Propagator" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "RK4Propagator" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Runge-Kutta 4th order numerical integrator."]; + "RKPropagator" -> "RK4Propagator" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "RK78Propagator" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Runge-Kutta 8th order numerical integrator with adaptive step size"]; + "RK8Propagator" -> "RK78Propagator" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "RK8Propagator" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Runge-Kutta 8th order numerical integrator."]; + "RKPropagator" -> "RK8Propagator" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "RKPropagator" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "Propagator" -> "RKPropagator" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "ABC" -> "RKPropagator" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "SGP4Propagator" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Propagate using simplified perturbation model SGP4."]; + "Propagator" -> "SGP4Propagator" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "SciPyPropagator" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Propagate using the scipy.integrate.solve_ivp ODE solver."]; + "Propagator" -> "SciPyPropagator" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "SeriesPropagator" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Propagate using Taylor series expansion of Keplerian motion. This is"]; + "Propagator" -> "SeriesPropagator" [arrowsize=0.5,style="setlinewidth(0.5)"]; +} +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.rvsampler.html b/modules/ssapy.rvsampler.html new file mode 100644 index 0000000..41974a3 --- /dev/null +++ b/modules/ssapy.rvsampler.html @@ -0,0 +1,326 @@ + + + + + + + ssapy.rvsampler — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.rvsampler

+
+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

circular_guess(arc[, indices])

Guess position and velocity from two closely spaced (in time) observations of ra/dec.

cluster_emcee_walkers(chain, lnprob, lnprior)

Down-select emcee walkers to those with the largest mean posteriors

damper(chi, damp)

Pseudo-Huber loss function.

damper_deriv(chi, damp[, derivnum])

Derivative of the pseudo-Huber loss function.

dircos(orbit, time[, obsPos, obsVel, ...])

Calculate observed direction-cosines of orbiting objects as viewed at specified times and positions.

eq2kep(eq)

norm(arr)

normSq(arr)

normed(arr)

radec(orbit, time[, obsPos, obsVel, ...])

Calculate observed right ascension, declination, and slant range of orbiting objects as viewed at specified times and positions.

radecRateObsToRV(ra, dec, slantRange[, ...])

Convert object angles and observer position to 3D observer position

rvObsToRaDecRate(r, v[, obsPos, obsVel])

Convert object and observer position and velocity to angles.

sample_ball(p0, std[, nSample])

Produce a ball of walkers around an initial parameter value.

unitAngle3(r1, r2)

Robustly compute angle between unit vectors r1 and r2.

+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

APrior(amean, asigma)

Gaussian prior on orbit semimajor axis a.

AreaPrior([mean, sigma])

Gaussian prior on log10(area) of object.

DirectInitializer(samples[, replace])

Directly specify initial position and velocity samples.

DistanceProjectionInitializer(arc, rho[, ...])

Initialize position and velocity from two closely spaced (in time) observations of ra/dec.

EPrior(emean, esigma)

Gaussian prior on orbit eccentricity e.

EmceeSampler(probfn, initializer[, nWalker])

A sampler built on the emcee package.

EquinoctialExEyPrior(sigma)

Gaussian prior on equinoctial ex and ey, favoring ex = ey = 0.

EquinoctialLMOptimizer(probfn, initel[, ...])

GEOProjectionInitializer(arc[, rSigma, vSigma])

Initialize position and velocity samples by projecting an observed ra/dec into the equatorial plane and assuming a GEO statationary orbital velocity.

GaussianRVInitializer(rMean, vMean[, ...])

Generate position and velocity samples as an isotropic Gaussian distribution around an asserted position and velocity.

KeplerianPropagator()

A basic Keplerian propagator for finding the position and velocity of an orbiting object at some future or past time.

LMOptimizer(probfn, initRV[, fracstep, ...])

LMOptimizerAngular(probfn, initGuess, ...[, ...])

LeastSquaresOptimizer(probfn, initparam, ...)

Base class for LeastSquaresOptimizers

Log10AreaPrior([mean, sigma])

Gaussian prior on log10(area) of object.

MHSampler(probfn, initializer, proposer, nChain)

Generate MCMC samples using a Metropolis-Hastings sampler.

MVNormalProposal(cov)

A multivariate normal proposal distribution.

Orbit(r, v, t[, mu, propkw])

Orbital state of one or more objects.

ParamOrbitAngle(initparam, epoch, ...)

ParamOrbitEquinoctial(*args, **kwargs)

ParamOrbitRV(*args, **kwargs)

ParamOrbitTranslator(initparam, epoch[, ...])

Class for making parameters into Orbits and vice-versa.

RPrior(rmean, rsigma)

Gaussian prior on distance from origin |r|.

RVProbability(arc, epoch[, priors, ...])

A class to manage MCMC sampling of orbits (parameterized by position and velocity at a given epoch) given some angular observations.

RVSigmaProposal(rSigma, vSigma)

Isotropic multivariate normal proposal distribution.

SGP4LMOptimizer(probfn, initel[, fracstep, ...])

Time(val[, val2, format, scale, precision, ...])

Represent and manipulate times and dates for astronomy.

VPrior(vmean, vsigma)

Gaussian prior on velocity magnitude |v|.

+
+
+

Class Inheritance Diagram

+digraph inheritance4d4d73cf78 { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "APrior" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Gaussian prior on orbit semimajor axis a."]; + "AreaPrior" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Gaussian prior on log10(area) of object."]; + "DirectInitializer" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Directly specify initial position and velocity samples. This can be"]; + "DistanceProjectionInitializer" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Initialize position and velocity from two closely spaced (in time)"]; + "EPrior" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Gaussian prior on orbit eccentricity e."]; + "EmceeSampler" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="A sampler built on the emcee package."]; + "EquinoctialExEyPrior" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Gaussian prior on equinoctial ex and ey, favoring ex = ey = 0."]; + "EquinoctialLMOptimizer" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "GEOProjectionInitializer" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Initialize position and velocity samples by projecting an observed ra/dec"]; + "GaussianRVInitializer" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Generate position and velocity samples as an isotropic Gaussian"]; + "LMOptimizer" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "LMOptimizerAngular" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "LeastSquaresOptimizer" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Base class for LeastSquaresOptimizers"]; + "Log10AreaPrior" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Gaussian prior on log10(area) of object."]; + "MHSampler" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Generate MCMC samples using a Metropolis-Hastings sampler."]; + "MVNormalProposal" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="A multivariate normal proposal distribution."]; + "ParamOrbitAngle" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "ParamOrbitTranslator" -> "ParamOrbitAngle" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "ParamOrbitEquinoctial" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "ParamOrbitTranslator" -> "ParamOrbitEquinoctial" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "ParamOrbitRV" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "ParamOrbitTranslator" -> "ParamOrbitRV" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "ParamOrbitTranslator" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Class for making parameters into Orbits and vice-versa."]; + "RPrior" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Gaussian prior on distance from origin |r|."]; + "RVProbability" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="A class to manage MCMC sampling of orbits (parameterized by position and"]; + "RVSigmaProposal" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Isotropic multivariate normal proposal distribution."]; + "MVNormalProposal" -> "RVSigmaProposal" [arrowsize=0.5,style="setlinewidth(0.5)"]; + "SGP4LMOptimizer" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; + "VPrior" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Gaussian prior on velocity magnitude |v|."]; +} +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/modules/ssapy.utils.html b/modules/ssapy.utils.html new file mode 100644 index 0000000..3b4c833 --- /dev/null +++ b/modules/ssapy.utils.html @@ -0,0 +1,318 @@ + + + + + + + ssapy.utils — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ssapy.utils

+
+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

catalog_to_apparent(ra, dec, t[, observer, ...])

Convert ra/dec of stars from catalog positions (J2000/ICRS) to apparent positions, correcting for proper motion, parallax, annual and diurnal aberration.

check_lunar_collision(r, times[, m])

cluster_emcee_walkers(chain, lnprob, lnprior)

Down-select emcee walkers to those with the largest mean posteriors

continueClass(cls)

Re-open the decorated class, adding any new definitions into the original. For example: .. code-block:: python class Foo: pass @continueClass class Foo: def run(self): return None is equivalent to: .. code-block:: python class Foo: def run(self): return None .. warning:: Python's built-in super function does not behave properly in classes decorated with continueClass. Base class methods must be invoked directly using their explicit types instead.

find_all_zeros(f, low, high[, n])

Attempt to find all zeros of a function between given bounds.

find_extrema_brackets(fs)

Find triplets bracketing extrema from an ordered set of function evaluations.

find_file(filename[, ext])

Find a file in the current directory or the ssapy datadir.

find_nearest_indices(A, B)

gcrf_to_ecef(r_gcrf, t)

gcrf_to_lunar(r, times)

gcrf_to_stationary_lunar(r, times)

gcrf_to_teme(t)

Return the rotation matrix that converts GCRS cartesian coordinates to TEME cartesian coordinates.

get_kernel_cov(kernel_mat, weights)

Get the covariance matrix of kernel_mat.

get_normed_weights(ln_weights)

get_times([duration, freq, t])

Calculate a list of times spaced equally apart over a specified duration.

iers_interp(t)

Interpolate IERS values

integrate_orbit_best_model([r, v, t, koe, ...])

Integrate satellite orbit trajectory using either (r, v) or Keplerian orbital elements.

interpolate_points_between(r, m)

Interpolates points between the given points.

isAttributeSafeToTransfer(name, value)

Return True if an attribute is safe to monkeypatch-transfer to another class.

lb_to_tan(lb, b[, mul, mub, lcen, bcen])

Convert lb-like coordinates & proper motions to orthographic tangent plane.

lb_to_tp(lb, b)

Convert lb-like coordinates to theta-phi like coordinates.

lb_to_unit(r, d)

Convert lb-like coordinates to unit vectors.

moonPos(t)

Compute GCRF position of the moon.

newton_raphson(guess, f[, fprime, eps, maxiter])

Find a root of a univariate function with known gradient using Newton-Raphson iterations.

norm(arr)

normSq(arr)

normed(arr)

ntw_to_r(r, v, ntw[, relative])

Convert NTW coordinates to cartesian coordinates, using r, v to define NTW system.

num_wraps(ang)

Return number of times angle ang has wrapped around.

regularize_default(particles, weights[, ...])

Perform particle regularization.

resample(particles, ln_weights[, obs_times, pod])

Resample particles to achieve more uniform weights.

rv_to_ntw(r, v, rcoord)

Convert coordinates to NTW coordinates, using r, v to define NTW system.

sample_points(x, C, npts[, sqrt])

Sample points around x according to covariance matrix.

sigma_points(f, x, C[, scale, fixed_dimensions])

Compute f(sigma points) for sigma points of C around x.

subsample_high_lnprob(chain, lnprob, ...[, ...])

Select MCMC samples with probabilities above some relative threshold

sunPos(t[, fast])

Compute GCRF position of the sun.

tan_to_lb(xx, yy, lcen, bcen)

Convert orthographic tangent plane coordinates to lb coordinates.

teme_to_gcrf(t)

Return the rotation matrix that converts TEME cartesian coordinates to GCRS cartesian coordinates.

tp_to_lb(t, p)

Convert theta-phi-like coordinates to lb-like coordinates.

tp_to_unit(t, p)

Convert theta-phi-like coordinates to unit vectors.

unitAngle3(r1, r2)

Robustly compute angle between unit vectors r1 and r2.

unit_to_lb(unit)

Convert unit vectors to lb-like coordinates.

unit_to_tp(unit)

Convert unit vectors to theta-phi-like coordinates.

unscented_transform_mean_covar(f, x, C[, scale])

Compute mean and covar using unscented transform given a transformation f, a point x, and a covariance C.

xyz_to_lb(x, y, z)

Convert x, y, z vectors to lb-like coordinates.

xyz_to_tp(x, y, z)

Convert x, y, z vectors to theta-phi-like coordinates.

+
+
+

Classes

+ + + + + + + + + + + + +

LRU_Cache(user_function[, maxsize])

Simplified Least Recently Used Cache.

Time(val[, val2, format, scale, precision, ...])

Represent and manipulate times and dates for astronomy.

lazy_property(fget)

meant to be used for lazy evaluation of an object attribute.

+
+
+

Class Inheritance Diagram

+digraph inheritance9f55553143 { +bgcolor=transparent; +rankdir=LR; +size="8.0, 12.0"; + "LRU_Cache" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Simplified Least Recently Used Cache."]; + "lazy_property" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="meant to be used for lazy evaluation of an object attribute."]; +} +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000..00a5749 Binary files /dev/null and b/objects.inv differ diff --git a/py-modindex.html b/py-modindex.html new file mode 100644 index 0000000..14e7f5b --- /dev/null +++ b/py-modindex.html @@ -0,0 +1,217 @@ + + + + + + Python Module Index — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + +

Python Module Index

+ +
+ s +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ s
+ ssapy +
    + ssapy.accel +
    + ssapy.body +
    + ssapy.compute +
    + ssapy.constants +
    + ssapy.correlate_tracks +
    + ssapy.ellipsoid +
    + ssapy.gravity +
    + ssapy.io +
    + ssapy.linker +
    + ssapy.orbit +
    + ssapy.orbit_solver +
    + ssapy.particles +
    + ssapy.plotUtils +
    + ssapy.propagator +
    + ssapy.rvsampler +
    + ssapy.utils +
+ + +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/reference.html b/reference.html new file mode 100644 index 0000000..6807040 --- /dev/null +++ b/reference.html @@ -0,0 +1,203 @@ + + + + + + + API Reference Guide — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

API Reference Guide

+

SSAPy: Space Situational Awareness for Python

+

When executing

+
>>> import SSAPy
+
+
+

a subset of the full SSAPy package is imported into the python environment. +Some packages must be imported explicitly, so as to avoid importing unnecessary +and/or heavy dependencies. Below lists the packages available in the ssapy namespace.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

ssapy.accel

ssapy.body

ssapy.compute

ssapy.constants

ssapy.correlate_tracks

ssapy.ellipsoid

ssapy.gravity

ssapy.io

ssapy.linker

ssapy.orbit_solver

Classes to solve for Keplerina orbital parameters from different initial inputs

ssapy.orbit

ssapy.particles

ssapy.plotUtils

ssapy.propagator

ssapy.rvsampler

ssapy.utils

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 0000000..6cf479c --- /dev/null +++ b/search.html @@ -0,0 +1,137 @@ + + + + + + Search — SSAPy documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + + + +
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2018, Michael Schneider, Josh Meyers, Edward Schlafly, Julia Ebert.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 0000000..2a8a347 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {"API DOCS": [[223, null]], "API Reference Guide": [[241, "api-reference-guide"]], "APrior": [[142, "aprior"]], "Accel": [[0, "accel"]], "AccelConstNTW": [[1, "accelconstntw"]], "AccelDrag": [[2, "acceldrag"]], "AccelEarthRad": [[3, "accelearthrad"]], "AccelHarmonic": [[59, "accelharmonic"]], "AccelKepler": [[4, "accelkepler"]], "AccelProd": [[5, "accelprod"]], "AccelSolRad": [[6, "accelsolrad"]], "AccelSum": [[7, "accelsum"]], "AccelThirdBody": [[60, "accelthirdbody"]], "AreaPrior": [[143, "areaprior"]], "Atmospheric Modeling": [[220, "atmospheric-modeling"]], "Attributes": [[34, "attributes"], [35, "attributes"], [36, "attributes"], [39, "attributes"], [42, "attributes"], [105, "attributes"], [107, "attributes"], [108, "attributes"], [109, "attributes"], [115, "attributes"], [142, "attributes"], [143, "attributes"], [144, "attributes"], [145, "attributes"], [146, "attributes"], [147, "attributes"], [148, "attributes"], [150, "attributes"], [151, "attributes"], [155, "attributes"], [156, "attributes"], [157, "attributes"], [162, "attributes"], [163, "attributes"], [164, "attributes"], [166, "attributes"]], "Authors": [[223, "authors"]], "Basics": [[223, null]], "BinarySelectorParams": [[104, "binaryselectorparams"]], "Body": [[8, "body"]], "Branches": [[221, "branches"]], "Branching": [[221, "branching"]], "Cherry-Picking": [[221, "cherry-picking"]], "CircVelocityPrior": [[34, "circvelocityprior"]], "Class Inheritance Diagram": [[225, "class-inheritance-diagram"], [226, "class-inheritance-diagram"], [227, "class-inheritance-diagram"], [229, "class-inheritance-diagram"], [231, "class-inheritance-diagram"], [233, "class-inheritance-diagram"], [234, "class-inheritance-diagram"], [235, "class-inheritance-diagram"], [236, "class-inheritance-diagram"], [238, "class-inheritance-diagram"], [239, "class-inheritance-diagram"], [240, "class-inheritance-diagram"]], "Classes": [[225, "classes"], [226, "classes"], [227, "classes"], [229, "classes"], [231, "classes"], [233, "classes"], [234, "classes"], [235, "classes"], [236, "classes"], [238, "classes"], [239, "classes"], [240, "classes"]], "Code of Conduct": [[223, "code-of-conduct"]], "Computing Considerations": [[220, "computing-considerations"]], "Continuous Integration": [[221, "continuous-integration"]], "Contributing": [[223, "contributing"]], "Contribution Guide": [[221, "contribution-guide"]], "Coordinate Systems": [[220, "coordinate-systems"]], "Coverage": [[221, "coverage"]], "DanchickTwoPosOrbitSolver": [[110, "danchicktwoposorbitsolver"]], "DirectInitializer": [[144, "directinitializer"]], "DistanceProjectionInitializer": [[145, "distanceprojectioninitializer"]], "Documentation": [[223, "documentation"]], "Documentation Tests": [[221, "documentation-tests"]], "EPrior": [[146, "eprior"]], "EarthObserver": [[107, "earthobserver"]], "EarthOrientation": [[9, "earthorientation"]], "EmceeSampler": [[147, "emceesampler"]], "EquinoctialExEyPrior": [[148, "equinoctialexeyprior"]], "EquinoctialLMOptimizer": [[149, "equinoctiallmoptimizer"]], "Example Usage": [[131, "example-usage"]], "Functions": [[226, "functions"], [227, "functions"], [229, "functions"], [232, "functions"], [237, "functions"], [238, "functions"], [239, "functions"], [240, "functions"]], "GEOProjectionInitializer": [[150, "geoprojectioninitializer"]], "GaussPrior": [[35, "gaussprior"]], "GaussTwoPosOrbitSolver": [[111, "gausstwoposorbitsolver"]], "GaussianRVInitializer": [[151, "gaussianrvinitializer"]], "Getting Started": [[224, "getting-started"]], "Git Workflows": [[221, "git-workflows"]], "Gravitational models": [[220, "gravitational-models"]], "HarmonicCoefficients": [[61, "harmoniccoefficients"]], "HashableArrayContainer": [[15, "hashablearraycontainer"]], "Hypothesis": [[36, "hypothesis"]], "Indices and tables": [[223, "indices-and-tables"]], "Installation": [[223, "installation"], [224, "installation"]], "KeplerianPropagator": [[132, "keplerianpropagator"]], "LMOptimizer": [[152, "lmoptimizer"]], "LMOptimizerAngular": [[153, "lmoptimizerangular"]], "LRU_Cache": [[172, "lru-cache"]], "LeastSquaresOptimizer": [[154, "leastsquaresoptimizer"]], "License": [[223, "license"]], "Linker": [[105, "linker"]], "Log10AreaPrior": [[155, "log10areaprior"]], "MHSampler": [[156, "mhsampler"]], "MHT": [[37, "mht"]], "MVNormalProposal": [[157, "mvnormalproposal"]], "M_v": [[16, "m-v"]], "Methods": [[34, "methods"], [35, "methods"], [41, "methods"], [42, "methods"], [105, "methods"], [107, "methods"], [108, "methods"], [109, "methods"], [115, "methods"], [142, "methods"], [143, "methods"], [144, "methods"], [145, "methods"], [146, "methods"], [147, "methods"], [148, "methods"], [150, "methods"], [151, "methods"], [155, "methods"], [156, "methods"], [157, "methods"], [162, "methods"], [163, "methods"], [164, "methods"], [166, "methods"]], "ModelSelectorParams": [[106, "modelselectorparams"]], "MoonOrientation": [[10, "moonorientation"]], "MoonPosition": [[11, "moonposition"]], "Notes": [[17, "notes"], [18, "notes"], [23, "notes"], [26, "notes"], [27, "notes"], [28, "notes"], [31, "notes"], [80, "notes"], [91, "notes"], [107, "notes"], [108, "notes"], [131, "notes"], [144, "notes"]], "Notes:": [[189, "notes"]], "Numerical Integrators": [[220, "numerical-integrators"]], "Orbit": [[108, "orbit"]], "OrbitalObserver": [[109, "orbitalobserver"]], "Orekit dependency": [[224, "orekit-dependency"]], "Other Codes": [[220, "other-codes"]], "ParamOrbitAngle": [[158, "paramorbitangle"]], "ParamOrbitEquinoctial": [[159, "paramorbitequinoctial"]], "ParamOrbitRV": [[160, "paramorbitrv"]], "ParamOrbitTranslator": [[161, "paramorbittranslator"]], "Parameters": [[1, "parameters"], [2, "parameters"], [2, "id1"], [3, "parameters"], [3, "id1"], [4, "parameters"], [4, "id3"], [6, "parameters"], [6, "id1"], [7, "parameters"], [7, "id1"], [8, "parameters"], [9, "parameters"], [9, "id1"], [10, "parameters"], [11, "parameters"], [12, "parameters"], [13, "parameters"], [14, "parameters"], [17, "parameters"], [18, "parameters"], [19, "parameters"], [21, "parameters"], [23, "parameters"], [26, "parameters"], [27, "parameters"], [28, "parameters"], [29, "parameters"], [30, "parameters"], [31, "parameters"], [32, "parameters"], [34, "parameters"], [34, "id1"], [35, "parameters"], [35, "id1"], [36, "parameters"], [36, "id1"], [36, "id2"], [36, "id3"], [37, "parameters"], [37, "id1"], [37, "id2"], [37, "id3"], [37, "id4"], [37, "id6"], [37, "id8"], [38, "parameters"], [38, "id1"], [39, "parameters"], [39, "id1"], [39, "id2"], [39, "id4"], [40, "parameters"], [40, "id1"], [40, "id2"], [40, "id5"], [41, "parameters"], [42, "parameters"], [42, "id1"], [43, "parameters"], [44, "parameters"], [45, "parameters"], [46, "parameters"], [47, "parameters"], [48, "parameters"], [52, "parameters"], [53, "parameters"], [55, "parameters"], [56, "parameters"], [57, "parameters"], [59, "parameters"], [59, "id1"], [60, "parameters"], [60, "id1"], [61, "parameters"], [80, "parameters"], [91, "parameters"], [96, "parameters"], [97, "parameters"], [98, "parameters"], [105, "parameters"], [105, "id1"], [105, "id2"], [105, "id3"], [105, "id5"], [107, "parameters"], [107, "id1"], [107, "id2"], [108, "parameters"], [108, "id1"], [108, "id2"], [108, "id4"], [108, "id6"], [108, "id8"], [108, "id10"], [109, "parameters"], [109, "id1"], [113, "parameters"], [114, "parameters"], [115, "parameters"], [115, "id1"], [115, "id3"], [115, "id6"], [115, "id8"], [115, "id10"], [117, "parameters"], [118, "parameters"], [120, "parameters"], [121, "parameters"], [122, "parameters"], [125, "parameters"], [126, "parameters"], [127, "parameters"], [128, "parameters"], [131, "parameters"], [134, "parameters"], [135, "parameters"], [136, "parameters"], [138, "parameters"], [139, "parameters"], [140, "parameters"], [141, "parameters"], [142, "parameters"], [142, "id1"], [143, "parameters"], [143, "id1"], [144, "parameters"], [144, "id1"], [145, "parameters"], [146, "parameters"], [146, "id1"], [147, "parameters"], [147, "id1"], [148, "parameters"], [148, "id1"], [150, "parameters"], [150, "id1"], [151, "parameters"], [151, "id1"], [155, "parameters"], [155, "id1"], [156, "parameters"], [156, "id1"], [157, "parameters"], [162, "parameters"], [162, "id1"], [163, "parameters"], [163, "id1"], [163, "id2"], [163, "id4"], [163, "id6"], [163, "id8"], [166, "parameters"], [166, "id1"], [167, "parameters"], [171, "parameters"], [173, "parameters"], [184, "parameters"], [187, "parameters"], [188, "parameters"], [193, "parameters"], [196, "parameters"], [197, "parameters"], [201, "parameters"], [205, "parameters"], [206, "parameters"], [207, "parameters"], [208, "parameters"], [209, "parameters"], [210, "parameters"], [211, "parameters"], [217, "parameters"]], "Parameters:": [[189, "parameters"]], "Params": [[157, "params"], [164, "params"]], "Particles": [[115, "particles"]], "PlanetPosition": [[12, "planetposition"]], "Propagator": [[133, "propagator"]], "RK4Propagator": [[134, "rk4propagator"]], "RK78Propagator": [[135, "rk78propagator"]], "RK8Propagator": [[136, "rk8propagator"]], "RKPropagator": [[137, "rkpropagator"]], "RPrior": [[162, "rprior"]], "RVProbability": [[163, "rvprobability"]], "RVSigmaProposal": [[164, "rvsigmaproposal"]], "Radiation pressure": [[220, "radiation-pressure"]], "Re-writing History": [[221, "re-writing-history"]], "Rebasing": [[221, "rebasing"]], "Rebasing with cherry-pick": [[221, "rebasing-with-cherry-pick"]], "References": [[105, "references"]], "Releases": [[223, "releases"]], "Returns": [[2, "returns"], [3, "returns"], [4, "returns"], [6, "returns"], [7, "returns"], [9, "returns"], [10, "returns"], [11, "returns"], [12, "returns"], [13, "returns"], [14, "returns"], [17, "returns"], [18, "returns"], [19, "returns"], [21, "returns"], [23, "returns"], [26, "returns"], [27, "returns"], [28, "returns"], [29, "returns"], [30, "returns"], [31, "returns"], [32, "returns"], [34, "returns"], [35, "returns"], [36, "returns"], [36, "id4"], [37, "returns"], [37, "id5"], [37, "id7"], [38, "returns"], [38, "id2"], [39, "returns"], [39, "id3"], [39, "id5"], [40, "returns"], [40, "id3"], [40, "id4"], [41, "returns"], [42, "returns"], [47, "returns"], [55, "returns"], [56, "returns"], [57, "returns"], [59, "returns"], [60, "returns"], [91, "returns"], [96, "returns"], [97, "returns"], [98, "returns"], [105, "returns"], [105, "id4"], [105, "id6"], [107, "returns"], [107, "id3"], [108, "returns"], [108, "id3"], [108, "id5"], [108, "id7"], [108, "id9"], [108, "id11"], [109, "returns"], [115, "returns"], [115, "id2"], [115, "id4"], [115, "id5"], [115, "id7"], [115, "id9"], [115, "id11"], [127, "returns"], [131, "returns"], [141, "returns"], [142, "returns"], [143, "returns"], [144, "returns"], [146, "returns"], [147, "returns"], [148, "returns"], [149, "returns"], [150, "returns"], [151, "returns"], [152, "returns"], [153, "returns"], [154, "returns"], [155, "returns"], [156, "returns"], [157, "returns"], [162, "returns"], [163, "returns"], [163, "id3"], [163, "id5"], [163, "id7"], [163, "id9"], [165, "returns"], [166, "returns"], [167, "returns"], [171, "returns"], [173, "returns"], [184, "returns"], [187, "returns"], [188, "returns"], [193, "returns"], [196, "returns"], [197, "returns"], [201, "returns"], [202, "returns"], [205, "returns"], [206, "returns"], [208, "returns"], [209, "returns"], [210, "returns"], [211, "returns"]], "Returns:": [[189, "returns"]], "SGP4LMOptimizer": [[165, "sgp4lmoptimizer"]], "SGP4Propagator": [[138, "sgp4propagator"]], "SSAPy - Space Situational Awareness for Python": [[223, "ssapy-space-situational-awareness-for-python"]], "SSAPy Concepts": [[220, "ssapy-concepts"]], "SSAPy by Example": [[222, "ssapy-by-example"]], "SciPyPropagator": [[139, "scipypropagator"]], "SeriesPropagator": [[140, "seriespropagator"]], "SheferTwoPosOrbitSolver": [[112, "shefertwoposorbitsolver"]], "Strict dependencies": [[223, "strict-dependencies"]], "Style Tests": [[221, "style-tests"]], "SunPosition": [[13, "sunposition"]], "System Prerequisites": [[224, "system-prerequisites"]], "System prerequisites for SSAPy": [[224, "id1"]], "ThreeAngleOrbitSolver": [[113, "threeangleorbitsolver"]], "Time Standards": [[220, "time-standards"]], "Track": [[38, "track"]], "TrackBase": [[39, "trackbase"]], "TrackGauss": [[40, "trackgauss"]], "TwoPosOrbitSolver": [[114, "twoposorbitsolver"]], "Types of Models": [[220, "types-of-models"]], "Types of Standard Orbits": [[220, "types-of-standard-orbits"]], "Unit Tests": [[221, "unit-tests"]], "VPrior": [[166, "vprior"]], "VolumeDistancePrior": [[41, "volumedistanceprior"]], "ZeroRadialVelocityPrior": [[42, "zeroradialvelocityprior"]], "altaz": [[17, "altaz"]], "append_csv": [[62, "append-csv"]], "append_csv_on_disk": [[63, "append-csv-on-disk"]], "b3obs2pos": [[64, "b3obs2pos"]], "catalog_to_apparent": [[173, "catalog-to-apparent"]], "check_lunar_collision": [[174, "check-lunar-collision"]], "check_numpy_array": [[116, "check-numpy-array"]], "circular_guess": [[167, "circular-guess"]], "cluster_emcee_walkers": [[175, "cluster-emcee-walkers"]], "combinatoric_lnprior": [[43, "combinatoric-lnprior"]], "continueClass": [[176, "continueclass"]], "damper": [[168, "damper"]], "damper_deriv": [[169, "damper-deriv"]], "data_for_satellite": [[44, "data-for-satellite"]], "default_numerical": [[141, "default-numerical"]], "dircos": [[18, "dircos"]], "drawEarth": [[117, "drawearth"]], "earthShadowCoords": [[19, "earthshadowcoords"]], "earth_shine": [[20, "earth-shine"]], "ecef_plot": [[118, "ecef-plot"]], "eq2kep": [[170, "eq2kep"]], "exists": [[65, "exists"]], "exists_in_csv": [[66, "exists-in-csv"]], "find_all_zeros": [[177, "find-all-zeros"]], "find_extrema_brackets": [[178, "find-extrema-brackets"]], "find_file": [[179, "find-file"]], "find_nearest_indices": [[180, "find-nearest-indices"]], "find_passes": [[21, "find-passes"]], "fit_arc": [[45, "fit-arc"]], "fit_arc_blind": [[46, "fit-arc-blind"]], "fit_arc_blind_via_track": [[47, "fit-arc-blind-via-track"]], "fit_arc_with_gaussian_prior": [[48, "fit-arc-with-gaussian-prior"]], "format_xaxis_decimal_year": [[119, "format-xaxis-decimal-year"]], "gcrf_plot": [[120, "gcrf-plot"]], "gcrf_to_ecef": [[181, "gcrf-to-ecef"]], "gcrf_to_lunar": [[182, "gcrf-to-lunar"]], "gcrf_to_stationary_lunar": [[183, "gcrf-to-stationary-lunar"]], "gcrf_to_teme": [[184, "gcrf-to-teme"]], "getAngle": [[22, "getangle"]], "get_body": [[14, "get-body"]], "get_kernel_cov": [[185, "get-kernel-cov"]], "get_memory_usage": [[67, "get-memory-usage"]], "get_normed_weights": [[186, "get-normed-weights"]], "get_tel_pos_itrf_to_gcrs": [[68, "get-tel-pos-itrf-to-gcrs"]], "get_times": [[187, "get-times"]], "groundTrack": [[23, "groundtrack"]], "groundTrackPlot": [[121, "groundtrackplot"]], "groundTrackVideo": [[122, "groundtrackvideo"]], "guess_csv_delimiter": [[69, "guess-csv-delimiter"]], "h5_key_exists": [[70, "h5-key-exists"]], "h5append": [[71, "h5append"]], "h5keys": [[72, "h5keys"]], "h5load": [[73, "h5load"]], "h5loadall": [[74, "h5loadall"]], "h5overwrite": [[75, "h5overwrite"]], "h5save": [[76, "h5save"]], "header_csv": [[77, "header-csv"]], "iers_interp": [[188, "iers-interp"]], "integrate_orbit_best_model": [[189, "integrate-orbit-best-model"]], "interpolate_points_between": [[190, "interpolate-points-between"]], "isAttributeSafeToTransfer": [[191, "isattributesafetotransfer"]], "iterate_mht": [[49, "iterate-mht"]], "keplerian_orbital_elements": [[24, "keplerian-orbital-elements"]], "lazy_property": [[192, "lazy-property"]], "lb_to_tan": [[193, "lb-to-tan"]], "lb_to_tp": [[194, "lb-to-tp"]], "lb_to_unit": [[195, "lb-to-unit"]], "listdir": [[78, "listdir"]], "load_b3obs_file": [[79, "load-b3obs-file"]], "load_earth_file": [[123, "load-earth-file"]], "load_moon_file": [[124, "load-moon-file"]], "lunar_plot": [[125, "lunar-plot"]], "lunar_stationary_plot": [[126, "lunar-stationary-plot"]], "make_optimizer": [[50, "make-optimizer"]], "make_param_guess": [[51, "make-param-guess"]], "make_tle": [[80, "make-tle"]], "makedf": [[81, "makedf"]], "merge_dicts": [[82, "merge-dicts"]], "mkdir": [[83, "mkdir"]], "moonPos": [[196, "moonpos"]], "moon_shine": [[25, "moon-shine"]], "mpi_scatter": [[84, "mpi-scatter"]], "mpi_scatter_exclude_rank_0": [[85, "mpi-scatter-exclude-rank-0"]], "name | degree | order": [[61, "name-degree-order"]], "newton_raphson": [[197, "newton-raphson"]], "norm": [[198, "norm"]], "normSq": [[199, "normsq"]], "normed": [[200, "normed"]], "npload": [[86, "npload"]], "npsave": [[87, "npsave"]], "ntw_to_r": [[201, "ntw-to-r"]], "num_wraps": [[202, "num-wraps"]], "orbit_to_param": [[52, "orbit-to-param"]], "param_to_orbit": [[53, "param-to-orbit"]], "parseB3": [[88, "parseb3"]], "parseB3Line": [[89, "parseb3line"]], "parse_overpunched": [[90, "parse-overpunched"]], "parse_tle": [[91, "parse-tle"]], "pd_flatten": [[92, "pd-flatten"]], "pdstr_to_arrays": [[93, "pdstr-to-arrays"]], "pload": [[94, "pload"]], "plotRVCorner": [[127, "plotrvcorner"]], "plotRVTrace": [[128, "plotrvtrace"]], "psave": [[95, "psave"]], "quickAltAz": [[26, "quickaltaz"]], "radec": [[27, "radec"]], "radecRate": [[28, "radecrate"]], "radecRateObsToRV": [[29, "radecrateobstorv"]], "radeczn": [[54, "radeczn"]], "read_csv": [[96, "read-csv"]], "read_tle": [[97, "read-tle"]], "read_tle_catalog": [[98, "read-tle-catalog"]], "refine_pass": [[30, "refine-pass"]], "regularize_default": [[203, "regularize-default"]], "resample": [[204, "resample"]], "rmdir": [[99, "rmdir"]], "rmfile": [[100, "rmfile"]], "rv": [[31, "rv"]], "rvObsToRaDecRate": [[32, "rvobstoradecrate"]], "rv_to_ntw": [[205, "rv-to-ntw"]], "sample_ball": [[171, "sample-ball"]], "sample_points": [[206, "sample-points"]], "save_csv": [[101, "save-csv"]], "save_csv_line": [[102, "save-csv-line"]], "save_plot_to_pdf": [[129, "save-plot-to-pdf"]], "save_plot_to_png": [[130, "save-plot-to-png"]], "sigma_points": [[207, "sigma-points"]], "ssapy.accel": [[225, "module-ssapy.accel"]], "ssapy.body": [[226, "module-ssapy.body"]], "ssapy.compute": [[227, "module-ssapy.compute"]], "ssapy.constants": [[228, "module-ssapy.constants"]], "ssapy.correlate_tracks": [[229, "module-ssapy.correlate_tracks"]], "ssapy.ellipsoid": [[230, "module-ssapy.ellipsoid"]], "ssapy.gravity": [[231, "module-ssapy.gravity"]], "ssapy.io": [[232, "module-ssapy.io"]], "ssapy.linker": [[233, "module-ssapy.linker"]], "ssapy.orbit": [[234, "module-ssapy.orbit"]], "ssapy.orbit_solver": [[235, "module-ssapy.orbit_solver"]], "ssapy.particles": [[236, "module-ssapy.particles"]], "ssapy.plotUtils": [[237, "module-ssapy.plotUtils"]], "ssapy.propagator": [[238, "module-ssapy.propagator"]], "ssapy.rvsampler": [[239, "module-ssapy.rvsampler"]], "ssapy.utils": [[240, "module-ssapy.utils"]], "str_to_array": [[103, "str-to-array"]], "subsample_high_lnprob": [[208, "subsample-high-lnprob"]], "summarize_tracklet": [[55, "summarize-tracklet"]], "summarize_tracklets": [[56, "summarize-tracklets"]], "sunPos": [[209, "sunpos"]], "sun_shine": [[33, "sun-shine"]], "tan_to_lb": [[210, "tan-to-lb"]], "teme_to_gcrf": [[211, "teme-to-gcrf"]], "time_ordered_satIDs": [[57, "time-ordered-satids"]], "tp_to_lb": [[212, "tp-to-lb"]], "tp_to_unit": [[213, "tp-to-unit"]], "tracking_plot": [[131, "tracking-plot"]], "unitAngle3": [[214, "unitangle3"]], "unit_to_lb": [[215, "unit-to-lb"]], "unit_to_tp": [[216, "unit-to-tp"]], "unscented_transform_mean_covar": [[217, "unscented-transform-mean-covar"]], "wrap_angle_difference": [[58, "wrap-angle-difference"]], "xyz_to_lb": [[218, "xyz-to-lb"]], "xyz_to_tp": [[219, "xyz-to-tp"]]}, "docnames": ["api/ssapy.accel.Accel", "api/ssapy.accel.AccelConstNTW", "api/ssapy.accel.AccelDrag", "api/ssapy.accel.AccelEarthRad", "api/ssapy.accel.AccelKepler", "api/ssapy.accel.AccelProd", "api/ssapy.accel.AccelSolRad", "api/ssapy.accel.AccelSum", "api/ssapy.body.Body", "api/ssapy.body.EarthOrientation", "api/ssapy.body.MoonOrientation", "api/ssapy.body.MoonPosition", "api/ssapy.body.PlanetPosition", "api/ssapy.body.SunPosition", "api/ssapy.body.get_body", "api/ssapy.compute.HashableArrayContainer", "api/ssapy.compute.M_v", "api/ssapy.compute.altaz", "api/ssapy.compute.dircos", "api/ssapy.compute.earthShadowCoords", "api/ssapy.compute.earth_shine", "api/ssapy.compute.find_passes", "api/ssapy.compute.getAngle", "api/ssapy.compute.groundTrack", "api/ssapy.compute.keplerian_orbital_elements", "api/ssapy.compute.moon_shine", "api/ssapy.compute.quickAltAz", "api/ssapy.compute.radec", "api/ssapy.compute.radecRate", "api/ssapy.compute.radecRateObsToRV", "api/ssapy.compute.refine_pass", "api/ssapy.compute.rv", "api/ssapy.compute.rvObsToRaDecRate", "api/ssapy.compute.sun_shine", "api/ssapy.correlate_tracks.CircVelocityPrior", "api/ssapy.correlate_tracks.GaussPrior", "api/ssapy.correlate_tracks.Hypothesis", "api/ssapy.correlate_tracks.MHT", "api/ssapy.correlate_tracks.Track", "api/ssapy.correlate_tracks.TrackBase", "api/ssapy.correlate_tracks.TrackGauss", "api/ssapy.correlate_tracks.VolumeDistancePrior", "api/ssapy.correlate_tracks.ZeroRadialVelocityPrior", "api/ssapy.correlate_tracks.combinatoric_lnprior", "api/ssapy.correlate_tracks.data_for_satellite", "api/ssapy.correlate_tracks.fit_arc", "api/ssapy.correlate_tracks.fit_arc_blind", "api/ssapy.correlate_tracks.fit_arc_blind_via_track", "api/ssapy.correlate_tracks.fit_arc_with_gaussian_prior", "api/ssapy.correlate_tracks.iterate_mht", "api/ssapy.correlate_tracks.make_optimizer", "api/ssapy.correlate_tracks.make_param_guess", "api/ssapy.correlate_tracks.orbit_to_param", "api/ssapy.correlate_tracks.param_to_orbit", "api/ssapy.correlate_tracks.radeczn", "api/ssapy.correlate_tracks.summarize_tracklet", "api/ssapy.correlate_tracks.summarize_tracklets", "api/ssapy.correlate_tracks.time_ordered_satIDs", "api/ssapy.correlate_tracks.wrap_angle_difference", "api/ssapy.gravity.AccelHarmonic", "api/ssapy.gravity.AccelThirdBody", "api/ssapy.gravity.HarmonicCoefficients", "api/ssapy.io.append_csv", "api/ssapy.io.append_csv_on_disk", "api/ssapy.io.b3obs2pos", "api/ssapy.io.exists", "api/ssapy.io.exists_in_csv", "api/ssapy.io.get_memory_usage", "api/ssapy.io.get_tel_pos_itrf_to_gcrs", "api/ssapy.io.guess_csv_delimiter", "api/ssapy.io.h5_key_exists", "api/ssapy.io.h5append", "api/ssapy.io.h5keys", "api/ssapy.io.h5load", "api/ssapy.io.h5loadall", "api/ssapy.io.h5overwrite", "api/ssapy.io.h5save", "api/ssapy.io.header_csv", "api/ssapy.io.listdir", "api/ssapy.io.load_b3obs_file", "api/ssapy.io.make_tle", "api/ssapy.io.makedf", "api/ssapy.io.merge_dicts", "api/ssapy.io.mkdir", "api/ssapy.io.mpi_scatter", "api/ssapy.io.mpi_scatter_exclude_rank_0", "api/ssapy.io.npload", "api/ssapy.io.npsave", "api/ssapy.io.parseB3", "api/ssapy.io.parseB3Line", "api/ssapy.io.parse_overpunched", "api/ssapy.io.parse_tle", "api/ssapy.io.pd_flatten", "api/ssapy.io.pdstr_to_arrays", "api/ssapy.io.pload", "api/ssapy.io.psave", "api/ssapy.io.read_csv", "api/ssapy.io.read_tle", "api/ssapy.io.read_tle_catalog", "api/ssapy.io.rmdir", "api/ssapy.io.rmfile", "api/ssapy.io.save_csv", "api/ssapy.io.save_csv_line", "api/ssapy.io.str_to_array", "api/ssapy.linker.BinarySelectorParams", "api/ssapy.linker.Linker", "api/ssapy.linker.ModelSelectorParams", "api/ssapy.orbit.EarthObserver", "api/ssapy.orbit.Orbit", "api/ssapy.orbit.OrbitalObserver", "api/ssapy.orbit_solver.DanchickTwoPosOrbitSolver", "api/ssapy.orbit_solver.GaussTwoPosOrbitSolver", "api/ssapy.orbit_solver.SheferTwoPosOrbitSolver", "api/ssapy.orbit_solver.ThreeAngleOrbitSolver", "api/ssapy.orbit_solver.TwoPosOrbitSolver", "api/ssapy.particles.Particles", "api/ssapy.plotUtils.check_numpy_array", "api/ssapy.plotUtils.drawEarth", "api/ssapy.plotUtils.ecef_plot", "api/ssapy.plotUtils.format_xaxis_decimal_year", "api/ssapy.plotUtils.gcrf_plot", "api/ssapy.plotUtils.groundTrackPlot", "api/ssapy.plotUtils.groundTrackVideo", "api/ssapy.plotUtils.load_earth_file", "api/ssapy.plotUtils.load_moon_file", "api/ssapy.plotUtils.lunar_plot", "api/ssapy.plotUtils.lunar_stationary_plot", "api/ssapy.plotUtils.plotRVCorner", "api/ssapy.plotUtils.plotRVTrace", "api/ssapy.plotUtils.save_plot_to_pdf", "api/ssapy.plotUtils.save_plot_to_png", "api/ssapy.plotUtils.tracking_plot", "api/ssapy.propagator.KeplerianPropagator", "api/ssapy.propagator.Propagator", "api/ssapy.propagator.RK4Propagator", "api/ssapy.propagator.RK78Propagator", "api/ssapy.propagator.RK8Propagator", "api/ssapy.propagator.RKPropagator", "api/ssapy.propagator.SGP4Propagator", "api/ssapy.propagator.SciPyPropagator", "api/ssapy.propagator.SeriesPropagator", "api/ssapy.propagator.default_numerical", "api/ssapy.rvsampler.APrior", "api/ssapy.rvsampler.AreaPrior", "api/ssapy.rvsampler.DirectInitializer", "api/ssapy.rvsampler.DistanceProjectionInitializer", "api/ssapy.rvsampler.EPrior", "api/ssapy.rvsampler.EmceeSampler", "api/ssapy.rvsampler.EquinoctialExEyPrior", "api/ssapy.rvsampler.EquinoctialLMOptimizer", "api/ssapy.rvsampler.GEOProjectionInitializer", "api/ssapy.rvsampler.GaussianRVInitializer", "api/ssapy.rvsampler.LMOptimizer", "api/ssapy.rvsampler.LMOptimizerAngular", "api/ssapy.rvsampler.LeastSquaresOptimizer", "api/ssapy.rvsampler.Log10AreaPrior", "api/ssapy.rvsampler.MHSampler", "api/ssapy.rvsampler.MVNormalProposal", "api/ssapy.rvsampler.ParamOrbitAngle", "api/ssapy.rvsampler.ParamOrbitEquinoctial", "api/ssapy.rvsampler.ParamOrbitRV", "api/ssapy.rvsampler.ParamOrbitTranslator", "api/ssapy.rvsampler.RPrior", "api/ssapy.rvsampler.RVProbability", "api/ssapy.rvsampler.RVSigmaProposal", "api/ssapy.rvsampler.SGP4LMOptimizer", "api/ssapy.rvsampler.VPrior", "api/ssapy.rvsampler.circular_guess", "api/ssapy.rvsampler.damper", "api/ssapy.rvsampler.damper_deriv", "api/ssapy.rvsampler.eq2kep", "api/ssapy.rvsampler.sample_ball", "api/ssapy.utils.LRU_Cache", "api/ssapy.utils.catalog_to_apparent", "api/ssapy.utils.check_lunar_collision", "api/ssapy.utils.cluster_emcee_walkers", "api/ssapy.utils.continueClass", "api/ssapy.utils.find_all_zeros", "api/ssapy.utils.find_extrema_brackets", "api/ssapy.utils.find_file", "api/ssapy.utils.find_nearest_indices", "api/ssapy.utils.gcrf_to_ecef", "api/ssapy.utils.gcrf_to_lunar", "api/ssapy.utils.gcrf_to_stationary_lunar", "api/ssapy.utils.gcrf_to_teme", "api/ssapy.utils.get_kernel_cov", "api/ssapy.utils.get_normed_weights", "api/ssapy.utils.get_times", "api/ssapy.utils.iers_interp", "api/ssapy.utils.integrate_orbit_best_model", "api/ssapy.utils.interpolate_points_between", "api/ssapy.utils.isAttributeSafeToTransfer", "api/ssapy.utils.lazy_property", "api/ssapy.utils.lb_to_tan", "api/ssapy.utils.lb_to_tp", "api/ssapy.utils.lb_to_unit", "api/ssapy.utils.moonPos", "api/ssapy.utils.newton_raphson", "api/ssapy.utils.norm", "api/ssapy.utils.normSq", "api/ssapy.utils.normed", "api/ssapy.utils.ntw_to_r", "api/ssapy.utils.num_wraps", "api/ssapy.utils.regularize_default", "api/ssapy.utils.resample", "api/ssapy.utils.rv_to_ntw", "api/ssapy.utils.sample_points", "api/ssapy.utils.sigma_points", "api/ssapy.utils.subsample_high_lnprob", "api/ssapy.utils.sunPos", "api/ssapy.utils.tan_to_lb", "api/ssapy.utils.teme_to_gcrf", "api/ssapy.utils.tp_to_lb", "api/ssapy.utils.tp_to_unit", "api/ssapy.utils.unitAngle3", "api/ssapy.utils.unit_to_lb", "api/ssapy.utils.unit_to_tp", "api/ssapy.utils.unscented_transform_mean_covar", "api/ssapy.utils.xyz_to_lb", "api/ssapy.utils.xyz_to_tp", "concepts", "contribution_guide", "examples", "index", "installation", "modules/ssapy.accel", "modules/ssapy.body", "modules/ssapy.compute", "modules/ssapy.constants", "modules/ssapy.correlate_tracks", "modules/ssapy.ellipsoid", "modules/ssapy.gravity", "modules/ssapy.io", "modules/ssapy.linker", "modules/ssapy.orbit", "modules/ssapy.orbit_solver", "modules/ssapy.particles", "modules/ssapy.plotUtils", "modules/ssapy.propagator", "modules/ssapy.rvsampler", "modules/ssapy.utils", "reference"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1}, "filenames": ["api/ssapy.accel.Accel.rst", "api/ssapy.accel.AccelConstNTW.rst", "api/ssapy.accel.AccelDrag.rst", "api/ssapy.accel.AccelEarthRad.rst", "api/ssapy.accel.AccelKepler.rst", "api/ssapy.accel.AccelProd.rst", "api/ssapy.accel.AccelSolRad.rst", "api/ssapy.accel.AccelSum.rst", "api/ssapy.body.Body.rst", "api/ssapy.body.EarthOrientation.rst", "api/ssapy.body.MoonOrientation.rst", "api/ssapy.body.MoonPosition.rst", "api/ssapy.body.PlanetPosition.rst", "api/ssapy.body.SunPosition.rst", "api/ssapy.body.get_body.rst", "api/ssapy.compute.HashableArrayContainer.rst", "api/ssapy.compute.M_v.rst", "api/ssapy.compute.altaz.rst", "api/ssapy.compute.dircos.rst", "api/ssapy.compute.earthShadowCoords.rst", "api/ssapy.compute.earth_shine.rst", "api/ssapy.compute.find_passes.rst", "api/ssapy.compute.getAngle.rst", "api/ssapy.compute.groundTrack.rst", "api/ssapy.compute.keplerian_orbital_elements.rst", "api/ssapy.compute.moon_shine.rst", "api/ssapy.compute.quickAltAz.rst", "api/ssapy.compute.radec.rst", "api/ssapy.compute.radecRate.rst", "api/ssapy.compute.radecRateObsToRV.rst", "api/ssapy.compute.refine_pass.rst", "api/ssapy.compute.rv.rst", "api/ssapy.compute.rvObsToRaDecRate.rst", "api/ssapy.compute.sun_shine.rst", "api/ssapy.correlate_tracks.CircVelocityPrior.rst", "api/ssapy.correlate_tracks.GaussPrior.rst", "api/ssapy.correlate_tracks.Hypothesis.rst", "api/ssapy.correlate_tracks.MHT.rst", "api/ssapy.correlate_tracks.Track.rst", "api/ssapy.correlate_tracks.TrackBase.rst", "api/ssapy.correlate_tracks.TrackGauss.rst", "api/ssapy.correlate_tracks.VolumeDistancePrior.rst", "api/ssapy.correlate_tracks.ZeroRadialVelocityPrior.rst", "api/ssapy.correlate_tracks.combinatoric_lnprior.rst", "api/ssapy.correlate_tracks.data_for_satellite.rst", "api/ssapy.correlate_tracks.fit_arc.rst", "api/ssapy.correlate_tracks.fit_arc_blind.rst", "api/ssapy.correlate_tracks.fit_arc_blind_via_track.rst", "api/ssapy.correlate_tracks.fit_arc_with_gaussian_prior.rst", "api/ssapy.correlate_tracks.iterate_mht.rst", "api/ssapy.correlate_tracks.make_optimizer.rst", "api/ssapy.correlate_tracks.make_param_guess.rst", "api/ssapy.correlate_tracks.orbit_to_param.rst", "api/ssapy.correlate_tracks.param_to_orbit.rst", "api/ssapy.correlate_tracks.radeczn.rst", "api/ssapy.correlate_tracks.summarize_tracklet.rst", "api/ssapy.correlate_tracks.summarize_tracklets.rst", "api/ssapy.correlate_tracks.time_ordered_satIDs.rst", "api/ssapy.correlate_tracks.wrap_angle_difference.rst", "api/ssapy.gravity.AccelHarmonic.rst", "api/ssapy.gravity.AccelThirdBody.rst", "api/ssapy.gravity.HarmonicCoefficients.rst", "api/ssapy.io.append_csv.rst", "api/ssapy.io.append_csv_on_disk.rst", "api/ssapy.io.b3obs2pos.rst", "api/ssapy.io.exists.rst", "api/ssapy.io.exists_in_csv.rst", "api/ssapy.io.get_memory_usage.rst", "api/ssapy.io.get_tel_pos_itrf_to_gcrs.rst", "api/ssapy.io.guess_csv_delimiter.rst", "api/ssapy.io.h5_key_exists.rst", "api/ssapy.io.h5append.rst", "api/ssapy.io.h5keys.rst", "api/ssapy.io.h5load.rst", "api/ssapy.io.h5loadall.rst", "api/ssapy.io.h5overwrite.rst", "api/ssapy.io.h5save.rst", "api/ssapy.io.header_csv.rst", "api/ssapy.io.listdir.rst", "api/ssapy.io.load_b3obs_file.rst", "api/ssapy.io.make_tle.rst", "api/ssapy.io.makedf.rst", "api/ssapy.io.merge_dicts.rst", "api/ssapy.io.mkdir.rst", "api/ssapy.io.mpi_scatter.rst", "api/ssapy.io.mpi_scatter_exclude_rank_0.rst", "api/ssapy.io.npload.rst", "api/ssapy.io.npsave.rst", "api/ssapy.io.parseB3.rst", "api/ssapy.io.parseB3Line.rst", "api/ssapy.io.parse_overpunched.rst", "api/ssapy.io.parse_tle.rst", "api/ssapy.io.pd_flatten.rst", "api/ssapy.io.pdstr_to_arrays.rst", "api/ssapy.io.pload.rst", "api/ssapy.io.psave.rst", "api/ssapy.io.read_csv.rst", "api/ssapy.io.read_tle.rst", "api/ssapy.io.read_tle_catalog.rst", "api/ssapy.io.rmdir.rst", "api/ssapy.io.rmfile.rst", "api/ssapy.io.save_csv.rst", "api/ssapy.io.save_csv_line.rst", "api/ssapy.io.str_to_array.rst", "api/ssapy.linker.BinarySelectorParams.rst", "api/ssapy.linker.Linker.rst", "api/ssapy.linker.ModelSelectorParams.rst", "api/ssapy.orbit.EarthObserver.rst", "api/ssapy.orbit.Orbit.rst", "api/ssapy.orbit.OrbitalObserver.rst", "api/ssapy.orbit_solver.DanchickTwoPosOrbitSolver.rst", "api/ssapy.orbit_solver.GaussTwoPosOrbitSolver.rst", "api/ssapy.orbit_solver.SheferTwoPosOrbitSolver.rst", "api/ssapy.orbit_solver.ThreeAngleOrbitSolver.rst", "api/ssapy.orbit_solver.TwoPosOrbitSolver.rst", "api/ssapy.particles.Particles.rst", "api/ssapy.plotUtils.check_numpy_array.rst", "api/ssapy.plotUtils.drawEarth.rst", "api/ssapy.plotUtils.ecef_plot.rst", "api/ssapy.plotUtils.format_xaxis_decimal_year.rst", "api/ssapy.plotUtils.gcrf_plot.rst", "api/ssapy.plotUtils.groundTrackPlot.rst", "api/ssapy.plotUtils.groundTrackVideo.rst", "api/ssapy.plotUtils.load_earth_file.rst", "api/ssapy.plotUtils.load_moon_file.rst", "api/ssapy.plotUtils.lunar_plot.rst", "api/ssapy.plotUtils.lunar_stationary_plot.rst", "api/ssapy.plotUtils.plotRVCorner.rst", "api/ssapy.plotUtils.plotRVTrace.rst", "api/ssapy.plotUtils.save_plot_to_pdf.rst", "api/ssapy.plotUtils.save_plot_to_png.rst", "api/ssapy.plotUtils.tracking_plot.rst", "api/ssapy.propagator.KeplerianPropagator.rst", "api/ssapy.propagator.Propagator.rst", "api/ssapy.propagator.RK4Propagator.rst", "api/ssapy.propagator.RK78Propagator.rst", "api/ssapy.propagator.RK8Propagator.rst", "api/ssapy.propagator.RKPropagator.rst", "api/ssapy.propagator.SGP4Propagator.rst", "api/ssapy.propagator.SciPyPropagator.rst", "api/ssapy.propagator.SeriesPropagator.rst", "api/ssapy.propagator.default_numerical.rst", "api/ssapy.rvsampler.APrior.rst", "api/ssapy.rvsampler.AreaPrior.rst", "api/ssapy.rvsampler.DirectInitializer.rst", "api/ssapy.rvsampler.DistanceProjectionInitializer.rst", "api/ssapy.rvsampler.EPrior.rst", "api/ssapy.rvsampler.EmceeSampler.rst", "api/ssapy.rvsampler.EquinoctialExEyPrior.rst", "api/ssapy.rvsampler.EquinoctialLMOptimizer.rst", "api/ssapy.rvsampler.GEOProjectionInitializer.rst", "api/ssapy.rvsampler.GaussianRVInitializer.rst", "api/ssapy.rvsampler.LMOptimizer.rst", "api/ssapy.rvsampler.LMOptimizerAngular.rst", "api/ssapy.rvsampler.LeastSquaresOptimizer.rst", "api/ssapy.rvsampler.Log10AreaPrior.rst", "api/ssapy.rvsampler.MHSampler.rst", "api/ssapy.rvsampler.MVNormalProposal.rst", "api/ssapy.rvsampler.ParamOrbitAngle.rst", "api/ssapy.rvsampler.ParamOrbitEquinoctial.rst", "api/ssapy.rvsampler.ParamOrbitRV.rst", "api/ssapy.rvsampler.ParamOrbitTranslator.rst", "api/ssapy.rvsampler.RPrior.rst", "api/ssapy.rvsampler.RVProbability.rst", "api/ssapy.rvsampler.RVSigmaProposal.rst", "api/ssapy.rvsampler.SGP4LMOptimizer.rst", "api/ssapy.rvsampler.VPrior.rst", "api/ssapy.rvsampler.circular_guess.rst", "api/ssapy.rvsampler.damper.rst", "api/ssapy.rvsampler.damper_deriv.rst", "api/ssapy.rvsampler.eq2kep.rst", "api/ssapy.rvsampler.sample_ball.rst", "api/ssapy.utils.LRU_Cache.rst", "api/ssapy.utils.catalog_to_apparent.rst", "api/ssapy.utils.check_lunar_collision.rst", "api/ssapy.utils.cluster_emcee_walkers.rst", "api/ssapy.utils.continueClass.rst", "api/ssapy.utils.find_all_zeros.rst", "api/ssapy.utils.find_extrema_brackets.rst", "api/ssapy.utils.find_file.rst", "api/ssapy.utils.find_nearest_indices.rst", "api/ssapy.utils.gcrf_to_ecef.rst", "api/ssapy.utils.gcrf_to_lunar.rst", "api/ssapy.utils.gcrf_to_stationary_lunar.rst", "api/ssapy.utils.gcrf_to_teme.rst", "api/ssapy.utils.get_kernel_cov.rst", "api/ssapy.utils.get_normed_weights.rst", "api/ssapy.utils.get_times.rst", "api/ssapy.utils.iers_interp.rst", "api/ssapy.utils.integrate_orbit_best_model.rst", "api/ssapy.utils.interpolate_points_between.rst", "api/ssapy.utils.isAttributeSafeToTransfer.rst", "api/ssapy.utils.lazy_property.rst", "api/ssapy.utils.lb_to_tan.rst", "api/ssapy.utils.lb_to_tp.rst", "api/ssapy.utils.lb_to_unit.rst", "api/ssapy.utils.moonPos.rst", "api/ssapy.utils.newton_raphson.rst", "api/ssapy.utils.norm.rst", "api/ssapy.utils.normSq.rst", "api/ssapy.utils.normed.rst", "api/ssapy.utils.ntw_to_r.rst", "api/ssapy.utils.num_wraps.rst", "api/ssapy.utils.regularize_default.rst", "api/ssapy.utils.resample.rst", "api/ssapy.utils.rv_to_ntw.rst", "api/ssapy.utils.sample_points.rst", "api/ssapy.utils.sigma_points.rst", "api/ssapy.utils.subsample_high_lnprob.rst", "api/ssapy.utils.sunPos.rst", "api/ssapy.utils.tan_to_lb.rst", "api/ssapy.utils.teme_to_gcrf.rst", "api/ssapy.utils.tp_to_lb.rst", "api/ssapy.utils.tp_to_unit.rst", "api/ssapy.utils.unitAngle3.rst", "api/ssapy.utils.unit_to_lb.rst", "api/ssapy.utils.unit_to_tp.rst", "api/ssapy.utils.unscented_transform_mean_covar.rst", "api/ssapy.utils.xyz_to_lb.rst", "api/ssapy.utils.xyz_to_tp.rst", "concepts.rst", "contribution_guide.rst", "examples.rst", "index.rst", "installation.rst", "modules/ssapy.accel.rst", "modules/ssapy.body.rst", "modules/ssapy.compute.rst", "modules/ssapy.constants.rst", "modules/ssapy.correlate_tracks.rst", "modules/ssapy.ellipsoid.rst", "modules/ssapy.gravity.rst", "modules/ssapy.io.rst", "modules/ssapy.linker.rst", "modules/ssapy.orbit.rst", "modules/ssapy.orbit_solver.rst", "modules/ssapy.particles.rst", "modules/ssapy.plotUtils.rst", "modules/ssapy.propagator.rst", "modules/ssapy.rvsampler.rst", "modules/ssapy.utils.rst", "reference.rst"], "indexentries": {"__call__() (ssapy.accel.accelconstntw method)": [[1, "ssapy.accel.AccelConstNTW.__call__", false]], "__call__() (ssapy.accel.acceldrag method)": [[2, "ssapy.accel.AccelDrag.__call__", false]], "__call__() (ssapy.accel.accelearthrad method)": [[3, "ssapy.accel.AccelEarthRad.__call__", false]], "__call__() (ssapy.accel.accelkepler method)": [[4, "ssapy.accel.AccelKepler.__call__", false]], "__call__() (ssapy.accel.accelprod method)": [[5, "ssapy.accel.AccelProd.__call__", false]], "__call__() (ssapy.accel.accelsolrad method)": [[6, "ssapy.accel.AccelSolRad.__call__", false]], "__call__() (ssapy.accel.accelsum method)": [[7, "ssapy.accel.AccelSum.__call__", false]], "__call__() (ssapy.body.earthorientation method)": [[9, "ssapy.body.EarthOrientation.__call__", false]], "__call__() (ssapy.body.moonorientation method)": [[10, "ssapy.body.MoonOrientation.__call__", false]], "__call__() (ssapy.body.moonposition method)": [[11, "ssapy.body.MoonPosition.__call__", false]], "__call__() (ssapy.body.planetposition method)": [[12, "ssapy.body.PlanetPosition.__call__", false]], "__call__() (ssapy.body.sunposition method)": [[13, "ssapy.body.SunPosition.__call__", false]], "__call__() (ssapy.correlate_tracks.circvelocityprior method)": [[34, "ssapy.correlate_tracks.CircVelocityPrior.__call__", false]], "__call__() (ssapy.correlate_tracks.gaussprior method)": [[35, "ssapy.correlate_tracks.GaussPrior.__call__", false]], "__call__() (ssapy.correlate_tracks.volumedistanceprior method)": [[41, "ssapy.correlate_tracks.VolumeDistancePrior.__call__", false]], "__call__() (ssapy.correlate_tracks.zeroradialvelocityprior method)": [[42, "ssapy.correlate_tracks.ZeroRadialVelocityPrior.__call__", false]], "__call__() (ssapy.gravity.accelharmonic method)": [[59, "ssapy.gravity.AccelHarmonic.__call__", false]], "__call__() (ssapy.gravity.accelthirdbody method)": [[60, "ssapy.gravity.AccelThirdBody.__call__", false]], "__call__() (ssapy.rvsampler.aprior method)": [[142, "ssapy.rvsampler.APrior.__call__", false]], "__call__() (ssapy.rvsampler.areaprior method)": [[143, "ssapy.rvsampler.AreaPrior.__call__", false]], "__call__() (ssapy.rvsampler.directinitializer method)": [[144, "ssapy.rvsampler.DirectInitializer.__call__", false]], "__call__() (ssapy.rvsampler.distanceprojectioninitializer method)": [[145, "ssapy.rvsampler.DistanceProjectionInitializer.__call__", false]], "__call__() (ssapy.rvsampler.eprior method)": [[146, "ssapy.rvsampler.EPrior.__call__", false]], "__call__() (ssapy.rvsampler.equinoctialexeyprior method)": [[148, "ssapy.rvsampler.EquinoctialExEyPrior.__call__", false]], "__call__() (ssapy.rvsampler.gaussianrvinitializer method)": [[151, "ssapy.rvsampler.GaussianRVInitializer.__call__", false]], "__call__() (ssapy.rvsampler.geoprojectioninitializer method)": [[150, "ssapy.rvsampler.GEOProjectionInitializer.__call__", false]], "__call__() (ssapy.rvsampler.log10areaprior method)": [[155, "ssapy.rvsampler.Log10AreaPrior.__call__", false]], "__call__() (ssapy.rvsampler.rprior method)": [[162, "ssapy.rvsampler.RPrior.__call__", false]], "__call__() (ssapy.rvsampler.rvprobability method)": [[163, "ssapy.rvsampler.RVProbability.__call__", false]], "__call__() (ssapy.rvsampler.vprior method)": [[166, "ssapy.rvsampler.VPrior.__call__", false]], "__call__() (ssapy.utils.lru_cache method)": [[172, "ssapy.utils.LRU_Cache.__call__", false]], "a (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.a", false]], "a (ssapy.propagator.rk8propagator attribute)": [[136, "ssapy.propagator.RK8Propagator.a", false]], "accel (class in ssapy.accel)": [[0, "ssapy.accel.Accel", false]], "accelconstntw (class in ssapy.accel)": [[1, "ssapy.accel.AccelConstNTW", false]], "acceldrag (class in ssapy.accel)": [[2, "ssapy.accel.AccelDrag", false]], "accelearthrad (class in ssapy.accel)": [[3, "ssapy.accel.AccelEarthRad", false]], "accelharmonic (class in ssapy.gravity)": [[59, "ssapy.gravity.AccelHarmonic", false]], "accelkepler (class in ssapy.accel)": [[4, "ssapy.accel.AccelKepler", false]], "accelprod (class in ssapy.accel)": [[5, "ssapy.accel.AccelProd", false]], "accelsolrad (class in ssapy.accel)": [[6, "ssapy.accel.AccelSolRad", false]], "accelsum (class in ssapy.accel)": [[7, "ssapy.accel.AccelSum", false]], "accelthirdbody (class in ssapy.gravity)": [[60, "ssapy.gravity.AccelThirdBody", false]], "acceptanceratio (ssapy.rvsampler.mhsampler attribute)": [[156, "ssapy.rvsampler.MHSampler.acceptanceRatio", false]], "add_tracklet() (ssapy.correlate_tracks.mht method)": [[37, "ssapy.correlate_tracks.MHT.add_tracklet", false]], "addto() (ssapy.correlate_tracks.hypothesis static method)": [[36, "ssapy.correlate_tracks.Hypothesis.addto", false]], "addto() (ssapy.correlate_tracks.track method)": [[38, "ssapy.correlate_tracks.Track.addto", false]], "addto() (ssapy.correlate_tracks.trackgauss method)": [[40, "ssapy.correlate_tracks.TrackGauss.addto", false]], "alpha() (ssapy.orbit_solver.shefertwoposorbitsolver method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.alpha", false]], "altaz() (in module ssapy.compute)": [[17, "ssapy.compute.altaz", false]], "angularmomentum (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.angularMomentum", false]], "apoapsis (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.apoapsis", false]], "append_csv() (in module ssapy.io)": [[62, "ssapy.io.append_csv", false]], "append_csv_on_disk() (in module ssapy.io)": [[63, "ssapy.io.append_csv_on_disk", false]], "aprior (class in ssapy.rvsampler)": [[142, "ssapy.rvsampler.APrior", false]], "areaprior (class in ssapy.rvsampler)": [[143, "ssapy.rvsampler.AreaPrior", false]], "at() (ssapy.correlate_tracks.trackgauss method)": [[40, "ssapy.correlate_tracks.TrackGauss.at", false]], "at() (ssapy.orbit.orbit method)": [[108, "ssapy.orbit.Orbit.at", false]], "b3obs2pos() (in module ssapy.io)": [[64, "ssapy.io.b3obs2pos", false]], "b7 (ssapy.propagator.rk78propagator attribute)": [[135, "ssapy.propagator.RK78Propagator.b7", false]], "b8 (ssapy.propagator.rk8propagator attribute)": [[136, "ssapy.propagator.RK8Propagator.b8", false]], "beta() (ssapy.orbit_solver.shefertwoposorbitsolver method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.beta", false]], "binaryselectorparams (class in ssapy.linker)": [[104, "ssapy.linker.BinarySelectorParams", false]], "body (class in ssapy.body)": [[8, "ssapy.body.Body", false]], "c (ssapy.propagator.rk8propagator attribute)": [[136, "ssapy.propagator.RK8Propagator.c", false]], "catalog_to_apparent() (in module ssapy.utils)": [[173, "ssapy.utils.catalog_to_apparent", false]], "check_lunar_collision() (in module ssapy.utils)": [[174, "ssapy.utils.check_lunar_collision", false]], "check_numpy_array() (in module ssapy.plotutils)": [[116, "ssapy.plotUtils.check_numpy_array", false]], "chi() (ssapy.rvsampler.rvprobability method)": [[163, "ssapy.rvsampler.RVProbability.chi", false]], "circular_guess() (in module ssapy.rvsampler)": [[167, "ssapy.rvsampler.circular_guess", false]], "circvelocityprior (class in ssapy.correlate_tracks)": [[34, "ssapy.correlate_tracks.CircVelocityPrior", false]], "cluster_emcee_walkers() (in module ssapy.utils)": [[175, "ssapy.utils.cluster_emcee_walkers", false]], "combinatoric_lnprior() (in module ssapy.correlate_tracks)": [[43, "ssapy.correlate_tracks.combinatoric_lnprior", false]], "continueclass() (in module ssapy.utils)": [[176, "ssapy.utils.continueClass", false]], "d (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.D", false]], "d() (ssapy.orbit_solver.shefertwoposorbitsolver method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.D", false]], "d1 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.d1", false]], "d11 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.D11", false]], "d12 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.D12", false]], "d13 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.D13", false]], "d2 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.d2", false]], "d21 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.D21", false]], "d22 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.D22", false]], "d23 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.D23", false]], "d3 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.d3", false]], "d31 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.D31", false]], "d32 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.D32", false]], "d33 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.D33", false]], "damper() (in module ssapy.rvsampler)": [[168, "ssapy.rvsampler.damper", false]], "damper_deriv() (in module ssapy.rvsampler)": [[169, "ssapy.rvsampler.damper_deriv", false]], "danchicktwoposorbitsolver (class in ssapy.orbit_solver)": [[110, "ssapy.orbit_solver.DanchickTwoPosOrbitSolver", false]], "data_for_satellite() (in module ssapy.correlate_tracks)": [[44, "ssapy.correlate_tracks.data_for_satellite", false]], "default_numerical() (in module ssapy.propagator)": [[141, "ssapy.propagator.default_numerical", false]], "difference() (ssapy.correlate_tracks.hypothesis method)": [[36, "ssapy.correlate_tracks.Hypothesis.difference", false]], "dircos() (in module ssapy.compute)": [[18, "ssapy.compute.dircos", false]], "directinitializer (class in ssapy.rvsampler)": [[144, "ssapy.rvsampler.DirectInitializer", false]], "distanceprojectioninitializer (class in ssapy.rvsampler)": [[145, "ssapy.rvsampler.DistanceProjectionInitializer", false]], "draw_orbit() (ssapy.particles.particles method)": [[115, "ssapy.particles.Particles.draw_orbit", false]], "drawearth() (in module ssapy.plotutils)": [[117, "ssapy.plotUtils.drawEarth", false]], "dxdg() (ssapy.orbit_solver.danchicktwoposorbitsolver static method)": [[110, "ssapy.orbit_solver.DanchickTwoPosOrbitSolver.dXdg", false]], "e (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.e", false]], "earth_shine() (in module ssapy.compute)": [[20, "ssapy.compute.earth_shine", false]], "earthobserver (class in ssapy.orbit)": [[107, "ssapy.orbit.EarthObserver", false]], "earthorientation (class in ssapy.body)": [[9, "ssapy.body.EarthOrientation", false]], "earthshadowcoords() (in module ssapy.compute)": [[19, "ssapy.compute.earthShadowCoords", false]], "eccentricanomaly (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.eccentricAnomaly", false]], "ecef_plot() (in module ssapy.plotutils)": [[118, "ssapy.plotUtils.ecef_plot", false]], "emceesampler (class in ssapy.rvsampler)": [[147, "ssapy.rvsampler.EmceeSampler", false]], "energy (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.energy", false]], "epoch (ssapy.particles.particles attribute)": [[115, "ssapy.particles.Particles.epoch", false]], "eprior (class in ssapy.rvsampler)": [[146, "ssapy.rvsampler.EPrior", false]], "eq2kep() (in module ssapy.rvsampler)": [[170, "ssapy.rvsampler.eq2kep", false]], "equinoctialelements (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.equinoctialElements", false]], "equinoctialexeyprior (class in ssapy.rvsampler)": [[148, "ssapy.rvsampler.EquinoctialExEyPrior", false]], "equinoctiallmoptimizer (class in ssapy.rvsampler)": [[149, "ssapy.rvsampler.EquinoctialLMOptimizer", false]], "ex (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.ex", false]], "exists() (in module ssapy.io)": [[65, "ssapy.io.exists", false]], "exists_in_csv() (in module ssapy.io)": [[66, "ssapy.io.exists_in_csv", false]], "ey (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.ey", false]], "f() (ssapy.orbit_solver.shefertwoposorbitsolver method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.F", false]], "find_all_zeros() (in module ssapy.utils)": [[177, "ssapy.utils.find_all_zeros", false]], "find_extrema_brackets() (in module ssapy.utils)": [[178, "ssapy.utils.find_extrema_brackets", false]], "find_file() (in module ssapy.utils)": [[179, "ssapy.utils.find_file", false]], "find_nearest_indices() (in module ssapy.utils)": [[180, "ssapy.utils.find_nearest_indices", false]], "find_passes() (in module ssapy.compute)": [[21, "ssapy.compute.find_passes", false]], "fit_arc() (in module ssapy.correlate_tracks)": [[45, "ssapy.correlate_tracks.fit_arc", false]], "fit_arc_blind() (in module ssapy.correlate_tracks)": [[46, "ssapy.correlate_tracks.fit_arc_blind", false]], "fit_arc_blind_via_track() (in module ssapy.correlate_tracks)": [[47, "ssapy.correlate_tracks.fit_arc_blind_via_track", false]], "fit_arc_with_gaussian_prior() (in module ssapy.correlate_tracks)": [[48, "ssapy.correlate_tracks.fit_arc_with_gaussian_prior", false]], "flag_inconsistency() (ssapy.correlate_tracks.mht static method)": [[37, "ssapy.correlate_tracks.MHT.flag_inconsistency", false]], "flam0() (ssapy.orbit_solver.shefertwoposorbitsolver method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.Flam0", false]], "format_xaxis_decimal_year() (in module ssapy.plotutils)": [[119, "ssapy.plotUtils.format_xaxis_decimal_year", false]], "fromegm() (ssapy.gravity.harmoniccoefficients class method)": [[61, "ssapy.gravity.HarmonicCoefficients.fromEGM", false]], "fromequinoctialelements() (ssapy.orbit.orbit class method)": [[108, "ssapy.orbit.Orbit.fromEquinoctialElements", false]], "fromkeplerianelements() (ssapy.orbit.orbit class method)": [[108, "ssapy.orbit.Orbit.fromKeplerianElements", false]], "fromkozaimeankeplerianelements() (ssapy.orbit.orbit class method)": [[108, "ssapy.orbit.Orbit.fromKozaiMeanKeplerianElements", false]], "fromtab() (ssapy.gravity.harmoniccoefficients class method)": [[61, "ssapy.gravity.HarmonicCoefficients.fromTAB", false]], "fromtle() (ssapy.orbit.orbit class method)": [[108, "ssapy.orbit.Orbit.fromTLE", false]], "fromtletuple() (ssapy.orbit.orbit class method)": [[108, "ssapy.orbit.Orbit.fromTLETuple", false]], "fullparam() (ssapy.rvsampler.paramorbittranslator method)": [[161, "ssapy.rvsampler.ParamOrbitTranslator.fullparam", false]], "fuse() (ssapy.particles.particles method)": [[115, "ssapy.particles.Particles.fuse", false]], "g() (ssapy.orbit_solver.shefertwoposorbitsolver method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.G", false]], "gate() (ssapy.correlate_tracks.trackbase method)": [[39, "ssapy.correlate_tracks.TrackBase.gate", false]], "gaussian_approximation() (ssapy.correlate_tracks.track method)": [[38, "ssapy.correlate_tracks.Track.gaussian_approximation", false]], "gaussian_approximation() (ssapy.correlate_tracks.trackgauss method)": [[40, "ssapy.correlate_tracks.TrackGauss.gaussian_approximation", false]], "gaussianrvinitializer (class in ssapy.rvsampler)": [[151, "ssapy.rvsampler.GaussianRVInitializer", false]], "gaussprior (class in ssapy.correlate_tracks)": [[35, "ssapy.correlate_tracks.GaussPrior", false]], "gausstwoposorbitsolver (class in ssapy.orbit_solver)": [[111, "ssapy.orbit_solver.GaussTwoPosOrbitSolver", false]], "gcrf_plot() (in module ssapy.plotutils)": [[120, "ssapy.plotUtils.gcrf_plot", false]], "gcrf_to_ecef() (in module ssapy.utils)": [[181, "ssapy.utils.gcrf_to_ecef", false]], "gcrf_to_lunar() (in module ssapy.utils)": [[182, "ssapy.utils.gcrf_to_lunar", false]], "gcrf_to_stationary_lunar() (in module ssapy.utils)": [[183, "ssapy.utils.gcrf_to_stationary_lunar", false]], "gcrf_to_teme() (in module ssapy.utils)": [[184, "ssapy.utils.gcrf_to_teme", false]], "geoprojectioninitializer (class in ssapy.rvsampler)": [[150, "ssapy.rvsampler.GEOProjectionInitializer", false]], "get_body() (in module ssapy.body)": [[14, "ssapy.body.get_body", false]], "get_kernel_cov() (in module ssapy.utils)": [[185, "ssapy.utils.get_kernel_cov", false]], "get_linked_track_indices() (ssapy.linker.binaryselectorparams method)": [[104, "ssapy.linker.BinarySelectorParams.get_linked_track_indices", false]], "get_memory_usage() (in module ssapy.io)": [[67, "ssapy.io.get_memory_usage", false]], "get_normed_weights() (in module ssapy.utils)": [[186, "ssapy.utils.get_normed_weights", false]], "get_propkw_from_fullparam() (ssapy.rvsampler.paramorbittranslator method)": [[161, "ssapy.rvsampler.ParamOrbitTranslator.get_propkw_from_fullparam", false]], "get_propkw_from_orbit() (ssapy.rvsampler.paramorbittranslator method)": [[161, "ssapy.rvsampler.ParamOrbitTranslator.get_propkw_from_orbit", false]], "get_tel_pos_itrf_to_gcrs() (in module ssapy.io)": [[68, "ssapy.io.get_tel_pos_itrf_to_gcrs", false]], "get_times() (in module ssapy.utils)": [[187, "ssapy.utils.get_times", false]], "get_unlinked_track_indices() (ssapy.linker.binaryselectorparams method)": [[104, "ssapy.linker.BinarySelectorParams.get_unlinked_track_indices", false]], "getangle() (in module ssapy.compute)": [[22, "ssapy.compute.getAngle", false]], "getrv() (ssapy.orbit.earthobserver method)": [[107, "ssapy.orbit.EarthObserver.getRV", false]], "getrv() (ssapy.orbit.orbitalobserver method)": [[109, "ssapy.orbit.OrbitalObserver.getRV", false]], "groundtrack() (in module ssapy.compute)": [[23, "ssapy.compute.groundTrack", false]], "groundtrackplot() (in module ssapy.plotutils)": [[121, "ssapy.plotUtils.groundTrackPlot", false]], "groundtrackvideo() (in module ssapy.plotutils)": [[122, "ssapy.plotUtils.groundTrackVideo", false]], "guess_csv_delimiter() (in module ssapy.io)": [[69, "ssapy.io.guess_csv_delimiter", false]], "h5_key_exists() (in module ssapy.io)": [[70, "ssapy.io.h5_key_exists", false]], "h5append() (in module ssapy.io)": [[71, "ssapy.io.h5append", false]], "h5keys() (in module ssapy.io)": [[72, "ssapy.io.h5keys", false]], "h5load() (in module ssapy.io)": [[73, "ssapy.io.h5load", false]], "h5loadall() (in module ssapy.io)": [[74, "ssapy.io.h5loadall", false]], "h5overwrite() (in module ssapy.io)": [[75, "ssapy.io.h5overwrite", false]], "h5save() (in module ssapy.io)": [[76, "ssapy.io.h5save", false]], "harmoniccoefficients (class in ssapy.gravity)": [[61, "ssapy.gravity.HarmonicCoefficients", false]], "hashablearraycontainer (class in ssapy.compute)": [[15, "ssapy.compute.HashableArrayContainer", false]], "header_csv() (in module ssapy.io)": [[77, "ssapy.io.header_csv", false]], "hx (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.hx", false]], "hy (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.hy", false]], "hypothesis (class in ssapy.correlate_tracks)": [[36, "ssapy.correlate_tracks.Hypothesis", false]], "i (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.i", false]], "iers_interp() (in module ssapy.utils)": [[188, "ssapy.utils.iers_interp", false]], "input_param_translation() (ssapy.rvsampler.paramorbitequinoctial method)": [[159, "ssapy.rvsampler.ParamOrbitEquinoctial.input_param_translation", false]], "input_param_translation() (ssapy.rvsampler.paramorbittranslator method)": [[161, "ssapy.rvsampler.ParamOrbitTranslator.input_param_translation", false]], "integrate_orbit_best_model() (in module ssapy.utils)": [[189, "ssapy.utils.integrate_orbit_best_model", false]], "interpolate_points_between() (in module ssapy.utils)": [[190, "ssapy.utils.interpolate_points_between", false]], "isattributesafetotransfer() (in module ssapy.utils)": [[191, "ssapy.utils.isAttributeSafeToTransfer", false]], "iterate_mht() (in module ssapy.correlate_tracks)": [[49, "ssapy.correlate_tracks.iterate_mht", false]], "keplerian_orbital_elements() (in module ssapy.compute)": [[24, "ssapy.compute.keplerian_orbital_elements", false]], "keplerianelements (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.keplerianElements", false]], "keplerianpropagator (class in ssapy.propagator)": [[132, "ssapy.propagator.KeplerianPropagator", false]], "kozaimeankeplerianelements (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.kozaiMeanKeplerianElements", false]], "lazy_property (class in ssapy.utils)": [[192, "ssapy.utils.lazy_property", false]], "lb_to_tan() (in module ssapy.utils)": [[193, "ssapy.utils.lb_to_tan", false]], "lb_to_tp() (in module ssapy.utils)": [[194, "ssapy.utils.lb_to_tp", false]], "lb_to_unit() (in module ssapy.utils)": [[195, "ssapy.utils.lb_to_unit", false]], "le (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.lE", false]], "leastsquaresoptimizer (class in ssapy.rvsampler)": [[154, "ssapy.rvsampler.LeastSquaresOptimizer", false]], "linker (class in ssapy.linker)": [[105, "ssapy.linker.Linker", false]], "listdir() (in module ssapy.io)": [[78, "ssapy.io.listdir", false]], "lm (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.lM", false]], "lmoptimizer (class in ssapy.rvsampler)": [[152, "ssapy.rvsampler.LMOptimizer", false]], "lmoptimizerangular (class in ssapy.rvsampler)": [[153, "ssapy.rvsampler.LMOptimizerAngular", false]], "lnlike() (ssapy.particles.particles method)": [[115, "ssapy.particles.Particles.lnlike", false]], "lnlike() (ssapy.rvsampler.rvprobability method)": [[163, "ssapy.rvsampler.RVProbability.lnlike", false]], "lnprior() (ssapy.rvsampler.rvprobability method)": [[163, "ssapy.rvsampler.RVProbability.lnprior", false]], "lnpriors (ssapy.particles.particles attribute)": [[115, "ssapy.particles.Particles.lnpriors", false]], "lnprob (ssapy.correlate_tracks.trackbase attribute)": [[39, "ssapy.correlate_tracks.TrackBase.lnprob", false]], "lnprob() (ssapy.rvsampler.rvprobability method)": [[163, "ssapy.rvsampler.RVProbability.lnprob", false]], "load_b3obs_file() (in module ssapy.io)": [[79, "ssapy.io.load_b3obs_file", false]], "load_earth_file() (in module ssapy.plotutils)": [[123, "ssapy.plotUtils.load_earth_file", false]], "load_moon_file() (in module ssapy.plotutils)": [[124, "ssapy.plotUtils.load_moon_file", false]], "log10areaprior (class in ssapy.rvsampler)": [[155, "ssapy.rvsampler.Log10AreaPrior", false]], "lonpa (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.lonPa", false]], "lrl (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.LRL", false]], "lru_cache (class in ssapy.utils)": [[172, "ssapy.utils.LRU_Cache", false]], "lunar_plot() (in module ssapy.plotutils)": [[125, "ssapy.plotUtils.lunar_plot", false]], "lunar_stationary_plot() (in module ssapy.plotutils)": [[126, "ssapy.plotUtils.lunar_stationary_plot", false]], "lv (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.lv", false]], "m_v() (in module ssapy.compute)": [[16, "ssapy.compute.M_v", false]], "make_optimizer() (in module ssapy.correlate_tracks)": [[50, "ssapy.correlate_tracks.make_optimizer", false]], "make_param_guess() (in module ssapy.correlate_tracks)": [[51, "ssapy.correlate_tracks.make_param_guess", false]], "make_tle() (in module ssapy.io)": [[80, "ssapy.io.make_tle", false]], "makedf() (in module ssapy.io)": [[81, "ssapy.io.makedf", false]], "mean() (ssapy.particles.particles method)": [[115, "ssapy.particles.Particles.mean", false]], "meananomaly (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.meanAnomaly", false]], "meanmotion (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.meanMotion", false]], "merge_dicts() (in module ssapy.io)": [[82, "ssapy.io.merge_dicts", false]], "mhsampler (class in ssapy.rvsampler)": [[156, "ssapy.rvsampler.MHSampler", false]], "mht (class in ssapy.correlate_tracks)": [[37, "ssapy.correlate_tracks.MHT", false]], "mkdir() (in module ssapy.io)": [[83, "ssapy.io.mkdir", false]], "modelselectorparams (class in ssapy.linker)": [[106, "ssapy.linker.ModelSelectorParams", false]], "moon_shine() (in module ssapy.compute)": [[25, "ssapy.compute.moon_shine", false]], "moonorientation (class in ssapy.body)": [[10, "ssapy.body.MoonOrientation", false]], "moonpos() (in module ssapy.utils)": [[196, "ssapy.utils.moonPos", false]], "moonposition (class in ssapy.body)": [[11, "ssapy.body.MoonPosition", false]], "move() (ssapy.particles.particles method)": [[115, "ssapy.particles.Particles.move", false]], "mpi_scatter() (in module ssapy.io)": [[84, "ssapy.io.mpi_scatter", false]], "mpi_scatter_exclude_rank_0() (in module ssapy.io)": [[85, "ssapy.io.mpi_scatter_exclude_rank_0", false]], "mvnormalproposal (class in ssapy.rvsampler)": [[157, "ssapy.rvsampler.MVNormalProposal", false]], "newton_raphson() (in module ssapy.utils)": [[197, "ssapy.utils.newton_raphson", false]], "norm() (in module ssapy.utils)": [[198, "ssapy.utils.norm", false]], "normalize() (ssapy.linker.modelselectorparams method)": [[106, "ssapy.linker.ModelSelectorParams.normalize", false]], "normed() (in module ssapy.utils)": [[200, "ssapy.utils.normed", false]], "normsq() (in module ssapy.utils)": [[199, "ssapy.utils.normSq", false]], "npload() (in module ssapy.io)": [[86, "ssapy.io.npload", false]], "npsave() (in module ssapy.io)": [[87, "ssapy.io.npsave", false]], "ntracklet() (ssapy.correlate_tracks.hypothesis method)": [[36, "ssapy.correlate_tracks.Hypothesis.ntracklet", false]], "ntw_to_r() (in module ssapy.utils)": [[201, "ssapy.utils.ntw_to_r", false]], "num_wraps() (in module ssapy.utils)": [[202, "ssapy.utils.num_wraps", false]], "optimize() (ssapy.rvsampler.equinoctiallmoptimizer method)": [[149, "ssapy.rvsampler.EquinoctialLMOptimizer.optimize", false]], "optimize() (ssapy.rvsampler.leastsquaresoptimizer method)": [[154, "ssapy.rvsampler.LeastSquaresOptimizer.optimize", false]], "optimize() (ssapy.rvsampler.lmoptimizer method)": [[152, "ssapy.rvsampler.LMOptimizer.optimize", false]], "optimize() (ssapy.rvsampler.lmoptimizerangular method)": [[153, "ssapy.rvsampler.LMOptimizerAngular.optimize", false]], "optimize() (ssapy.rvsampler.sgp4lmoptimizer method)": [[165, "ssapy.rvsampler.SGP4LMOptimizer.optimize", false]], "optimizeparam() (ssapy.rvsampler.paramorbittranslator method)": [[161, "ssapy.rvsampler.ParamOrbitTranslator.optimizeparam", false]], "orbit (class in ssapy.orbit)": [[108, "ssapy.orbit.Orbit", false]], "orbit_to_param() (in module ssapy.correlate_tracks)": [[52, "ssapy.correlate_tracks.orbit_to_param", false]], "orbit_to_param() (ssapy.rvsampler.paramorbitangle method)": [[158, "ssapy.rvsampler.ParamOrbitAngle.orbit_to_param", false]], "orbit_to_param() (ssapy.rvsampler.paramorbitequinoctial method)": [[159, "ssapy.rvsampler.ParamOrbitEquinoctial.orbit_to_param", false]], "orbit_to_param() (ssapy.rvsampler.paramorbitrv method)": [[160, "ssapy.rvsampler.ParamOrbitRV.orbit_to_param", false]], "orbit_to_param() (ssapy.rvsampler.paramorbittranslator method)": [[161, "ssapy.rvsampler.ParamOrbitTranslator.orbit_to_param", false]], "orbitalobserver (class in ssapy.orbit)": [[109, "ssapy.orbit.OrbitalObserver", false]], "orbits (ssapy.particles.particles attribute)": [[115, "ssapy.particles.Particles.orbits", false]], "output_covar_translation() (ssapy.rvsampler.paramorbitequinoctial method)": [[159, "ssapy.rvsampler.ParamOrbitEquinoctial.output_covar_translation", false]], "output_covar_translation() (ssapy.rvsampler.paramorbittranslator method)": [[161, "ssapy.rvsampler.ParamOrbitTranslator.output_covar_translation", false]], "p (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.p", false]], "pa (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.pa", false]], "param_to_orbit() (in module ssapy.correlate_tracks)": [[53, "ssapy.correlate_tracks.param_to_orbit", false]], "param_to_orbit() (ssapy.rvsampler.paramorbitangle method)": [[158, "ssapy.rvsampler.ParamOrbitAngle.param_to_orbit", false]], "param_to_orbit() (ssapy.rvsampler.paramorbitequinoctial method)": [[159, "ssapy.rvsampler.ParamOrbitEquinoctial.param_to_orbit", false]], "param_to_orbit() (ssapy.rvsampler.paramorbitrv method)": [[160, "ssapy.rvsampler.ParamOrbitRV.param_to_orbit", false]], "param_to_orbit() (ssapy.rvsampler.paramorbittranslator method)": [[161, "ssapy.rvsampler.ParamOrbitTranslator.param_to_orbit", false]], "paramorbitangle (class in ssapy.rvsampler)": [[158, "ssapy.rvsampler.ParamOrbitAngle", false]], "paramorbitequinoctial (class in ssapy.rvsampler)": [[159, "ssapy.rvsampler.ParamOrbitEquinoctial", false]], "paramorbitrv (class in ssapy.rvsampler)": [[160, "ssapy.rvsampler.ParamOrbitRV", false]], "paramorbittranslator (class in ssapy.rvsampler)": [[161, "ssapy.rvsampler.ParamOrbitTranslator", false]], "parse_overpunched() (in module ssapy.io)": [[90, "ssapy.io.parse_overpunched", false]], "parse_tle() (in module ssapy.io)": [[91, "ssapy.io.parse_tle", false]], "parseb3() (in module ssapy.io)": [[88, "ssapy.io.parseB3", false]], "parseb3line() (in module ssapy.io)": [[89, "ssapy.io.parseB3Line", false]], "particles (class in ssapy.particles)": [[115, "ssapy.particles.Particles", false]], "pd_flatten() (in module ssapy.io)": [[92, "ssapy.io.pd_flatten", false]], "pdstr_to_arrays() (in module ssapy.io)": [[93, "ssapy.io.pdstr_to_arrays", false]], "periapsis (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.periapsis", false]], "period (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.period", false]], "planetposition (class in ssapy.body)": [[12, "ssapy.body.PlanetPosition", false]], "pload() (in module ssapy.io)": [[94, "ssapy.io.pload", false]], "plotrvcorner() (in module ssapy.plotutils)": [[127, "ssapy.plotUtils.plotRVCorner", false]], "plotrvtrace() (in module ssapy.plotutils)": [[128, "ssapy.plotUtils.plotRVTrace", false]], "predict() (ssapy.correlate_tracks.trackbase method)": [[39, "ssapy.correlate_tracks.TrackBase.predict", false]], "propagaterdz() (ssapy.correlate_tracks.trackbase method)": [[39, "ssapy.correlate_tracks.TrackBase.propagaterdz", false]], "propagator (class in ssapy.propagator)": [[133, "ssapy.propagator.Propagator", false]], "propose() (ssapy.rvsampler.mvnormalproposal method)": [[157, "ssapy.rvsampler.MVNormalProposal.propose", false]], "prune() (ssapy.correlate_tracks.mht method)": [[37, "ssapy.correlate_tracks.MHT.prune", false]], "prune_stale_hypotheses() (ssapy.correlate_tracks.mht method)": [[37, "ssapy.correlate_tracks.MHT.prune_stale_hypotheses", false]], "prune_tracks() (ssapy.correlate_tracks.mht method)": [[37, "ssapy.correlate_tracks.MHT.prune_tracks", false]], "psave() (in module ssapy.io)": [[95, "ssapy.io.psave", false]], "quickaltaz() (in module ssapy.compute)": [[26, "ssapy.compute.quickAltAz", false]], "raan (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.raan", false]], "radec() (in module ssapy.compute)": [[27, "ssapy.compute.radec", false]], "radecrate() (in module ssapy.compute)": [[28, "ssapy.compute.radecRate", false]], "radecrateobstorv() (in module ssapy.compute)": [[29, "ssapy.compute.radecRateObsToRV", false]], "radeczn() (in module ssapy.correlate_tracks)": [[54, "ssapy.correlate_tracks.radeczn", false]], "read_csv() (in module ssapy.io)": [[96, "ssapy.io.read_csv", false]], "read_tle() (in module ssapy.io)": [[97, "ssapy.io.read_tle", false]], "read_tle_catalog() (in module ssapy.io)": [[98, "ssapy.io.read_tle_catalog", false]], "refine_pass() (in module ssapy.compute)": [[30, "ssapy.compute.refine_pass", false]], "regularize_default() (in module ssapy.utils)": [[203, "ssapy.utils.regularize_default", false]], "resample() (in module ssapy.utils)": [[204, "ssapy.utils.resample", false]], "resample() (ssapy.particles.particles method)": [[115, "ssapy.particles.Particles.resample", false]], "reset() (ssapy.rvsampler.mhsampler method)": [[156, "ssapy.rvsampler.MHSampler.reset", false]], "reset_to_pseudo_prior() (ssapy.particles.particles method)": [[115, "ssapy.particles.Particles.reset_to_pseudo_prior", false]], "resid() (ssapy.rvsampler.leastsquaresoptimizer method)": [[154, "ssapy.rvsampler.LeastSquaresOptimizer.resid", false]], "resize() (ssapy.utils.lru_cache method)": [[172, "ssapy.utils.LRU_Cache.resize", false]], "reweight() (ssapy.particles.particles method)": [[115, "ssapy.particles.Particles.reweight", false]], "rk4propagator (class in ssapy.propagator)": [[134, "ssapy.propagator.RK4Propagator", false]], "rk78propagator (class in ssapy.propagator)": [[135, "ssapy.propagator.RK78Propagator", false]], "rk8propagator (class in ssapy.propagator)": [[136, "ssapy.propagator.RK8Propagator", false]], "rkpropagator (class in ssapy.propagator)": [[137, "ssapy.propagator.RKPropagator", false]], "rmdir() (in module ssapy.io)": [[99, "ssapy.io.rmdir", false]], "rmfile() (in module ssapy.io)": [[100, "ssapy.io.rmfile", false]], "rprior (class in ssapy.rvsampler)": [[162, "ssapy.rvsampler.RPrior", false]], "run() (ssapy.correlate_tracks.mht method)": [[37, "ssapy.correlate_tracks.MHT.run", false]], "rv() (in module ssapy.compute)": [[31, "ssapy.compute.rv", false]], "rv_to_ntw() (in module ssapy.utils)": [[205, "ssapy.utils.rv_to_ntw", false]], "rvobstoradecrate() (in module ssapy.compute)": [[32, "ssapy.compute.rvObsToRaDecRate", false]], "rvprobability (class in ssapy.rvsampler)": [[163, "ssapy.rvsampler.RVProbability", false]], "rvsigmaproposal (class in ssapy.rvsampler)": [[164, "ssapy.rvsampler.RVSigmaProposal", false]], "sample() (ssapy.linker.linker method)": [[105, "ssapy.linker.Linker.sample", false]], "sample() (ssapy.rvsampler.emceesampler method)": [[147, "ssapy.rvsampler.EmceeSampler.sample", false]], "sample() (ssapy.rvsampler.mhsampler method)": [[156, "ssapy.rvsampler.MHSampler.sample", false]], "sample_ball() (in module ssapy.rvsampler)": [[171, "ssapy.rvsampler.sample_ball", false]], "sample_orbit_selectors_from_data_conditional() (ssapy.linker.linker method)": [[105, "ssapy.linker.Linker.sample_orbit_selectors_from_data_conditional", false]], "sample_points() (in module ssapy.utils)": [[206, "ssapy.utils.sample_points", false]], "sample_porbit_conditional_dist() (ssapy.linker.linker method)": [[105, "ssapy.linker.Linker.sample_Porbit_conditional_dist", false]], "save_csv() (in module ssapy.io)": [[101, "ssapy.io.save_csv", false]], "save_csv_line() (in module ssapy.io)": [[102, "ssapy.io.save_csv_line", false]], "save_plot_to_pdf() (in module ssapy.plotutils)": [[129, "ssapy.plotUtils.save_plot_to_pdf", false]], "save_plot_to_png() (in module ssapy.plotutils)": [[130, "ssapy.plotUtils.save_plot_to_png", false]], "save_step() (ssapy.linker.linker method)": [[105, "ssapy.linker.Linker.save_step", false]], "scipypropagator (class in ssapy.propagator)": [[139, "ssapy.propagator.SciPyPropagator", false]], "semimajoraxis() (ssapy.orbit_solver.shefertwoposorbitsolver method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.semiMajorAxis", false]], "seriespropagator (class in ssapy.propagator)": [[140, "ssapy.propagator.SeriesPropagator", false]], "sgp4lmoptimizer (class in ssapy.rvsampler)": [[165, "ssapy.rvsampler.SGP4LMOptimizer", false]], "sgp4propagator (class in ssapy.propagator)": [[138, "ssapy.propagator.SGP4Propagator", false]], "shefertwoposorbitsolver (class in ssapy.orbit_solver)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver", false]], "sigma_points() (in module ssapy.utils)": [[207, "ssapy.utils.sigma_points", false]], "solve() (ssapy.orbit_solver.shefertwoposorbitsolver method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.solve", false]], "solve() (ssapy.orbit_solver.threeangleorbitsolver method)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.solve", false]], "solve() (ssapy.orbit_solver.twoposorbitsolver method)": [[114, "ssapy.orbit_solver.TwoPosOrbitSolver.solve", false]], "str_to_array() (in module ssapy.io)": [[103, "ssapy.io.str_to_array", false]], "subsample_high_lnprob() (in module ssapy.utils)": [[208, "ssapy.utils.subsample_high_lnprob", false]], "summarize() (ssapy.correlate_tracks.hypothesis method)": [[36, "ssapy.correlate_tracks.Hypothesis.summarize", false]], "summarize_tracklet() (in module ssapy.correlate_tracks)": [[55, "ssapy.correlate_tracks.summarize_tracklet", false]], "summarize_tracklets() (in module ssapy.correlate_tracks)": [[56, "ssapy.correlate_tracks.summarize_tracklets", false]], "sun_shine() (in module ssapy.compute)": [[33, "ssapy.compute.sun_shine", false]], "sunalt() (ssapy.orbit.earthobserver method)": [[107, "ssapy.orbit.EarthObserver.sunAlt", false]], "sunpos() (in module ssapy.utils)": [[209, "ssapy.utils.sunPos", false]], "sunposition (class in ssapy.body)": [[13, "ssapy.body.SunPosition", false]], "t21 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.t21", false]], "t2131 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.t2131", false]], "t31 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.t31", false]], "t32 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.t32", false]], "t3231 (ssapy.orbit_solver.threeangleorbitsolver attribute)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver.t3231", false]], "tan_to_lb() (in module ssapy.utils)": [[210, "ssapy.utils.tan_to_lb", false]], "teme_to_gcrf() (in module ssapy.utils)": [[211, "ssapy.utils.teme_to_gcrf", false]], "threeangleorbitsolver (class in ssapy.orbit_solver)": [[113, "ssapy.orbit_solver.ThreeAngleOrbitSolver", false]], "time_ordered_satids() (in module ssapy.correlate_tracks)": [[57, "ssapy.correlate_tracks.time_ordered_satIDs", false]], "tle (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.tle", false]], "tp_to_lb() (in module ssapy.utils)": [[212, "ssapy.utils.tp_to_lb", false]], "tp_to_unit() (in module ssapy.utils)": [[213, "ssapy.utils.tp_to_unit", false]], "track (class in ssapy.correlate_tracks)": [[38, "ssapy.correlate_tracks.Track", false]], "trackbase (class in ssapy.correlate_tracks)": [[39, "ssapy.correlate_tracks.TrackBase", false]], "trackgauss (class in ssapy.correlate_tracks)": [[40, "ssapy.correlate_tracks.TrackGauss", false]], "tracking_plot() (in module ssapy.plotutils)": [[131, "ssapy.plotUtils.tracking_plot", false]], "trueanomaly (ssapy.orbit.orbit attribute)": [[108, "ssapy.orbit.Orbit.trueAnomaly", false]], "twoposorbitsolver (class in ssapy.orbit_solver)": [[114, "ssapy.orbit_solver.TwoPosOrbitSolver", false]], "unit_to_lb() (in module ssapy.utils)": [[215, "ssapy.utils.unit_to_lb", false]], "unit_to_tp() (in module ssapy.utils)": [[216, "ssapy.utils.unit_to_tp", false]], "unitangle3() (in module ssapy.utils)": [[214, "ssapy.utils.unitAngle3", false]], "unscented_transform_mean_covar() (in module ssapy.utils)": [[217, "ssapy.utils.unscented_transform_mean_covar", false]], "update() (ssapy.correlate_tracks.trackbase method)": [[39, "ssapy.correlate_tracks.TrackBase.update", false]], "update() (ssapy.correlate_tracks.trackgauss method)": [[40, "ssapy.correlate_tracks.TrackGauss.update", false]], "update_orbit_parameters() (ssapy.linker.linker method)": [[105, "ssapy.linker.Linker.update_orbit_parameters", false]], "update_params_using_carlin_chib() (ssapy.linker.linker method)": [[105, "ssapy.linker.Linker.update_params_using_carlin_chib", false]], "volumedistanceprior (class in ssapy.correlate_tracks)": [[41, "ssapy.correlate_tracks.VolumeDistancePrior", false]], "vprior (class in ssapy.rvsampler)": [[166, "ssapy.rvsampler.VPrior", false]], "wrap_angle_difference() (in module ssapy.correlate_tracks)": [[58, "ssapy.correlate_tracks.wrap_angle_difference", false]], "x() (ssapy.orbit_solver.danchicktwoposorbitsolver static method)": [[110, "ssapy.orbit_solver.DanchickTwoPosOrbitSolver.X", false]], "x() (ssapy.orbit_solver.shefertwoposorbitsolver static method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.X", false]], "xyz_to_lb() (in module ssapy.utils)": [[218, "ssapy.utils.xyz_to_lb", false]], "xyz_to_tp() (in module ssapy.utils)": [[219, "ssapy.utils.xyz_to_tp", false]], "y() (ssapy.orbit_solver.shefertwoposorbitsolver method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.Y", false]], "ypoly() (ssapy.orbit_solver.shefertwoposorbitsolver method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.yPoly", false]], "yxi() (ssapy.orbit_solver.shefertwoposorbitsolver method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.Yxi", false]], "z() (ssapy.orbit_solver.shefertwoposorbitsolver static method)": [[112, "ssapy.orbit_solver.SheferTwoPosOrbitSolver.Z", false]], "zeroradialvelocityprior (class in ssapy.correlate_tracks)": [[42, "ssapy.correlate_tracks.ZeroRadialVelocityPrior", false]]}, "objects": {"ssapy": [[225, 0, 0, "-", "accel"], [226, 0, 0, "-", "body"], [227, 0, 0, "-", "compute"], [228, 0, 0, "-", "constants"], [229, 0, 0, "-", "correlate_tracks"], [230, 0, 0, "-", "ellipsoid"], [231, 0, 0, "-", "gravity"], [232, 0, 0, "-", "io"], [233, 0, 0, "-", "linker"], [234, 0, 0, "-", "orbit"], [235, 0, 0, "-", "orbit_solver"], [236, 0, 0, "-", "particles"], [237, 0, 0, "-", "plotUtils"], [238, 0, 0, "-", "propagator"], [239, 0, 0, "-", "rvsampler"], [240, 0, 0, "-", "utils"]], "ssapy.accel": [[0, 1, 1, "", "Accel"], [1, 1, 1, "", "AccelConstNTW"], [2, 1, 1, "", "AccelDrag"], [3, 1, 1, "", "AccelEarthRad"], [4, 1, 1, "", "AccelKepler"], [5, 1, 1, "", "AccelProd"], [6, 1, 1, "", "AccelSolRad"], [7, 1, 1, "", "AccelSum"]], "ssapy.accel.AccelConstNTW": [[1, 2, 1, "", "__call__"]], "ssapy.accel.AccelDrag": [[2, 2, 1, "", "__call__"]], "ssapy.accel.AccelEarthRad": [[3, 2, 1, "", "__call__"]], "ssapy.accel.AccelKepler": [[4, 2, 1, "", "__call__"]], "ssapy.accel.AccelProd": [[5, 2, 1, "", "__call__"]], "ssapy.accel.AccelSolRad": [[6, 2, 1, "", "__call__"]], "ssapy.accel.AccelSum": [[7, 2, 1, "", "__call__"]], "ssapy.body": [[8, 1, 1, "", "Body"], [9, 1, 1, "", "EarthOrientation"], [10, 1, 1, "", "MoonOrientation"], [11, 1, 1, "", "MoonPosition"], [12, 1, 1, "", "PlanetPosition"], [13, 1, 1, "", "SunPosition"], [14, 3, 1, "", "get_body"]], "ssapy.body.EarthOrientation": [[9, 2, 1, "", "__call__"]], "ssapy.body.MoonOrientation": [[10, 2, 1, "", "__call__"]], "ssapy.body.MoonPosition": [[11, 2, 1, "", "__call__"]], "ssapy.body.PlanetPosition": [[12, 2, 1, "", "__call__"]], "ssapy.body.SunPosition": [[13, 2, 1, "", "__call__"]], "ssapy.compute": [[15, 1, 1, "", "HashableArrayContainer"], [16, 3, 1, "", "M_v"], [17, 3, 1, "", "altaz"], [18, 3, 1, "", "dircos"], [19, 3, 1, "", "earthShadowCoords"], [20, 3, 1, "", "earth_shine"], [21, 3, 1, "", "find_passes"], [22, 3, 1, "", "getAngle"], [23, 3, 1, "", "groundTrack"], [24, 3, 1, "", "keplerian_orbital_elements"], [25, 3, 1, "", "moon_shine"], [26, 3, 1, "", "quickAltAz"], [27, 3, 1, "", "radec"], [28, 3, 1, "", "radecRate"], [29, 3, 1, "", "radecRateObsToRV"], [30, 3, 1, "", "refine_pass"], [31, 3, 1, "", "rv"], [32, 3, 1, "", "rvObsToRaDecRate"], [33, 3, 1, "", "sun_shine"]], "ssapy.correlate_tracks": [[34, 1, 1, "", "CircVelocityPrior"], [35, 1, 1, "", "GaussPrior"], [36, 1, 1, "", "Hypothesis"], [37, 1, 1, "", "MHT"], [38, 1, 1, "", "Track"], [39, 1, 1, "", "TrackBase"], [40, 1, 1, "", "TrackGauss"], [41, 1, 1, "", "VolumeDistancePrior"], [42, 1, 1, "", "ZeroRadialVelocityPrior"], [43, 3, 1, "", "combinatoric_lnprior"], [44, 3, 1, "", "data_for_satellite"], [45, 3, 1, "", "fit_arc"], [46, 3, 1, "", "fit_arc_blind"], [47, 3, 1, "", "fit_arc_blind_via_track"], [48, 3, 1, "", "fit_arc_with_gaussian_prior"], [49, 3, 1, "", "iterate_mht"], [50, 3, 1, "", "make_optimizer"], [51, 3, 1, "", "make_param_guess"], [52, 3, 1, "", "orbit_to_param"], [53, 3, 1, "", "param_to_orbit"], [54, 3, 1, "", "radeczn"], [55, 3, 1, "", "summarize_tracklet"], [56, 3, 1, "", "summarize_tracklets"], [57, 3, 1, "", "time_ordered_satIDs"], [58, 3, 1, "", "wrap_angle_difference"]], "ssapy.correlate_tracks.CircVelocityPrior": [[34, 2, 1, "", "__call__"]], "ssapy.correlate_tracks.GaussPrior": [[35, 2, 1, "", "__call__"]], "ssapy.correlate_tracks.Hypothesis": [[36, 2, 1, "", "addto"], [36, 2, 1, "", "difference"], [36, 2, 1, "", "ntracklet"], [36, 2, 1, "", "summarize"]], "ssapy.correlate_tracks.MHT": [[37, 2, 1, "", "add_tracklet"], [37, 2, 1, "", "flag_inconsistency"], [37, 2, 1, "", "prune"], [37, 2, 1, "", "prune_stale_hypotheses"], [37, 2, 1, "", "prune_tracks"], [37, 2, 1, "", "run"]], "ssapy.correlate_tracks.Track": [[38, 2, 1, "", "addto"], [38, 2, 1, "", "gaussian_approximation"]], "ssapy.correlate_tracks.TrackBase": [[39, 2, 1, "", "gate"], [39, 4, 1, "", "lnprob"], [39, 2, 1, "", "predict"], [39, 2, 1, "", "propagaterdz"], [39, 2, 1, "", "update"]], "ssapy.correlate_tracks.TrackGauss": [[40, 2, 1, "", "addto"], [40, 2, 1, "", "at"], [40, 2, 1, "", "gaussian_approximation"], [40, 2, 1, "", "update"]], "ssapy.correlate_tracks.VolumeDistancePrior": [[41, 2, 1, "", "__call__"]], "ssapy.correlate_tracks.ZeroRadialVelocityPrior": [[42, 2, 1, "", "__call__"]], "ssapy.gravity": [[59, 1, 1, "", "AccelHarmonic"], [60, 1, 1, "", "AccelThirdBody"], [61, 1, 1, "", "HarmonicCoefficients"]], "ssapy.gravity.AccelHarmonic": [[59, 2, 1, "", "__call__"]], "ssapy.gravity.AccelThirdBody": [[60, 2, 1, "", "__call__"]], "ssapy.gravity.HarmonicCoefficients": [[61, 2, 1, "", "fromEGM"], [61, 2, 1, "", "fromTAB"]], "ssapy.io": [[62, 3, 1, "", "append_csv"], [63, 3, 1, "", "append_csv_on_disk"], [64, 3, 1, "", "b3obs2pos"], [65, 3, 1, "", "exists"], [66, 3, 1, "", "exists_in_csv"], [67, 3, 1, "", "get_memory_usage"], [68, 3, 1, "", "get_tel_pos_itrf_to_gcrs"], [69, 3, 1, "", "guess_csv_delimiter"], [70, 3, 1, "", "h5_key_exists"], [71, 3, 1, "", "h5append"], [72, 3, 1, "", "h5keys"], [73, 3, 1, "", "h5load"], [74, 3, 1, "", "h5loadall"], [75, 3, 1, "", "h5overwrite"], [76, 3, 1, "", "h5save"], [77, 3, 1, "", "header_csv"], [78, 3, 1, "", "listdir"], [79, 3, 1, "", "load_b3obs_file"], [80, 3, 1, "", "make_tle"], [81, 3, 1, "", "makedf"], [82, 3, 1, "", "merge_dicts"], [83, 3, 1, "", "mkdir"], [84, 3, 1, "", "mpi_scatter"], [85, 3, 1, "", "mpi_scatter_exclude_rank_0"], [86, 3, 1, "", "npload"], [87, 3, 1, "", "npsave"], [88, 3, 1, "", "parseB3"], [89, 3, 1, "", "parseB3Line"], [90, 3, 1, "", "parse_overpunched"], [91, 3, 1, "", "parse_tle"], [92, 3, 1, "", "pd_flatten"], [93, 3, 1, "", "pdstr_to_arrays"], [94, 3, 1, "", "pload"], [95, 3, 1, "", "psave"], [96, 3, 1, "", "read_csv"], [97, 3, 1, "", "read_tle"], [98, 3, 1, "", "read_tle_catalog"], [99, 3, 1, "", "rmdir"], [100, 3, 1, "", "rmfile"], [101, 3, 1, "", "save_csv"], [102, 3, 1, "", "save_csv_line"], [103, 3, 1, "", "str_to_array"]], "ssapy.linker": [[104, 1, 1, "", "BinarySelectorParams"], [105, 1, 1, "", "Linker"], [106, 1, 1, "", "ModelSelectorParams"]], "ssapy.linker.BinarySelectorParams": [[104, 2, 1, "", "get_linked_track_indices"], [104, 2, 1, "", "get_unlinked_track_indices"]], "ssapy.linker.Linker": [[105, 2, 1, "", "sample"], [105, 2, 1, "", "sample_Porbit_conditional_dist"], [105, 2, 1, "", "sample_orbit_selectors_from_data_conditional"], [105, 2, 1, "", "save_step"], [105, 2, 1, "", "update_orbit_parameters"], [105, 2, 1, "", "update_params_using_carlin_chib"]], "ssapy.linker.ModelSelectorParams": [[106, 2, 1, "", "normalize"]], "ssapy.orbit": [[107, 1, 1, "", "EarthObserver"], [108, 1, 1, "", "Orbit"], [109, 1, 1, "", "OrbitalObserver"]], "ssapy.orbit.EarthObserver": [[107, 2, 1, "", "getRV"], [107, 2, 1, "", "sunAlt"]], "ssapy.orbit.Orbit": [[108, 4, 1, "", "LRL"], [108, 4, 1, "", "a"], [108, 4, 1, "", "angularMomentum"], [108, 4, 1, "", "apoapsis"], [108, 2, 1, "", "at"], [108, 4, 1, "", "e"], [108, 4, 1, "", "eccentricAnomaly"], [108, 4, 1, "", "energy"], [108, 4, 1, "", "equinoctialElements"], [108, 4, 1, "", "ex"], [108, 4, 1, "", "ey"], [108, 2, 1, "", "fromEquinoctialElements"], [108, 2, 1, "", "fromKeplerianElements"], [108, 2, 1, "", "fromKozaiMeanKeplerianElements"], [108, 2, 1, "", "fromTLE"], [108, 2, 1, "", "fromTLETuple"], [108, 4, 1, "", "hx"], [108, 4, 1, "", "hy"], [108, 4, 1, "", "i"], [108, 4, 1, "", "keplerianElements"], [108, 4, 1, "", "kozaiMeanKeplerianElements"], [108, 4, 1, "", "lE"], [108, 4, 1, "", "lM"], [108, 4, 1, "", "lonPa"], [108, 4, 1, "", "lv"], [108, 4, 1, "", "meanAnomaly"], [108, 4, 1, "", "meanMotion"], [108, 4, 1, "", "p"], [108, 4, 1, "", "pa"], [108, 4, 1, "", "periapsis"], [108, 4, 1, "", "period"], [108, 4, 1, "", "raan"], [108, 4, 1, "", "tle"], [108, 4, 1, "", "trueAnomaly"]], "ssapy.orbit.OrbitalObserver": [[109, 2, 1, "", "getRV"]], "ssapy.orbit_solver": [[110, 1, 1, "", "DanchickTwoPosOrbitSolver"], [111, 1, 1, "", "GaussTwoPosOrbitSolver"], [112, 1, 1, "", "SheferTwoPosOrbitSolver"], [113, 1, 1, "", "ThreeAngleOrbitSolver"], [114, 1, 1, "", "TwoPosOrbitSolver"]], "ssapy.orbit_solver.DanchickTwoPosOrbitSolver": [[110, 2, 1, "", "X"], [110, 2, 1, "", "dXdg"]], "ssapy.orbit_solver.SheferTwoPosOrbitSolver": [[112, 2, 1, "", "D"], [112, 2, 1, "", "F"], [112, 2, 1, "", "Flam0"], [112, 2, 1, "", "G"], [112, 2, 1, "", "X"], [112, 2, 1, "", "Y"], [112, 2, 1, "", "Yxi"], [112, 2, 1, "", "Z"], [112, 2, 1, "", "alpha"], [112, 2, 1, "", "beta"], [112, 2, 1, "", "semiMajorAxis"], [112, 2, 1, "", "solve"], [112, 2, 1, "", "yPoly"]], "ssapy.orbit_solver.ThreeAngleOrbitSolver": [[113, 4, 1, "", "D"], [113, 4, 1, "", "D11"], [113, 4, 1, "", "D12"], [113, 4, 1, "", "D13"], [113, 4, 1, "", "D21"], [113, 4, 1, "", "D22"], [113, 4, 1, "", "D23"], [113, 4, 1, "", "D31"], [113, 4, 1, "", "D32"], [113, 4, 1, "", "D33"], [113, 4, 1, "", "d1"], [113, 4, 1, "", "d2"], [113, 4, 1, "", "d3"], [113, 2, 1, "", "solve"], [113, 4, 1, "", "t21"], [113, 4, 1, "", "t2131"], [113, 4, 1, "", "t31"], [113, 4, 1, "", "t32"], [113, 4, 1, "", "t3231"]], "ssapy.orbit_solver.TwoPosOrbitSolver": [[114, 2, 1, "", "solve"]], "ssapy.particles": [[115, 1, 1, "", "Particles"]], "ssapy.particles.Particles": [[115, 2, 1, "", "draw_orbit"], [115, 4, 1, "", "epoch"], [115, 2, 1, "", "fuse"], [115, 2, 1, "", "lnlike"], [115, 4, 1, "", "lnpriors"], [115, 2, 1, "", "mean"], [115, 2, 1, "", "move"], [115, 4, 1, "", "orbits"], [115, 2, 1, "", "resample"], [115, 2, 1, "", "reset_to_pseudo_prior"], [115, 2, 1, "", "reweight"]], "ssapy.plotUtils": [[116, 3, 1, "", "check_numpy_array"], [117, 3, 1, "", "drawEarth"], [118, 3, 1, "", "ecef_plot"], [119, 3, 1, "", "format_xaxis_decimal_year"], [120, 3, 1, "", "gcrf_plot"], [121, 3, 1, "", "groundTrackPlot"], [122, 3, 1, "", "groundTrackVideo"], [123, 3, 1, "", "load_earth_file"], [124, 3, 1, "", "load_moon_file"], [125, 3, 1, "", "lunar_plot"], [126, 3, 1, "", "lunar_stationary_plot"], [127, 3, 1, "", "plotRVCorner"], [128, 3, 1, "", "plotRVTrace"], [129, 3, 1, "", "save_plot_to_pdf"], [130, 3, 1, "", "save_plot_to_png"], [131, 3, 1, "", "tracking_plot"]], "ssapy.propagator": [[132, 1, 1, "", "KeplerianPropagator"], [133, 1, 1, "", "Propagator"], [134, 1, 1, "", "RK4Propagator"], [135, 1, 1, "", "RK78Propagator"], [136, 1, 1, "", "RK8Propagator"], [137, 1, 1, "", "RKPropagator"], [138, 1, 1, "", "SGP4Propagator"], [139, 1, 1, "", "SciPyPropagator"], [140, 1, 1, "", "SeriesPropagator"], [141, 3, 1, "", "default_numerical"]], "ssapy.propagator.RK78Propagator": [[135, 4, 1, "", "b7"]], "ssapy.propagator.RK8Propagator": [[136, 4, 1, "", "a"], [136, 4, 1, "", "b8"], [136, 4, 1, "", "c"]], "ssapy.rvsampler": [[142, 1, 1, "", "APrior"], [143, 1, 1, "", "AreaPrior"], [144, 1, 1, "", "DirectInitializer"], [145, 1, 1, "", "DistanceProjectionInitializer"], [146, 1, 1, "", "EPrior"], [147, 1, 1, "", "EmceeSampler"], [148, 1, 1, "", "EquinoctialExEyPrior"], [149, 1, 1, "", "EquinoctialLMOptimizer"], [150, 1, 1, "", "GEOProjectionInitializer"], [151, 1, 1, "", "GaussianRVInitializer"], [152, 1, 1, "", "LMOptimizer"], [153, 1, 1, "", "LMOptimizerAngular"], [154, 1, 1, "", "LeastSquaresOptimizer"], [155, 1, 1, "", "Log10AreaPrior"], [156, 1, 1, "", "MHSampler"], [157, 1, 1, "", "MVNormalProposal"], [158, 1, 1, "", "ParamOrbitAngle"], [159, 1, 1, "", "ParamOrbitEquinoctial"], [160, 1, 1, "", "ParamOrbitRV"], [161, 1, 1, "", "ParamOrbitTranslator"], [162, 1, 1, "", "RPrior"], [163, 1, 1, "", "RVProbability"], [164, 1, 1, "", "RVSigmaProposal"], [165, 1, 1, "", "SGP4LMOptimizer"], [166, 1, 1, "", "VPrior"], [167, 3, 1, "", "circular_guess"], [168, 3, 1, "", "damper"], [169, 3, 1, "", "damper_deriv"], [170, 3, 1, "", "eq2kep"], [171, 3, 1, "", "sample_ball"]], "ssapy.rvsampler.APrior": [[142, 2, 1, "", "__call__"]], "ssapy.rvsampler.AreaPrior": [[143, 2, 1, "", "__call__"]], "ssapy.rvsampler.DirectInitializer": [[144, 2, 1, "", "__call__"]], "ssapy.rvsampler.DistanceProjectionInitializer": [[145, 2, 1, "", "__call__"]], "ssapy.rvsampler.EPrior": [[146, 2, 1, "", "__call__"]], "ssapy.rvsampler.EmceeSampler": [[147, 2, 1, "", "sample"]], "ssapy.rvsampler.EquinoctialExEyPrior": [[148, 2, 1, "", "__call__"]], "ssapy.rvsampler.EquinoctialLMOptimizer": [[149, 2, 1, "", "optimize"]], "ssapy.rvsampler.GEOProjectionInitializer": [[150, 2, 1, "", "__call__"]], "ssapy.rvsampler.GaussianRVInitializer": [[151, 2, 1, "", "__call__"]], "ssapy.rvsampler.LMOptimizer": [[152, 2, 1, "", "optimize"]], "ssapy.rvsampler.LMOptimizerAngular": [[153, 2, 1, "", "optimize"]], "ssapy.rvsampler.LeastSquaresOptimizer": [[154, 2, 1, "", "optimize"], [154, 2, 1, "", "resid"]], "ssapy.rvsampler.Log10AreaPrior": [[155, 2, 1, "", "__call__"]], "ssapy.rvsampler.MHSampler": [[156, 4, 1, "", "acceptanceRatio"], [156, 2, 1, "", "reset"], [156, 2, 1, "", "sample"]], "ssapy.rvsampler.MVNormalProposal": [[157, 2, 1, "", "propose"]], "ssapy.rvsampler.ParamOrbitAngle": [[158, 2, 1, "", "orbit_to_param"], [158, 2, 1, "", "param_to_orbit"]], "ssapy.rvsampler.ParamOrbitEquinoctial": [[159, 2, 1, "", "input_param_translation"], [159, 2, 1, "", "orbit_to_param"], [159, 2, 1, "", "output_covar_translation"], [159, 2, 1, "", "param_to_orbit"]], "ssapy.rvsampler.ParamOrbitRV": [[160, 2, 1, "", "orbit_to_param"], [160, 2, 1, "", "param_to_orbit"]], "ssapy.rvsampler.ParamOrbitTranslator": [[161, 2, 1, "", "fullparam"], [161, 2, 1, "", "get_propkw_from_fullparam"], [161, 2, 1, "", "get_propkw_from_orbit"], [161, 2, 1, "", "input_param_translation"], [161, 2, 1, "", "optimizeparam"], [161, 2, 1, "", "orbit_to_param"], [161, 2, 1, "", "output_covar_translation"], [161, 2, 1, "", "param_to_orbit"]], "ssapy.rvsampler.RPrior": [[162, 2, 1, "", "__call__"]], "ssapy.rvsampler.RVProbability": [[163, 2, 1, "", "__call__"], [163, 2, 1, "", "chi"], [163, 2, 1, "", "lnlike"], [163, 2, 1, "", "lnprior"], [163, 2, 1, "", "lnprob"]], "ssapy.rvsampler.SGP4LMOptimizer": [[165, 2, 1, "", "optimize"]], "ssapy.rvsampler.VPrior": [[166, 2, 1, "", "__call__"]], "ssapy.utils": [[172, 1, 1, "", "LRU_Cache"], [173, 3, 1, "", "catalog_to_apparent"], [174, 3, 1, "", "check_lunar_collision"], [175, 3, 1, "", "cluster_emcee_walkers"], [176, 3, 1, "", "continueClass"], [177, 3, 1, "", "find_all_zeros"], [178, 3, 1, "", "find_extrema_brackets"], [179, 3, 1, "", "find_file"], [180, 3, 1, "", "find_nearest_indices"], [181, 3, 1, "", "gcrf_to_ecef"], [182, 3, 1, "", "gcrf_to_lunar"], [183, 3, 1, "", "gcrf_to_stationary_lunar"], [184, 3, 1, "", "gcrf_to_teme"], [185, 3, 1, "", "get_kernel_cov"], [186, 3, 1, "", "get_normed_weights"], [187, 3, 1, "", "get_times"], [188, 3, 1, "", "iers_interp"], [189, 3, 1, "", "integrate_orbit_best_model"], [190, 3, 1, "", "interpolate_points_between"], [191, 3, 1, "", "isAttributeSafeToTransfer"], [192, 1, 1, "", "lazy_property"], [193, 3, 1, "", "lb_to_tan"], [194, 3, 1, "", "lb_to_tp"], [195, 3, 1, "", "lb_to_unit"], [196, 3, 1, "", "moonPos"], [197, 3, 1, "", "newton_raphson"], [198, 3, 1, "", "norm"], [199, 3, 1, "", "normSq"], [200, 3, 1, "", "normed"], [201, 3, 1, "", "ntw_to_r"], [202, 3, 1, "", "num_wraps"], [203, 3, 1, "", "regularize_default"], [204, 3, 1, "", "resample"], [205, 3, 1, "", "rv_to_ntw"], [206, 3, 1, "", "sample_points"], [207, 3, 1, "", "sigma_points"], [208, 3, 1, "", "subsample_high_lnprob"], [209, 3, 1, "", "sunPos"], [210, 3, 1, "", "tan_to_lb"], [211, 3, 1, "", "teme_to_gcrf"], [212, 3, 1, "", "tp_to_lb"], [213, 3, 1, "", "tp_to_unit"], [214, 3, 1, "", "unitAngle3"], [215, 3, 1, "", "unit_to_lb"], [216, 3, 1, "", "unit_to_tp"], [217, 3, 1, "", "unscented_transform_mean_covar"], [218, 3, 1, "", "xyz_to_lb"], [219, 3, 1, "", "xyz_to_tp"]], "ssapy.utils.LRU_Cache": [[172, 2, 1, "", "__call__"], [172, 2, 1, "", "resize"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"], "4": ["py", "attribute", "Python attribute"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function", "4": "py:attribute"}, "terms": {"": [1, 3, 4, 6, 8, 17, 18, 19, 21, 23, 26, 27, 28, 31, 39, 40, 56, 103, 105, 107, 108, 109, 113, 114, 115, 118, 120, 125, 126, 131, 153, 163, 176, 185, 220, 221, 223], "0": [3, 4, 6, 16, 19, 21, 24, 30, 34, 38, 39, 42, 58, 61, 105, 106, 107, 108, 113, 114, 117, 127, 128, 135, 136, 138, 143, 145, 148, 149, 153, 155, 163, 165, 167, 173, 189, 201, 221, 223], "00": [17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 80, 91, 107, 108, 109, 113, 114, 115, 117, 122, 136, 138, 163, 173, 184, 187, 188, 196, 209, 211], "000": 187, "00000000e": 136, "0001": [149, 165], "004": 223, "01": [17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 80, 91, 105, 107, 108, 109, 113, 114, 115, 117, 122, 136, 138, 153, 163, 173, 184, 187, 188, 196, 209, 211], "02": 136, "02955321": 135, "04174749": 136, "04444444": 135, "04948333e": 136, "05": [16, 149, 165], "054": 223, "05545233": 136, "05555556": 136, "05660580e": 136, "06": [17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 80, 91, 107, 108, 109, 113, 114, 115, 117, 122, 135, 138, 149, 152, 153, 163, 173, 184, 188, 196, 209, 211], "06210459e": 136, "07": [149, 153], "0794156": 135, "08": [113, 152, 165], "08333333": 136, "08333333e": 136, "09": [37, 135, 149, 152, 153], "1": [3, 4, 6, 18, 27, 28, 45, 46, 47, 92, 104, 106, 114, 115, 117, 135, 136, 140, 145, 152, 153, 155, 163, 167, 169, 171, 175, 187, 189, 197, 207, 217, 221], "10": [105, 107, 135, 208, 221], "100": [16, 105, 113, 114, 117, 165, 177, 197, 204], "1000": [36, 37, 134, 147, 156, 174], "10000": 37, "101": 203, "102": 203, "1024": 172, "106": 221, "11": 224, "11636326e": 136, "12": [16, 147], "120": 131, "12248713e": 136, "125": 136, "12500000e": 136, "12765911e": 136, "13": [39, 223], "13418265e": 136, "13973588e": 136, "14": [221, 223], "1475": 136, "15": 138, "15583159e": 136, "15741828e": 136, "15818748": 136, "16": [114, 197], "16586733e": 136, "17187500e": 136, "180": 61, "19": 223, "19392617e": 136, "1973": 107, "1980": [17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 80, 91, 107, 108, 109, 113, 114, 115, 117, 122, 138, 163, 173, 184, 188, 196, 209, 211], "19804205158855578": 34, "1995": 105, "1d": [185, 203, 204], "1e": [37, 113, 135, 136, 139, 149, 152, 153, 165], "2": [1, 2, 3, 4, 6, 7, 8, 16, 34, 39, 41, 46, 49, 59, 60, 91, 98, 105, 108, 113, 114, 121, 135, 136, 140, 143, 153, 163, 189, 197, 221], "20": [49, 61, 136], "200": 130, "2001": 105, "2010": 147, "2012": 175, "2025": 187, "20757750e": 136, "21542482e": 136, "2159": 61, "2190": 61, "22": [189, 223], "22427600e": 136, "230": [3, 105], "236450565": [145, 150, 151], "23744900e": 136, "23810954": 136, "23931281": 136, "248": 105, "25": [42, 136], "250": 189, "25000000e": 136, "2592000": [2, 9], "26": 221, "28468239e": 136, "2d": [108, 204], "2fod": 64, "2fodobjectsmeasurementformatsandmeasurementtyp": 64, "2nd": [203, 204], "3": [1, 2, 3, 4, 6, 7, 8, 16, 18, 19, 23, 27, 28, 29, 31, 32, 39, 40, 59, 60, 98, 105, 107, 108, 109, 113, 114, 115, 118, 120, 121, 122, 125, 126, 136, 151, 184, 190, 201, 205, 211, 221, 223, 224], "30": [2, 9, 131, 187, 189], "307": [145, 150, 151], "3112409": 135, "3125": 136, "33715757e": 136, "34247977e": 136, "34286472e": 136, "34627999e": 136, "3490658503988659": [21, 30], "35093014e": 136, "360": 61, "36450565": 41, "375": 136, "37500000e": 136, "38650309e": 136, "398600441800000": [4, 24, 108, 113, 114], "3d": [29, 131], "3e": [114, 197], "4": [6, 16, 39, 136, 141], "40": [61, 131], "40928614e": 136, "4216417": [145, 150, 151], "42164172": 41, "44354858": 135, "45": 131, "459": 3, "465": 136, "46599995993046": [145, 150, 151], "46734519": 135, "46876808e": 136, "473": 105, "484": 105, "48493031e": 136, "4th": 134, "5": [2, 16, 58, 131, 136, 155, 207, 217], "50": [61, 134, 144, 147], "500": [131, 147, 156], "50000000e": 136, "511": 68, "54694165": 135, "55056738e": 136, "55555556e": 136, "56486545": 136, "57": 105, "57622117e": 136, "57792004e": 136, "577970": 172, "58860916e": 136, "59773699e": 136, "6": [35, 37, 39, 115, 127, 128, 135, 136, 144, 147, 149, 150, 151, 152, 153, 154, 156, 157, 163, 165, 167, 203, 208], "60035736e": 136, "61": 221, "61197575e": 136, "6378137": 117, "64730202e": 136, "65": 136, "66056303": 136, "66726087e": 136, "69179898e": 136, "7": [3, 118, 120, 125, 126, 131, 136, 139], "70": 136, "70351067": 136, "72713852e": 136, "75": 131, "75000000e": 136, "75898578e": 136, "75975961": 136, "77448579e": 136, "7777777777777775e": 153, "7777777777777776e": 153, "79": 221, "79101371e": 136, "7th": 135, "8": [16, 113, 131, 136, 221, 223, 224], "80": 221, "81387331e": 136, "82860628": 135, "83556997e": 136, "84783876e": 136, "862420": 223, "86400": [2, 30], "87500000e": 136, "87848278e": 136, "8th": [135, 136], "9": [3, 6, 135, 136], "90": [131, 193], "90957534e": 136, "91286888e": 136, "92": 221, "92465628": 136, "96970214e": 136, "99016621e": 136, "A": [8, 30, 36, 38, 40, 47, 62, 72, 74, 77, 88, 101, 115, 132, 135, 147, 157, 163, 172, 180, 187, 220, 223], "As": [37, 224], "At": 221, "But": [37, 221], "By": [108, 221, 223], "For": [17, 18, 23, 26, 27, 28, 31, 37, 48, 108, 134, 139, 176, 221, 223], "If": [17, 18, 19, 21, 23, 26, 27, 28, 29, 30, 31, 34, 35, 41, 42, 46, 62, 80, 96, 105, 107, 108, 109, 113, 114, 115, 117, 122, 131, 138, 143, 144, 146, 148, 155, 163, 173, 179, 184, 188, 189, 193, 196, 197, 203, 208, 209, 211, 217, 221], "In": [45, 46, 48, 138, 221], "It": [163, 207, 217, 220, 221], "No": 40, "Of": [139, 220], "On": [105, 221], "One": [38, 40, 221], "The": [2, 3, 6, 17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 34, 35, 36, 37, 39, 41, 42, 46, 47, 48, 59, 60, 62, 70, 71, 72, 73, 74, 75, 76, 77, 96, 98, 101, 102, 105, 107, 108, 109, 115, 130, 131, 142, 143, 145, 146, 147, 148, 150, 155, 156, 157, 162, 163, 166, 167, 171, 172, 187, 189, 190, 193, 206, 220, 221, 222, 223], "Their": 40, "Then": [221, 224], "There": [207, 221], "These": [1, 45, 48, 221, 224], "To": [221, 223], "Will": 128, "__call__": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 34, 35, 41, 42, 59, 60, 142, 143, 144, 145, 146, 148, 150, 151, 155, 162, 163, 166, 172], "_e": [9, 10, 59], "_t": 2, "_usetem": 108, "a_orbit": 105, "abc": [133, 137, 238], "aberr": [17, 18, 26, 27, 28, 173], "abid": 223, "about": [21, 36, 37, 221], "abov": [21, 30, 61, 208], "absolut": 197, "absorb": [3, 6], "absstep": [149, 152, 153, 154, 165], "abstract": 133, "accel": [1, 2, 3, 4, 5, 6, 7, 59, 60, 134, 135, 136, 139, 141, 223, 231], "accelconstntw": 225, "acceldrag": 225, "accelearthrad": 225, "acceler": [0, 1, 2, 3, 4, 6, 7, 59, 60, 61, 134, 135, 136, 139, 140, 141], "accelharmon": 231, "accelkepl": 225, "accelntw": 1, "accelprod": 225, "accelsolrad": 225, "accelsum": 225, "accelthirdbodi": 231, "accept": [147, 156, 221], "acceptanceratio": 156, "accident": 221, "accommod": 56, "accord": [46, 206], "accordingli": 115, "account": [17, 18, 26, 27, 28, 36], "accur": [17, 18, 26, 27, 28, 107], "accuraci": [134, 135, 136], "achiev": [115, 204], "across": 105, "action": 221, "activ": 105, "activest": 172, "actual": [17, 18, 26, 27, 28, 39], "ad": [36, 37, 40, 46, 47, 144, 172, 176, 221], "adapt": 135, "add": [7, 36, 37, 38, 40, 56, 115, 141, 221], "add_tracklet": 37, "addit": [37, 38, 40, 45, 46, 47, 48, 56, 141], "addition": [6, 27, 39], "addto": [36, 38, 40], "adec": 173, "adjust": [38, 135], "administr": 221, "advanc": [221, 223], "advantag": 221, "advisor": 223, "affect": 37, "affin": [147, 223], "after": [30, 144, 221, 224], "again": [172, 221], "against": 221, "agi": 64, "agnost": 108, "agre": [37, 223], "al": 175, "albedo": [16, 20, 25, 33], "albedo_back": [16, 20, 25], "albedo_earth": [16, 20], "albedo_front": [16, 25, 33], "albedo_moon": [16, 25], "alexx": 223, "algorithm": [26, 105, 135, 147, 175], "alia": 163, "align": 171, "all": [23, 31, 32, 36, 45, 46, 48, 52, 53, 72, 74, 79, 96, 105, 115, 131, 177, 191, 221, 223], "allow": [221, 223], "almost": [17, 18, 26, 27, 28], "alon": 221, "along": [145, 163, 201, 205], "alpha": 112, "alphabet": 223, "alreadi": [40, 172, 221], "also": [2, 27, 28, 29, 39, 40, 57, 108, 179, 221, 223], "alt": [17, 26, 107], "altaz": 26, "altern": [1, 224], "although": [108, 221], "altitud": [17, 21, 26, 30, 107], "aluminum": [3, 6], "alwai": [17, 18, 26, 27, 28, 37, 193, 221, 223], "amean": 142, "amount": 30, "an": [3, 17, 18, 26, 27, 28, 36, 37, 38, 39, 40, 45, 46, 48, 64, 70, 105, 107, 108, 109, 113, 115, 131, 132, 147, 150, 151, 163, 171, 178, 190, 191, 192, 203, 204, 206, 221, 222, 223, 224], "anaconda": 224, "analysi": [37, 220], "ang": 202, "angl": [3, 17, 18, 26, 27, 28, 29, 32, 37, 38, 39, 40, 45, 46, 48, 52, 53, 88, 113, 131, 163, 194, 202, 212, 213, 214, 216, 219], "angular": [45, 46, 48, 108, 163], "angularmomentum": 108, "ani": [7, 17, 18, 26, 27, 28, 37, 45, 46, 48, 71, 75, 76, 104, 108, 176, 203, 221], "annual": 173, "anomali": [80, 91, 108, 189], "anoth": [115, 191, 221], "ansi": 220, "antenna": [3, 6], "anyth": 221, "apart": 187, "apoapsi": 108, "appar": 173, "append": [62, 71, 102, 179], "append_data": 71, "appli": [32, 45, 46, 163, 173, 184, 211], "applic": [39, 48], "appreci": 221, "approach": 40, "appropri": 45, "approv": 221, "approxim": [26, 37, 38, 40, 47, 107, 209], "aprior": [163, 239], "apt": [221, 224], "ar": [1, 2, 3, 6, 18, 21, 27, 28, 30, 36, 37, 39, 40, 45, 46, 48, 52, 53, 61, 80, 88, 91, 104, 107, 108, 115, 131, 134, 144, 147, 150, 151, 156, 163, 172, 189, 191, 203, 204, 207, 220, 221, 222, 223, 224], "ara": 173, "arary_lik": 39, "arbitrari": 193, "arbitrarili": 46, "arc": [39, 45, 46, 47, 48, 51, 54, 55, 144, 145, 150, 163, 167, 223], "arc0": 39, "architectur": 221, "arcsec": 138, "arcsecond": 173, "area": [2, 3, 6, 45, 48, 143, 155, 189], "area_panel": [16, 20, 25, 33], "areaprior": 239, "aren": 221, "arg": [62, 70, 71, 72, 73, 74, 75, 76, 77, 101, 102, 110, 111, 112, 141, 159, 160, 172, 190], "argument": [7, 17, 18, 26, 27, 28, 37, 45, 48, 80, 91, 108, 139, 141, 189, 197, 221], "armstrong": 223, "around": [2, 135, 151, 157, 171, 202, 206, 207, 217], "arr": [15, 198, 199, 200], "arrai": [17, 18, 23, 26, 27, 28, 31, 37, 39, 56, 96, 104, 107, 108, 109, 115, 117, 118, 120, 121, 122, 125, 126, 131, 135, 136, 147, 156, 157, 163, 184, 185, 187, 188, 189, 190, 196, 203, 204, 207, 209, 211], "array_lik": [1, 2, 3, 4, 6, 7, 17, 18, 23, 26, 27, 28, 29, 31, 32, 35, 37, 38, 39, 40, 44, 45, 46, 48, 52, 53, 56, 57, 59, 60, 105, 107, 108, 109, 113, 114, 115, 117, 118, 120, 121, 122, 125, 126, 127, 128, 144, 149, 150, 151, 152, 153, 154, 156, 157, 163, 165, 167, 171, 173, 188, 189, 193, 196, 201, 205, 206, 207, 208, 209, 210, 217], "array_link": [28, 32, 210], "arriv": [17, 18, 26, 27, 28], "ascend": [80, 91, 108, 189], "ascens": [27, 28, 29, 32, 55, 80, 91, 108, 173, 189, 193, 210], "ascii": 138, "asigma": 142, "ask": 221, "assert": 151, "assess": 37, "assign": [36, 37, 43], "associ": 39, "assum": [3, 32, 48, 145, 150, 163, 167, 203, 217, 221, 224], "astrodynam": 220, "astronomi": 223, "astropi": [17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 40, 45, 46, 48, 68, 80, 88, 107, 108, 109, 113, 114, 115, 117, 121, 122, 125, 126, 138, 163, 173, 184, 188, 196, 209, 211, 220, 223], "atmospher": 2, "attempt": 177, "attribut": [45, 48, 113, 135, 136, 191, 192], "autobuild": 221, "automat": [131, 135, 191, 221, 223], "automodapi": 221, "avail": [14, 61, 108, 223, 241], "avoid": [52, 53, 241], "awai": [3, 6, 26], "awar": 241, "ax": [18, 119, 131], "axi": [1, 80, 91, 108, 131, 142, 171, 189], "az": [17, 26], "azim": 131, "azimuth": [17, 26, 131, 194, 212, 213, 216, 219], "b": [22, 105, 180, 193, 194, 210, 212], "b3": [88, 89], "b3line": 64, "b3ob": [64, 79], "b7": 135, "b8": 136, "back": [1, 221], "backend": 223, "backport": [221, 223], "backup": 221, "backward": [47, 57], "ball": 171, "ballist": [80, 91], "base": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 34, 35, 36, 37, 38, 39, 40, 41, 42, 59, 60, 61, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 172, 176, 192, 223], "baselin": [46, 47], "basic": 132, "bayesian": [105, 203, 204], "bcen": [193, 210], "becaus": 221, "becom": [108, 221], "been": [48, 224], "befor": [30, 32, 221], "begin": 21, "behav": 176, "behind": 221, "being": [39, 138, 221], "believ": 220, "below": [18, 27, 28, 208, 220, 241], "besid": 7, "best": [134, 139], "beta": [112, 221], "better": 37, "between": [18, 36, 37, 41, 105, 107, 114, 138, 142, 143, 145, 146, 148, 155, 162, 166, 167, 177, 190, 194, 212, 213, 214, 216, 219], "big": 39, "binari": [104, 224], "binaryselectorparam": [105, 233], "bit": 140, "bitbucket": 221, "blank": 221, "block": [105, 176], "bodi": [4, 9, 10, 11, 12, 13, 14, 59, 60, 108, 113, 114, 223], "bool": [27, 30, 34, 35, 36, 37, 39, 41, 42, 45, 46, 47, 48, 57, 96, 107, 115, 131, 138, 143, 144, 146, 148, 155, 163, 173, 201, 204, 206, 207, 209], "boolean": [37, 207], "both": [1, 18, 27, 28, 39, 97, 189, 220, 221], "bother": 40, "bound": [52, 53, 107, 177], "bracket": 178, "branch": 223, "break": 221, "brew": 224, "bring": 220, "broadcast": [18, 27, 28, 108, 135], "broken": 221, "browser": 221, "brute": 21, "bug": [221, 223], "bugfix": 221, "build": [37, 221, 222, 224], "built": [46, 147, 176], "builtin": 221, "bulg": 2, "burn": 1, "button": 221, "c": [22, 136, 206, 207, 217, 224], "cach": 172, "calcul": [17, 18, 23, 26, 27, 28, 31, 118, 120, 138, 163, 187, 189], "caleb": 223, "call": [1, 5, 145, 172], "callabl": [8, 9, 10, 11, 12, 13, 147, 156, 197], "can": [6, 7, 21, 37, 39, 46, 105, 108, 131, 144, 220, 221, 223, 224], "cannot": [221, 224], "capabl": 220, "captur": 221, "carlin": 105, "carlo": [105, 223], "carri": 203, "cartesian": [23, 108, 184, 189, 201, 211], "case": [6, 27, 37, 45, 46, 48, 108, 204, 221, 223], "catalog": [88, 89, 98, 173], "caus": 221, "cd": [2, 48, 221], "celesti": [8, 68], "center": [19, 26, 40, 58, 145, 193, 210], "central": [4, 108, 113, 114, 171, 201, 205, 207, 217], "certain": [220, 221], "certainli": 221, "chain": [105, 115, 127, 128, 147, 156, 175, 208, 223], "challeng": [52, 53], "chanc": 221, "chang": [1, 28, 29, 32, 113, 135, 138, 193, 221, 223], "charact": 221, "character": 177, "check": [21, 37, 70, 134, 139, 221], "checkout": 221, "chi": [34, 35, 39, 41, 42, 46, 142, 143, 146, 148, 155, 162, 163, 166, 168, 169], "chi2": [39, 40], "chib": 105, "chilik": 163, "chiprior": 163, "choic": 105, "choleski": [35, 48], "chosen": [45, 193], "chrome": 221, "chronolog": 47, "churn": 223, "ci": [221, 223], "cinvcholfac": [35, 48], "circular": 167, "circvelocityprior": 229, "cislunar": 220, "cl": [141, 176], "class": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 34, 35, 36, 37, 38, 39, 40, 41, 42, 59, 60, 61, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 172, 176, 191, 192], "classmethod": [61, 108], "clean": 221, "click": 221, "clone": 224, "close": [145, 167, 220, 221], "cluster": 105, "cm": 135, "co": [27, 28, 29, 32, 39, 193, 221], "coat": [3, 6], "code": [2, 28, 37, 172, 176, 221], "codecov": 221, "coeffici": [2, 3, 6, 8, 61, 80, 91], "cof": 61, "col": 96, "collect": [21, 115], "column": [44, 62, 96, 101, 144, 145, 147, 150, 151, 156, 163, 167, 203], "column_nam": 66, "com": [64, 172], "combin": 221, "combined_data": 62, "come": [61, 223], "command": [221, 224], "commerci": 220, "commit": 221, "common": [32, 220], "commun": 223, "compar": 36, "comparison": 37, "compil": 224, "complain": 221, "complet": [21, 39, 40, 114, 144, 220, 221], "complex": 3, "compli": 221, "complianc": 221, "compliant": [221, 223], "compon": [3, 6, 18, 19, 89, 108], "comput": [6, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 39, 55, 61, 105, 133, 135, 138, 196, 207, 209, 214, 217, 221, 223], "concept": 223, "concret": [221, 223], "condit": 105, "confirm": 37, "conflict": 221, "conform": 221, "congruent": 28, "conjug": 105, "conjunct": 223, "consid": [21, 30, 37, 39, 57, 221], "consider": [36, 223], "consist": 37, "constant": [1, 4, 108, 113, 114, 140, 163, 223], "constantli": 221, "construct": [61, 108, 141], "constructor": 39, "contain": [37, 39, 44, 45, 46, 47, 48, 98, 106, 134, 135, 136, 139, 189, 221, 223], "continu": [37, 223], "continueclass": 191, "contribut": 39, "contributor": 223, "conveni": [1, 79, 221], "convent": 217, "converg": [134, 139], "convers": [189, 223], "convert": [29, 32, 52, 53, 68, 96, 108, 173, 184, 193, 194, 195, 201, 205, 210, 211, 212, 213, 215, 216, 218, 219], "coordin": [1, 19, 107, 108, 131, 184, 193, 194, 195, 201, 205, 210, 211, 212, 213, 215, 216, 218, 219, 223], "copi": [40, 115, 221], "copybutton": 221, "core": 221, "corner": 127, "correct": [17, 18, 26, 27, 28, 173, 221], "correlate_track": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 223], "correspond": [17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 34, 35, 36, 39, 41, 42, 43, 48, 57, 80, 107, 108, 109, 113, 114, 115, 117, 122, 131, 138, 143, 148, 155, 163, 167, 173, 184, 188, 189, 194, 196, 206, 207, 209, 210, 211, 212, 213, 216, 217, 219, 221, 223], "cosin": [17, 18, 26], "could": [36, 38, 39, 43, 138, 221], "coupl": [136, 221], "cours": 220, "cov": [157, 164, 185], "covar": [39, 40, 159, 161, 217], "covari": [35, 39, 40, 48, 157, 185, 206, 207, 217], "cover": 221, "coverag": 223, "cr": [2, 3, 6, 48], "creat": [80, 128, 131, 221], "creator": 223, "criterion": 21, "cross": [1, 115, 189, 201, 205], "crucial": 221, "csv": [62, 77, 96, 101, 102], "csv_file": [63, 66], "current": [40, 43, 62, 105, 115, 156, 179, 221], "curv": 223, "custom": 131, "customiz": 223, "cylind": 6, "cylindr": 30, "d": [39, 112, 113, 171, 195], "d1": 113, "d11": 113, "d12": 113, "d13": 113, "d2": 113, "d21": 113, "d22": 113, "d23": 113, "d3": 113, "d31": 113, "d32": 113, "d33": 113, "d_i": 115, "d_j": 115, "dai": [2, 9, 134, 135, 136, 138, 187, 188, 189], "damp": [45, 46, 163, 168, 169], "dan": 223, "danchicktwoposorbitsolv": 235, "data": [37, 38, 39, 40, 44, 49, 56, 57, 62, 64, 71, 73, 74, 75, 76, 88, 92, 96, 97, 101, 108, 113, 115, 131, 185, 192, 223], "data_": [87, 95], "data_i": 163, "datadir": 179, "datafram": [96, 101, 102], "date": [107, 189, 221], "daytim": 21, "dd": [39, 189], "ddec": [39, 55, 56], "dead": 37, "debian": 224, "debug": 37, "dec": [27, 28, 29, 32, 39, 45, 46, 47, 48, 55, 56, 145, 150, 153, 163, 167, 173, 193], "decid": 221, "declin": [27, 28, 29, 32, 55, 173, 193, 210], "decompos": 19, "decomposit": 207, "decor": [176, 191], "decrat": [27, 28, 29, 32, 153], "decreas": [21, 172], "dedic": 221, "def": [172, 176], "default": [2, 3, 4, 6, 8, 9, 14, 37, 38, 39, 40, 45, 46, 47, 56, 105, 108, 113, 114, 117, 131, 141, 145, 163, 167, 172, 187, 193, 197, 203, 204, 221], "defaultkw": [2, 3, 6], "defin": [7, 45, 46, 48, 105, 115, 191, 201, 205, 220], "definit": [140, 176, 207], "deg": 56, "degre": [59, 107, 121, 131], "delai": [17, 18, 26, 27, 28], "delet": [37, 221], "delimit": [62, 77, 96, 101, 102], "delta": 203, "denorm": 61, "densiti": 2, "depend": [2, 105, 221, 241], "depends_on": 221, "deploy": 223, "deprec": 28, "deriv": [27, 115, 145, 169, 197], "derivnum": 169, "describ": [45, 46, 48], "descript": [18, 221], "descriptive_branch_nam": 221, "descriptive_messag": 221, "descriptive_message_of_this_particular_commit": 221, "desir": [23, 31, 141, 147, 156], "destin": [221, 223], "destruct": 172, "detail": [2, 6, 18, 21, 27, 28, 220, 221, 223], "detect": [36, 37, 38, 39, 40, 43, 47, 55], "determin": [2, 19, 105, 113, 131, 223], "develop": [220, 221, 222, 223, 224], "deviat": [34, 39, 42, 142, 143, 145, 146, 148, 150, 151, 155, 162, 164, 166, 171], "df": [81, 93, 101, 102], "di": 37, "dict": [2, 3, 6, 7, 21, 30, 37, 45, 46, 48, 62, 96, 101, 139, 189], "dictionari": [62, 74, 96, 101, 189], "didn": 221, "diff": 221, "differ": [3, 6, 36, 37, 38, 40, 108, 115, 188, 221, 235], "difficult": 221, "dimens": [17, 18, 23, 26, 27, 28, 31, 108, 135, 203, 204, 207], "dimension": [108, 147], "dimensionless": [34, 42, 113], "dir_path": 78, "direct": [1, 3, 6, 17, 18, 26, 105, 113, 145, 223, 224], "directiniti": 239, "directli": [3, 6, 7, 26, 138, 144, 176, 221], "directori": [62, 179, 221], "dirichlet": 105, "disagr": 37, "discard": [147, 156], "discuss": 221, "dispers": [145, 150, 151], "displai": 131, "distanc": [19, 34, 35, 41, 42, 142, 143, 145, 146, 148, 155, 162, 166], "distanceprojectioniniti": 239, "distinct": [21, 89, 105], "distribut": [105, 147, 150, 151, 157, 164, 223], "distutil": 224, "diurnal": [2, 18, 173], "diverg": 221, "dl": 58, "dnf": 224, "do": [17, 18, 26, 27, 28, 37, 46, 108, 138, 163, 201, 221, 223], "doc": 221, "docstr": 108, "document": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 34, 35, 36, 37, 38, 39, 40, 41, 42, 45, 48, 59, 60, 61, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 135, 136, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 172, 220, 224], "docutil": 221, "doe": [29, 32, 40, 176, 217], "doesn": [38, 221], "don": [17, 18, 26, 27, 28, 37, 108, 173, 221], "done": [1, 221], "dot": 42, "doubl": 61, "down": [3, 175], "download": 221, "dpi": 130, "dpmdec": [39, 55, 56], "dpmra": [39, 55, 56], "dra": [39, 55, 56], "drag": [2, 80, 91], "draw": [105, 115], "draw_orbit": 115, "drop": 96, "drop_nan": 96, "dt": [21, 39], "dtype": [62, 96, 101, 102, 104, 106], "due": [2, 3, 6, 17, 18, 26, 27, 28, 59, 60], "duplic": 144, "durat": [1, 21, 30, 187, 189], "dure": [21, 47, 173], "dut1": 188, "dxdg": 110, "dynam": [80, 91, 172], "e": [3, 4, 9, 10, 17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 68, 80, 91, 105, 107, 108, 109, 113, 114, 115, 117, 122, 138, 145, 146, 149, 163, 165, 167, 172, 173, 184, 188, 189, 193, 196, 203, 207, 209, 211, 217, 220, 221, 223], "e1": 113, "e2": 113, "e3": 113, "e303": 221, "e501": 221, "each": [36, 37, 40, 47, 57, 105, 115, 147, 156, 163, 190, 203, 204, 221, 222, 223], "earth": [3, 4, 6, 9, 14, 17, 19, 21, 26, 61, 68, 107, 108, 113, 114, 117, 131, 141, 145, 220, 223], "earth_radiu": 19, "earthobserv": [17, 21, 26, 30, 108, 234], "earthorient": 226, "easi": [221, 223], "easier": [36, 221], "easiest": 221, "easili": [221, 224], "east": 107, "ebert": 223, "eccentr": [80, 91, 108, 146, 189], "eccentricanomali": 108, "ecef": 131, "ed": [203, 204], "edit": 221, "edward": 223, "effect": [61, 115], "effici": [17, 18, 23, 26, 27, 28, 31, 105, 147], "egm": 61, "egm2008": [14, 61], "egm84": [14, 61], "egm96": [14, 61], "ei": [108, 148], "eigenvector": 207, "either": [6, 61, 96, 108, 156, 189], "element": [39, 45, 46, 48, 80, 91, 105, 108, 138, 189], "elev": [107, 131], "elimin": 221, "ellipsoid": [26, 223], "ellipt": 220, "embed": 135, "emce": [147, 175, 223], "emceesampl": [208, 239], "emean": 146, "emiss": [17, 18, 26, 27, 28], "emit": 3, "emphasi": 221, "empti": [21, 131], "en": 221, "enabl": [1, 115], "end": 221, "energi": 108, "enforc": [221, 223], "enlarg": 117, "ensembl": 223, "ensur": 221, "entir": 40, "entri": [37, 79], "enumer": 223, "environ": 241, "ep": [114, 197], "epel": 224, "epoch": [40, 45, 48, 115, 158, 161, 163], "epoch_particl": 115, "eprior": 239, "eq": 170, "equal": [48, 105, 187], "equatori": 150, "equinocti": [38, 39, 40, 45, 46, 48, 108, 148], "equinoctialel": 108, "equinoctialexeyprior": 239, "equinoctiallmoptim": 239, "equival": [18, 176], "erd": 223, "erfa": 223, "err_i": 163, "error": [135, 221], "esigma": 146, "essenti": [163, 224], "estim": [26, 135, 223], "et": 175, "etc": [37, 221, 223], "evalu": [2, 3, 4, 6, 7, 39, 59, 60, 68, 108, 113, 115, 172, 178, 192, 207, 217], "even": [21, 108, 221], "eventu": 37, "everi": [21, 37, 138, 221], "everyth": [37, 193, 194, 195, 212, 213, 215, 216, 218, 219, 221], "ex": [108, 148], "exact": [17, 18, 26, 27, 28], "exactli": [18, 27, 28], "exampl": [38, 172, 176, 221, 223], "exce": 208, "exclud": [78, 208], "execut": 241, "exempt": 221, "exist": [37, 70, 102, 221], "exp": 41, "expans": [61, 140], "expect": 221, "expens": 105, "experiment": 221, "explain": [37, 220], "explicit": 176, "explicitli": [18, 27, 28, 128, 191, 241], "ext": 179, "extend": [46, 221], "extens": 221, "extra": [37, 45, 46, 48], "extra_accel": 141, "extract": 44, "extrema": 178, "f": [112, 177, 178, 197, 207, 217], "f401": 221, "factor": [5, 35, 46, 47, 92, 117, 131], "fail": 221, "fals": [16, 27, 34, 35, 36, 37, 39, 41, 42, 45, 46, 47, 48, 50, 52, 57, 70, 78, 96, 107, 108, 115, 118, 120, 125, 126, 131, 138, 142, 143, 144, 146, 148, 155, 162, 163, 166, 173, 175, 201, 204, 206], "familiar": 221, "fast": [107, 172, 209, 223], "faster": [140, 223], "favor": 148, "featur": [220, 221, 222, 223], "feel": [37, 221], "fetch": 221, "few": [134, 135, 136, 140, 221], "fewer": 208, "fget": 192, "field": [39, 45, 46, 47, 48, 56, 77], "fig": [127, 128], "figsiz": [118, 120, 125, 126, 131], "figur": [127, 128, 129, 130, 131], "file": [61, 62, 70, 71, 72, 73, 74, 75, 76, 77, 79, 88, 89, 96, 97, 98, 101, 102, 105, 108, 130, 179, 221, 224], "file_nam": [62, 69, 77, 79, 82, 96, 101, 102], "file_that_could_not_be_merg": 221, "filenam": [61, 70, 71, 72, 73, 74, 75, 76, 77, 88, 98, 179], "filename_": [72, 73, 74, 86, 87, 94, 95], "files_onli": 78, "files_to_be_part_of_commit": 221, "files_to_be_part_of_the_commit": 221, "fill": 172, "filter": 40, "find": [21, 36, 105, 132, 167, 177, 178, 179, 197, 224], "find_pass": 30, "firefox": 221, "first": [1, 17, 18, 26, 27, 28, 37, 45, 46, 48, 57, 105, 108, 145, 147, 150, 156, 167, 172, 197, 203, 221], "fit": [37, 38, 39, 40, 45, 46, 47, 48, 56, 105, 149, 152, 153, 154, 163, 165, 223], "fit_arc_blind": [45, 48], "fit_kw": [149, 152, 153, 154, 165], "fitonli": [37, 52], "fix": [1, 68, 161, 207, 221, 223], "fixed_dimens": 207, "flag_inconsist": 37, "flake8": 221, "flam0": 112, "flat": [2, 3, 6], "float": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 47, 56, 59, 60, 61, 80, 91, 105, 107, 108, 109, 113, 114, 115, 117, 122, 131, 134, 135, 136, 138, 142, 143, 145, 146, 148, 150, 151, 155, 162, 163, 164, 166, 173, 184, 188, 189, 196, 197, 207, 208, 209, 210, 211, 217], "float64": [104, 106], "floor": 56, "fname": 98, "fold": 48, "follow": [18, 27, 28, 175, 221, 222, 223, 224], "foo": 176, "forc": [4, 21, 221, 223], "forget": 221, "fork": 221, "format": [23, 64, 96, 138, 187, 189], "formatt": 221, "former": 37, "formerli": 223, "forum": 221, "forward": [37, 47, 57], "found": [6, 30, 39, 220, 221], "four": 61, "fprime": 197, "fracstep": [149, 152, 153, 154, 165], "fraction": 3, "frame": [1, 2, 3, 6, 23, 68, 88, 107, 108, 131, 138, 223], "framework": 221, "frankenstein": 221, "free": [220, 221], "freeflyer": 220, "freq": [187, 189], "frequenc": [187, 189], "from": [3, 6, 19, 21, 26, 35, 36, 37, 39, 40, 44, 61, 64, 73, 74, 80, 88, 96, 97, 105, 108, 115, 127, 135, 138, 145, 150, 157, 162, 167, 172, 173, 178, 203, 204, 208, 217, 221, 223, 224, 235], "fromegm": 61, "fromequinoctialel": 108, "fromkeplerianel": 108, "fromkozaimeankeplerianel": 108, "fromtab": 61, "fromtl": 108, "fromtletupl": 108, "fsigma": 39, "full": [3, 6, 140, 241], "fullparam": 161, "function": [1, 5, 8, 21, 35, 43, 45, 46, 48, 64, 79, 80, 91, 105, 131, 133, 145, 163, 168, 169, 172, 176, 177, 178, 189, 197, 207, 217, 221, 223], "further": 221, "fuse": 115, "fusion": 223, "futur": [39, 132], "g": [23, 31, 108, 110, 112, 115, 189, 203, 207, 217, 221, 223], "gain": [3, 6], "gate": 39, "gaussian": [34, 35, 38, 40, 42, 48, 142, 143, 146, 148, 150, 151, 155, 162, 166, 206], "gaussian_approxim": [38, 40], "gaussianrviniti": 239, "gaussprior": 229, "gausstwoposorbitsolv": 235, "gcc": 224, "gcr": [68, 184, 211], "gcrf": [2, 3, 6, 8, 9, 10, 11, 12, 13, 19, 39, 40, 107, 108, 131, 138, 163, 196, 209], "gener": [108, 115, 144, 147, 150, 151, 156, 157, 164, 203, 220, 221], "geo": [134, 135, 136, 150, 220], "geocentr": 68, "geodet": [23, 107], "geographiclib": 61, "geometr": [29, 32, 46, 47], "geomtric": 46, "geoprojectioniniti": 239, "geostationari": 220, "geosynchron": 220, "get": [14, 38, 40, 77, 97, 107, 109, 115, 185, 221, 223], "get_linked_track_indic": 104, "get_propkw_from_fullparam": 161, "get_propkw_from_orbit": 161, "get_unlinked_track_indic": 104, "getrv": [107, 109], "gfortran": 224, "gibb": 105, "gill": [2, 6], "git": [223, 224], "github": [221, 223], "gitlab": 224, "give": [38, 43, 47, 57, 105, 201, 205], "given": [3, 8, 9, 10, 11, 12, 13, 18, 27, 28, 34, 35, 41, 42, 45, 46, 48, 97, 104, 108, 115, 142, 143, 145, 146, 148, 150, 155, 162, 163, 166, 167, 177, 190, 197, 207, 217], "gm": 34, "gmat": 220, "go": [221, 222, 223], "goal": 36, "godsil": 105, "goe": [3, 221], "golovich": 223, "good": [105, 135, 221], "goodman": [147, 175], "googl": 221, "gov": 61, "gp": [1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 39, 45, 46, 48, 57, 59, 60, 80, 91, 107, 108, 109, 113, 114, 115, 117, 121, 122, 138, 163, 173, 184, 188, 196, 209, 211], "gradient": 197, "granular": 221, "graphic": 105, "graphviz": [221, 224], "gravit": [4, 8, 61, 108, 113, 114], "graviti": [59, 60, 61, 223], "great": 221, "greater": [47, 144], "greatest": 48, "greatli": 221, "grid": [21, 117], "ground": [23, 121, 131], "ground_stat": [121, 131], "group": [72, 105, 224], "grow": 47, "gsfc": 61, "guarante": [37, 108], "guess": [38, 45, 46, 48, 96, 167, 197], "guid": 223, "guidanc": 221, "guidelin": 223, "h": [37, 134, 135, 136], "ha": [36, 37, 144, 202, 221, 223, 224], "halo": 220, "hand": 221, "hard": [2, 221, 224], "harmon": [8, 14, 59, 61], "harmoniccoeffici": [8, 231], "harri": 2, "hash": 221, "hash1": 221, "hash2": 221, "hashablearraycontain": 227, "hast": 156, "have": [32, 37, 38, 39, 40, 48, 105, 220, 221], "hdf": 221, "hdf5": [70, 71, 72, 73, 74, 75, 76, 221], "head": 105, "header": 77, "heavi": 241, "height": [23, 131], "help": [64, 221, 223], "helper": 44, "hemispher": 3, "heo": 220, "here": [40, 104, 105, 108, 135, 138, 194, 212, 213, 216, 219, 221, 224], "high": [3, 6, 177, 220], "highest": 36, "highli": 220, "hogg": 175, "hold": [61, 106], "homebrew": 221, "homepag": 221, "horizon": [21, 30], "horribl": 37, "host": 223, "hou": 175, "hour": [135, 136], "how": [37, 221], "howev": [138, 221], "hr": [187, 189], "htm": 64, "html": [61, 64], "http": [61, 64, 172, 221, 223, 224], "huber": [45, 46, 163, 168, 169], "hx": 108, "hy": 108, "hyp": 37, "hyperbol": [52, 53], "hyperparamet": [105, 106], "hypot": 193, "hypothes": [36, 37], "hypothesi": [37, 223, 229], "i": [1, 2, 3, 4, 6, 9, 10, 11, 12, 13, 14, 17, 18, 19, 21, 23, 26, 27, 28, 29, 30, 31, 36, 37, 39, 40, 41, 44, 46, 48, 68, 80, 91, 97, 105, 107, 108, 109, 113, 114, 115, 117, 122, 131, 133, 135, 138, 140, 144, 145, 147, 149, 157, 163, 165, 167, 172, 173, 176, 179, 184, 187, 188, 189, 191, 193, 194, 195, 196, 197, 203, 204, 206, 209, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 241], "icr": [163, 173], "id": [37, 38, 39, 40, 57], "idea": 221, "ident": [8, 37, 39], "identifi": [37, 223], "ier": 188, "ignor": [29, 32, 47, 61, 80, 91, 105], "illumatend": 30, "illumatstart": 30, "illumin": [3, 21, 30], "imag": [130, 131], "immedi": 221, "implement": [1, 38, 39, 40, 45, 46, 48, 147, 189], "implent": 37, "impli": 39, "import": [64, 115, 221, 223, 241], "improv": 113, "inact": 105, "inch": 131, "inclin": [1, 80, 91, 108, 189], "includ": [2, 36, 37, 38, 40, 44, 57, 80, 91, 156, 221, 223, 224], "inconsist": 37, "increas": [46, 47, 107, 172, 221], "increment": 21, "indent": 221, "independ": [105, 156], "index": [64, 105, 127, 128, 223], "indic": [21, 37, 108, 113, 145, 167], "indistinguish": 221, "individu": [7, 163, 223], "inerti": [145, 167], "infer": 167, "influenc": 40, "inform": [36, 37, 38, 40, 47, 221], "infrastructur": 221, "init": 224, "init_v": 106, "init_valu": 104, "initel": [149, 165], "initguess": 153, "initi": [37, 38, 40, 45, 46, 48, 105, 108, 135, 144, 145, 147, 150, 151, 156, 167, 171, 177, 189, 197, 235], "initial_ln_wt": 115, "initial_lnprob": 38, "initial_particl": 115, "initobspo": [153, 158], "initobsvel": [153, 158], "initparam": [154, 158, 161], "initrv": 152, "input": [21, 32, 108, 115, 138, 144, 145, 150, 163, 172, 203, 204, 208, 235], "input_param_transl": [159, 161], "inshadow": 19, "insid": [6, 46], "insist": 108, "inspect": [36, 37], "instal": 221, "instanc": [17, 18, 21, 23, 26, 27, 28, 30, 31, 37, 38, 39, 40, 45, 46, 47, 48, 105, 108, 109, 115, 127, 141, 144, 163, 191], "instant": 138, "instantan": 108, "instanti": 115, "instead": [17, 18, 23, 26, 27, 28, 31, 38, 40, 105, 176, 224], "int": [36, 37, 38, 39, 40, 43, 59, 96, 98, 105, 113, 114, 115, 117, 127, 128, 131, 140, 144, 147, 150, 151, 156, 171, 187, 197, 202, 203, 206, 208], "integr": [134, 135, 136, 139, 189, 223], "intend": [1, 43, 64, 220, 221], "interact": 221, "interest": 139, "interfac": [45, 46, 47, 48, 133, 221], "intern": 115, "interpol": [188, 190], "interpret": 224, "interv": [140, 177], "intrins": 108, "introduc": 221, "invari": [147, 223], "invers": [29, 35, 48], "invok": [7, 176], "io": [61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 221, 223], "iod": 105, "iso": 187, "isol": 221, "isotrop": [150, 151, 163, 164], "issu": [203, 221], "item": 172, "iter": [17, 18, 26, 27, 28, 46, 113, 114, 197, 221], "ith": 217, "itr": 107, "itrf": [23, 68], "its": [37, 45, 46, 48, 221, 223], "itself": [39, 108, 113, 192], "j": 115, "j2000": 173, "job": 221, "joint": 105, "jointli": 163, "joshua": 223, "journal": 105, "julia": 223, "jump": 105, "jupyt": 222, "just": [40, 138, 163, 194, 197, 201, 212, 221, 223], "k": [3, 105], "k1": 172, "kalman": 40, "kappasign": 114, "keep": [37, 115, 147, 156, 221], "keeponlytru": 37, "kei": [21, 30, 70, 71, 72, 75, 172], "keplerian": [4, 17, 18, 23, 26, 27, 28, 31, 37, 38, 39, 40, 47, 108, 132, 140, 189], "keplerianel": 108, "keplerianpropag": [17, 18, 21, 23, 26, 27, 28, 30, 31, 45, 48, 108, 109, 163, 238], "keplerina": 235, "keriann": 223, "kernel_mat": 185, "keyword": [37, 45, 46, 48, 139], "kg": [2, 3, 6, 189], "kipac": 223, "kit": 220, "know": 221, "known": [37, 105, 197], "koe": 189, "kozai": [80, 91, 108], "kozaimeankeplerianel": 108, "kth": 115, "kutta": [134, 135, 136, 223], "kw": [36, 37, 45, 46, 48, 49, 54, 154], "kwarg": [1, 2, 3, 4, 5, 6, 7, 59, 60, 110, 111, 112, 127, 139, 158, 159, 160, 197], "l": 115, "l_": 115, "lab": 224, "laboratori": 223, "lam": 114, "lambda": 8, "landscap": 177, "laplac": 108, "larg": [61, 224], "larger": 41, "largest": 175, "last": 37, "lat": [23, 107, 121], "later": 221, "latest": [221, 223], "latitud": [23, 107, 131], "latu": 108, "lawrenc": 223, "lazi": [39, 108, 113, 192], "lazy_properti": 240, "lb": [193, 194, 195, 210, 212, 215, 218], "lcen": [193, 210], "ldrd": 223, "le": 108, "lead": 223, "least": [46, 147, 149, 152, 153, 154, 156, 165, 172, 221, 223], "leastsquaresoptim": 239, "leav": 191, "length": [18, 27, 28, 105, 187, 193, 203, 204, 221], "lenz": 108, "leo": [3, 134, 135, 136, 220], "less": [3, 37, 40, 107, 221], "level": [105, 220], "levenberg": 46, "lf": 224, "librari": [221, 223], "lifset": 223, "light": [3, 6, 17, 18, 26, 27, 28, 29, 32], "like": [3, 37, 39, 41, 187, 193, 194, 195, 212, 213, 215, 216, 218, 219, 221], "likelihood": [36, 39, 105, 115, 163], "likewis": [17, 18, 26, 27, 28], "limit": [118, 120, 125, 126, 131, 220, 221], "line": [19, 45, 46, 48, 89, 90, 97, 98, 221], "line1": [91, 97, 108], "line2": [91, 97, 108], "linear": [17, 18, 26, 27, 28, 223], "link": [104, 105, 163, 221, 223], "linker": [104, 106, 223], "linux": [221, 224], "list": [7, 17, 18, 21, 23, 26, 27, 28, 31, 36, 37, 38, 39, 40, 44, 45, 46, 47, 48, 57, 61, 62, 72, 77, 96, 98, 105, 115, 131, 141, 145, 163, 167, 187, 220, 221, 241], "littl": 221, "live": 221, "livermor": 223, "ll": [135, 221], "llnl": 223, "lm": 108, "lmfit": [163, 223], "lmoptim": 239, "lmoptimizerangular": 239, "ln": 146, "ln_weight": [115, 186, 204], "ln_wt": 115, "lnlike": [115, 163], "lnp": 105, "lnprior": [115, 127, 128, 147, 156, 163, 175, 208], "lnprob": [36, 37, 39, 127, 128, 147, 156, 163, 175, 208], "load": [73, 74, 79, 88, 96], "local": [221, 223, 224], "locat": [17, 26, 32, 37, 39, 68, 131], "log": [34, 35, 36, 39, 41, 42, 105, 115, 127, 128, 142, 143, 146, 147, 148, 155, 156, 162, 163, 166, 204, 221], "log10": [143, 155], "log10areaprior": 239, "logprior": [34, 35, 41, 42, 142, 143, 146, 148, 155, 162, 166], "lon": [23, 107, 121], "long": [37, 46, 221], "longer": [2, 21, 221], "longitud": [23, 107, 108, 131], "lonpa": 108, "look": 221, "lookup": 107, "lose": 221, "loss": [45, 46, 163, 168, 169], "lost": 37, "low": [177, 220], "lrl": 108, "lru": 172, "lru_cach": 240, "lsq": [45, 46, 48, 50], "lunar": [220, 223], "lv": 108, "m": [1, 3, 4, 8, 17, 18, 23, 26, 27, 28, 31, 40, 41, 45, 46, 48, 108, 113, 114, 115, 142, 143, 146, 148, 153, 155, 162, 166, 174, 189, 190, 221], "m_max": [59, 61], "machin": 224, "maco": [221, 224], "made": [39, 221, 223], "magnitud": [1, 3, 6, 166], "mai": [32, 39, 138, 139, 220, 221, 223], "main": 224, "mainli": 108, "maintain": 221, "major": [80, 91, 189, 221], "make": [21, 36, 108, 127, 128, 161, 163, 167, 221, 223, 224], "manag": [37, 163, 221, 224], "maneuv": 1, "mani": [37, 47, 61, 207, 220, 221, 223], "markov": [105, 223], "marquardt": 46, "mask": [37, 104], "mass": [2, 3, 6, 45, 48, 189], "match": [18, 27, 28, 37, 44, 204], "math": 105, "mathwork": 220, "matlab": 220, "matplotlib": [127, 128, 130, 131, 223], "matrix": [2, 8, 9, 10, 35, 48, 184, 185, 206, 207, 211, 217], "max": [30, 208], "maxalt": 30, "maximum": [30, 59, 113, 114, 172, 197], "maxit": [113, 114, 197], "maxsiz": 172, "maxspan": 30, "mayb": 221, "mcmc": [105, 127, 128, 156, 163, 208], "me": 37, "mean": [17, 18, 26, 27, 28, 35, 38, 39, 40, 45, 46, 48, 55, 80, 91, 108, 115, 141, 142, 143, 146, 151, 155, 157, 162, 163, 166, 175, 193, 217, 221], "meananomali": 108, "meanmot": 108, "meanpm": 163, "meant": [39, 108, 113, 192], "measur": [115, 145], "mechan": 221, "member": 221, "meo": 220, "mercuri": 221, "merg": 221, "merl": 223, "messag": 221, "meter": [2, 3, 4, 6, 7, 8, 11, 12, 13, 19, 23, 27, 28, 29, 31, 32, 59, 60, 80, 91, 107, 108, 109, 113, 114, 115, 117, 118, 120, 121, 122, 125, 126, 134, 136, 142, 144, 145, 150, 151, 152, 154, 157, 162, 163, 166, 189, 196, 209], "method": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 36, 37, 38, 39, 40, 59, 60, 61, 104, 106, 110, 112, 113, 114, 149, 152, 153, 154, 158, 159, 160, 161, 165, 172, 176, 191], "metropoli": 156, "meyer": 223, "mg": 3, "mh": 105, "mhsampler": 239, "mht": [56, 223, 229], "michael": 223, "micron": 107, "microsecond": 40, "mid": 220, "might": [113, 221], "miller": 223, "milliarcsec": 173, "mimic": 64, "minim": 223, "minimum": [21, 30, 224], "minut": 221, "miss": [21, 96, 108, 172, 221], "mission": 220, "mit": 223, "mm": 189, "mode": [37, 38, 39, 40, 45, 46, 47, 48, 50, 51, 52, 53], "model": [2, 3, 6, 14, 19, 37, 39, 61, 104, 105, 106, 115, 117, 134, 135, 136, 138, 139, 141, 163, 223], "model_i": 163, "model_index": 104, "modelselectorparam": [104, 105, 233], "modern": 224, "modif": 203, "modifi": 221, "modul": [3, 6, 108, 223], "moment": [2, 3, 4, 6, 7, 59, 60], "momentum": 108, "monkeypatch": 191, "mont": [105, 223], "montenbruck": [2, 6], "month": 221, "moon": [10, 11, 14, 141, 196], "moonorient": 226, "moonposit": 226, "more": [2, 3, 6, 17, 18, 21, 23, 26, 27, 28, 31, 37, 41, 45, 46, 48, 105, 108, 115, 204, 206, 220, 221, 223], "most": [2, 37, 108, 208, 221, 224], "mostli": [147, 156, 172, 173, 221], "motion": [39, 45, 46, 48, 55, 56, 108, 140, 145, 163, 167, 173, 188, 193], "move": [3, 38, 40, 115], "mu": [4, 8, 35, 48, 108, 113, 114], "mu_barycent": 24, "mub": 193, "much": [108, 221, 223], "mul": 193, "multi": [108, 223], "multipl": [21, 36, 37, 62, 131, 203, 204, 214, 221, 223], "multivari": [157, 164], "must": [1, 14, 18, 27, 28, 36, 37, 39, 45, 46, 47, 48, 176, 189, 221, 223, 224, 241], "mutabl": [39, 108, 113, 192], "mvnormalpropos": [164, 239], "mylar": [3, 6], "mypi": 221, "myst": 221, "n": [17, 18, 23, 26, 27, 28, 31, 37, 39, 44, 45, 46, 48, 52, 53, 107, 109, 117, 118, 120, 121, 125, 126, 177, 188, 190, 193, 196, 201, 204, 205, 206, 207, 209, 210, 217], "n_line": 98, "n_max": [59, 61], "n_par": [45, 48], "n_param": [52, 53], "naccept": 156, "name": [14, 45, 46, 48, 62, 88, 97, 105, 108, 191, 221, 224], "namespac": 241, "nan": 96, "nasa": 61, "nathan": 223, "nation": 223, "natur": 221, "nburn": [147, 156], "nchain": [127, 128, 156], "nconfirm": 37, "nd": [203, 204], "ndarrai": [9, 10, 11, 12, 13, 19, 37, 45, 46, 48, 108, 131, 185, 189, 203, 204], "ndarri": [47, 203], "ndet": 43, "nearli": [37, 221], "necessari": [45, 46, 48], "necessarili": 172, "need": [37, 39, 48, 105, 221, 223], "neglect": 3, "net": 221, "netcdf": 221, "new": [28, 36, 37, 38, 39, 40, 46, 108, 115, 144, 157, 164, 172, 176, 221, 223], "new_data": 75, "newdeadtrack": 37, "newp": 157, "newton": 197, "next": [46, 221], "ngrid": 117, "nkeepmax": 37, "nminlength": 49, "noah": 223, "nob": 163, "node": [80, 91, 108, 189], "non": [39, 108, 113, 172, 192, 223], "none": [0, 1, 2, 8, 9, 10, 14, 17, 18, 26, 27, 28, 29, 30, 32, 35, 36, 37, 38, 39, 40, 45, 46, 47, 48, 51, 52, 53, 56, 59, 62, 71, 75, 76, 77, 78, 96, 101, 102, 105, 108, 115, 121, 128, 130, 131, 138, 139, 141, 142, 143, 146, 148, 149, 152, 153, 154, 155, 161, 162, 166, 173, 176, 179, 189, 193, 197, 203, 204, 207], "norad": [97, 108], "normal": [26, 39, 106, 157, 164, 201, 205, 221], "note": [7, 21, 37, 52, 53, 61, 88, 133, 145, 147, 150, 156, 167, 223, 224], "notebook": 222, "notic": [221, 223], "notif": 221, "notifi": 221, "now": [37, 40, 221, 223], "np": [42, 193], "nparam": 45, "nprior": 163, "npt": 206, "nsampl": [144, 145, 150, 151, 171, 208], "nsat": [36, 37, 43], "nstep": [105, 127, 128, 147, 156, 208], "ntrack": 43, "ntracklet": 36, "ntw": [1, 201, 205], "num_orbit": [104, 105, 106], "num_particl": 115, "num_particles_out": 203, "num_track": [104, 105, 106], "number": [2, 36, 37, 39, 43, 47, 66, 98, 105, 113, 114, 115, 117, 144, 147, 150, 151, 156, 171, 172, 190, 197, 202, 203, 204, 206, 208, 221], "numer": [39, 134, 135, 136, 141, 223], "numpi": [9, 10, 11, 12, 13, 45, 46, 48, 96, 104, 106, 131, 185, 190, 203, 204, 223], "nutat": 2, "nwalker": [147, 208], "nwrap": 39, "nwrapsig": 39, "o": 221, "ob": [46, 57, 88], "obei": 217, "obfusc": 221, "object": [0, 3, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 48, 61, 105, 106, 107, 108, 109, 113, 114, 115, 118, 120, 121, 122, 125, 126, 130, 132, 134, 135, 136, 139, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 161, 162, 163, 165, 166, 172, 187, 189, 192], "obs_tim": 204, "obsanglecorrect": [17, 18, 26, 27, 28], "observ": [17, 18, 21, 26, 27, 28, 29, 30, 32, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 57, 88, 105, 107, 109, 113, 114, 115, 142, 143, 144, 145, 146, 148, 150, 155, 162, 163, 166, 167, 173, 204], "obspo": [18, 27, 28, 29, 32, 39], "obsvel": [18, 27, 28, 29, 32, 39], "obtain": 21, "occur": [21, 138, 204, 221], "od": 139, "odd": 39, "ode_kwarg": 139, "odtk": 64, "off": [1, 221], "offer": 223, "offset": 201, "often": [1, 36, 147, 206, 221], "oftentim": 221, "old": [36, 47], "oldmht": 49, "oldtrack": 36, "olog": 105, "omit": 2, "onc": 221, "one": [14, 21, 37, 39, 40, 45, 46, 48, 52, 53, 61, 89, 108, 115, 131, 138, 163, 207, 220, 221, 222], "ones": 221, "onli": [14, 18, 21, 27, 28, 29, 32, 36, 37, 39, 108, 113, 140, 145, 150, 167, 191, 204, 221], "onto": 19, "op": 40, "open": 176, "oper": 7, "oppos": [17, 18, 23, 26, 27, 28, 31], "optim": [45, 46, 48, 149, 152, 153, 154, 165], "optimizeparam": 161, "optimizerkw": [45, 46, 48], "option": [2, 4, 8, 14, 17, 18, 21, 23, 26, 27, 28, 30, 31, 32, 57, 77, 96, 105, 107, 108, 109, 113, 114, 115, 118, 120, 121, 125, 126, 127, 128, 131, 138, 140, 141, 142, 144, 145, 146, 150, 151, 162, 163, 166, 171, 173, 187, 189, 197, 203, 204, 208, 221, 224], "orbit": [17, 18, 21, 23, 26, 27, 28, 30, 31, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47, 48, 52, 53, 54, 80, 91, 105, 107, 109, 113, 114, 115, 118, 120, 121, 122, 125, 126, 132, 133, 138, 142, 143, 146, 148, 150, 155, 158, 159, 160, 161, 162, 163, 166, 167, 189, 204, 223, 235], "orbit_selector": 105, "orbit_solv": [110, 111, 112, 113, 114, 223], "orbit_to_param": [158, 159, 160, 161], "orbitalobserv": [21, 234], "orbitattr": [37, 38, 39, 40, 45, 46, 47, 48, 51, 52, 53, 149, 152, 153, 161], "order": [17, 18, 26, 27, 28, 37, 47, 57, 59, 134, 135, 136, 138, 140, 157, 172, 178, 221, 222, 223], "org": 224, "orient": [8, 9, 10, 107], "origin": [162, 176, 190, 201, 203, 221], "orthograph": [193, 210], "oscul": 108, "other": [7, 14, 38, 48, 108, 221, 223], "otherwis": [30, 37, 70, 193, 221], "our": [221, 223], "out": [17, 18, 23, 26, 27, 28, 31, 37, 46, 221], "outer": [18, 23, 31], "outfile_head": 105, "output": [23, 31, 45, 46, 48, 57, 62, 88, 105, 115, 138, 187, 208, 221], "output_covar_transl": [159, 161], "output_fil": 63, "outrid": 223, "outsid": [6, 107], "over": [45, 47, 108, 131, 134, 135, 136, 163, 187, 189, 221], "overal": [37, 221], "overhead": [21, 30], "overlap": 37, "overview": [220, 222, 235], "overwrit": 75, "overwritten": [75, 172], "own": 221, "p": [105, 108, 147, 154, 156, 157, 158, 159, 160, 161, 163, 164, 203, 204, 212, 213], "p0": 171, "p_orbit": 105, "pa": [80, 91, 108, 149, 165, 189], "packag": [147, 220, 221, 223, 224, 241], "page": [64, 220, 222, 223], "pair": [61, 131, 190], "panda": [101, 102], "panel": [3, 6], "parallax": 173, "parallel": [19, 56], "param": [35, 39, 40, 50, 52, 53], "param_to_orbit": [158, 159, 160, 161], "paramet": [68, 88, 106, 130, 149, 152, 153, 154, 161, 165, 172, 185, 203, 204, 235], "parameter": [39, 163], "paramorbitangl": 239, "paramorbitequinocti": 239, "paramorbitrv": 239, "paramorbittransl": [158, 159, 160, 239], "pars": [89, 91], "parser": 221, "part": [3, 29, 32, 39, 105, 115], "particip": 223, "particl": [105, 203, 204, 223], "particular": [2, 3, 4, 6, 7, 59, 60, 139], "pass": [2, 3, 6, 7, 21, 30, 37, 45, 46, 48, 127, 139, 167, 176, 221, 223], "passdict": 21, "past": [2, 37, 38, 40, 132], "patch": 221, "path": [62, 71, 73, 75, 76, 96, 97, 101, 102, 108, 130, 131, 221], "pathnam": [65, 71, 73, 75, 76, 83, 100], "pathname_": 73, "pdf": 131, "pdf_path": 129, "pep": [221, 223], "per": [2, 3, 4, 6, 7, 21, 28, 29, 31, 32, 57, 59, 60, 98, 107, 108, 109, 115, 138, 144, 145, 150, 151, 157, 163, 166, 173, 189], "percentag": 221, "perform": [105, 173, 203, 221], "periapsi": [80, 91, 108], "perige": [1, 189], "period": [2, 108], "perloff": 223, "permiss": 221, "perpendicular": [19, 201, 205], "pertain": 221, "perturb": [138, 203], "pgda": 61, "phi": [194, 212, 213, 216, 219], "photon": [17, 18, 26, 27, 28], "pi": [47, 194, 212], "piec": 220, "pip": [221, 224], "pkeep": 37, "place": [2, 3, 4, 6, 7, 59, 60], "plane": [150, 193, 201, 205, 210], "planet": [12, 14], "planet_index": 12, "planetposit": 226, "pleas": [221, 223], "plot": [118, 120, 125, 126, 127, 128, 131, 223], "plotutil": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 223], "plu": 207, "plugin": 221, "pmdd": 39, "pmdec": [39, 45, 46, 48, 55, 56, 173], "pmra": [39, 45, 46, 48, 55, 56, 173], "pmrr": 39, "pmuncfloor": 56, "pmx": 188, "pmy": 188, "png": [130, 131], "po": [11, 12, 13], "pod": 204, "point": [3, 18, 19, 21, 26, 39, 117, 135, 167, 190, 193, 194, 206, 207, 212, 213, 216, 217, 219, 221], "polar": 188, "posit": [2, 3, 4, 6, 7, 8, 11, 12, 13, 18, 19, 23, 27, 28, 29, 31, 32, 39, 40, 45, 46, 48, 55, 56, 59, 60, 68, 88, 107, 108, 109, 113, 114, 115, 118, 120, 121, 122, 125, 126, 131, 132, 144, 145, 150, 151, 163, 164, 167, 173, 189, 196, 201, 205, 209, 220, 223], "possibl": [207, 220, 221], "possibli": [21, 43, 221], "posterior": [105, 127, 128, 147, 156, 163, 175], "posuncfloor": 56, "potenti": [59, 61], "pr": [221, 223], "precess": 2, "precis": [61, 138, 223], "predict": 39, "prefer": [37, 41, 221], "prerequisit": 223, "present": [3, 48, 107, 224], "pressur": [3, 6, 223], "prevent": [203, 221], "previou": [144, 222], "previous": [144, 172, 221], "priester": 2, "principl": [105, 138], "print": [36, 37, 47, 221], "prior": [34, 35, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 105, 115, 127, 142, 143, 146, 147, 148, 155, 156, 162, 163, 166], "priori": 2, "prob": 146, "probabilist": 223, "probabl": [21, 34, 35, 36, 38, 39, 41, 42, 43, 115, 127, 128, 142, 143, 146, 147, 148, 155, 156, 162, 163, 166, 208, 223], "probfn": [147, 149, 152, 153, 154, 156, 165], "problem": [147, 221], "procedur": [105, 221], "process": [47, 221, 223], "prod_i": 115, "produc": [171, 204, 217], "product": [18, 23, 31, 61, 105], "prograd": 114, "program": 223, "progress": [37, 62], "project": [19, 145, 150, 193, 201, 205, 221, 223], "prone": 221, "propag": [17, 18, 21, 23, 26, 27, 28, 30, 31, 37, 38, 39, 40, 45, 46, 47, 48, 52, 53, 108, 109, 132, 134, 135, 136, 137, 138, 139, 140, 141, 163, 220, 223], "propagaterdz": 39, "proper": [39, 45, 46, 48, 55, 56, 163, 173, 193], "properli": 176, "properti": [39, 108, 113, 192], "propkw": 108, "proport": [4, 115], "propos": [105, 147, 156, 157, 164, 221], "provid": [37, 39, 187, 189, 220, 221, 222, 235], "pruett": 223, "prune": 37, "prune_stale_hypothes": 37, "prune_track": 37, "pseudo": [45, 46, 105, 163, 168, 169], "publish": 224, "pull": [221, 223], "pure": [3, 6, 221], "purpos": [37, 117], "push": 221, "put": 221, "py": [221, 223, 224], "pyerfa": 223, "pypi": 224, "pytest": 221, "python": [130, 172, 176, 221, 224, 241], "python3": [221, 223, 224], "qtabl": [145, 150, 163, 167], "quantif": 223, "quantiti": [21, 27, 30, 163], "queri": 138, "question": [21, 30, 163, 194, 212, 213, 216, 219, 221], "quickli": 26, "quit": 140, "quot": 221, "r": [1, 2, 3, 4, 5, 6, 7, 19, 23, 29, 31, 32, 34, 41, 42, 59, 60, 107, 108, 109, 117, 118, 120, 121, 122, 125, 126, 131, 162, 174, 182, 183, 189, 190, 195, 196, 201, 205, 208, 209], "r1": [113, 114, 214], "r2": [113, 114, 214], "r3": 113, "r_": 24, "r_earth": [16, 20, 25, 33], "r_gcrf": 181, "r_moon": [16, 25], "r_par": 19, "r_perp": 19, "r_sat": [16, 20, 25, 33], "r_satellit": 131, "r_satellite_1": 131, "r_satellite_2": 131, "r_sun": [16, 20, 25, 33], "ra": [27, 28, 29, 32, 39, 45, 46, 47, 48, 55, 56, 145, 150, 153, 163, 167, 173, 193], "raan": [80, 91, 108, 149, 165, 189], "rad": [27, 39, 153], "radec": 28, "radian": [17, 21, 23, 26, 27, 28, 29, 30, 32, 39, 80, 91, 107, 108, 173, 188, 189, 193, 194, 195, 210, 212, 213, 215, 216, 218, 219], "radiat": [3, 6, 223], "radiu": [8, 16, 20, 25, 33, 117], "rang": [27, 28, 29, 32, 41, 45, 46, 48, 107, 145], "ranger": 27, "raphson": 197, "rarat": [27, 28, 29, 32, 153], "rate": [27, 28, 29, 32, 138, 193], "rather": [34, 35, 41, 42, 143, 146, 148, 155, 163, 206, 207, 217], "ratio": 156, "rational": 221, "rcoord": [201, 205], "re": [115, 176], "read": [89, 96, 98], "readthedoc": 221, "realli": [37, 221], "reason": [134, 139, 140, 221, 224], "rebound": 220, "reboundx": 220, "recalc_threshold": [2, 9], "recent": [37, 172, 221], "recip": 172, "recommend": [108, 221, 222, 223], "recomput": [2, 9], "record": 40, "rectilinear": 220, "rectum": 108, "recurs": 224, "refer": [26, 40, 64, 108, 138, 194, 212, 213, 216, 219, 223], "refin": [30, 105], "refine_pass": 21, "reflect": [3, 6], "regardless": 221, "regist": 191, "regular": [203, 204], "reject": [156, 191], "rel": [6, 201, 208, 223], "relat": [220, 221, 223], "relationship": 105, "releas": [221, 224], "relev": 221, "reli": 37, "remain": [172, 203], "remot": 221, "remov": [36, 172], "renam": [194, 212], "render": 222, "reopen": 221, "repeat": 221, "replac": [36, 39, 108, 113, 144, 192], "repo": 221, "report": 221, "repositori": [221, 223, 224], "repres": [36, 39, 108, 113, 131, 192], "represent": 108, "reproduc": 138, "request": [221, 223], "requir": [18, 40, 45, 46, 48, 108, 138, 163, 221, 224], "reqular": 203, "rerun": 221, "resampl": [115, 203], "research": 223, "reset": [115, 156, 221], "reset_if_too_uncertain": 47, "reset_to_pseudo_prior": 115, "resid": 154, "residu": [46, 163], "resiz": 172, "resolut": 221, "resolv": 221, "respect": 108, "restart": [144, 221], "result": [134, 138, 139, 149, 152, 153, 154, 165, 217, 221], "retrograd": 114, "return": [8, 44, 62, 64, 70, 71, 72, 73, 74, 75, 76, 77, 88, 101, 102, 130, 145, 172, 176, 185, 190, 191, 203, 204, 207, 217], "return_compon": 16, "return_nwrap": 39, "return_sigma": 39, "revers": [47, 105, 221], "review": 221, "reweight": 115, "rewrit": 221, "rfactor": 117, "rhel": 224, "rho": 145, "right": [27, 28, 29, 32, 55, 80, 91, 108, 173, 189, 193, 210, 221], "rise": 30, "rjmcmc": 105, "rk4propag": 238, "rk78propag": 238, "rk8propag": [135, 238], "rkpropag": [134, 136, 238], "rmean": [151, 162], "robert": 223, "robustli": 214, "root": 197, "rot": [184, 211], "rotat": [184, 201, 211], "rough": [3, 6, 39], "routin": 44, "row": [44, 96, 145, 150, 163, 167, 203, 204], "royal": 105, "rprior": [163, 239], "rr": 39, "rsigma": [145, 150, 151, 162, 164], "rstation": [39, 40, 52], "rstation_gcrf": [39, 45, 46, 48, 145, 150, 163, 167], "rtd": 221, "rtol": 139, "rule": [18, 27, 28, 221, 223], "run": [21, 37, 105, 138, 149, 152, 153, 154, 165, 176, 221, 223, 224], "rung": [108, 134, 135, 136, 223], "rv": [37, 38, 39, 40, 45, 46, 47, 48, 51, 52, 53, 127, 128], "rvguess": 51, "rvobstoradecr": 29, "rvprobabl": [115, 239], "rvsampler": [38, 115, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 223], "rvsigmapropos": 239, "safe": 191, "sai": 221, "sail": [3, 6], "same": [37, 45, 48, 163, 172, 203, 204, 221], "sampl": [105, 115, 127, 128, 144, 145, 147, 150, 151, 156, 157, 163, 171, 177, 206, 208], "sample_orbit_selectors_from_data_condit": 105, "sample_porbit_conditional_dist": 105, "sampler": [147, 156, 223], "sat_nam": [97, 108], "satellit": [2, 3, 6, 17, 18, 19, 21, 23, 26, 27, 28, 30, 36, 37, 39, 43, 64, 97, 108, 113, 131, 189, 223], "satellite_track": 131, "satid": [37, 38, 39, 40, 44, 46, 57], "satidlist": 44, "save": [62, 76, 101, 102, 105, 130, 131, 221], "save_path": [62, 82, 118, 120, 125, 126, 130, 131], "save_step": 105, "scalar": [17, 18, 23, 26, 27, 28, 31, 108], "scale": [41, 131, 187, 207, 217], "scatter_arrai": [84, 85], "schlafli": 223, "schneider": 223, "scipi": [139, 223], "scipypropag": [141, 238], "search": [21, 30, 223], "season": 2, "sec": [27, 107], "second": [1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 17, 18, 19, 21, 23, 26, 27, 28, 29, 30, 31, 32, 45, 46, 48, 59, 60, 80, 91, 107, 108, 109, 113, 114, 115, 117, 121, 122, 134, 135, 136, 138, 140, 144, 145, 150, 151, 152, 154, 157, 163, 166, 173, 184, 188, 189, 196, 209, 211], "section": [2, 6, 189, 220, 223], "sector": 113, "see": [2, 3, 37, 38, 39, 40, 45, 48, 105, 221, 223], "seen": [3, 223], "select": [44, 104, 106, 127, 147, 175, 208, 221], "selector": 105, "self": [1, 5, 39, 40, 144, 145, 172, 176], "semi": [80, 91, 108, 189], "semimajor": [1, 108, 142], "semimajoraxi": 112, "send": [221, 223], "sens": 163, "sensibl": 141, "sep": [62, 66, 77, 96, 101, 102], "separ": [21, 197], "sequenti": 47, "seri": [47, 105, 140, 221, 223], "seriespropag": 238, "set": [30, 37, 38, 39, 40, 44, 46, 56, 105, 113, 115, 131, 139, 145, 150, 163, 167, 178, 194, 207, 212, 217, 220, 221], "setup": [223, 224], "setuptool": 224, "sever": [45, 46, 48, 221], "sgp4": [64, 108, 138, 223], "sgp4lmoptim": 239, "sgp4propag": 238, "shadow": [6, 19, 30], "shape": [1, 2, 3, 4, 6, 7, 32, 59, 60], "shefertwoposorbitsolv": 235, "shift": [39, 40], "short": [21, 55, 140, 223], "should": [1, 17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 37, 39, 40, 45, 48, 80, 107, 108, 109, 113, 114, 115, 117, 122, 138, 147, 156, 163, 173, 184, 188, 192, 196, 197, 203, 204, 209, 211, 221, 223], "show": 221, "si": 223, "side": [115, 221], "sight": [45, 46, 48], "sigma": [34, 39, 42, 143, 148, 155, 163, 207, 217], "sigma_point": [40, 217], "similar": [18, 27, 28, 36, 163], "simpl": [3, 6, 19, 147], "simpli": [7, 221], "simplic": 108, "simplif": 3, "simplifi": [138, 172], "simultan": [38, 40], "sinc": [17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 37, 80, 91, 107, 108, 109, 113, 114, 115, 117, 122, 138, 163, 173, 184, 188, 189, 196, 209, 211, 221], "singl": [3, 6, 17, 18, 23, 26, 27, 28, 31, 37, 38, 39, 40, 48, 62, 108, 115, 131, 135, 138, 221], "singular": [203, 207], "site": 223, "situat": 241, "size": [131, 134, 135, 136, 172], "skip": 96, "skipaberr": 173, "skiprow": 96, "sky": [36, 37, 220], "slant": [27, 28, 29, 32, 145, 153], "slantrang": [28, 29, 32], "slantranger": [28, 29, 32], "slantrat": 153, "slow": 172, "slow_funct": 172, "slowli": 172, "small": 138, "smaller": 21, "smallish": 113, "so": [1, 21, 37, 52, 53, 105, 108, 138, 193, 201, 221, 222, 223, 241], "societi": 105, "softwar": [220, 223, 224], "solar": [3, 6], "solut": [43, 113, 197, 220], "solv": [17, 18, 26, 27, 28, 112, 113, 114, 235], "solve_ivp": 139, "solver": [139, 235], "some": [37, 108, 132, 144, 163, 208, 220, 221, 241], "someth": 221, "sometim": [98, 221], "soon": 221, "sort": 1, "sourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219], "source_": 99, "sourceforg": 61, "space": [1, 38, 39, 40, 145, 167, 187, 203, 220, 241], "span": 21, "spatial": 3, "spdx": 223, "spec": 221, "special": [104, 191, 204], "specif": [44, 108, 220], "specifi": [1, 17, 18, 26, 27, 28, 39, 45, 46, 48, 62, 96, 101, 105, 107, 108, 109, 115, 131, 144, 163, 187, 203, 204, 207], "speed": [37, 39, 48, 221], "sphere": 193, "spheric": [61, 193], "sphinx": 221, "sqrt": [206, 207], "squar": [39, 46, 149, 152, 153, 154, 163, 165, 223], "squeez": [17, 18, 23, 26, 27, 28, 31], "ssa": [37, 38, 39, 40, 45, 46], "ssapi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 241], "stabl": [206, 221, 223], "stage": 221, "stai": 221, "stand": 221, "standard": [34, 39, 42, 142, 143, 145, 146, 148, 150, 151, 155, 162, 164, 166, 171, 223], "star": 173, "start": [47, 127, 128, 135, 187, 189, 221, 223], "start_dat": 189, "statationari": 150, "state": [108, 115, 167], "statement": 221, "statevector": 23, "static": [36, 37, 110, 112], "station": [40, 121, 131], "statist": [105, 163, 223], "statu": [115, 221], "std": 171, "stdout": 115, "step": [105, 134, 135, 136, 144, 147, 156, 189, 221], "still": [172, 221], "stk": 220, "stolen": 172, "stop": 113, "store": 115, "str": [14, 38, 39, 40, 45, 46, 47, 48, 52, 53, 61, 62, 70, 71, 72, 73, 74, 75, 76, 77, 91, 96, 97, 101, 102, 105, 108, 130, 131, 187, 189], "straightforward": 221, "streak": 163, "strengthen": 221, "string": [36, 48, 88, 91, 98, 108, 131], "strongli": 108, "structur": 39, "stsci": 223, "subclass": [7, 38, 40], "submit": 221, "submodul": 224, "subsequ": [21, 147, 156], "subset": [44, 221, 241], "substanti": 221, "subvers": 221, "success": [21, 115], "successfulli": 221, "suffici": [17, 18, 26, 27, 28], "suggest": 221, "suit": 221, "suitabl": [21, 105], "sum": [7, 163], "sum_": 115, "summar": [36, 105], "summari": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 34, 35, 36, 37, 38, 39, 40, 41, 42, 59, 60, 61, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 135, 136, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 172], "sun": [6, 13, 14, 19, 21, 30, 107, 141, 209], "sun_mag": 16, "sunalt": 107, "sunaltend": 30, "sunaltstart": 30, "sunlight": 3, "sunposit": 226, "super": 176, "suppli": [18, 23, 27, 28, 31, 108, 115, 128], "support": [1, 14, 108, 131, 223, 224], "sure": 221, "surfac": [3, 131], "svd": 206, "svn": 224, "switch": 221, "syntax": 221, "system": [194, 201, 205, 212, 213, 216, 219, 221, 223], "t": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 17, 18, 26, 27, 28, 37, 38, 40, 59, 60, 66, 80, 91, 101, 102, 108, 122, 138, 173, 181, 184, 187, 188, 189, 196, 201, 205, 208, 209, 211, 212, 213, 221], "t1": [113, 114], "t2": [113, 114], "t21": 113, "t2131": 113, "t3": 113, "t31": 113, "t32": 113, "t3231": 113, "tab": [61, 221], "tabl": [88, 107], "tag": [221, 223], "take": [2, 21, 44, 45, 48, 147, 156, 207, 221], "taken": [45, 46, 48], "tangent": [193, 201, 205, 210], "targent": 210, "target": [135, 203, 204, 221, 223], "taylor": 140, "team": 221, "technic": [220, 223], "tediou": 221, "tel_label": 68, "telescop": 68, "tell": 221, "teme": [88, 108, 138, 184, 211], "templatemeta": 191, "temporari": 221, "tend": 30, "term": [6, 7, 80, 91, 223], "termin": 30, "terminologi": 220, "test": [21, 173, 223], "test_platform": 221, "than": [3, 34, 35, 37, 40, 41, 42, 47, 105, 140, 143, 144, 146, 148, 155, 163, 206, 207, 208, 217, 221, 223], "thank": 223, "thei": [18, 21, 40, 52, 53, 221], "them": [36, 37, 221, 222], "theme": 221, "therebi": 221, "therefor": 61, "thermal": 3, "theta": [115, 194, 212, 213, 216, 219], "theta_k": [105, 115], "thi": [1, 2, 3, 6, 7, 9, 10, 11, 12, 13, 21, 26, 29, 32, 36, 37, 38, 39, 40, 43, 44, 45, 48, 80, 91, 105, 107, 108, 115, 138, 140, 144, 147, 150, 163, 172, 185, 191, 194, 203, 204, 207, 212, 217, 220, 221, 222], "thing": 221, "third": [1, 45, 46, 48, 60], "those": [37, 44, 104, 175, 191, 207, 220, 221], "though": [108, 140, 221], "three": 113, "threeangleorbitsolv": 235, "thresh": 208, "thresh_multipli": 175, "threshold": [9, 208], "through": [19, 30, 38, 39, 40, 133, 167, 203, 222], "time": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 21, 23, 26, 27, 28, 29, 30, 31, 32, 37, 39, 40, 45, 46, 47, 48, 57, 59, 60, 68, 80, 107, 108, 109, 113, 114, 115, 117, 118, 120, 121, 122, 125, 126, 131, 132, 138, 140, 145, 163, 167, 172, 173, 174, 182, 183, 184, 187, 188, 189, 196, 202, 203, 204, 207, 209, 211, 221, 223], "time_arrai": 119, "time_breakpoint": [0, 1], "timeout": 221, "timestamp": 131, "tip": 223, "titl": [118, 120, 125, 126, 131], "tle": [80, 91, 97, 98, 108, 138], "tle_filenam": [97, 108], "tmaxalt": 30, "tmp": 221, "to_np": 96, "todo": [104, 235], "togeth": [39, 45, 46, 48], "tol": [113, 135], "toler": [113, 114, 135, 197], "too": [7, 221], "tool": [220, 221, 223, 224], "top": [105, 221], "topocentr": [21, 163], "total": [36, 37, 43, 156], "toward": [18, 193], "trace": 128, "track": [1, 23, 36, 37, 39, 40, 43, 47, 104, 105, 131, 201, 203, 204, 205, 221, 223, 224, 229], "track2hyp": 37, "track_index": 105, "track_ndx": 105, "trackbas": [38, 40, 229], "tracker": 37, "trackgauss": [38, 229], "tracklet": [37, 40, 47], "tracklist": 47, "trajectori": 189, "tranlat": 35, "transfer": 191, "transform": [138, 193, 201, 205, 217], "transient": 221, "translat": 35, "translatorcl": 154, "travel": [29, 32], "travi": 223, "tri": 37, "trimend": 49, "triplet": [178, 214], "true": [27, 28, 34, 35, 37, 39, 41, 42, 45, 46, 47, 48, 70, 80, 91, 105, 108, 115, 143, 146, 148, 152, 153, 155, 189, 191, 201, 204, 209], "trueanomali": [80, 91, 108, 149, 165, 189], "truncat": 138, "truth": 37, "try": [108, 179, 197, 221], "tspan": 21, "tstart": [21, 30], "tt": 188, "ttermin": 30, "tupl": [91, 108, 131, 189, 197], "turn": [1, 105], "tutori": 221, "two": [7, 36, 37, 46, 145, 167, 221], "twoline2rv": 64, "twoposorbitsolv": [110, 111, 112, 235], "type": [39, 52, 53, 62, 88, 96, 101, 176, 185, 203, 204, 221, 223], "typic": [2, 3, 6], "u": [221, 223], "ubuntu": 224, "uct": 223, "uncertainti": [39, 47, 55, 56, 105, 163, 223], "uncorrel": 105, "undefin": 217, "under": [36, 220, 222, 223], "underflow": 61, "underneath": 221, "understand": 221, "understood": 163, "uniform": [115, 204], "uniqu": [147, 156, 220], "unit": [18, 19, 45, 113, 187, 189, 193, 195, 213, 214, 215, 216, 223], "univari": 197, "univers": 220, "unlik": [37, 221], "unnecessari": 241, "unscent": 217, "until": 221, "unus": [3, 4, 6, 59, 60, 221], "up": [26, 39, 163, 221], "updat": [36, 39, 40, 105, 115, 221, 224], "update_orbit_paramet": 105, "update_params_using_carlin_chib": 105, "upstream": 221, "url": 221, "us": [2, 7, 14, 17, 18, 21, 23, 26, 27, 28, 30, 31, 37, 38, 39, 40, 45, 46, 47, 48, 61, 62, 77, 96, 101, 102, 104, 105, 107, 108, 109, 113, 115, 135, 138, 139, 140, 141, 142, 144, 145, 146, 147, 150, 156, 162, 163, 164, 166, 167, 172, 173, 176, 177, 189, 192, 193, 197, 201, 203, 204, 205, 206, 207, 209, 217, 220, 221, 223, 224], "usag": 222, "usejac": [152, 153], "user": [221, 223], "user_funct": 172, "usual": [98, 135, 139, 224], "ut1": 188, "utc": [17, 18, 19, 21, 23, 26, 27, 28, 30, 31, 80, 91, 107, 108, 109, 113, 114, 115, 117, 122, 138, 163, 173, 184, 187, 188, 196, 209, 211], "util": [172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 223], "v": [1, 2, 3, 4, 5, 6, 7, 29, 31, 32, 34, 37, 39, 42, 59, 60, 107, 108, 109, 166, 189, 201, 205], "v0": [221, 223], "v1": 172, "v_": 24, "v_r": 42, "valid": 140, "valu": [2, 3, 6, 17, 18, 21, 23, 26, 27, 28, 30, 31, 96, 105, 115, 117, 134, 147, 171, 187, 188, 189, 191, 197, 203, 207, 217, 220], "var": 221, "vari": 61, "variabl": [104, 116, 157, 221], "variant": [37, 221], "variat": [2, 3], "varieti": [3, 6, 220, 223], "vc": 221, "vector": [8, 11, 12, 13, 17, 18, 19, 23, 26, 27, 28, 31, 108, 113, 131, 189, 193, 195, 213, 214, 215, 216, 218, 219, 223], "veloc": [2, 3, 4, 6, 7, 17, 18, 26, 27, 28, 29, 31, 32, 37, 39, 40, 45, 46, 48, 59, 60, 107, 108, 109, 115, 132, 140, 144, 145, 150, 151, 163, 164, 166, 167, 189, 201, 205], "venv": 224, "verbos": [36, 37, 45, 46, 47, 48, 105, 115, 175], "veri": [3, 36, 39, 221, 223], "versa": 161, "version": [221, 223, 224], "via": 105, "vice": 161, "view": [17, 18, 26, 27, 131, 221], "visibl": [21, 30], "visual": 117, "vmean": [151, 166], "volum": [39, 41], "volumedistanceprior": 229, "vprior": 239, "vsigma": [145, 150, 151, 164, 166], "vstation": [39, 40, 52], "vstation_gcrf": [39, 45, 46, 48], "vx": [144, 147, 150, 151, 152, 154, 156, 157, 163, 189, 193], "vy": [144, 147, 150, 151, 152, 154, 156, 157, 163, 189, 193], "vz": [144, 147, 150, 151, 152, 154, 156, 157, 163, 189], "w": [3, 201, 205, 208], "w_k": 115, "wa": [39, 118, 120, 223], "wai": [37, 221, 223], "wait": 221, "walker": [147, 171, 175], "want": [26, 221, 223], "warn": 221, "we": [37, 108, 138, 220, 221, 223], "wear": 147, "web": 221, "week": 221, "weight": [115, 185, 203, 204], "well": [113, 221], "were": [105, 221], "wgs84": [4, 61, 108, 113, 114, 117], "what": 221, "when": [1, 17, 18, 26, 27, 28, 30, 37, 38, 39, 61, 108, 118, 120, 139, 147, 221, 223, 241], "whenev": 221, "where": [3, 17, 26, 37, 39, 41, 97, 108, 115, 128, 130, 194, 212, 213, 216, 219, 224], "whether": [19, 144, 204, 221], "which": [2, 3, 6, 17, 18, 21, 26, 27, 28, 30, 32, 36, 37, 38, 39, 44, 45, 48, 68, 105, 108, 115, 117, 134, 135, 136, 138, 139, 145, 157, 163, 167, 197, 204, 208, 220, 224], "while": [1, 37, 96, 220, 221], "who": [221, 223], "whole": 38, "why": 221, "width": 131, "window": 21, "with_tim": 57, "within": [220, 223], "without": [144, 163, 203, 221, 223], "word": 221, "work": [37, 62, 113, 221], "workflow": 223, "would": [105, 221, 223], "wrap": [39, 47, 58, 115, 202], "wrapper": [185, 223, 224], "wrappper": 224, "wrong": 221, "wrt": 26, "x": [18, 23, 110, 112, 118, 120, 125, 126, 131, 144, 147, 150, 151, 152, 154, 156, 157, 163, 189, 193, 201, 206, 207, 210, 217, 218, 219, 223], "xi": 112, "xx": 210, "xxsampler": 115, "xyz": 23, "y": [18, 23, 105, 112, 118, 120, 125, 126, 131, 144, 147, 150, 151, 152, 154, 156, 157, 163, 189, 193, 201, 210, 218, 219], "yeager": 223, "year": [173, 221], "yet": 224, "yield": [19, 136, 139, 184, 211], "you": [7, 26, 221, 223, 224], "your": [221, 223], "your_modified_develop_branch": 221, "ypoli": 112, "yxi": 112, "yy": 210, "yyyi": 189, "z": [18, 23, 112, 131, 144, 147, 150, 151, 152, 154, 156, 157, 163, 189, 201, 218, 219], "zenith": [194, 212, 213, 216, 219], "zero": [8, 145, 177, 197], "zeroradialvelocityprior": 229}, "titles": ["Accel", "AccelConstNTW", "AccelDrag", "AccelEarthRad", "AccelKepler", "AccelProd", "AccelSolRad", "AccelSum", "Body", "EarthOrientation", "MoonOrientation", "MoonPosition", "PlanetPosition", "SunPosition", "get_body", "HashableArrayContainer", "M_v", "altaz", "dircos", "earthShadowCoords", "earth_shine", "find_passes", "getAngle", "groundTrack", "keplerian_orbital_elements", "moon_shine", "quickAltAz", "radec", "radecRate", "radecRateObsToRV", "refine_pass", "rv", "rvObsToRaDecRate", "sun_shine", "CircVelocityPrior", "GaussPrior", "Hypothesis", "MHT", "Track", "TrackBase", "TrackGauss", "VolumeDistancePrior", "ZeroRadialVelocityPrior", "combinatoric_lnprior", "data_for_satellite", "fit_arc", "fit_arc_blind", "fit_arc_blind_via_track", "fit_arc_with_gaussian_prior", "iterate_mht", "make_optimizer", "make_param_guess", "orbit_to_param", "param_to_orbit", "radeczn", "summarize_tracklet", "summarize_tracklets", "time_ordered_satIDs", "wrap_angle_difference", "AccelHarmonic", "AccelThirdBody", "HarmonicCoefficients", "append_csv", "append_csv_on_disk", "b3obs2pos", "exists", "exists_in_csv", "get_memory_usage", "get_tel_pos_itrf_to_gcrs", "guess_csv_delimiter", "h5_key_exists", "h5append", "h5keys", "h5load", "h5loadall", "h5overwrite", "h5save", "header_csv", "listdir", "load_b3obs_file", "make_tle", "makedf", "merge_dicts", "mkdir", "mpi_scatter", "mpi_scatter_exclude_rank_0", "npload", "npsave", "parseB3", "parseB3Line", "parse_overpunched", "parse_tle", "pd_flatten", "pdstr_to_arrays", "pload", "psave", "read_csv", "read_tle", "read_tle_catalog", "rmdir", "rmfile", "save_csv", "save_csv_line", "str_to_array", "BinarySelectorParams", "Linker", "ModelSelectorParams", "EarthObserver", "Orbit", "OrbitalObserver", "DanchickTwoPosOrbitSolver", "GaussTwoPosOrbitSolver", "SheferTwoPosOrbitSolver", "ThreeAngleOrbitSolver", "TwoPosOrbitSolver", "Particles", "check_numpy_array", "drawEarth", "ecef_plot", "format_xaxis_decimal_year", "gcrf_plot", "groundTrackPlot", "groundTrackVideo", "load_earth_file", "load_moon_file", "lunar_plot", "lunar_stationary_plot", "plotRVCorner", "plotRVTrace", "save_plot_to_pdf", "save_plot_to_png", "tracking_plot", "KeplerianPropagator", "Propagator", "RK4Propagator", "RK78Propagator", "RK8Propagator", "RKPropagator", "SGP4Propagator", "SciPyPropagator", "SeriesPropagator", "default_numerical", "APrior", "AreaPrior", "DirectInitializer", "DistanceProjectionInitializer", "EPrior", "EmceeSampler", "EquinoctialExEyPrior", "EquinoctialLMOptimizer", "GEOProjectionInitializer", "GaussianRVInitializer", "LMOptimizer", "LMOptimizerAngular", "LeastSquaresOptimizer", "Log10AreaPrior", "MHSampler", "MVNormalProposal", "ParamOrbitAngle", "ParamOrbitEquinoctial", "ParamOrbitRV", "ParamOrbitTranslator", "RPrior", "RVProbability", "RVSigmaProposal", "SGP4LMOptimizer", "VPrior", "circular_guess", "damper", "damper_deriv", "eq2kep", "sample_ball", "LRU_Cache", "catalog_to_apparent", "check_lunar_collision", "cluster_emcee_walkers", "continueClass", "find_all_zeros", "find_extrema_brackets", "find_file", "find_nearest_indices", "gcrf_to_ecef", "gcrf_to_lunar", "gcrf_to_stationary_lunar", "gcrf_to_teme", "get_kernel_cov", "get_normed_weights", "get_times", "iers_interp", "integrate_orbit_best_model", "interpolate_points_between", "isAttributeSafeToTransfer", "lazy_property", "lb_to_tan", "lb_to_tp", "lb_to_unit", "moonPos", "newton_raphson", "norm", "normSq", "normed", "ntw_to_r", "num_wraps", "regularize_default", "resample", "rv_to_ntw", "sample_points", "sigma_points", "subsample_high_lnprob", "sunPos", "tan_to_lb", "teme_to_gcrf", "tp_to_lb", "tp_to_unit", "unitAngle3", "unit_to_lb", "unit_to_tp", "unscented_transform_mean_covar", "xyz_to_lb", "xyz_to_tp", "SSAPy Concepts", "Contribution Guide", "SSAPy by Example", "SSAPy - Space Situational Awareness for Python", "Getting Started", "ssapy.accel", "ssapy.body", "ssapy.compute", "ssapy.constants", "ssapy.correlate_tracks", "ssapy.ellipsoid", "ssapy.gravity", "ssapy.io", "ssapy.linker", "ssapy.orbit", "ssapy.orbit_solver", "ssapy.particles", "ssapy.plotUtils", "ssapy.propagator", "ssapy.rvsampler", "ssapy.utils", "API Reference Guide"], "titleterms": {"accel": [0, 225], "accelconstntw": 1, "acceldrag": 2, "accelearthrad": 3, "accelharmon": 59, "accelkepl": 4, "accelprod": 5, "accelsolrad": 6, "accelsum": 7, "accelthirdbodi": 60, "altaz": 17, "api": [223, 241], "append_csv": 62, "append_csv_on_disk": 63, "aprior": 142, "areaprior": 143, "atmospher": 220, "attribut": [34, 35, 36, 39, 42, 105, 107, 108, 109, 115, 142, 143, 144, 145, 146, 147, 148, 150, 151, 155, 156, 157, 162, 163, 164, 166], "author": 223, "awar": 223, "b3obs2po": 64, "basic": 223, "binaryselectorparam": 104, "bodi": [8, 226], "branch": 221, "catalog_to_appar": 173, "check_lunar_collis": 174, "check_numpy_arrai": 116, "cherri": 221, "circular_guess": 167, "circvelocityprior": 34, "class": [225, 226, 227, 229, 231, 233, 234, 235, 236, 238, 239, 240], "cluster_emcee_walk": 175, "code": [220, 223], "combinatoric_lnprior": 43, "comput": [220, 227], "concept": 220, "conduct": 223, "consider": 220, "constant": 228, "continu": 221, "continueclass": 176, "contribut": [221, 223], "coordin": 220, "correlate_track": 229, "coverag": 221, "damper": 168, "damper_deriv": 169, "danchicktwoposorbitsolv": 110, "data_for_satellit": 44, "default_numer": 141, "degre": 61, "depend": [223, 224], "diagram": [225, 226, 227, 229, 231, 233, 234, 235, 236, 238, 239, 240], "dirco": 18, "directiniti": 144, "distanceprojectioniniti": 145, "doc": 223, "document": [221, 223], "drawearth": 117, "earth_shin": 20, "earthobserv": 107, "earthorient": 9, "earthshadowcoord": 19, "ecef_plot": 118, "ellipsoid": 230, "emceesampl": 147, "eprior": 146, "eq2kep": 170, "equinoctialexeyprior": 148, "equinoctiallmoptim": 149, "exampl": [131, 222], "exist": 65, "exists_in_csv": 66, "find_all_zero": 177, "find_extrema_bracket": 178, "find_fil": 179, "find_nearest_indic": 180, "find_pass": 21, "fit_arc": 45, "fit_arc_blind": 46, "fit_arc_blind_via_track": 47, "fit_arc_with_gaussian_prior": 48, "format_xaxis_decimal_year": 119, "function": [226, 227, 229, 232, 237, 238, 239, 240], "gaussianrviniti": 151, "gaussprior": 35, "gausstwoposorbitsolv": 111, "gcrf_plot": 120, "gcrf_to_ecef": 181, "gcrf_to_lunar": 182, "gcrf_to_stationary_lunar": 183, "gcrf_to_tem": 184, "geoprojectioniniti": 150, "get": 224, "get_bodi": 14, "get_kernel_cov": 185, "get_memory_usag": 67, "get_normed_weight": 186, "get_tel_pos_itrf_to_gcr": 68, "get_tim": 187, "getangl": 22, "git": 221, "gravit": 220, "graviti": 231, "groundtrack": 23, "groundtrackplot": 121, "groundtrackvideo": 122, "guess_csv_delimit": 69, "guid": [221, 241], "h5_key_exist": 70, "h5append": 71, "h5kei": 72, "h5load": 73, "h5loadal": 74, "h5overwrit": 75, "h5save": 76, "harmoniccoeffici": 61, "hashablearraycontain": 15, "header_csv": 77, "histori": 221, "hypothesi": 36, "iers_interp": 188, "indic": 223, "inherit": [225, 226, 227, 229, 231, 233, 234, 235, 236, 238, 239, 240], "instal": [223, 224], "integr": [220, 221], "integrate_orbit_best_model": 189, "interpolate_points_between": 190, "io": 232, "isattributesafetotransf": 191, "iterate_mht": 49, "keplerian_orbital_el": 24, "keplerianpropag": 132, "lazy_properti": 192, "lb_to_tan": 193, "lb_to_tp": 194, "lb_to_unit": 195, "leastsquaresoptim": 154, "licens": 223, "linker": [105, 233], "listdir": 78, "lmoptim": 152, "lmoptimizerangular": 153, "load_b3obs_fil": 79, "load_earth_fil": 123, "load_moon_fil": 124, "log10areaprior": 155, "lru_cach": 172, "lunar_plot": 125, "lunar_stationary_plot": 126, "m_v": 16, "make_optim": 50, "make_param_guess": 51, "make_tl": 80, "makedf": 81, "merge_dict": 82, "method": [34, 35, 41, 42, 105, 107, 108, 109, 115, 142, 143, 144, 145, 146, 147, 148, 150, 151, 155, 156, 157, 162, 163, 164, 166], "mhsampler": 156, "mht": 37, "mkdir": 83, "model": 220, "modelselectorparam": 106, "moon_shin": 25, "moonorient": 10, "moonpo": 196, "moonposit": 11, "mpi_scatt": 84, "mpi_scatter_exclude_rank_0": 85, "mvnormalpropos": 157, "name": 61, "newton_raphson": 197, "norm": [198, 200], "normsq": 199, "note": [17, 18, 23, 26, 27, 28, 31, 80, 91, 107, 108, 131, 144, 189], "npload": 86, "npsave": 87, "ntw_to_r": 201, "num_wrap": 202, "numer": 220, "orbit": [108, 220, 234], "orbit_solv": 235, "orbit_to_param": 52, "orbitalobserv": 109, "order": 61, "orekit": 224, "other": 220, "param": [157, 164], "param_to_orbit": 53, "paramet": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 21, 23, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 52, 53, 55, 56, 57, 59, 60, 61, 80, 91, 96, 97, 98, 105, 107, 108, 109, 113, 114, 115, 117, 118, 120, 121, 122, 125, 126, 127, 128, 131, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 150, 151, 155, 156, 157, 162, 163, 166, 167, 171, 173, 184, 187, 188, 189, 193, 196, 197, 201, 205, 206, 207, 208, 209, 210, 211, 217], "paramorbitangl": 158, "paramorbitequinocti": 159, "paramorbitrv": 160, "paramorbittransl": 161, "parse_overpunch": 90, "parse_tl": 91, "parseb3": 88, "parseb3lin": 89, "particl": [115, 236], "pd_flatten": 92, "pdstr_to_arrai": 93, "pick": 221, "planetposit": 12, "pload": 94, "plotrvcorn": 127, "plotrvtrac": 128, "plotutil": 237, "prerequisit": 224, "pressur": 220, "propag": [133, 238], "psave": 95, "python": 223, "quickaltaz": 26, "radec": 27, "radecr": 28, "radecrateobstorv": 29, "radeczn": 54, "radiat": 220, "re": 221, "read_csv": 96, "read_tl": 97, "read_tle_catalog": 98, "rebas": 221, "refer": [105, 241], "refine_pass": 30, "regularize_default": 203, "releas": 223, "resampl": 204, "return": [2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 17, 18, 19, 21, 23, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 47, 55, 56, 57, 59, 60, 91, 96, 97, 98, 105, 107, 108, 109, 115, 127, 131, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 162, 163, 165, 166, 167, 171, 173, 184, 187, 188, 189, 193, 196, 197, 201, 202, 205, 206, 208, 209, 210, 211], "rk4propag": 134, "rk78propag": 135, "rk8propag": 136, "rkpropag": 137, "rmdir": 99, "rmfile": 100, "rprior": 162, "rv": 31, "rv_to_ntw": 205, "rvobstoradecr": 32, "rvprobabl": 163, "rvsampler": 239, "rvsigmapropos": 164, "sample_bal": 171, "sample_point": 206, "save_csv": 101, "save_csv_lin": 102, "save_plot_to_pdf": 129, "save_plot_to_png": 130, "scipypropag": 139, "seriespropag": 140, "sgp4lmoptim": 165, "sgp4propag": 138, "shefertwoposorbitsolv": 112, "sigma_point": 207, "situat": 223, "space": 223, "ssapi": [220, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240], "standard": 220, "start": 224, "str_to_arrai": 103, "strict": 223, "style": 221, "subsample_high_lnprob": 208, "summarize_tracklet": [55, 56], "sun_shin": 33, "sunpo": 209, "sunposit": 13, "system": [220, 224], "tabl": 223, "tan_to_lb": 210, "teme_to_gcrf": 211, "test": 221, "threeangleorbitsolv": 113, "time": 220, "time_ordered_satid": 57, "tp_to_lb": 212, "tp_to_unit": 213, "track": 38, "trackbas": 39, "trackgauss": 40, "tracking_plot": 131, "twoposorbitsolv": 114, "type": 220, "unit": 221, "unit_to_lb": 215, "unit_to_tp": 216, "unitangle3": 214, "unscented_transform_mean_covar": 217, "usag": 131, "util": 240, "volumedistanceprior": 41, "vprior": 166, "workflow": 221, "wrap_angle_differ": 58, "write": 221, "xyz_to_lb": 218, "xyz_to_tp": 219, "zeroradialvelocityprior": 42}}) \ No newline at end of file