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
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
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
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
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
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