Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
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)