コード例 #1
0
    def chan_wf(self, chan, tvals):
        idx0 = np.where(tvals >= tvals[0])[0][0]
        idx1 = np.where(tvals <= tvals[0] + self.length)[0][-1] + 1
        wf = np.zeros(len(tvals))
        t = tvals - tvals[0]  # Gauss envelope should not be displaced
        mu = self.length/2.0
        if not self.phaselock:
            tvals = tvals.copy() - tvals[idx0]

        gauss_env = self.amplitude*np.exp(-(0.5 * ((t-mu)**2) / self.sigma**2))
        deriv_gauss_env = self.motzoi * -1 * (t-mu)/(self.sigma**1) * gauss_env
        # substract offsets
        gauss_env -= (gauss_env[0]+gauss_env[-1])/2.
        deriv_gauss_env -= (deriv_gauss_env[0]+deriv_gauss_env[-1])/2.

        # Note prefactor is multiplied by self.sigma to normalize
        if chan == self.I_channel:
            I_mod, Q_mod = apply_modulation(gauss_env, deriv_gauss_env,
                                            tvals[idx0:idx1],
                                            mod_frequency=self.mod_frequency,
                                            phase=self.phase,
                                            phi_skew=self.phi_skew,
                                            alpha=self.alpha)
            wf[idx0:idx1] += I_mod

        if chan == self.Q_channel:
            I_mod, Q_mod = apply_modulation(gauss_env, deriv_gauss_env,
                                            tvals[idx0:idx1],
                                            mod_frequency=self.mod_frequency,
                                            phase=self.phase,
                                            phi_skew=self.phi_skew,
                                            alpha=self.alpha)
            wf[idx0:idx1] += Q_mod

        return wf
コード例 #2
0
    def chan_wf(self, chan, tvals):
        idx0 = np.where(tvals >= tvals[0])[0][0]
        idx1 = np.where(tvals <= tvals[0] + self.length)[0][-1] + 1
        wf = np.zeros(len(tvals))
        t = tvals - tvals[0]  # Gauss envelope should not be displaced
        mu = self.length / 2.0
        if not self.phaselock:
            tvals = tvals.copy() - tvals[idx0]

        gauss_env = self.amplitude * np.exp(-(0.5 *
                                              ((t - mu)**2) / self.sigma**2))
        if chan in [self.GI_channel, self.GQ_channel]:
            gauss_env -= (gauss_env[0] + gauss_env[-1]) / 2.
            I_mod, Q_mod = apply_modulation(gauss_env,
                                            np.zeros(len(tvals)),
                                            tvals[idx0:idx1],
                                            mod_frequency=self.mod_frequency,
                                            phase=self.phase,
                                            phi_skew=self.G_phi_skew,
                                            alpha=self.G_alpha)
            if chan == self.GI_channel:
                wf[idx0:idx1] += I_mod
            else:
                wf[idx0:idx1] += Q_mod

        elif chan in [self.DI_channel, self.DQ_channel]:
            der_env = self.motzoi * -1 * (t - mu) / (self.sigma**1) * gauss_env
            der_env -= (der_env[0] + der_env[-1]) / 2.
            I_mod, Q_mod = apply_modulation(np.zeros(len(tvals)),
                                            der_env,
                                            tvals[idx0:idx1],
                                            mod_frequency=self.mod_frequency,
                                            phase=self.phase,
                                            phi_skew=self.D_phi_skew,
                                            alpha=self.D_alpha)
            if chan == self.DI_channel:
                wf[idx0:idx1] += I_mod
            else:
                wf[idx0:idx1] += Q_mod
        return wf
