bilby.gw.detector.strain_data.InterferometerStrainData
- class bilby.gw.detector.strain_data.InterferometerStrainData(minimum_frequency=0, maximum_frequency=inf, roll_off=0.2, notch_list=None)[source]
Bases:
object
Strain data for an interferometer
- __init__(minimum_frequency=0, maximum_frequency=inf, roll_off=0.2, notch_list=None)[source]
Initiate an InterferometerStrainData object
The initialised object contains no data, this should be added using one of the set_from.. methods.
- Parameters:
- minimum_frequency: float
Minimum frequency to analyse for detector. Default is 0.
- maximum_frequency: float
Maximum frequency to analyse for detector. Default is infinity.
- roll_off: float
The roll-off (in seconds) used in the Tukey window, default=0.2s. This corresponds to alpha * duration / 2 for scipy tukey window.
- notch_list: bilby.gw.detector.strain_data.NotchList
A list of notches
- __call__(*args, **kwargs)
Call self as a function.
Methods
__init__
([minimum_frequency, ...])Initiate an InterferometerStrainData object
create_power_spectral_density
(fft_length[, ...])Use the time domain strain to generate a power spectral density
low_pass_filter
([filter_freq])Low pass filter the data
set_from_channel_name
(channel, duration, ...)Set the frequency_domain_strain by fetching from given channel using gwpy.TimesSeries.get(), which dynamically accesses either frames on disk, or a remote NDS2 server to find and return data.
set_from_csv
(filename)Set the strain data from a csv file
set_from_frame_file
(frame_file, ...[, ...])Set the frequency_domain_strain from a frame fiile
set_from_frequency_domain_strain
(...[, ...])Set the frequency_domain_strain from a numpy array
set_from_gwpy_timeseries
(time_series)Set the strain data from a gwpy TimeSeries
set_from_open_data
(name, start_time[, ...])Set the strain data from open LOSC data
set_from_power_spectral_density
(...[, ...])Set the frequency_domain_strain by generating a noise realisation
set_from_time_domain_strain
(time_domain_strain)Set the strain data from a time domain strain array
set_from_zero_noise
(sampling_frequency, duration)Set the frequency_domain_strain to zero noise
time_domain_window
([roll_off, alpha])Window function to apply to time domain data before FFTing.
time_within_data
(time)Check if time is within the data span
Output the frequency series strain data as a
gwpy.frequencyseries.FrequencySeries
.Output the time series strain data as a
gwpy.timeseries.TimeSeries
.Output the frequency series strain data as a LAL FrequencySeries object.
Output the time series strain data as a LAL TimeSeries object.
Output the frequency series strain data as a
pycbc.types.frequencyseries.FrequencySeries
.Output the time series strain data as a
pycbc.types.timeseries.TimeSeries
.Attributes
alpha
channel
Returns the frequency domain strain
Masking array for limiting the frequency band.
Force the maximum frequency be less than the Nyquist frequency
minimum_frequency
notch_list
The time domain strain, in units of strain
- create_power_spectral_density(fft_length, overlap=0, name='unknown', outdir=None, analysis_segment_start_time=None)[source]
Use the time domain strain to generate a power spectral density
This create a Tukey-windowed power spectral density and writes it to a PSD file.
- Parameters:
- fft_length: float
Duration of the analysis segment.
- overlap: float
Number of seconds of overlap between FFTs.
- name: str
The name of the detector, used in storing the PSD. Defaults to “unknown”.
- outdir: str
The output directory to write the PSD file too. If not given, the PSD will not be written to file.
- analysis_segment_start_time: float
The start time of the analysis segment, if given, this data will be removed before creating the PSD.
- Returns:
- frequency_array, psdarray_like
The frequencies and power spectral density array
- property frequency_domain_strain
Returns the frequency domain strain
This is the frequency domain strain normalised to units of strain / Hz, obtained by a one-sided Fourier transform of the time domain data, divided by the sampling frequency.
- property frequency_mask
Masking array for limiting the frequency band.
- Returns:
- mask: np.ndarray
An array of boolean values
- property maximum_frequency
Force the maximum frequency be less than the Nyquist frequency
- set_from_channel_name(channel, duration, start_time, sampling_frequency)[source]
Set the frequency_domain_strain by fetching from given channel using gwpy.TimesSeries.get(), which dynamically accesses either frames on disk, or a remote NDS2 server to find and return data. This function also verifies that the specified channel is given in the correct format.
- Parameters:
- channel: str
Channel to look for using gwpy in the format IFO:Channel
- duration: float
The data duration (in s)
- start_time: float
The GPS start-time of the data
- sampling_frequency: float
The sampling frequency (in Hz)
- set_from_csv(filename)[source]
Set the strain data from a csv file
- Parameters:
- filename: str
The path to the file to read in
- set_from_frame_file(frame_file, sampling_frequency, duration, start_time=0, channel=None, buffer_time=1)[source]
Set the frequency_domain_strain from a frame fiile
- Parameters:
- frame_file: str
File from which to load data.
- channel: str
Channel to read from frame.
- sampling_frequency: float
The sampling frequency (in Hz)
- duration: float
The data duration (in s)
- start_time: float
The GPS start-time of the data
- buffer_time: float
Read in data with start_time-buffer_time and start_time+duration+buffer_time
- set_from_frequency_domain_strain(frequency_domain_strain, sampling_frequency=None, duration=None, start_time=0, frequency_array=None)[source]
Set the frequency_domain_strain from a numpy array
- Parameters:
- frequency_domain_strain: array_like
The data to set.
- sampling_frequency: float
The sampling frequency (in Hz).
- duration: float
The data duration (in s).
- start_time: float
The GPS start-time of the data.
- frequency_array: array_like
The array of frequencies, if sampling_frequency and duration not given.
- set_from_gwpy_timeseries(time_series)[source]
Set the strain data from a gwpy TimeSeries
This sets the time_domain_strain attribute, the frequency_domain_strain is automatically calculated after a low-pass filter and Tukey window is applied.
- Parameters:
- time_series: gwpy.timeseries.timeseries.TimeSeries
The data to use
- set_from_open_data(name, start_time, duration=4, outdir='outdir', cache=True, **kwargs)[source]
Set the strain data from open LOSC data
This sets the time_domain_strain attribute, the frequency_domain_strain is automatically calculated after a low-pass filter and Tukey window is applied.
- Parameters:
- name: str
Detector name, e.g., ‘H1’.
- start_time: float
Start GPS time of segment.
- duration: float, optional
The total time (in seconds) to analyse. Defaults to 4s.
- outdir: str
Directory where the psd files are saved
- cache: bool, optional
Whether or not to store/use the acquired data.
- **kwargs:
All keyword arguments are passed to gwpy.timeseries.TimeSeries.fetch_open_data().
- set_from_power_spectral_density(power_spectral_density, sampling_frequency, duration, start_time=0)[source]
Set the frequency_domain_strain by generating a noise realisation
- Parameters:
- power_spectral_density: bilby.gw.detector.PowerSpectralDensity
A PowerSpectralDensity object used to generate the data
- sampling_frequency: float
The sampling frequency (in Hz)
- duration: float
The data duration (in s)
- start_time: float
The GPS start-time of the data
- set_from_time_domain_strain(time_domain_strain, sampling_frequency=None, duration=None, start_time=0, time_array=None)[source]
Set the strain data from a time domain strain array
This sets the time_domain_strain attribute, the frequency_domain_strain is automatically calculated after a low-pass filter and Tukey window is applied.
- Parameters:
- time_domain_strain: array_like
An array of the time domain strain.
- sampling_frequency: float
The sampling frequency (in Hz).
- duration: float
The data duration (in s).
- start_time: float
The GPS start-time of the data.
- time_array: array_like
The array of times, if sampling_frequency and duration not given.
- set_from_zero_noise(sampling_frequency, duration, start_time=0)[source]
Set the frequency_domain_strain to zero noise
This sets the strain_data to an array of (complex) zeros, while also making sure the frequency and time arrays match the sampling frequency and duration given.
- Parameters:
- sampling_frequency: float
The sampling frequency (in Hz)
- duration: float
The data duration (in s)
- start_time: float
The GPS start-time of the data
- property time_domain_strain
The time domain strain, in units of strain
- time_domain_window(roll_off=None, alpha=None)[source]
Window function to apply to time domain data before FFTing.
This defines self.window_factor as the power loss due to the windowing. See https://dcc.ligo.org/DocDB/0027/T040089/000/T040089-00.pdf
- Parameters:
- roll_off: float
Rise time of window in seconds
- alpha: float
Parameter to pass to tukey window, how much of segment falls into windowed part
- Returns:
- window: array
Window function over time array
- time_within_data(time)[source]
Check if time is within the data span
- Parameters:
- time: float
The time to check
- Returns:
- bool:
A boolean stating whether the time is inside or outside the span
- to_gwpy_frequencyseries()[source]
Output the frequency series strain data as a
gwpy.frequencyseries.FrequencySeries
.
- to_lal_frequencyseries()[source]
Output the frequency series strain data as a LAL FrequencySeries object.