def lal(self): """Produces a LAL frequency series object equivalent to self. Returns ------- lal_data : {lal.*FrequencySeries} LAL frequency series object containing the same data as self. The actual type depends on the sample's dtype. If the epoch of self was 'None', the epoch of the returned LAL object will be LIGOTimeGPS(0,0); otherwise, the same as that of self. Raises ------ TypeError If frequency series is stored in GPU memory. """ lal_data = None if self._epoch is None: ep = _lal.LIGOTimeGPS(0,0) else: ep = self._epoch if self._data.dtype == _numpy.float32: lal_data = _lal.CreateREAL4FrequencySeries("",ep,0,self.delta_f,_lal.SecondUnit,len(self)) elif self._data.dtype == _numpy.float64: lal_data = _lal.CreateREAL8FrequencySeries("",ep,0,self.delta_f,_lal.SecondUnit,len(self)) elif self._data.dtype == _numpy.complex64: lal_data = _lal.CreateCOMPLEX8FrequencySeries("",ep,0,self.delta_f,_lal.SecondUnit,len(self)) elif self._data.dtype == _numpy.complex128: lal_data = _lal.CreateCOMPLEX16FrequencySeries("",ep,0,self.delta_f,_lal.SecondUnit,len(self)) lal_data.data.data[:] = self.numpy() return lal_data
def lal(self): """ Returns a LAL Object that contains this data """ lal_data = None if type(self._data) is not _numpy.ndarray: raise TypeError("Cannot return lal type from the GPU") elif self._data.dtype == _numpy.float32: lal_data = _lal.CreateREAL4FrequencySeries("", self._epoch, 0, self.delta_f, _lal.lalSecondUnit, len(self)) elif self._data.dtype == _numpy.float64: lal_data = _lal.CreateREAL8FrequencySeries("", self._epoch, 0, self.delta_f, _lal.lalSecondUnit, len(self)) elif self._data.dtype == _numpy.complex64: lal_data = _lal.CreateCOMPLEX8FrequencySeries( "", self._epoch, 0, self.delta_f, _lal.lalSecondUnit, len(self)) elif self._data.dtype == _numpy.complex128: lal_data = _lal.CreateCOMPLEX16FrequencySeries( "", self._epoch, 0, self.delta_f, _lal.lalSecondUnit, len(self)) lal_data.data.data[:] = self._data return lal_data
def lal_psd_estimate(numPoints, chan): """ This function simulates the psd estimation as done in inspiral.c """ chan = chan.lal() df = 4096 / numPoints avgSpecParams = lal.AverageSpectrumParams() spec = lal.CreateREAL4FrequencySeries("", chan.epoch, 0, df, lal.lalSecondUnit, numPoints / 2 + 1) avgSpecParams.method = lal.useMedian avgSpecParams.plan = lal.CreateREAL4FFTPlan(numPoints, 1, 1) avgSpecParams.overlap = numPoints / 2 avgSpecParams.window = lal.CreateHannREAL4Window(numPoints) lal.REAL4AverageSpectrum(spec, chan, avgSpecParams) return FrequencySeries(spec.data.data, delta_f=spec.deltaF)