def __init__(self, psr): # not available for PINT yet if isinstance(psr, enterprise.pulsar.PintPulsar): msg = 'Physical Ephemeris model is not compatible with PINT ' msg += 'at this time.' raise NotImplementedError(msg) super(Dropout_PhysicalEphemerisSignal, self).__init__(psr) if use_epoch_toas: # get quantization matrix and calculate daily average TOAs U, _ = utils.create_quantization_matrix(psr.toas, nmin=1) self.uinds = utils.quant2ind(U) avetoas = np.array([psr.toas[sc].mean() for sc in self.uinds]) self._wf[''].add_kwarg(toas=avetoas) # interpolate ssb planet position vectors to avetoas planetssb = np.zeros((len(avetoas), 9, 3)) for jj in range(9): planetssb[:, jj, :] = np.array([ np.interp(avetoas, psr.toas, psr.planetssb[:, jj, aa]) for aa in range(3) ]).T self._wf[''].add_kwarg(planetssb=planetssb) # Inteprolating the pulsar position vectors onto epoch TOAs pos_t = np.array([ np.interp(avetoas, psr.toas, psr.pos_t[:, aa]) for aa in range(3) ]).T self._wf[''].add_kwarg(pos_t=pos_t) # initialize delay self._delay = np.zeros(len(psr.toas))
def __init__(self, psr): super(EcorrKernelNoise, self).__init__(psr) self.name = self.psrname + "_" + self.signal_id sel = selection(psr) self._params, self._masks = sel("log10_ecorr", log10_ecorr) keys = sorted(self._masks.keys()) masks = [self._masks[key] for key in keys] Umats = [] for key, mask in zip(keys, masks): Umats.append( utils.create_quantization_matrix(psr.toas[mask], nmin=2)[0]) nepoch = sum(U.shape[1] for U in Umats) U = np.zeros((len(psr.toas), nepoch)) self._slices = {} netot = 0 for ct, (key, mask) in enumerate(zip(keys, masks)): nn = Umats[ct].shape[1] U[mask, netot:nn + netot] = Umats[ct] self._slices.update( {key: utils.quant2ind(U[:, netot:nn + netot])}) netot += nn # initialize sparse matrix self._setup(psr)
def __init__(self, psr): # not available for PINT yet if isinstance(psr, enterprise.pulsar.PintPulsar): msg = 'Physical Ephemeris model is not compatible with PINT ' msg += 'at this time.' raise NotImplementedError(msg) super(PhysicalEphemerisSignal, self).__init__(psr) if use_epoch_toas: # get quantization matrix and calculate daily average TOAs U, _ = utils.create_quantization_matrix(psr.toas, nmin=1) self.uinds = utils.quant2ind(U) avetoas = np.array([psr.toas[sc].mean() for sc in self.uinds]) self._wf[''].add_kwarg(toas=avetoas) # interpolate ssb planet position vectors to avetoas planetssb = np.zeros((len(avetoas), 9, 3)) for jj in range(9): planetssb[:, jj, :] = np.array([ np.interp(avetoas, psr.toas, psr.planetssb[:,jj,aa]) for aa in range(3)]).T self._wf[''].add_kwarg(planetssb=planetssb) # Inteprolating the pulsar position vectors onto epoch TOAs pos_t = np.array([np.interp(avetoas, psr.toas, psr.pos_t[:,aa]) for aa in range(3)]).T self._wf[''].add_kwarg(pos_t=pos_t) # initialize delay self._delay = np.zeros(len(psr.toas))
def set_Umat_auxiliaries(self): """Set quantization matrix and array of observing epoch start/stop indices for TOAs after filtering out short (<4 TOAs) epochs """ Umat, _ = create_quantization_matrix(self.psr.toas) Uind = quant2ind(Umat) self.Umat, self.Uindslc = ut.set_Uindslc(Umat, Uind)