satkit 0.14.2__tar.gz → 0.14.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {satkit-0.14.2 → satkit-0.14.3}/Cargo.toml +2 -2
- {satkit-0.14.2/python/satkit.egg-info → satkit-0.14.3}/PKG-INFO +1 -1
- {satkit-0.14.2 → satkit-0.14.3}/pyproject.toml +1 -1
- {satkit-0.14.2 → satkit-0.14.3}/python/Cargo.toml +1 -1
- {satkit-0.14.2 → satkit-0.14.3/python/satkit.egg-info}/PKG-INFO +1 -1
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pypropresult.rs +24 -1
- {satkit-0.14.2 → satkit-0.14.3}/src/orbitprop/propagator.rs +34 -0
- {satkit-0.14.2 → satkit-0.14.3}/LICENSE +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/MANIFEST.in +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/README.md +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/build.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit/__init__.py +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit/__init__.pyi +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit/density.pyi +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit/frametransform.pyi +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit/jplephem.pyi +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit/moon.pyi +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit/planets.pyi +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit/py.typed +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit/satkit.pyi +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit/sun.pyi +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit/utils.pyi +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit.egg-info/SOURCES.txt +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit.egg-info/dependency_links.txt +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit.egg-info/requires.txt +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/satkit.egg-info/top_level.txt +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/lib.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/mod_utils.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pyconsts.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pydensity.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pyduration.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pyframes.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pyframetransform.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pygravity.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pyinstant.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pyitrfcoord.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pyjplephem.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pykepler.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pylambert.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pylpephem_moon.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pylpephem_planets.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pylpephem_sun.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pympsuccess.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pynrlmsise.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pypropagate.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pypropsettings.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pyquaternion.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pysatproperties.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pysatstate.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pysgp4.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pysolarsystem.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pytle.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pyukf.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/python/src/pyutils.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/setup.cfg +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/consts.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/earth_orientation_params.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/earthgravity.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/frames.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/frametransform/ierstable.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/frametransform/mod.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/frametransform/qcirs2gcrs.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/itrfcoord.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/jplephem.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/kepler.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/lambert.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/lib.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/lpephem/mod.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/lpephem/moon.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/lpephem/planets.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/lpephem/sun.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/mathtypes.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/nrlmsise.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/omm/mod.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/omm/xml.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/orbitprop/drag.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/orbitprop/mod.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/orbitprop/point_gravity.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/orbitprop/precomputed.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/orbitprop/satproperties.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/orbitprop/satstate.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/orbitprop/settings.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/sgp4/dpper.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/sgp4/dscom.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/sgp4/dsinit.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/sgp4/dspace.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/sgp4/getgravconst.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/sgp4/initl.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/sgp4/mod.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/sgp4/satrec.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/sgp4/sgp4_impl.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/sgp4/sgp4_lowlevel.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/sgp4/sgp4init.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/solar_cycle_forecast.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/solarsystem.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/spaceweather.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/time/chrono.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/time/duration.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/time/instant.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/time/instant_err.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/time/instant_ops.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/time/instantparse.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/time/mod.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/time/tests.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/time/timelike.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/time/timescale.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/time/weekday.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/tle/fitting.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/tle/mod.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/utils/datadir.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/utils/download.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/utils/mod.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/utils/test.rs +0 -0
- {satkit-0.14.2 → satkit-0.14.3}/src/utils/update_data.rs +0 -0
|
@@ -3,7 +3,7 @@ members = [".", "python"]
|
|
|
3
3
|
|
|
4
4
|
[package]
|
|
5
5
|
name = "satkit"
|
|
6
|
-
version = "0.14.
|
|
6
|
+
version = "0.14.3"
|
|
7
7
|
edition = "2021"
|
|
8
8
|
description = "Satellite Toolkit"
|
|
9
9
|
readme = "README.md"
|
|
@@ -22,7 +22,7 @@ name = "satkit"
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
[dependencies]
|
|
25
|
-
numeris = { version = "0.5.
|
|
25
|
+
numeris = { version = "0.5.7", features = ["serde", "estimate", "ode"] }
|
|
26
26
|
num-traits = "0.2.19"
|
|
27
27
|
thiserror = "2.0"
|
|
28
28
|
ureq = "3.1.2"
|
|
@@ -9,7 +9,7 @@ requires-python = ">= 3.10"
|
|
|
9
9
|
authors = [{ name = "Steven Michael", email = "ssmichael@gmail.com" }]
|
|
10
10
|
maintainers = [{ name = "Steven Michael", email = "ssmichael@gmail.com" }]
|
|
11
11
|
readme = "README.md"
|
|
12
|
-
version = "0.14.
|
|
12
|
+
version = "0.14.3"
|
|
13
13
|
license = "MIT"
|
|
14
14
|
description = "Satellite Orbital Dynamics Toolkit"
|
|
15
15
|
keywords = [
|
|
@@ -313,7 +313,30 @@ impl PyPropResult {
|
|
|
313
313
|
|
|
314
314
|
let times = (&time).to_time_vec()?;
|
|
315
315
|
|
|
316
|
-
if is_list {
|
|
316
|
+
if is_list && !output_phi {
|
|
317
|
+
// Batch interpolation — returns Nx6 numpy array
|
|
318
|
+
match &self.0 {
|
|
319
|
+
PyPropResultType::R1(r) => {
|
|
320
|
+
let results = r.interp_batch(×)
|
|
321
|
+
.map_err(|e| pyo3::exceptions::PyValueError::new_err(e.to_string()))?;
|
|
322
|
+
pyo3::Python::attach(|py| {
|
|
323
|
+
let n = results.len();
|
|
324
|
+
let flat: Vec<f64> = results.iter().flat_map(|r| r.as_slice().iter().copied().take(6)).collect();
|
|
325
|
+
slice2py2d(py, &flat, n, 6)
|
|
326
|
+
})
|
|
327
|
+
}
|
|
328
|
+
PyPropResultType::R7(r) => {
|
|
329
|
+
let results = r.interp_batch(×)
|
|
330
|
+
.map_err(|e| pyo3::exceptions::PyValueError::new_err(e.to_string()))?;
|
|
331
|
+
pyo3::Python::attach(|py| {
|
|
332
|
+
let n = results.len();
|
|
333
|
+
let flat: Vec<f64> = results.iter().flat_map(|r| r.as_slice().iter().copied().take(6)).collect();
|
|
334
|
+
slice2py2d(py, &flat, n, 6)
|
|
335
|
+
})
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
} else if is_list {
|
|
339
|
+
// Fallback for output_phi=true — need per-element processing
|
|
317
340
|
let results: PyResult<Vec<Py<PyAny>>> =
|
|
318
341
|
times.iter().map(|t| self.interp_at(t, output_phi)).collect();
|
|
319
342
|
pyo3::Python::attach(|py| results?.into_py_any(py))
|
|
@@ -52,6 +52,10 @@ impl<const T: usize> PropagationResult<T> {
|
|
|
52
52
|
pub fn interp<U: TimeLike>(&self, time: &U) -> Result<Matrix<6, T>> {
|
|
53
53
|
interp_propresult(self, time)
|
|
54
54
|
}
|
|
55
|
+
|
|
56
|
+
pub fn interp_batch(&self, times: &[Instant]) -> Result<Vec<StateType<T>>> {
|
|
57
|
+
interp_propresult_batch(self, times)
|
|
58
|
+
}
|
|
55
59
|
}
|
|
56
60
|
|
|
57
61
|
pub type StateType<const C: usize> = Matrix<6, C>;
|
|
@@ -549,6 +553,36 @@ pub fn interp_propresult<const C: usize, T: TimeLike>(
|
|
|
549
553
|
Ok(result.map_err(PropagationError::ODEError)?)
|
|
550
554
|
}
|
|
551
555
|
|
|
556
|
+
pub fn interp_propresult_batch<const C: usize>(
|
|
557
|
+
res: &PropagationResult<C>,
|
|
558
|
+
times: &[Instant],
|
|
559
|
+
) -> Result<Vec<StateType<C>>> {
|
|
560
|
+
use crate::orbitprop::Integrator;
|
|
561
|
+
|
|
562
|
+
let sol = res
|
|
563
|
+
.odesol
|
|
564
|
+
.as_ref()
|
|
565
|
+
.filter(|s| s.dense.is_some())
|
|
566
|
+
.ok_or(PropagationError::NoDenseOutputInSolution)?;
|
|
567
|
+
|
|
568
|
+
let xs: Vec<f64> = times
|
|
569
|
+
.iter()
|
|
570
|
+
.map(|t| (*t - res.time_begin).as_seconds())
|
|
571
|
+
.collect();
|
|
572
|
+
|
|
573
|
+
let results = match res.integrator {
|
|
574
|
+
Integrator::RKV98 => ode::RKV98::interpolate_batch(&xs, sol),
|
|
575
|
+
Integrator::RKV98NoInterp => ode::RKV98NoInterp::interpolate_batch(&xs, sol),
|
|
576
|
+
Integrator::RKV87 => ode::RKV87::interpolate_batch(&xs, sol),
|
|
577
|
+
Integrator::RKV65 => ode::RKV65::interpolate_batch(&xs, sol),
|
|
578
|
+
Integrator::RKTS54 => ode::RKTS54::interpolate_batch(&xs, sol),
|
|
579
|
+
Integrator::RODAS4 => {
|
|
580
|
+
return Err(PropagationError::NoDenseOutputInSolution.into());
|
|
581
|
+
}
|
|
582
|
+
};
|
|
583
|
+
Ok(results.map_err(PropagationError::ODEError)?)
|
|
584
|
+
}
|
|
585
|
+
|
|
552
586
|
#[cfg(test)]
|
|
553
587
|
mod tests {
|
|
554
588
|
use super::*;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|