def _get_dphase(self, min_dphase = -np.pi): """ remap to [min_dphase, min_dphase+2pi] """ phases = np.array([self._get_single_channel_phase(i) for i in range(self.signal.shape[0])]) debug_(pyfusion.DEBUG, 2, key='_get_dphase') if self.phase_pairs != None: tmp = [] for a,b in self.phase_pairs: ind_a = self.channels.get_channel_index(a) ind_b = self.channels.get_channel_index(b) tmp.append(phases[ind_b]-phases[ind_a]) d_phases=remap_periodic(np.array(tmp), min_val=min_dphase) else: d_phases = remap_periodic(phases[1:]-phases[:-1], min_val = min_dphase) #d_phase_dataset = OrderedDataSet(ordered_by="channel_1.name") d_phase_dataset = BaseOrderedDataSet('d_phase_%s' %datetime.now()) ## append then sort should be faster than ordereddataset.add() [ fewer sorts()] if self.phase_pairs != None: for i,phase_pair in enumerate(self.phase_pairs): ind_a = self.channels.get_channel_index(phase_pair[0]) ind_b = self.channels.get_channel_index(phase_pair[1]) d_phase_dataset.append(FloatDelta(self.channels[ind_a],self.channels[ind_b],d_phases[i])) else: for i, d_ph in enumerate(d_phases): d_phase_dataset.append(FloatDelta(self.channels[i], self.channels[i+1], d_ph)) #d_phase_dataset.sort() return d_phase_dataset
def _get_dphase(self, min_dphase = -np.pi, get_fourier_value=0): """ remap to [min_dphase, min_dphase+2pi] #SRH modified 24June2013 to return the complex value also """ if get_fourier_value==0: phases = np.array([self._get_single_channel_phase(i) for i in range(self.signal.shape[0])]) else: fourier_vals = []; phases = [] for i in range(self.signal.shape[0]): phases_tmp, fourier_vals_tmp = self._get_single_channel_phase(i, get_fourier_value = 1) phases.append(phases_tmp) fourier_vals.append(fourier_vals_tmp) phases = np.array(phases) fourier_vals = np.array(fourier_vals) d_phases = remap_periodic(phases[1:]-phases[:-1], min_val = min_dphase) #d_phase_dataset = OrderedDataSet(ordered_by="channel_1.name") d_phase_dataset = BaseOrderedDataSet('d_phase_%s' %datetime.now()) ## append then sort should be faster than ordereddataset.add() [ fewer sorts()] if self.phase_pairs != None: for i,phase_pair in enumerate(self.phase_pairs): ind_a = self.channels.get_channel_index(phase_pair[0]) ind_b = self.channels.get_channel_index(phase_pair[1]) d_phase_dataset.append(FloatDelta(self.channels[ind_a],self.channels[ind_b],d_phases[i])) else: for i, d_ph in enumerate(d_phases): d_phase_dataset.append(FloatDelta(self.channels[i], self.channels[i+1], d_ph)) #d_phase_dataset.sort() if get_fourier_value==0: return d_phase_dataset else: return d_phase_dataset, fourier_vals
def _get_dphase(self, min_dphase = -np.pi, get_fourier_value=0): """ remap to [min_dphase, min_dphase+2pi] #SRH modified 24June2013 to return the complex value also """ if get_fourier_value==0: phases = np.array([self._get_single_channel_phase(i) for i in range(self.signal.shape[0])]) else: fourier_vals = []; phases = [] for i in range(self.signal.shape[0]): phases_tmp, fourier_vals_tmp = self._get_single_channel_phase(i, get_fourier_value = 1) phases.append(phases_tmp) fourier_vals.append(fourier_vals_tmp) phases = np.array(phases) fourier_vals = np.array(fourier_vals) d_phases = remap_periodic(phases[1:]-phases[:-1], min_val = min_dphase) #d_phase_dataset = OrderedDataSet(ordered_by="channel_1.name") d_phase_dataset = BaseOrderedDataSet('d_phase_%s' %datetime.now()) ## append then sort should be faster than ordereddataset.add() [ fewer sorts()] for i, d_ph in enumerate(d_phases): d_phase_dataset.append(FloatDelta(self.channels[i], self.channels[i+1], d_ph)) #d_phase_dataset.sort() if get_fourier_value==0: return d_phase_dataset else: return d_phase_dataset, fourier_vals
def _get_dphase(self, min_dphase=-np.pi): """ remap to [min_dphase, min_dphase+2pi] """ phases = np.array([ self._get_single_channel_phase(i) for i in range(self.signal.shape[0]) ]) debug_(pyfusion.DEBUG, 2, key='_get_dphase') if self.phase_pairs != None: tmp = [] for a, b in self.phase_pairs: ind_a = self.channels.get_channel_index(a) ind_b = self.channels.get_channel_index(b) tmp.append(phases[ind_b] - phases[ind_a]) d_phases = remap_periodic(np.array(tmp), min_val=min_dphase) else: d_phases = remap_periodic(phases[1:] - phases[:-1], min_val=min_dphase) #d_phase_dataset = OrderedDataSet(ordered_by="channel_1.name") d_phase_dataset = BaseOrderedDataSet('d_phase_%s' % datetime.now()) ## append then sort should be faster than ordereddataset.add() [ fewer sorts()] if self.phase_pairs != None: for i, phase_pair in enumerate(self.phase_pairs): ind_a = self.channels.get_channel_index(phase_pair[0]) ind_b = self.channels.get_channel_index(phase_pair[1]) d_phase_dataset.append( FloatDelta(self.channels[ind_a], self.channels[ind_b], d_phases[i])) else: for i, d_ph in enumerate(d_phases): d_phase_dataset.append( FloatDelta(self.channels[i], self.channels[i + 1], d_ph)) #d_phase_dataset.sort() return d_phase_dataset
def test_remap_periodic(self): data = np.array([-3,-2,-1,0,1,2,2.5, 3]) output = remap_periodic(data, min_val = 0, period=3) expected = np.array([0, 1, 2, 0, 1, 2, 2.5, 0]) assert_array_almost_equal(output, expected)