コード例 #3
0
    def chan_wf(self, chan, tvals):
        idx0 = np.where(tvals >= tvals[0])[0][0]
        idx1 = np.where(tvals <= tvals[0] + self.length)[0][-1] + 1
        wf = np.zeros(len(tvals))
        t = tvals - tvals[0]  # Gauss envelope should not be displaced
        mu = self.length / 2.0
        if not self.phaselock:
            tvals = tvals.copy() - tvals[idx0]

        gauss_env = self.amplitude * np.exp(-(0.5 *
                                              ((t - mu)**2) / self.sigma**2))
        deriv_gauss_env = self.motzoi * -1 * (t - mu) / (self.sigma**
                                                         1) * gauss_env
        # substract offsets
        gauss_env -= (gauss_env[0] + gauss_env[-1]) / 2.
        deriv_gauss_env -= (deriv_gauss_env[0] + deriv_gauss_env[-1]) / 2.

        # Note prefactor is multiplied by self.sigma to normalize
        if chan == self.I_channel:
            I_mod, Q_mod = apply_modulation(gauss_env,
                                            deriv_gauss_env,
                                            tvals[idx0:idx1],
                                            mod_frequency=self.mod_frequency,
                                            phase=self.phase,
                                            phi_skew=self.phi_skew,
                                            alpha=self.alpha)
            wf[idx0:idx1] += I_mod

        if chan == self.Q_channel:
            I_mod, Q_mod = apply_modulation(gauss_env,
                                            deriv_gauss_env,
                                            tvals[idx0:idx1],
                                            mod_frequency=self.mod_frequency,
                                            phase=self.phase,
                                            phi_skew=self.phi_skew,
                                            alpha=self.alpha)
            wf[idx0:idx1] += Q_mod

        return wf
コード例 #4
0
    def chan_wf(self, chan, tvals):
        idx0 = np.where(tvals >= tvals[0])[0][0]
        idx1 = np.where(tvals <= tvals[0] + self.length)[0][-1] + 1
        wf = np.zeros(len(tvals))
        t = tvals - tvals[0]  # Gauss envelope should not be displaced
        mu = self.length/2.0
        if not self.phaselock:
            tvals = tvals.copy() - tvals[idx0]

        gauss_env = self.amplitude*np.exp(-(0.5 * ((t-mu)**2) / self.sigma**2))
        if chan in [self.GI_channel, self.GQ_channel]:
            gauss_env -= (gauss_env[0]+gauss_env[-1])/2.
            I_mod, Q_mod = apply_modulation(gauss_env,
                                            np.zeros(len(tvals)),
                                            tvals[idx0:idx1],
                                            mod_frequency=self.mod_frequency,
                                            phase=self.phase,
                                            phi_skew=self.G_phi_skew,
                                            alpha=self.G_alpha)
            if chan == self.GI_channel:
                wf[idx0:idx1] += I_mod
            else:
                wf[idx0:idx1] += Q_mod

        elif chan in [self.DI_channel, self.DQ_channel]:
            der_env = self.motzoi * -1 * (t-mu)/(self.sigma**1) * gauss_env
            der_env -= (der_env[0]+der_env[-1])/2.
            I_mod, Q_mod = apply_modulation(np.zeros(len(tvals)), der_env,
                                            tvals[idx0:idx1],
                                            mod_frequency=self.mod_frequency,
                                            phase=self.phase,
                                            phi_skew=self.D_phi_skew,
                                            alpha=self.D_alpha)
            if chan == self.DI_channel:
                wf[idx0:idx1] += I_mod
            else:
                wf[idx0:idx1] += Q_mod
        return wf
コード例 #5
0
 def chan_wf(self, chan, tvals):
     idx0 = np.where(tvals >= tvals[0])[0][0]
     idx1 = np.where(tvals <= tvals[0] + self.length)[0][-1] + 1
     wf = np.zeros(len(tvals))
     if not self.phaselock:
         tvals = tvals.copy() - tvals[idx0]
     I_mod, Q_mod = apply_modulation(
         self.amplitude*np.ones(len(tvals)),
         np.zeros(len(tvals)), tvals[idx0:idx1],
         mod_frequency=self.mod_frequency, phase=self.phase,
         phi_skew=self.phi_skew, alpha=self.alpha)
     if chan == self.I_channel:
         wf[idx0:idx1] += I_mod
     elif chan == self.Q_channel:
         wf[idx0:idx1] += Q_mod
     return wf
コード例 #6
0
 def chan_wf(self, chan, tvals):
     idx0 = np.where(tvals >= tvals[0])[0][0]
     idx1 = np.where(tvals <= tvals[0] + self.length)[0][-1] + 1
     wf = np.zeros(len(tvals))
     if not self.phaselock:
         tvals = tvals.copy() - tvals[idx0]
     I_mod, Q_mod = apply_modulation(self.amplitude * np.ones(len(tvals)),
                                     np.zeros(len(tvals)),
                                     tvals[idx0:idx1],
                                     mod_frequency=self.mod_frequency,
                                     phase=self.phase,
                                     phi_skew=self.phi_skew,
                                     alpha=self.alpha)
     if chan == self.I_channel:
         wf[idx0:idx1] += I_mod
     elif chan == self.Q_channel:
         wf[idx0:idx1] += Q_mod
     return wf