Tracking Modules of SiqNAL

APRS Module

Author : Jay Krishna

This module detects the presence of signal sent following Automatic Packet Reporting System(APRS). Instead of having constant threshold, dynamic thresholding is applied based upon leading & lagging cells.

Approach

  • signal is broken down in chunks of one second each.
  • At each point of smaller signal threshold is calculated based upon difference of lagging & leading reference cells after removing guard cells from both sides.
  • Point where APRS signal is suppossed to start is found & checked against peak induced by random noise.

Reference

Barkat, Mourad & Varshney, P.K (1987). On adaptive cell-averaging CFAR (Constant False-Alarm Rate) radar signal detection. Final Technical Report, Jun. 1984 - Dec. 1986 Syracuse Univ., NY. Dept. of Electrical and Computer Engineering

Track.aprs.cfar(signal_chunk, refLength=10000, guardLength=10, p=0.001)[source]

Calculates threshold value for each point using leading & lagging cells while discarding leading & lagging guard cells.

Parameters:
  • signal_chunk (ndarray) – Numpy complex array of signal.
  • refLength (int) – Length of reference cells
  • guardLength (int) – Length of guard cells
  • p (float) – Accepted probability of false alarm.
Returns:

point – Starting point of aprs signal if present.

Return type:

int

Track.aprs.check(SignaIInfo, signal_chunk)[source]

Breaks the signal into smaller chunks and send them sequentially for APRS signal detection.

Parameters:
  • SignalInfo (object) – Instance of class SignalData having meta-data of file and signal.
  • signal_chunk (ndarray) – Numpy complex array of filtered signal.
Returns:

points – List of starting index of aprs signal.

Return type:

list

Track.aprs.radar_detect(diff, refLength, threshold_min=1.2, threshold_ratio=10, threshold_max=1.5)[source]

Based upon the values calculated start of APRS signal is detected while taking care of false results due to spikes induced by noise.

Parameters:
  • diff (ndarray) – Values calculated at each point
  • refLength (int) – Length of reference cells
  • threshold_min (float) – Minimum level of threshold
  • threshold_ratio (float) – Minimum ratio of detected point and mean of signal chunk
  • threshold_max (float) – Maximum value of local maxima to ensure false detection due to random spikes.
Returns:

point – Starting point of aprs signal if present.

Return type:

int

APT Module

Author : Jay Krishna

This module detects the presence of signal sent following Automatic Picture Transmission(APT). Since signal under APT is sent twice every second when under contact hence it significantly affects the statistical parameters of the signal hence statistical method is developed for detection.

Approach

  • Signal is broken down in chunks of one second each.
  • For each smaller signal statistical values(mean, standard deviation and median) was calculated along with mean of whole signal file.
  • Presence of signal is confirmed by evaluating the statistical distribution of signal relative to threshold.
Track.apt.check(SignaIInfo, signal)[source]

Breaks the signal into smaller chunks and calculates statistical parameters for each chunk. Also calculates mean of whole signal file.

Parameters:
  • SignalInfo (object) – Instance of class SignalData having meta-data of file and signal.
  • signal (ndarray) – Numpy complex array of signal.
Returns:

points – List of starting index of aprs signal.

Return type:

list

Track.apt.stat_check(values, threshold, chunknumber)[source]

Based upon the threshold views the statistical distribution of points in signal file and concludes the presence of APT signal.

Parameters:
  • values (list) – Calculated statistical values of each small signals.
  • threshold (float) – Calculated threshold for signal file.
  • chunknumber (int) – Size of each smaller signal
Returns:

is_present – Showing presence of APT signal.

Return type:

bool

Beacon Module

Author : Jay Krishna

This module detects the presence of signal sent by beacon. Dynamic thresholding is applied based upon leading & lagging cells.

Approach

  • signal is broken down in chunks of one second each.
  • At each point of smaller signal threshold is calculated based upon average of lagging & leading reference cells after removing guard cells from both sides.
  • Point where APRS signal is suppossed to start is found & checked against peak induced by random noise.

Reference

Barkat, Mourad & Varshney, P.K (1987). On adaptive cell-averaging CFAR (Constant False-Alarm Rate) radar signal detection. Final Technical Report, Jun. 1984 - Dec. 1986 Syracuse Univ., NY. Dept. of Electrical and Computer Engineering

Track.beacon.cfar(signal_chunk, refLength=1000, guardLength=100, p=0.01)[source]

Calculates threshold value for each point using leading & lagging cells while discarding leading & lagging guard cells.

Parameters:
  • signal_chunk (ndarray) – Numpy complex array of signal.
  • refLength (int) – Length of reference cells
  • guardLength (int) – Length of guard cells
  • p (float) – Accepted probability of false alarm.
Returns:

point – Starting point of aprs signal if present.

Return type:

int

Track.beacon.check(SignaIInfo, signal_chunk)[source]

Breaks the signal into smaller chunks and send them sequentially for APRS signal detection.

Parameters:
  • SignalInfo (object) – Instance of class SignalData having meta-data of file and signal.
  • signal_chunk (ndarray) – Numpy complex array of signal.
Returns:

points – List of starting index of aprs signal.

Return type:

list

Track.beacon.merge(peak, signal_chunk)[source]

Points detected very close to each other are merged and classified as same peak.

Parameters:
  • peak (list) – Points of presence of beacon.
  • signal_chunk (ndarray) – Numpy array of signal.
Returns:

final_peak – Points of presence of beacon after merging nearby peaks.

Return type:

list

Track.beacon.radar_detect(radar, signal_chunk)[source]

Based upon the values calculated start of APRS signal is detected while taking care of false results due to spikes induced by noise.

Parameters:
  • radar (ndarray) – Threshold values calculated at each point.
  • signal_chunk (ndarray) – Numpy array of signal.
Returns:

peak – Points of presence of beacon.

Return type:

list