# Spectrogram¶

class radiospectra.spectrogram.Spectrogram(data, time_axis, freq_axis, start, end, t_init=None, t_label='Time', f_label='Frequency', content='', instruments=None)[source]

Bases: sunpy.util.create.Parent

Spectrogram Class.

Warning

This module is under development! Use at your own risk.

Attributes

 data (ndarray) two-dimensional array of the image data of the spectrogram. time_axis (ndarray) one-dimensional array containing the offset from the start for each column of data. freq_axis (ndarray) one-dimensional array containing information about the frequencies each row of the image corresponds to. start (datetime) starting time of the measurement end (datetime) end time of the measurement t_init (int) offset from the start of the day the measurement began. If None gets automatically set from start. t_label (str) label for the time axis f_label (str) label for the frequency axis content (str) header for the image instruments (str array) instruments that recorded the data, may be more than one if it was constructed using combine_frequencies or join_many.

Attributes Summary

Methods Summary

 at_freq(freq) auto_const_bg() Automatically determine background. auto_find_background([amount]) Automatically find the background. clip_freq([vmin, vmax]) Return a new spectrogram only consisting of frequencies in the interval [vmin, vmax]. clip_values([vmin, vmax, out]) Clip intensities to be in the interval [vmin, vmax]. format_freq() Override to configure default plotting. format_time() Override to configure default plotting. freq_overlap(other) Get frequency range present in both spectrograms. interpolate(frequency) Linearly interpolate intensity at unknown frequency using linear interpolation of its two neighbours. linearize_freqs([delta_freq]) Rebin frequencies so that the frequency axis is linear. peek(*args, **kwargs) Plot spectrum onto current axes. plot([figure, overlays, colorbar, vmin, …]) Plot spectrogram onto figure. randomized_auto_const_bg(amount) Automatically determine background. randomized_subtract_bg(amount) Perform randomized constant background subtraction. rescale([vmin, vmax, dtype]) Rescale intensities to [vmin, vmax]. subtract_bg() Perform constant background subtraction. time_formatter(x, pos) This returns the label for the tick of value x at a specified pos on the time axis. time_to_x(time) Return x-coordinate in spectrogram that corresponds to the passed datetime value.

Attributes Documentation

COPY_PROPERTIES = [('time_axis', 1), ('freq_axis', 1), ('instruments', 1), ('start', 0), ('end', 0), ('t_label', 0), ('f_label', 0), ('content', 0), ('t_init', 0)]
dtype
shape

Methods Documentation

at_freq(freq)[source]
auto_const_bg()[source]

Automatically determine background.

auto_find_background(amount=0.05)[source]

Automatically find the background. This is done by first subtracting the average value in each channel and then finding those times which have the lowest standard deviation.

Parameters: amount : float The percent amount (out of 1) of lowest standard deviation to consider.
clip_freq(vmin=None, vmax=None)[source]

Return a new spectrogram only consisting of frequencies in the interval [vmin, vmax].

Parameters: vmin : float All frequencies in the result are greater or equal to this. vmax : float All frequencies in the result are smaller or equal to this.
clip_values(vmin=None, vmax=None, out=None)[source]

Clip intensities to be in the interval [vmin, vmax].

Any values greater than the maximum will be assigned the maximum, any values lower than the minimum will be assigned the minimum. If either is left out or None, do not clip at that side of the interval.

Parameters: min : int or float New minimum value for intensities. max : int or float New maximum value for intensities
static format_freq()[source]

Override to configure default plotting.

static format_time()[source]

Override to configure default plotting.

freq_overlap(other)[source]

Get frequency range present in both spectrograms. Returns (min, max) tuple.

Parameters: other : Spectrogram other spectrogram with which to look for frequency overlap
interpolate(frequency)[source]

Linearly interpolate intensity at unknown frequency using linear interpolation of its two neighbours.

Parameters: frequency : float or int Unknown frequency for which to linearly interpolate the intensities. freq_axis[0] >= frequency >= self_freq_axis[-1]
linearize_freqs(delta_freq=None)[source]

Rebin frequencies so that the frequency axis is linear.

Parameters: delta_freq : float Difference between consecutive values on the new frequency axis. Defaults to half of smallest delta in current frequency axis. Compare Nyquist-Shannon sampling theorem.
peek(*args, **kwargs)[source]

Plot spectrum onto current axes.

Parameters: *args : dict **kwargs : dict Any additional plot arguments that should be used when plotting. fig : Figure A plot figure.
plot(figure=None, overlays=[], colorbar=True, vmin=None, vmax=None, linear=True, showz=True, yres=1080, max_dist=None, **matplotlib_args)[source]

Plot spectrogram onto figure.

Parameters: figure : Figure Figure to plot the spectrogram on. If None, new Figure is created. overlays : list List of overlays (functions that receive figure and axes and return new ones) to be applied after drawing. colorbar : bool Flag that determines whether or not to draw a colorbar. If existing figure is passed, it is attempted to overdraw old colorbar. vmin : float Clip intensities lower than vmin before drawing. vmax : float Clip intensities higher than vmax before drawing. linear : bool If set to True, “stretch” image to make frequency axis linear. showz : bool If set to True, the value of the pixel that is hovered with the mouse is shown in the bottom right corner. yres : int or None To be used in combination with linear=True. If None, sample the image with half the minimum frequency delta. Else, sample the image to be at most yres pixels in vertical dimension. Defaults to 1080 because that’s a common screen size. max_dist : float or None If not None, mask elements that are further than max_dist away from actual data points (ie, frequencies that actually have data from the receiver and are not just nearest-neighbour interpolated).
randomized_auto_const_bg(amount)[source]

Automatically determine background. Only consider a randomly chosen subset of the image.

Parameters: amount : int Size of random sample that is considered for calculation of the background.
randomized_subtract_bg(amount)[source]

Perform randomized constant background subtraction. Does not produce the same result every time it is run.

Parameters: amount : int Size of random sample that is considered for calculation of the background.
rescale(vmin=0, vmax=1, dtype=dtype('float32'))[source]

Rescale intensities to [vmin, vmax]. Note that vmin ≠ vmax and spectrogram.min() ≠ spectrogram.max().

Parameters: vmin : float or int New minimum value in the resulting spectrogram. vmax : float or int New maximum value in the resulting spectrogram. dtype : numpy.dtype Data-type of the resulting spectrogram.
subtract_bg()[source]

Perform constant background subtraction.

time_formatter(x, pos)[source]

This returns the label for the tick of value x at a specified pos on the time axis.

time_to_x(time)[source]

Return x-coordinate in spectrogram that corresponds to the passed datetime value.

Parameters: time : parse_time compatible str datetime to find the x coordinate for.