def test_cov(self): NSAMP = 1024 factor = NSAMP/float(NSAMP-1) fq = np.exp(1j*np.linspace(0,2*np.pi,128)); fq.shape = (-1,1) ts = np.exp(1j*np.linspace(0,2*np.pi,NSAMP+1)[:-1]); ts.shape = (1,-1) x = fq * ts w = np.ones_like(x) C = oqe.cov(x,w) np.testing.assert_allclose(np.diag(C), factor) np.testing.assert_allclose(C[0].conj(), factor*fq.flatten()) x = np.concatenate([x,x], axis=1) w = np.concatenate([w,np.zeros_like(w)], axis=1) C = oqe.cov(x,w) np.testing.assert_allclose(np.diag(C), factor) np.testing.assert_allclose(C[0].conj(), factor*fq.flatten())
def test_cov(self): NSAMP = 1024 factor = NSAMP / float(NSAMP - 1) fq = np.exp(1j * np.linspace(0, 2 * np.pi, 128)) fq.shape = (-1, 1) ts = np.exp(1j * np.linspace(0, 2 * np.pi, NSAMP + 1)[:-1]) ts.shape = (1, -1) x = fq * ts w = np.ones_like(x) C = oqe.cov(x, w) np.testing.assert_allclose(np.diag(C), factor) np.testing.assert_allclose(C[0].conj(), factor * fq.flatten()) x = np.concatenate([x, x], axis=1) w = np.concatenate([w, np.zeros_like(w)], axis=1) C = oqe.cov(x, w) np.testing.assert_allclose(np.diag(C), factor) np.testing.assert_allclose(C[0].conj(), factor * fq.flatten())
def set_data(self, dsets, wgts=None, conj=None): if type(dsets.values()[0]) == dict: dsets,wgts = self.flatten_data(dsets), self.flatten_data(wgts) self.x, self.w = {}, {} avgx = [] avgC = [] for k in dsets: self.x[k] = dsets[k].T try: self.w[k] = wgts[k].T except(TypeError): self.w[k] = n.ones_like(self.x[k]) try: if conj[k[1]]: self.x[k] = n.conj(self.x[k]) except(TypeError,KeyError): pass try: avgx.append(self.x[k]) avgC.append(oqe.cov(self.x[k], self.w[k])) except(TypeError,KeyError): pass self.avgx = n.average(avgx, axis=0) self.avgC = n.average(avgC, axis=0)
def set_data(self, dsets, wgts=None, conj=None): """Set data inside of object, also computes average over bls.""" if type(dsets.values()[0]) == dict: dsets, wgts = self.flatten_data(dsets), self.flatten_data(wgts) self.x, self.w = {}, {} avgx = [] avgC = [] for k in dsets: self.x[k] = dsets[k].T try: self.w[k] = wgts[k].T except(TypeError): self.w[k] = np.ones_like(self.x[k]) print k[1] try: if conj[k[1]]: self.x[k] = np.conj(self.x[k]) except(TypeError, KeyError): pass try: avgx.append(self.x[k]) avgC.append(oqe.cov(self.x[k], self.w[k])) except(TypeError, KeyError): pass self.avgx = np.average(avgx, axis=0) self.avgC = np.average(avgC, axis=0)
for mode in xrange(NCHAN): Q[mode] = oqe.get_Q(mode, NCHAN) #capo.plot.waterfall(Q[53], mode='real'); plt.show() fg_ch = np.sin(np.linspace(0,2*np.pi,NCHAN)); fg_ch.shape = (-1,1) fg_t = np.sin(np.linspace(0,2*np.pi, 1000)); fg_t.shape = (1,-1) fg = fg_ch * fg_t bp = aipy.dsp.gen_window(NCHAN, 'hamming'); bp.shape = (-1,1) x = np.random.normal(size=(NCHAN,1000)) + fg x *= bp wgt = np.ones_like(x) C = oqe.cov(x, wgt) #U,S,V = np.linalg.svd(C) #import IPython; IPython.embed() _C = np.linalg.inv(C) _Cx = np.dot(_C, x) qC = np.abs(np.fft.ifft(_Cx, axis=0)); qC = np.average(qC, axis=1) qI = np.abs(np.fft.ifft(x, axis=0)); qI = np.average(qI, axis=1) print _Cx.shape #q = {} #for mode in xrange(NCHAN): # print mode # q[mode] = _Cx.conj() * np.dot(Q[mode], _Cx) # print q[mode].shape #q = np.array([q[mode] for mode in xrange(NCHAN)]) #plt.subplot(211); capo.plot.waterfall(np.fft.fftshift(qI, axes=[0]), drng=3)