@neilberkman/sidereon 0.9.0 → 0.9.1
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.
- package/README.md +91 -100
- package/package.json +1 -1
- package/pkg/sidereon.d.ts +1295 -774
- package/pkg/sidereon.js +1039 -10
- package/pkg/sidereon_bg.wasm +0 -0
- package/pkg/sidereon_bg.wasm.d.ts +822 -760
- package/pkg-node/sidereon.d.ts +461 -2
- package/pkg-node/sidereon.js +1070 -10
- package/pkg-node/sidereon_bg.wasm +0 -0
- package/pkg-node/sidereon_bg.wasm.d.ts +822 -760
package/pkg-node/sidereon.d.ts
CHANGED
|
@@ -1367,6 +1367,37 @@ export class Ephemeris {
|
|
|
1367
1367
|
readonly velocityKmS: Float64Array;
|
|
1368
1368
|
}
|
|
1369
1369
|
|
|
1370
|
+
/**
|
|
1371
|
+
* A confidence ellipse from a 2x2 covariance block: semi-axes scaled by the
|
|
1372
|
+
* two-degree-of-freedom chi-square quantile `-2 ln(1 - confidence)`.
|
|
1373
|
+
*/
|
|
1374
|
+
export class ErrorEllipse2 {
|
|
1375
|
+
private constructor();
|
|
1376
|
+
free(): void;
|
|
1377
|
+
[Symbol.dispose](): void;
|
|
1378
|
+
/**
|
|
1379
|
+
* Two-degree-of-freedom chi-square scale `-2 ln(1 - confidence)`.
|
|
1380
|
+
*/
|
|
1381
|
+
readonly chiSquareScale: number;
|
|
1382
|
+
/**
|
|
1383
|
+
* Requested confidence probability in `(0, 1)`.
|
|
1384
|
+
*/
|
|
1385
|
+
readonly confidence: number;
|
|
1386
|
+
/**
|
|
1387
|
+
* Semi-major-axis orientation in radians, from the first (row/col 0) axis
|
|
1388
|
+
* toward the second (row/col 1) axis.
|
|
1389
|
+
*/
|
|
1390
|
+
readonly orientationRad: number;
|
|
1391
|
+
/**
|
|
1392
|
+
* Semi-major axis length (same unit as the square root of the covariance).
|
|
1393
|
+
*/
|
|
1394
|
+
readonly semiMajor: number;
|
|
1395
|
+
/**
|
|
1396
|
+
* Semi-minor axis length.
|
|
1397
|
+
*/
|
|
1398
|
+
readonly semiMinor: number;
|
|
1399
|
+
}
|
|
1400
|
+
|
|
1370
1401
|
/**
|
|
1371
1402
|
* A fault-detection-and-exclusion result: the surviving solution, the excluded
|
|
1372
1403
|
* satellites in exclusion order, and the number of exclusions performed.
|
|
@@ -2193,6 +2224,95 @@ export class LeapSecondTable {
|
|
|
2193
2224
|
readonly source: string;
|
|
2194
2225
|
}
|
|
2195
2226
|
|
|
2227
|
+
/**
|
|
2228
|
+
* A serial leave-one-out sweep: the base solve over all rows plus one re-solve
|
|
2229
|
+
* per masked row, with the per-row optimum-cost shift.
|
|
2230
|
+
*/
|
|
2231
|
+
export class LeastSquaresDropOneReport {
|
|
2232
|
+
private constructor();
|
|
2233
|
+
free(): void;
|
|
2234
|
+
[Symbol.dispose](): void;
|
|
2235
|
+
/**
|
|
2236
|
+
* The solve with residual row `index` masked out. Throws a `RangeError` for
|
|
2237
|
+
* an out-of-range index.
|
|
2238
|
+
*/
|
|
2239
|
+
dropAt(index: number): LeastSquaresResult;
|
|
2240
|
+
/**
|
|
2241
|
+
* The solve over the full residual.
|
|
2242
|
+
*/
|
|
2243
|
+
readonly base: LeastSquaresResult;
|
|
2244
|
+
/**
|
|
2245
|
+
* `costDeltas[i] = dropAt(i).cost - base.cost`: how much the optimum cost
|
|
2246
|
+
* moves when row `i` is removed. `Float64Array` of length `count`.
|
|
2247
|
+
*/
|
|
2248
|
+
readonly costDeltas: Float64Array;
|
|
2249
|
+
/**
|
|
2250
|
+
* Number of masked-row re-solves (equals the residual-row count `m`).
|
|
2251
|
+
*/
|
|
2252
|
+
readonly count: number;
|
|
2253
|
+
}
|
|
2254
|
+
|
|
2255
|
+
/**
|
|
2256
|
+
* The outcome of one trust-region least-squares solve, mirroring the fields of
|
|
2257
|
+
* `scipy.optimize.least_squares`'s `OptimizeResult`.
|
|
2258
|
+
*/
|
|
2259
|
+
export class LeastSquaresResult {
|
|
2260
|
+
private constructor();
|
|
2261
|
+
free(): void;
|
|
2262
|
+
[Symbol.dispose](): void;
|
|
2263
|
+
/**
|
|
2264
|
+
* Optimal cost `0.5 * sum(residual^2)` (after robust reweighting when a
|
|
2265
|
+
* non-linear loss is used).
|
|
2266
|
+
*/
|
|
2267
|
+
readonly cost: number;
|
|
2268
|
+
/**
|
|
2269
|
+
* Residual vector at the solution, `Float64Array` of length `m`.
|
|
2270
|
+
*/
|
|
2271
|
+
readonly fun: Float64Array;
|
|
2272
|
+
/**
|
|
2273
|
+
* Gradient `J^T f` at the solution, `Float64Array` of length `n`.
|
|
2274
|
+
*/
|
|
2275
|
+
readonly grad: Float64Array;
|
|
2276
|
+
/**
|
|
2277
|
+
* Row-major `m`-by-`n` Jacobian at the solution, flat `Float64Array` of
|
|
2278
|
+
* length `m * n`.
|
|
2279
|
+
*/
|
|
2280
|
+
readonly jac: Float64Array;
|
|
2281
|
+
/**
|
|
2282
|
+
* Residual row count `m`.
|
|
2283
|
+
*/
|
|
2284
|
+
readonly m: number;
|
|
2285
|
+
/**
|
|
2286
|
+
* Parameter count `n`.
|
|
2287
|
+
*/
|
|
2288
|
+
readonly n: number;
|
|
2289
|
+
/**
|
|
2290
|
+
* Number of residual evaluations.
|
|
2291
|
+
*/
|
|
2292
|
+
readonly nfev: number;
|
|
2293
|
+
/**
|
|
2294
|
+
* Number of Jacobian evaluations.
|
|
2295
|
+
*/
|
|
2296
|
+
readonly njev: number;
|
|
2297
|
+
/**
|
|
2298
|
+
* First-order optimality `||J^T f||_inf` at the solution.
|
|
2299
|
+
*/
|
|
2300
|
+
readonly optimality: number;
|
|
2301
|
+
/**
|
|
2302
|
+
* SciPy-compatible termination status: `0` max evaluations, `1` gtol,
|
|
2303
|
+
* `2` ftol, `3` xtol, `4` both ftol and xtol.
|
|
2304
|
+
*/
|
|
2305
|
+
readonly status: number;
|
|
2306
|
+
/**
|
|
2307
|
+
* Whether the solve converged (`status > 0`).
|
|
2308
|
+
*/
|
|
2309
|
+
readonly success: boolean;
|
|
2310
|
+
/**
|
|
2311
|
+
* Solution parameter vector, `Float64Array` of length `n`.
|
|
2312
|
+
*/
|
|
2313
|
+
readonly x: Float64Array;
|
|
2314
|
+
}
|
|
2315
|
+
|
|
2196
2316
|
/**
|
|
2197
2317
|
* Link-budget inputs for [`LinkBudget.margin`].
|
|
2198
2318
|
*/
|
|
@@ -2421,6 +2541,49 @@ export class MappingFactors {
|
|
|
2421
2541
|
readonly wet: number;
|
|
2422
2542
|
}
|
|
2423
2543
|
|
|
2544
|
+
/**
|
|
2545
|
+
* One refined Moon elevation threshold crossing (moonrise / moonset).
|
|
2546
|
+
*/
|
|
2547
|
+
export class MoonElevationCrossing {
|
|
2548
|
+
private constructor();
|
|
2549
|
+
free(): void;
|
|
2550
|
+
[Symbol.dispose](): void;
|
|
2551
|
+
/**
|
|
2552
|
+
* Topocentric Moon elevation at the refined instant, degrees.
|
|
2553
|
+
*/
|
|
2554
|
+
readonly elevationDeg: number;
|
|
2555
|
+
/**
|
|
2556
|
+
* Crossing direction: `"rising"` (moonrise) or `"setting"` (moonset).
|
|
2557
|
+
*/
|
|
2558
|
+
readonly kind: string;
|
|
2559
|
+
/**
|
|
2560
|
+
* Refined crossing instant, unix microseconds.
|
|
2561
|
+
*/
|
|
2562
|
+
readonly timeUnixUs: bigint;
|
|
2563
|
+
}
|
|
2564
|
+
|
|
2565
|
+
/**
|
|
2566
|
+
* One refined Moon meridian transit (culmination).
|
|
2567
|
+
*/
|
|
2568
|
+
export class MoonTransit {
|
|
2569
|
+
private constructor();
|
|
2570
|
+
free(): void;
|
|
2571
|
+
[Symbol.dispose](): void;
|
|
2572
|
+
/**
|
|
2573
|
+
* Topocentric Moon elevation at the refined instant, degrees.
|
|
2574
|
+
*/
|
|
2575
|
+
readonly elevationDeg: number;
|
|
2576
|
+
/**
|
|
2577
|
+
* Culmination kind: `"upper"` (due south, highest) or `"lower"` (due north,
|
|
2578
|
+
* lowest).
|
|
2579
|
+
*/
|
|
2580
|
+
readonly kind: string;
|
|
2581
|
+
/**
|
|
2582
|
+
* Refined culmination instant, unix microseconds.
|
|
2583
|
+
*/
|
|
2584
|
+
readonly timeUnixUs: bigint;
|
|
2585
|
+
}
|
|
2586
|
+
|
|
2424
2587
|
/**
|
|
2425
2588
|
* One solved moving-baseline epoch.
|
|
2426
2589
|
*/
|
|
@@ -3500,6 +3663,38 @@ export class PppFloatSolution {
|
|
|
3500
3663
|
readonly ztdResidualM: number | undefined;
|
|
3501
3664
|
}
|
|
3502
3665
|
|
|
3666
|
+
/**
|
|
3667
|
+
* The per-request results of a batch observable prediction, index-aligned to
|
|
3668
|
+
* the input requests. Each request independently either produced observables or
|
|
3669
|
+
* failed; query a request with [`PredictBatch.isOk`] /
|
|
3670
|
+
* [`PredictBatch.observables`] / [`PredictBatch.error`].
|
|
3671
|
+
*/
|
|
3672
|
+
export class PredictBatch {
|
|
3673
|
+
private constructor();
|
|
3674
|
+
free(): void;
|
|
3675
|
+
[Symbol.dispose](): void;
|
|
3676
|
+
/**
|
|
3677
|
+
* The failure message for request `index`, or `undefined` when it
|
|
3678
|
+
* succeeded. Throws a `RangeError` for an out-of-range index.
|
|
3679
|
+
*/
|
|
3680
|
+
error(index: number): string | undefined;
|
|
3681
|
+
/**
|
|
3682
|
+
* Whether request `index` produced observables. Throws a `RangeError` for
|
|
3683
|
+
* an out-of-range index.
|
|
3684
|
+
*/
|
|
3685
|
+
isOk(index: number): boolean;
|
|
3686
|
+
/**
|
|
3687
|
+
* The observables for request `index`. Throws a `RangeError` for an
|
|
3688
|
+
* out-of-range index and an `Error` carrying that request's failure message
|
|
3689
|
+
* when the prediction failed (check [`PredictBatch.isOk`] first).
|
|
3690
|
+
*/
|
|
3691
|
+
observables(index: number): PredictedObservables;
|
|
3692
|
+
/**
|
|
3693
|
+
* Number of requests in the batch.
|
|
3694
|
+
*/
|
|
3695
|
+
readonly count: number;
|
|
3696
|
+
}
|
|
3697
|
+
|
|
3503
3698
|
/**
|
|
3504
3699
|
* Predicted GNSS observables for one satellite at one receive epoch. Every
|
|
3505
3700
|
* field is computed by `sidereon_core::observables::predict`.
|
|
@@ -5119,6 +5314,21 @@ export function collisionProbability(object1: ConjunctionState, object2: Conjunc
|
|
|
5119
5314
|
*/
|
|
5120
5315
|
export function correlate(iq: Float64Array, prn: bigint, options: any): CorrelationResult;
|
|
5121
5316
|
|
|
5317
|
+
/**
|
|
5318
|
+
* Fitted parameter covariance from a converged solve, scaling `(J^T J)^-1` by
|
|
5319
|
+
* the post-fit reduced chi-square `s_sq = 2 * cost / (m - n)` (the same scale
|
|
5320
|
+
* `scipy.optimize.curve_fit` applies to its `pcov`).
|
|
5321
|
+
*
|
|
5322
|
+
* `jacobian` is a flat row-major `(m, n)` `Float64Array` (the Jacobian at the
|
|
5323
|
+
* solution), and `cost` is the solve's optimal cost `0.5 * sum(residual^2)`;
|
|
5324
|
+
* the degrees of freedom `m - n` (taken from the Jacobian's own shape) must be
|
|
5325
|
+
* positive. Pairs naturally with a [`crate::LeastSquaresResult`] (`result.jac`,
|
|
5326
|
+
* `result.m`, `result.n`, `result.cost`). Returns the `n`-by-`n` covariance as
|
|
5327
|
+
* a flat row-major `Float64Array`. Delegates to
|
|
5328
|
+
* `sidereon_core::astro::math::least_squares::covariance_from_jacobian`.
|
|
5329
|
+
*/
|
|
5330
|
+
export function covarianceFromJacobian(jacobian: Float64Array, m: number, n: number, cost: number): Float64Array;
|
|
5331
|
+
|
|
5122
5332
|
/**
|
|
5123
5333
|
* Whether a 3x3 covariance (flat row-major length 9) is symmetric positive
|
|
5124
5334
|
* semidefinite within the engine tolerance.
|
|
@@ -5221,6 +5431,19 @@ export function diff(previous: any, current: any): any;
|
|
|
5221
5431
|
*/
|
|
5222
5432
|
export function dishGain(diameter_m: number, frequency_hz: number, efficiency: number): number;
|
|
5223
5433
|
|
|
5434
|
+
/**
|
|
5435
|
+
* GNSS dilution of precision with an explicit ENU convention for the
|
|
5436
|
+
* horizontal/vertical split.
|
|
5437
|
+
*
|
|
5438
|
+
* `lineOfSight` is a flat row-major `(n, 3)` `Float64Array` of ECEF unit
|
|
5439
|
+
* vectors, `weights` a positive `Float64Array` of length `n`, and `convention`
|
|
5440
|
+
* is `"geodeticNormal"` (the GNSS-standard default, matching [`gnssDop`]) or
|
|
5441
|
+
* `"geocentricRadial"` (radial up). Only HDOP/VDOP differ between conventions
|
|
5442
|
+
* (by ~`1e-3` relative); GDOP/PDOP/TDOP are identical. Delegates to
|
|
5443
|
+
* `sidereon_core::geometry::dop_with_convention`.
|
|
5444
|
+
*/
|
|
5445
|
+
export function dopWithConvention(line_of_sight: Float64Array, weights: Float64Array, receiver: Wgs84Geodetic, convention: string): Dop;
|
|
5446
|
+
|
|
5224
5447
|
/**
|
|
5225
5448
|
* Range rate and dimensionless Doppler ratio from a GCRS state.
|
|
5226
5449
|
*
|
|
@@ -5267,6 +5490,33 @@ export function ecefToGeodetic(position_km: Float64Array): Float64Array;
|
|
|
5267
5490
|
*/
|
|
5268
5491
|
export function eclipseStatus(satellite_position_km: Float64Array, sun_position_km: Float64Array): string[];
|
|
5269
5492
|
|
|
5493
|
+
/**
|
|
5494
|
+
* Ellipsoidal height `h = H + N` (metres above the WGS84 ellipsoid) from an
|
|
5495
|
+
* orthometric height and a geodetic position in radians, using the embedded
|
|
5496
|
+
* genuine EGM96 1-degree model. Delegates to
|
|
5497
|
+
* `sidereon_core::geoid::egm96_ellipsoidal_height_m`.
|
|
5498
|
+
*/
|
|
5499
|
+
export function egm96EllipsoidalHeightM(orthometric_height_m: number, lat_rad: number, lon_rad: number): number;
|
|
5500
|
+
|
|
5501
|
+
/**
|
|
5502
|
+
* Orthometric height `H = h - N` (metres above mean sea level) from an
|
|
5503
|
+
* ellipsoidal height and a geodetic position in radians, using the embedded
|
|
5504
|
+
* genuine EGM96 1-degree model. Delegates to
|
|
5505
|
+
* `sidereon_core::geoid::egm96_orthometric_height_m`.
|
|
5506
|
+
*/
|
|
5507
|
+
export function egm96OrthometricHeightM(ellipsoidal_height_m: number, lat_rad: number, lon_rad: number): number;
|
|
5508
|
+
|
|
5509
|
+
/**
|
|
5510
|
+
* Geoid undulation `N` (metres above the WGS84 ellipsoid) at a geodetic
|
|
5511
|
+
* position in radians, from the embedded GENUINE EGM96 1-degree global grid.
|
|
5512
|
+
* Latitude is positive north, longitude positive east. This is the recommended
|
|
5513
|
+
* zero-setup default for metre-class datum work (its bilinear lookup agrees
|
|
5514
|
+
* with the full 15-arcminute EGM96 grid to ~0.4 m RMS); the coarse
|
|
5515
|
+
* [`geoidUndulation`] is only suitable for sanity checks. Delegates to
|
|
5516
|
+
* `sidereon_core::geoid::egm96_undulation`.
|
|
5517
|
+
*/
|
|
5518
|
+
export function egm96Undulation(lat_rad: number, lon_rad: number): number;
|
|
5519
|
+
|
|
5270
5520
|
/**
|
|
5271
5521
|
* Effective isotropic radiated power, dBW.
|
|
5272
5522
|
*/
|
|
@@ -5328,6 +5578,39 @@ export function encounterFrame(position1_km: Float64Array, velocity1_km_s: Float
|
|
|
5328
5578
|
*/
|
|
5329
5579
|
export function encounterPlaneCovariance(frame: EncounterFrame, covariance_km2: Float64Array): Float64Array;
|
|
5330
5580
|
|
|
5581
|
+
/**
|
|
5582
|
+
* Confidence ellipse from an arbitrary 2x2 covariance block.
|
|
5583
|
+
*
|
|
5584
|
+
* `covariance` is a flat row-major length-4 `Float64Array` (`[c00, c01, c10,
|
|
5585
|
+
* c11]`); `confidence` is in `(0, 1)`. The semi-axes are the eigenvalues of the
|
|
5586
|
+
* symmetrized block scaled by the chi-square(2) quantile. Throws a `RangeError`
|
|
5587
|
+
* for a non-positive-semidefinite block or an out-of-range confidence.
|
|
5588
|
+
* Delegates to `sidereon_core::geometry::error_ellipse_2x2`.
|
|
5589
|
+
*/
|
|
5590
|
+
export function errorEllipse2(covariance: Float64Array, confidence: number): ErrorEllipse2;
|
|
5591
|
+
|
|
5592
|
+
/**
|
|
5593
|
+
* Find Moon elevation threshold crossings (moonrise / moonset) over a UTC
|
|
5594
|
+
* window.
|
|
5595
|
+
*
|
|
5596
|
+
* The station is geodetic (`latitudeDeg`, `longitudeDeg`, `altitudeKm`);
|
|
5597
|
+
* `startUnixUs` / `endUnixUs` bound the window in unix microseconds. `options`
|
|
5598
|
+
* is `{ elevationThresholdDeg?, stepSeconds?, timeToleranceSeconds? }`.
|
|
5599
|
+
* Delegates to `sidereon_core::astro::bodies::find_moon_elevation_crossings`.
|
|
5600
|
+
*/
|
|
5601
|
+
export function findMoonElevationCrossings(latitude_deg: number, longitude_deg: number, altitude_km: number, start_unix_us: bigint, end_unix_us: bigint, options: any): MoonElevationCrossing[];
|
|
5602
|
+
|
|
5603
|
+
/**
|
|
5604
|
+
* Find Moon meridian transits (upper and lower culminations) over a UTC window.
|
|
5605
|
+
*
|
|
5606
|
+
* The station is geodetic (`latitudeDeg`, `longitudeDeg`, `altitudeKm`);
|
|
5607
|
+
* `startUnixUs` / `endUnixUs` bound the window in unix microseconds.
|
|
5608
|
+
* `stepSeconds` is the uniform scan step and `timeToleranceSeconds` the
|
|
5609
|
+
* refinement tolerance. Delegates to
|
|
5610
|
+
* `sidereon_core::astro::bodies::find_moon_transits`.
|
|
5611
|
+
*/
|
|
5612
|
+
export function findMoonTransits(latitude_deg: number, longitude_deg: number, altitude_km: number, start_unix_us: bigint, end_unix_us: bigint, step_seconds: number, time_tolerance_seconds: number): MoonTransit[];
|
|
5613
|
+
|
|
5331
5614
|
/**
|
|
5332
5615
|
* Find local TCA candidates between two satellites over a UTC window.
|
|
5333
5616
|
*
|
|
@@ -5601,6 +5884,24 @@ export function gnssVisibilitySeries(sp3: Sp3, station_ecef_m: Float64Array, sta
|
|
|
5601
5884
|
*/
|
|
5602
5885
|
export function gnssVisible(sp3: Sp3, station_ecef_m: Float64Array, j2000_seconds: number, options: any): GnssVisibleSatellite[];
|
|
5603
5886
|
|
|
5887
|
+
/**
|
|
5888
|
+
* GPS - UTC (the GNSS leap-second offset since the GPS epoch) on a UTC calendar
|
|
5889
|
+
* date: the IS-GPS-200 quantity broadcast in the navigation message (18 s from
|
|
5890
|
+
* 2017-01-01). Equals `taiUtcOffsetS - 19`. Use this, not [`taiUtcOffsetS`],
|
|
5891
|
+
* whenever you mean the leap seconds a GPS receiver applies. Delegates to
|
|
5892
|
+
* `sidereon_core::astro::time::scales::gps_utc_offset_s`.
|
|
5893
|
+
*/
|
|
5894
|
+
export function gpsUtcOffsetS(year: number, month: number, day: number): number;
|
|
5895
|
+
|
|
5896
|
+
/**
|
|
5897
|
+
* Trace of the Gauss-Newton Hessian approximation `J^T J`: the sum of the
|
|
5898
|
+
* squared column norms of the Jacobian, with no inverse formed.
|
|
5899
|
+
*
|
|
5900
|
+
* `jacobian` is a flat row-major `(m, n)` `Float64Array`. Delegates to
|
|
5901
|
+
* `sidereon_core::astro::math::least_squares::hessian_trace`.
|
|
5902
|
+
*/
|
|
5903
|
+
export function hessianTrace(jacobian: Float64Array, m: number, n: number): number;
|
|
5904
|
+
|
|
5604
5905
|
/**
|
|
5605
5906
|
* Gauss angles-only orbit determination.
|
|
5606
5907
|
*
|
|
@@ -5670,6 +5971,17 @@ export function itrsToGcrs(position_km: Float64Array, epochs_unix_us: BigInt64Ar
|
|
|
5670
5971
|
*/
|
|
5671
5972
|
export function j2000SecondsToCivil(seconds: bigint): CivilDateTime;
|
|
5672
5973
|
|
|
5974
|
+
/**
|
|
5975
|
+
* Jarque-Bera normality test on a residual set.
|
|
5976
|
+
*
|
|
5977
|
+
* `x` is a `Float64Array` (at least two values). Returns
|
|
5978
|
+
* `{ statistic, pValue }` with `statistic = n/6 (S^2 + K^2/4)` (biased moments)
|
|
5979
|
+
* and the chi-square(2) survival `pValue = exp(-statistic/2)`, matching
|
|
5980
|
+
* `scipy.stats.jarque_bera`. Delegates to
|
|
5981
|
+
* `sidereon_core::quality::normality::jarque_bera`.
|
|
5982
|
+
*/
|
|
5983
|
+
export function jarqueBera(x: Float64Array): any;
|
|
5984
|
+
|
|
5673
5985
|
/**
|
|
5674
5986
|
* GPS broadcast Klobuchar ionospheric group delay in the model's native units
|
|
5675
5987
|
* (positive metres).
|
|
@@ -5686,6 +5998,17 @@ export function j2000SecondsToCivil(seconds: bigint): CivilDateTime;
|
|
|
5686
5998
|
*/
|
|
5687
5999
|
export function klobucharDelay(alpha: Float64Array, beta: Float64Array, lat_deg: number, lon_deg: number, azimuth_deg: number, elevation_deg: number, t_gps_s: number, frequency_hz: number): number;
|
|
5688
6000
|
|
|
6001
|
+
/**
|
|
6002
|
+
* Sample kurtosis of a residual set.
|
|
6003
|
+
*
|
|
6004
|
+
* `x` is a `Float64Array`. `fisher` (default `true`) returns the excess
|
|
6005
|
+
* kurtosis `m4 / m2^2 - 3` (Gaussian -> 0, `scipy.stats.kurtosis`); `false`
|
|
6006
|
+
* returns the Pearson kurtosis (Gaussian -> 3). `bias` (default `true`); pass
|
|
6007
|
+
* `false` for the sample correction (needs at least four values). Delegates to
|
|
6008
|
+
* `sidereon_core::quality::normality::kurtosis`.
|
|
6009
|
+
*/
|
|
6010
|
+
export function kurtosis(x: Float64Array, fisher?: boolean | null, bias?: boolean | null): number;
|
|
6011
|
+
|
|
5689
6012
|
/**
|
|
5690
6013
|
* Resolve integer ambiguities with the LAMBDA method (RTKLIB `lambda()` port).
|
|
5691
6014
|
*
|
|
@@ -5729,6 +6052,31 @@ export function leapSeconds(year: number, month: number, day: number): number;
|
|
|
5729
6052
|
*/
|
|
5730
6053
|
export function leapSecondsBatch(dates: Int32Array): Float64Array;
|
|
5731
6054
|
|
|
6055
|
+
/**
|
|
6056
|
+
* Solve a generic data-driven least-squares problem.
|
|
6057
|
+
*
|
|
6058
|
+
* `request` is a `DataProblemInput` object: a `kind` (`"linear"`,
|
|
6059
|
+
* `"polynomial"`, `"exponential"`) carrying its data arrays, the `x0` starting
|
|
6060
|
+
* point, and the SciPy `least_squares` options. The whole trust-region
|
|
6061
|
+
* iteration runs in Rust through
|
|
6062
|
+
* `trust_region_least_squares::data::solve_data_problem` (the serial entry, the
|
|
6063
|
+
* default in-crate SVD backend); no rayon thread pool is entered.
|
|
6064
|
+
*/
|
|
6065
|
+
export function leastSquares(request: any): LeastSquaresResult;
|
|
6066
|
+
|
|
6067
|
+
/**
|
|
6068
|
+
* Serial leave-one-out (jackknife) over a data-driven least-squares problem.
|
|
6069
|
+
*
|
|
6070
|
+
* Delegates to the core's serial leave-one-out entry
|
|
6071
|
+
* `trust_region_least_squares::batch::solve_data_problem_drop_one_serial`: the
|
|
6072
|
+
* full problem is solved once, then re-solved with each residual row masked in
|
|
6073
|
+
* turn. The core's default `solve_data_problem_drop_one` fans these re-solves
|
|
6074
|
+
* across a rayon pool that wasm has no threads for, so this binding takes the
|
|
6075
|
+
* serial twin, which runs the identical re-solves one row at a time and is
|
|
6076
|
+
* byte-identical to the parallel version.
|
|
6077
|
+
*/
|
|
6078
|
+
export function leastSquaresDropOne(request: any): LeastSquaresDropOneReport;
|
|
6079
|
+
|
|
5732
6080
|
/**
|
|
5733
6081
|
* Decode LNAV subframes 1-3 back into engineering-unit parameters.
|
|
5734
6082
|
*
|
|
@@ -5854,11 +6202,47 @@ export function mergeNavcen(records: any, statuses: any): any;
|
|
|
5854
6202
|
*/
|
|
5855
6203
|
export function mergeSp3(sources: Sp3[], options: any): Sp3MergeResult;
|
|
5856
6204
|
|
|
6205
|
+
/**
|
|
6206
|
+
* Mean, variance, skewness, and excess kurtosis of a residual set in one pass.
|
|
6207
|
+
*
|
|
6208
|
+
* `x` is a `Float64Array`; `fisher` and `bias` select the kurtosis convention
|
|
6209
|
+
* and the bias correction exactly as in [`skewness`] / [`kurtosis`] (both
|
|
6210
|
+
* default `true`). Returns `{ mean, variance, skewness, kurtosisExcess }`; the
|
|
6211
|
+
* variance is the biased second central moment. Delegates to
|
|
6212
|
+
* `sidereon_core::quality::normality::moments`.
|
|
6213
|
+
*/
|
|
6214
|
+
export function moments(x: Float64Array, fisher?: boolean | null, bias?: boolean | null): any;
|
|
6215
|
+
|
|
5857
6216
|
/**
|
|
5858
6217
|
* Angle in degrees between satellite nadir and the Moon direction.
|
|
5859
6218
|
*/
|
|
5860
6219
|
export function moonAngle(satellite_position_km: Float64Array, moon_position_km: Float64Array): Float64Array;
|
|
5861
6220
|
|
|
6221
|
+
/**
|
|
6222
|
+
* Topocentric azimuth/elevation/range of the Moon from a ground site,
|
|
6223
|
+
* including the diurnal parallax. See [`sunAzEl`] for the argument shapes.
|
|
6224
|
+
* Delegates to `sidereon_core::astro::bodies::moon_az_el`.
|
|
6225
|
+
*/
|
|
6226
|
+
export function moonAzEl(latitude_deg: number, longitude_deg: number, altitude_km: number, epoch_unix_us: bigint): any;
|
|
6227
|
+
|
|
6228
|
+
/**
|
|
6229
|
+
* Topocentric geometric Moon (disk-center) elevation from a ground site,
|
|
6230
|
+
* degrees. See [`sunAzEl`] for the argument shapes. Delegates to
|
|
6231
|
+
* `sidereon_core::astro::bodies::moon_az_el` and returns its `elevationDeg`: the
|
|
6232
|
+
* core `moon_elevation_deg` convenience wrapper `expect`s on the geometry, so a
|
|
6233
|
+
* valid-shaped but out-of-range station (e.g. latitude 120) would panic the
|
|
6234
|
+
* wasm module; going through `moon_az_el` surfaces that as a thrown JS error.
|
|
6235
|
+
*/
|
|
6236
|
+
export function moonElevationDeg(latitude_deg: number, longitude_deg: number, altitude_km: number, epoch_unix_us: bigint): number;
|
|
6237
|
+
|
|
6238
|
+
/**
|
|
6239
|
+
* Illuminated fraction of the Moon as seen from a ground site. Returns
|
|
6240
|
+
* `{ illuminatedFraction, phaseAngleDeg }` (0 = new, 1 = full). See [`sunAzEl`]
|
|
6241
|
+
* for the argument shapes. Delegates to
|
|
6242
|
+
* `sidereon_core::astro::bodies::moon_illumination`.
|
|
6243
|
+
*/
|
|
6244
|
+
export function moonIllumination(latitude_deg: number, longitude_deg: number, altitude_km: number, epoch_unix_us: bigint): any;
|
|
6245
|
+
|
|
5862
6246
|
/**
|
|
5863
6247
|
* Narrow-lane code combination, metres.
|
|
5864
6248
|
*/
|
|
@@ -5901,6 +6285,21 @@ export function nequickGStecTecu(_eval: any): number;
|
|
|
5901
6285
|
*/
|
|
5902
6286
|
export function noiseAmplification(f1_hz: number, f2_hz: number): number;
|
|
5903
6287
|
|
|
6288
|
+
/**
|
|
6289
|
+
* Parameter covariance from a design (Jacobian) matrix via the Gauss-Newton
|
|
6290
|
+
* normal equations `varianceScale * (J^T J)^-1`, formed from the thin SVD of
|
|
6291
|
+
* `J` (not by inverting `J^T J`, so the condition number is not squared).
|
|
6292
|
+
*
|
|
6293
|
+
* `jacobian` is a flat row-major `(m, n)` `Float64Array` with `m >= n`;
|
|
6294
|
+
* `varianceScale` (`sigma^2`, non-negative) scales the bare cofactor (pass the
|
|
6295
|
+
* post-fit reduced chi-square for the fitted covariance, or `1.0` for
|
|
6296
|
+
* `(J^T J)^-1`). Returns the `n`-by-`n` covariance as a flat row-major
|
|
6297
|
+
* `Float64Array` of length `n * n`. Throws an `Error` for a rank-deficient
|
|
6298
|
+
* Jacobian. Delegates to
|
|
6299
|
+
* `sidereon_core::astro::math::least_squares::normal_covariance`.
|
|
6300
|
+
*/
|
|
6301
|
+
export function normalCovariance(jacobian: Float64Array, m: number, n: number, variance_scale: number): Float64Array;
|
|
6302
|
+
|
|
5904
6303
|
/**
|
|
5905
6304
|
* Predict observables for one satellite from a broadcast ephemeris store.
|
|
5906
6305
|
* Delegates to `sidereon_core::observables::predict`.
|
|
@@ -6084,6 +6483,27 @@ export function phaseMeters(phi_cycles: number, f_hz: number): number;
|
|
|
6084
6483
|
*/
|
|
6085
6484
|
export function pppCorrections(sp3: Sp3, epochs: any, receiver_ecef_m: Float64Array, options: any): any;
|
|
6086
6485
|
|
|
6486
|
+
/**
|
|
6487
|
+
* Predict observables for many `(satellite, receiver, epoch)` requests from a
|
|
6488
|
+
* broadcast ephemeris store, serially. See [`predictBatchSp3`] for the argument
|
|
6489
|
+
* shapes. Delegates to the serial `sidereon_core::observables::predict_batch`.
|
|
6490
|
+
*/
|
|
6491
|
+
export function predictBatchBroadcast(broadcast: BroadcastEphemeris, satellites: string[], receivers_ecef_m: Float64Array, epochs_j2000_s: Float64Array, options: any): PredictBatch;
|
|
6492
|
+
|
|
6493
|
+
/**
|
|
6494
|
+
* Predict observables for many `(satellite, receiver, epoch)` requests from an
|
|
6495
|
+
* SP3 precise product, serially.
|
|
6496
|
+
*
|
|
6497
|
+
* `satellites` is an array of satellite tokens, `receiversEcefM` a flat
|
|
6498
|
+
* row-major `(n, 3)` `Float64Array` of receiver ECEF positions (metres), and
|
|
6499
|
+
* `epochsJ2000S` a `Float64Array` of receive epochs (seconds since J2000); all
|
|
6500
|
+
* three are index-aligned and length `n`. Element `i` of the result corresponds
|
|
6501
|
+
* to request `i`. Delegates to the serial reference kernel
|
|
6502
|
+
* `sidereon_core::observables::predict_batch`; the binding never spawns the
|
|
6503
|
+
* rayon thread pool the parallel variant uses.
|
|
6504
|
+
*/
|
|
6505
|
+
export function predictBatchSp3(sp3: Sp3, satellites: string[], receivers_ecef_m: Float64Array, epochs_j2000_s: Float64Array, options: any): PredictBatch;
|
|
6506
|
+
|
|
6087
6507
|
/**
|
|
6088
6508
|
* Prepare ionosphere-free single-frequency RTK arc inputs from a
|
|
6089
6509
|
* dual-frequency arc and fixed wide-lane ambiguities.
|
|
@@ -6264,12 +6684,32 @@ export function selectSp3OverRange(products: Sp3[], start_epoch_j2000_s: number,
|
|
|
6264
6684
|
*/
|
|
6265
6685
|
export function shadowFraction(satellite_position_km: Float64Array, sun_position_km: Float64Array): Float64Array;
|
|
6266
6686
|
|
|
6687
|
+
/**
|
|
6688
|
+
* Shapiro-Wilk normality test on a residual set.
|
|
6689
|
+
*
|
|
6690
|
+
* `x` is a `Float64Array` (at least three values). Returns `{ w, pValue }`,
|
|
6691
|
+
* Royston's AS R94 port that `scipy.stats.shapiro` uses; `w` is in `(0, 1]`
|
|
6692
|
+
* (closer to one is more Gaussian). Delegates to
|
|
6693
|
+
* `sidereon_core::quality::normality::shapiro_wilk`.
|
|
6694
|
+
*/
|
|
6695
|
+
export function shapiroWilk(x: Float64Array): any;
|
|
6696
|
+
|
|
6267
6697
|
/**
|
|
6268
6698
|
* Build satellite-keyed pseudorange sigmas in metres from `{ satelliteId,
|
|
6269
6699
|
* elevationDeg, cn0Dbhz? }` entries. Invalid entries are dropped by the core.
|
|
6270
6700
|
*/
|
|
6271
6701
|
export function sigmas(entries: any, options: any): SatelliteVector;
|
|
6272
6702
|
|
|
6703
|
+
/**
|
|
6704
|
+
* Sample skewness of a residual set.
|
|
6705
|
+
*
|
|
6706
|
+
* `x` is a `Float64Array`. `bias` (default `true`) selects the Fisher-Pearson
|
|
6707
|
+
* coefficient `g1 = m3 / m2^(3/2)` (`scipy.stats.skew`); `false` applies the
|
|
6708
|
+
* sample correction (`scipy.stats.skew(bias=False)`, needs at least three
|
|
6709
|
+
* values). Delegates to `sidereon_core::quality::normality::skewness`.
|
|
6710
|
+
*/
|
|
6711
|
+
export function skewness(x: Float64Array, bias?: boolean | null): number;
|
|
6712
|
+
|
|
6273
6713
|
/**
|
|
6274
6714
|
* Stable lower-case label for a slip reason.
|
|
6275
6715
|
*/
|
|
@@ -6464,6 +6904,16 @@ export function subSolarPoint(sun_ecef: Float64Array): any;
|
|
|
6464
6904
|
*/
|
|
6465
6905
|
export function sunAngle(satellite_position_km: Float64Array, sun_position_km: Float64Array): Float64Array;
|
|
6466
6906
|
|
|
6907
|
+
/**
|
|
6908
|
+
* Topocentric azimuth/elevation/range of the Sun from a ground site.
|
|
6909
|
+
*
|
|
6910
|
+
* The station is geodetic (`latitudeDeg`, `longitudeDeg`, `altitudeKm`);
|
|
6911
|
+
* `epochUnixUs` is the UTC instant as unix microseconds. Returns
|
|
6912
|
+
* `{ azimuthDeg, elevationDeg, rangeKm }` (azimuth clockwise from north).
|
|
6913
|
+
* Delegates to `sidereon_core::astro::bodies::sun_az_el`.
|
|
6914
|
+
*/
|
|
6915
|
+
export function sunAzEl(latitude_deg: number, longitude_deg: number, altitude_km: number, epoch_unix_us: bigint): any;
|
|
6916
|
+
|
|
6467
6917
|
/**
|
|
6468
6918
|
* Sun elevation in degrees above the satellite local horizontal plane.
|
|
6469
6919
|
*/
|
|
@@ -6481,6 +6931,15 @@ export function sunMoonEcef(epochs_unix_us: BigInt64Array): SunMoon;
|
|
|
6481
6931
|
*/
|
|
6482
6932
|
export function sunMoonEci(epochs_unix_us: BigInt64Array): SunMoon;
|
|
6483
6933
|
|
|
6934
|
+
/**
|
|
6935
|
+
* TAI-UTC (cumulative leap seconds) in effect on a UTC calendar date.
|
|
6936
|
+
*
|
|
6937
|
+
* This is **not** the GNSS "GPS - UTC" offset; for the quantity a GPS receiver
|
|
6938
|
+
* applies use [`gpsUtcOffsetS`] (they differ by a constant 19 s). Delegates to
|
|
6939
|
+
* `sidereon_core::astro::time::scales::tai_utc_offset_s`.
|
|
6940
|
+
*/
|
|
6941
|
+
export function taiUtcOffsetS(year: number, month: number, day: number): number;
|
|
6942
|
+
|
|
6484
6943
|
/**
|
|
6485
6944
|
* Transform a batch of TEME states to GCRS, each at its own epoch.
|
|
6486
6945
|
*
|
|
@@ -6523,8 +6982,8 @@ export function timescaleOffsetAtS(from: TimeScale, to: TimeScale, utc_jd: numbe
|
|
|
6523
6982
|
*
|
|
6524
6983
|
* Covers the atomic scales (TAI/TT/GPST/GST/QZSST/BDT), whose mutual offsets
|
|
6525
6984
|
* are constants fixed by their ICDs. Throws a `RangeError` when either scale is
|
|
6526
|
-
* UTC-based (`Utc`/`Glonasst`)
|
|
6527
|
-
* epoch-dependent and needs [`timescaleOffsetAtS`]
|
|
6985
|
+
* UTC-based (`Utc`/`Glonasst`): those carry leap seconds, so their offset is
|
|
6986
|
+
* epoch-dependent and needs [`timescaleOffsetAtS`], or for `Tdb` (no fixed
|
|
6528
6987
|
* offset; resolve it through an `Instant`).
|
|
6529
6988
|
*/
|
|
6530
6989
|
export function timescaleOffsetS(from: TimeScale, to: TimeScale): number;
|