def getbandpass(M): feature = '%s:%s' % ('bandpass', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: self.extracted_feature[feature] = normalize(downsample(profs.sum(0).sum(1),M).ravel()) return self.extracted_feature[feature]
def getsubbands(M): feature = '%s:%s' % ('subbands', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: img = greyscale(self.profs.sum(0)) #U,S,V = svd(img) #if M <= len(S): #return S[:M] #else: #while len(S) < M: #np.append(S, 0.) #return S #self.extracted_feature[feature] = normalize(downsample(img, M, align=self.align).ravel()) self.extracted_feature[feature] = normalize( downsample(img, M, align=self.align)).ravel() pfd_data = pfddata(os.path.join(input_dir, fn)) fig = plt.figure() #fig.set_size_inches(5,5) #ax = plt.Axes(fig, [0., 0., 1., 1.]) ax = plt.gca() ax.set_axis_off() #fig.add_axes(ax) plt.imsave("%s_subbands.png" % os.path.join(output_dir, fn), img, origin='lower', cmap=plt.cm.gray_r) #plt.imshow(img, origin='lower', aspect='auto', interpolation='bilinear', cmap=plt.cm.gray_r) #aspect='auto'plt.cm.Greys) #interpolation='bilinear' #plt.savefig("%s_subbands.png" % os.path.join(output_dir, fn)) return self.extracted_feature[feature]
def getfreqprofs(M): feature = '%s:%s' % ('freqbins', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: self.extracted_feature[feature] = normalize( downsample(profs.sum(1).sum(0), M).ravel()) return self.extracted_feature[feature]
def getsumprofs(M): feature = '%s:%s' % ('phasebins', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: data = profs.sum(0).sum(0) self.extracted_feature[feature] = normalize(downsample(data,M,align=self.align).ravel()) return self.extracted_feature[feature]
def getsumprofs(M): feature = '%s:%s' % ('phasebins', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: data = profs.sum(0).sum(0) self.extracted_feature[feature] = normalize( downsample(data, M, align=self.align).ravel()) return self.extracted_feature[feature]
def getDMcurve( M): # return the normalized DM curve downsampled to M points feature = '%s:%s' % ('DMbins', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: ddm = (self.dms.max() - self.dms.min()) / 2. loDM, hiDM = (self.bestdm - ddm, self.bestdm + ddm) loDM = max((0, loDM)) #make sure cut off at 0 DM hiDM = max((ddm, hiDM)) #make sure cut off at 0 DM N = 100 interp = False sumprofs = self.profs.sum(0) if not interp: profs = sumprofs else: profs = np.zeros(np.shape(sumprofs), dtype='d') DMs = psr_utils.span(loDM, hiDM, N) chis = np.zeros(N, dtype='f') subdelays_bins = self.subdelays_bins.copy() for ii, DM in enumerate(DMs): subdelays = psr_utils.delay_from_DM(DM, self.barysubfreqs) hifreqdelay = subdelays[-1] subdelays = subdelays - hifreqdelay delaybins = subdelays * self.binspersec - subdelays_bins if interp: interp_factor = 16 for jj in range(self.nsub): profs[jj] = psr_utils.interp_rotate( sumprofs[jj], delaybins[jj], zoomfact=interp_factor) # Note: Since the interpolation process slightly changes the values of the # profs, we need to re-calculate the average profile value avgprof = (profs / self.proflen).sum() else: new_subdelays_bins = np.floor(delaybins + 0.5) for jj in range(self.nsub): #profs[jj] = psr_utils.rotate(profs[jj], new_subdelays_bins[jj]) delay_bins = int(new_subdelays_bins[jj] % len(profs[jj])) if not delay_bins == 0: profs[jj] = np.concatenate( (profs[jj][delay_bins:], profs[jj][:delay_bins])) subdelays_bins += new_subdelays_bins avgprof = self.avgprof sumprof = profs.sum(0) chis[ii] = self.calc_redchi2(prof=sumprof, avg=avgprof) DMcurve = normalize(downsample(chis, M)) self.extracted_feature[feature] = DMcurve return self.extracted_feature[feature]
def getsubbands(M): feature = '%s:%s' % ('subbands', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: img = greyscale(self.profs.sum(0)) #U,S,V = svd(img) #if M <= len(S): #return S[:M] #else: #while len(S) < M: #np.append(S, 0.) #return S self.extracted_feature[feature] = normalize(downsample(img, M).ravel()) return self.extracted_feature[feature]
def getDMcurve(M): # return the normalized DM curve downsampled to M points feature = '%s:%s' % ('DMbins', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: ddm = (self.dms.max() - self.dms.min())/2. loDM, hiDM = (self.bestdm - ddm , self.bestdm + ddm) loDM = max((0, loDM)) #make sure cut off at 0 DM hiDM = max((ddm, hiDM)) #make sure cut off at 0 DM N = 100 interp = False sumprofs = self.profs.sum(0) if not interp: profs = sumprofs else: profs = np.zeros(np.shape(sumprofs), dtype='d') DMs = psr_utils.span(loDM, hiDM, N) chis = np.zeros(N, dtype='f') subdelays_bins = self.subdelays_bins.copy() for ii, DM in enumerate(DMs): subdelays = psr_utils.delay_from_DM(DM, self.barysubfreqs) hifreqdelay = subdelays[-1] subdelays = subdelays - hifreqdelay delaybins = subdelays*self.binspersec - subdelays_bins if interp: interp_factor = 16 for jj in range(self.nsub): profs[jj] = psr_utils.interp_rotate(sumprofs[jj], delaybins[jj], zoomfact=interp_factor) # Note: Since the interpolation process slightly changes the values of the # profs, we need to re-calculate the average profile value avgprof = (profs/self.proflen).sum() else: new_subdelays_bins = np.floor(delaybins+0.5) for jj in range(self.nsub): #profs[jj] = psr_utils.rotate(profs[jj], new_subdelays_bins[jj]) delay_bins = int(new_subdelays_bins[jj] % len(profs[jj])) if not delay_bins==0: profs[jj] = np.concatenate((profs[jj][delay_bins:], profs[jj][:delay_bins])) subdelays_bins += new_subdelays_bins avgprof = self.avgprof sumprof = profs.sum(0) chis[ii] = self.calc_redchi2(prof=sumprof, avg=avgprof) DMcurve = normalize(downsample(chis, M)) self.extracted_feature[feature] = DMcurve return self.extracted_feature[feature]
def getsubbands(M): feature = '%s:%s' % ('subbands', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: img = greyscale(self.profs.sum(0)) #U,S,V = svd(img) #if M <= len(S): #return S[:M] #else: #while len(S) < M: #np.append(S, 0.) #return S #self.extracted_feature[feature] = normalize(downsample(img, M, align=self.align).ravel()) self.extracted_feature[feature] = normalize( downsample(img, M, align=self.align)).ravel() return self.extracted_feature[feature]
def getintervals(M): feature = '%s:%s' % ('intervals', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: img = greyscale(self.profs.sum(1)) #U,S,V = svd(img) #imshow(img) #m,n = img.shape #S = resize(S,[m,1]) * eye(m,n) #k = 6 #imshow(np.dot(U[:,1:k], dot(S[1:k,1:k],V[1:k,:]))) #show() #if M <= len(S): #return S[:M] #else: #while len(S) < M: #np.append(S, 0.) #return S self.extracted_feature[feature] = normalize(downsample(img, M).ravel()) return self.extracted_feature[feature]
def getintervals(M): feature = '%s:%s' % ('intervals', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: img = greyscale(self.profs.sum(1)) #U,S,V = svd(img) #imshow(img) #m,n = img.shape #S = resize(S,[m,1]) * eye(m,n) #k = 6 #imshow(np.dot(U[:,1:k], dot(S[1:k,1:k],V[1:k,:]))) #show() #if M <= len(S): #return S[:M] #else: #while len(S) < M: #np.append(S, 0.) #return S #self.extracted_feature[feature] = normalize(downsample(img, M, align=self.align).ravel())#wrong! self.extracted_feature[feature] = normalize( downsample(img, M, align=self.align)).ravel() return self.extracted_feature[feature]
def getintervals(M): feature = '%s:%s' % ('intervals', M) if M == 0: return np.array([]) if not feature in self.extracted_feature: img = greyscale(self.profs.sum(1)) #U,S,V = svd(img) #imshow(img) #m,n = img.shape #S = resize(S,[m,1]) * eye(m,n) #k = 6 #imshow(np.dot(U[:,1:k], dot(S[1:k,1:k],V[1:k,:]))) #show() #if M <= len(S): #return S[:M] #else: #while len(S) < M: #np.append(S, 0.) #return S #self.extracted_feature[feature] = normalize(downsample(img, M, align=self.align).ravel())#wrong! self.extracted_feature[feature] = normalize( downsample(img, M, align=self.align)).ravel() #self.extracted_feature[feature] = img.ravel() fig = plt.figure() #fig.set_size_inches(5,5) #ax = plt.Axes(fig, [0., 0., 1., 1.]) ax = plt.gca() ax.set_axis_off() #fig.add_axes(ax) plt.imsave("%s_intervals.png" % os.path.join(output_dir, fn), img, origin='lower', cmap=plt.cm.gray_r) #plt.imshow(img, origin='lower', aspect='auto', interpolation='bilinear', cmap=plt.cm.gray_r) #plt.cm.Greys) #interpolation='bilinear' #plt.savefig("%s_intervals.png" % os.path.join(output_dir, fn)) return self.extracted_feature[feature]