passes

Encapsulates a fundamental component of tracking space objects: a pass over a geographic location. Also provides convenience functions for finding passes given states and stations and sorting structures of passes in particular ways.

Module summary

Classes

Pass(t, enu[, inds, cache, station_id])

Saves the local coordinate data for a single pass.

Functions

equidistant_sampling(orbit, start_t, end_t)

Find the temporal sampling of an orbit which is sufficient to achieve a maximum spatial separation.

find_passes(t, states, station[, cache_data])

Find passes inside the FOV of a radar station given a series of times for a space object.

find_simultaneous_passes(t, states, stations)

Finds all passes that are simultaneously inside a multiple stations FOV’s.

group_passes(passes)

Takes a list of passes structured as [tx][rx][pass] and find all simultaneous passes and groups them according to [tx], resulting in a [tx][pass][rx] structure.

Contents

Pass

class sorts.passes.Pass(t, enu, inds=None, cache=True, station_id=None)[source]

Bases: object

Saves the local coordinate data for a single pass. Optionally also indicates the location of that pass in a bigger dataset.

static calculate_range(enu)[source]

Norm of the ENU coordinates.

static calculate_range_rate(enu)[source]

Projected ENU velocity along the ENU range.

calculate_snr(tx, rx, diameter)[source]

Uses the signals.hard_target_snr function to calculate the optimal SNR curve of a target during the pass if the TX and RX stations are pointing at the object. The SNR’s are returned from the function but also stored in the property self.snr.

Parameters
  • tx (TX) – The TX station that observed the pass.

  • rx (RX) – The RX station that observed the pass.

  • diameter (float) – The diameter of the object.

Returns

(n,) Vector with the SNR’s during the pass.

Return type

numpy.ndarray

static calculate_zenith_angle(enu, radians=False)[source]

Zenith angle of the ENU coordinates.

end()[source]

The ending time of the pass (uses cached value after first call if self.cache=True).

get_range()[source]

Get ranges from all stations involved in the pass.

Return type

list of numpy.ndarray or numpy.ndarray

Returns

If there is one station observing the pass, return a vector of ranges, otherwise return a list of vectors with ranges.

get_range_rate()[source]

Get range rates from all stations involved in the pass.

Return type

list of numpy.ndarray or numpy.ndarray

Returns

If there is one station observing the pass, return a vector of range rates, otherwise return a list of vectors with range rates.

get_zenith_angle(radians=False)[source]

Get zenith angles for all stations involved in the pass.

Return type

list of numpy.ndarray or numpy.ndarray

Returns

If there is one station observing the pass, return a vector of zenith angles, otherwise return a list of vectors with zenith angles.

range()[source]

Get ranges from all stations involved in the pass (uses cached value after first call if self.cache=True). The cache is stored in self._r.

Return type

list of numpy.ndarray or numpy.ndarray

Returns

If there is one station observing the pass, return a vector of ranges, otherwise return a list of vectors with ranges.

range_rate()[source]

Get range rates from all stations involved in the pass (uses cached value after first call if self.cache=True). The cache is stored in self._v.

Return type

list of numpy.ndarray or numpy.ndarray

Returns

If there is one station observing the pass, return a vector of range rates, otherwise return a list of vectors with range rates.

start()[source]

The Start time of the pass (uses cached value after first call if self.cache=True).

property stations

The number of stations that can observe the pass.

zenith_angle(radians=False)[source]

Get zenith angles from all stations involved in the pass (uses cached value after first call if self.cache=True). The cache is stored in self._v.

Return type

list of numpy.ndarray or numpy.ndarray

Returns

If there is one station observing the pass, return a vector of zenith angles, otherwise return a list of vectors with zenith angles.

Functions

sorts.passes.equidistant_sampling(orbit, start_t, end_t, max_dpos=1000.0, eccentricity_tol=0.3)[source]

Find the temporal sampling of an orbit which is sufficient to achieve a maximum spatial separation. Assume elliptic orbit and uses Keplerian propagation to find sampling, does not take perturbation patterns into account. If eccentricity is small, uses periapsis speed and uniform sampling in time.

Parameters
  • orbit (pyorb.Orbit) – Orbit to find temporal sampling of.

  • start_t (float) – Start time in seconds

  • end_t (float) – End time in seconds

  • max_dpos (float) – Maximum separation between evaluation points in meters.

  • eccentricity_tol (float) – Minimum eccentricity below which the orbit is approximated as a circle and temporal samples are uniform in time.

Returns

Vector of sample times in seconds.

Return type

numpy.ndarray

sorts.passes.find_passes(t, states, station, cache_data=True)[source]

Find passes inside the FOV of a radar station given a series of times for a space object.

Parameters
  • t (numpy.ndarray) – Vector of times in seconds to use as a base to find passes.

  • states (numpy.ndarray) – ECEF states of the object to find passes for.

  • station (sorts.Station) – Radar station that defines the FOV.

Returns

list of passes

Return type

sorts.Pass

sorts.passes.find_simultaneous_passes(t, states, stations, cache_data=True)[source]

Finds all passes that are simultaneously inside a multiple stations FOV’s.

Parameters
  • t (numpy.ndarray) – Vector of times in seconds to use as a base to find passes.

  • states (numpy.ndarray) – ECEF states of the object to find passes for.

  • of sorts.Station stations (list) – Radar stations that defines the FOV’s.

Returns

list of passes

Return type

list of sorts.Pass

sorts.passes.group_passes(passes)[source]

Takes a list of passes structured as [tx][rx][pass] and find all simultaneous passes and groups them according to [tx], resulting in a [tx][pass][rx] structure.