def exp_dead_new(file_num, name_file, imsz, wcs, flat_list, foc_list, asp_solution, dead, cut, flat_idx, step, out_path, return_dict): print imsz count = np.zeros(imsz) x_lim = imsz[0] y_lim = imsz[1] length = flat_list[0].shape[0] half_len = length/2. print half_len l = imsz[0]/10 start = foc_list[0,1]-half_len print foc_list.shape print start.shape ox = np.repeat(np.arange(l)+start,length+1000) oy = np.tile(np.arange(length+1000)+foc_list[0,0]-half_len-500,l) omask = (ox>=0) & (ox<imsz[0]) & (oy>=0) & (oy<imsz[1]) ox = ox[omask] oy = oy[omask] gl,gb = wcs.all_pix2world(oy,ox,0) c = SkyCoord(gl*u.degree, gb*u.degree, frame='galactic') rd = c.transform_to(FK5) for i in range(asp_solution.shape[0]): hrflat = flat_list[flat_idx[i]] foc = foc_list[i,:]#wcs.sip_pix2foc(wcs.wcs_world2pix(coo,1),1) if (foc[1]+half_len)>=(start+l): print 'update' start = foc[1]-half_len ox = np.repeat(np.arange(l)+start,length+1000) oy = np.tile(np.arange(length+1000)+foc[0]-half_len-500,l) omask = (ox>=0) & (ox<imsz[0]) & (oy>=0) & (oy<imsz[1]) if np.sum(omask)==0: break ox = ox[omask] oy = oy[omask] gl,gb = wcs.all_pix2world(oy,ox,0) c = SkyCoord(gl*u.degree, gb*u.degree, frame='galactic') rd = c.transform_to(FK5) fmask = (ox>=(foc[1]-length/2)) & (ox<(foc[1]+length/2)) & (oy>=(foc[0]-length/2)) & (oy<(foc[0]+length/2)) if np.sum(fmask)==0: continue x = ox[fmask] y = oy[fmask] xi, eta = gn.gnomfwd_simple(rd.ra.deg[fmask], rd.dec.deg[fmask], asp_solution[i,1], asp_solution[i,2], -asp_solution[i,3],1/36000.,0.) px = ((xi/36000.)/(1.25/2.)*(1.25/(800* 0.001666))+1.)/2.*length py = ((eta/36000.)/(1.25/2.)*(1.25/(800* 0.001666))+1.)/2.*length pmask = (px>=0) & (px<length) & (py>=0) & (py<length) if np.sum(pmask)==0: continue count[x[pmask].astype(int),y[pmask].astype(int)] += \ hrflat[px[pmask].astype(int),py[pmask].astype(int)]*step*(1-dead[i])*cut[i] if i%100==0: with open('/scratch/dw1519/galex/fits/scan_map/%s_gal_sec_exp_tmp%d.dat'%(name_file, file_num),'w') as f: f.write('%d'%i) print i print '%d done'%file_num #return_dict[file_num] = count np.save('%s/%s_gal_sec_exp_tmp%d.npy'%(out_path, name_file, file_num), count)
def rrhr(band,skypos,tranges,skyrange,width=False,height=False,stepsz=1., verbose=0,calpath='../cal/',tscale=1000.,response=True,hdu=False, retries=20): """Generate a high resolution relative response (rrhr) map.""" imsz = gxt.deg2pix(skypos,skyrange) # TODO the if width / height flat = get_fits_data(flat_filename(band,calpath),verbose=verbose) flatinfo = get_fits_header(flat_filename(band,calpath)) npixx,npixy = flat.shape fltsz = flat.shape pixsz = flatinfo['CDELT2'] detsize = 1.25 # Rotate the flat into the correct orientation to start. flat = np.flipud(np.rot90(flat)) # NOTE: This upsample interpolation is done _last_ in the canonical # pipeline as part of the poissonbg.c routine. # The interpolation function is "congrid" in the same file. # TODO: Should this be first order interpolation? (i.e. bilinear) hrflat = scipy.ndimage.interpolation.zoom(flat,4.,order=0,prefilter=False) img = np.zeros(hrflat.shape)[ hrflat.shape[0]/2.-imsz[0]/2.:hrflat.shape[0]/2.+imsz[0]/2., hrflat.shape[1]/2.-imsz[1]/2.:hrflat.shape[1]/2+imsz[1]/2.] for trange in tranges: t0,t1=trange entries = gQuery.getArray(gQuery.aspect(t0,t1),retries=retries) n = len(entries) asptime = np.float64(np.array(entries)[:,2])/tscale aspra = np.float32(np.array(entries)[:,3]) aspdec = np.float32(np.array(entries)[:,4]) asptwist= np.float32(np.array(entries)[:,5]) aspflags= np.float32(np.array(entries)[:,6]) asptwist= np.float32(np.array(entries)[:,9]) aspra0 = np.zeros(n)+skypos[0] aspdec0 = np.zeros(n)+skypos[1] xi_vec, eta_vec = gnomonic.gnomfwd_simple( aspra,aspdec,aspra0,aspdec0,-asptwist,1.0/36000.,0.) col = 4.*( ((( xi_vec/36000.)/(detsize/2.)*(detsize/(fltsz[0]*pixsz)) + 1.)/2. * fltsz[0]) - (fltsz[0]/2.) ) row = 4.*( (((eta_vec/36000.)/(detsize/2.)*(detsize/(fltsz[1]*pixsz)) + 1.)/2. * fltsz[1]) - (fltsz[1]/2.) ) vectors = rotvec(np.array([col,row]),-asptwist) for i in range(n): if verbose>1: print_inline('Stamping '+str(asptime[i])) # FIXME: Clean this mess up a little just for clarity. img += scipy.ndimage.interpolation.shift(scipy.ndimage.interpolation.rotate(hrflat,-asptwist[i],reshape=False,order=0,prefilter=False),[vectors[1,i],vectors[0,i]],order=0,prefilter=False)[hrflat.shape[0]/2.-imsz[0]/2.:hrflat.shape[0]/2.+imsz[0]/2.,hrflat.shape[1]/2.-imsz[1]/2.:hrflat.shape[1]/2+imsz[1]/2.]*dbt.compute_exptime(band,[asptime[i],asptime[i]+1],verbose=verbose,retries=retries)*gxt.compute_flat_scale(asptime[i]+0.5,band,verbose=0) return img
def run_one_r_sec(pid, scan_name, step, resolution, duration, asp_cal, start, end, dis_map, return_dict): skypos = [0.0, 0.0] skyrange = [0.02, 0.02] if step == 1: skyrange = [0.04, 0.04]#[0.3, 0.3] elif step == 0.5: skyrange = [0.02, 0.02] data = np.loadtxt() for asp in asp_cal: time = asp[0] print time center = asp[1:3] aperture = 0.69 stars = catalog_fits.get_catalog_tycho(center, aperture) xi, eta = gn.gnomfwd_simple (stars[:,0], stars[:,1], center[0], center[1], -asp[3], 1/36000., 0) photons = data[data[:,0]==int(time*1000)] co = arg = np.argmin(np.absolute(asp_cal[:,0]-time_c[sec])) center = asp_cal[arg, 1:3] data_sec = dis_correct(np.array(data[sec], dtype='float64'), dis_map, asp_cal) coo1 = np.array(data_sec, dtype='float64') aperture = 0.69 #coo1 = np.array(data[sec], dtype='float64')[:,-3:-1] coo1, mask = angle_filter(coo1, center, 0.6) time_sec = np.array(data[sec], dtype='float64')[mask,0]/1000. weights = gaussian(time_sec-time_c[sec], 0, np.std(time_sec-time_c[sec])) coo2, mask = angle_filter(coo2, center, 0.6) #xi, eta = gn.gnomfwd_simple(coo1[:,0], coo1[:,1], center[0], center[1], -rot, 1/36000., 0.0) max_now = -1000 cent_now = [] for angle in angle_list: centroid, max_value, flux = get_corr_map(coo2, coo1, skypos, skyrange, sec, 0.0002, initial_sec, '1', weights) if max_value>max_now: max_now = max_value cent_now = np.append(centroid, angle) #centroid.append(angle) centroids.append(cent_now) print centroids np.save('../data/%s/cata/time_rot%d.npy'%(scan_name, initial_sec), center_time) np.save('../data/%s/cata/centroids_rot%d.npy'%(scan_name, initial_sec), centroids)
def exp_dead_new(file_num, name_file, imsz, wcs, hrflat, asp_solution, dead, cut, step, return_dict): count = np.zeros(imsz) rotate = scipy.ndimage.interpolation.rotate x_lim = imsz[0] y_lim = imsz[1] length = hrflat.shape[0] half_len = length / 2. print half_len coo = asp_solution[:, 1:3] foc_list = wcs.sip_pix2foc(wcs.wcs_world2pix(coo, 0), 0) print asp_solution.shape[0] ox = np.repeat(np.arange(length), length) oy = np.tile(np.arange(length), length) ocx = length / 2 ocy = length / 2 for i in range(asp_solution.shape[0]): foc = foc_list[i, :] #wcs.sip_pix2foc(wcs.wcs_world2pix(coo,1),1) x = ox + (foc[1] - ocx) y = oy + (foc[0] - ocy) fmask = (x >= 0) & (x < imsz[0]) & (y >= 0) & (y < imsz[1]) x = x[fmask] y = y[fmask] gl, gb = wcs.all_pix2world(y, x, 0) c = SkyCoord(gl * u.degree, gb * u.degree, frame='galactic') rd = c.transform_to(FK5) xi, eta = gn.gnomfwd_simple(rd.ra.deg, rd.dec.deg, asp_solution[i, 1], asp_solution[i, 2], -asp_solution[i, 3], 1 / 36000., 0.) px = ((xi / 36000.) / (1.25 / 2.) * (1.25 / (800 * 0.001666)) + 1.) / 2. * length py = ((eta / 36000.) / (1.25 / 2.) * (1.25 / (800 * 0.001666)) + 1.) / 2. * length pmask = (px >= 0) & (px < length) & (py >= 0) & (py < length) count[x[pmask].astype(int),y[pmask].astype(int)] = \ hrflat[px[pmask].astype(int),py[pmask].astype(int)]*step*(1-dead[i])*cut[i] if i % 2000 == 0: with open( '/scratch/dw1519/galex/fits/scan_map/%s_gal_sec_exp_tmp%d.dat' % (name_file, file_num), 'w') as f: f.write('%d' % i) print i print '%d done' % file_num return_dict[file_num] = count
def exp_dead_new(file_num, name_file, imsz, wcs, hrflat, asp_solution, dead, cut, step, return_dict): count = np.zeros(imsz) rotate = scipy.ndimage.interpolation.rotate x_lim = imsz[0] y_lim = imsz[1] length = hrflat.shape[0] half_len = length/2. print half_len coo = asp_solution[:,1:3] foc_list = wcs.sip_pix2foc(wcs.wcs_world2pix(coo,0),0) print asp_solution.shape[0] ox = np.repeat(np.arange(length),length) oy = np.tile(np.arange(length),length) ocx = length/2 ocy = length/2 for i in range(asp_solution.shape[0]): foc = foc_list[i,:]#wcs.sip_pix2foc(wcs.wcs_world2pix(coo,1),1) x = ox+(foc[1]-ocx) y = oy+(foc[0]-ocy) fmask = (x>=0) & (x<imsz[0]) & (y>=0) & (y<imsz[1]) x = x[fmask] y = y[fmask] gl,gb = wcs.all_pix2world(y,x,0) c = SkyCoord(gl*u.degree, gb*u.degree, frame='galactic') rd = c.transform_to(FK5) xi, eta = gn.gnomfwd_simple(rd.ra.deg, rd.dec.deg, asp_solution[i,1], asp_solution[i,2], -asp_solution[i,3],1/36000.,0.) px = ((xi/36000.)/(1.25/2.)*(1.25/(800* 0.001666))+1.)/2.*length py = ((eta/36000.)/(1.25/2.)*(1.25/(800* 0.001666))+1.)/2.*length pmask = (px>=0) & (px<length) & (py>=0) & (py<length) count[x[pmask].astype(int),y[pmask].astype(int)] = \ hrflat[px[pmask].astype(int),py[pmask].astype(int)]*step*(1-dead[i])*cut[i] if i%2000==0: with open('/scratch/dw1519/galex/fits/scan_map/%s_gal_sec_exp_tmp%d.dat'%(name_file, file_num),'w') as f: f.write('%d'%i) print i print '%d done'%file_num return_dict[file_num] = count
def run_one_r_sec(pid, scan_name, step, start, end, return_dict): pixsz = 0.000416666666666667 skypos_count = [5.,-9.5] skyrange_count = [2., 3.] tranges_count = [[0,0]] imsz_count = imsz = imagetools.deg2pix_g(skypos_count, skyrange_count, pixsz) wcs_count = imagetools.define_wcs_g(skypos_count,skyrange_count,width=False,height=False,verbose=0,pixsz=pixsz) count = np.zeros(imsz_count) num_co = int(1/step) hdulist = pyfits.open('../AIS_GAL_SCAN/asprta/%s-asprta.fits'%scan_name) co_data = hdulist[1].data length = co_data.shape[0] cal_initial = int((co_data[1][0]-0.5)*1000) offsets = np.load('../data/%s/cata/offsets_inter_half_sec.npy'%scan_name) angle_list = [-0.035, -0.03, -0.025, -0.02, -0.015, -0.01, -0.005, 0, 0.005, 0.01, 0.015, 0.02, 0.025, 0.03, 0.035] print length for initial_sec in range(start, end): print 'time:%d'%initial_sec file_path = '../data/%s/cata/centroids_sec%d.npy'%(scan_name, initial_sec) ''' if os.path.exists(file_path): print 'skip:%d'%initial_sec continue ''' intitial_asp = co_data[initial_sec] rot = intitial_asp[3] center = np.array([intitial_asp[1], intitial_asp[2]]) #use the first order calibrated asp instead of the original one center = cal_asp_r(offsets, cal_initial, intitial_asp[0]*1000, intitial_asp[1:3], 200) #print(intitial_asp) skypos = [0.0, 0.0] skyrange = [0.02, 0.02] wcs = imagetools.define_wcs(skypos,skyrange,width=False,height=False,verbose=0,pixsz=0.0001) initial_time = intitial_asp[0]-0.5 tranges = [] for sec in range(num_co): tranges.append([initial_time+step*sec, initial_time+step*(sec+1)]) print tranges data = get_data_cal(tranges, scan_name, cal_initial, offsets) print len(data) output = "../data/%s/cata/%s.csv"%(scan_name, scan_name) dir = os.path.dirname(output) if not os.path.exists(dir): os.makedirs(dir) centroids = [] for sec in range(num_co): if len(data[sec]) ==0: centroid = np.array([0.0, 0.0]) centroids.append(centroid) print centroid continue coo1 = np.array(data[sec], dtype='float64')[:,-3:-1] coo2 = catalog_fits.get_catalog(center, 0.69) coo1 = angle_filter(coo1, center, 1.) coo2 = angle_filter(coo2, center, 1.) xi, eta = gn.gnomfwd_simple(coo1[:,0], coo1[:,1], center[0], center[1], -rot, 1/36000., 0.0) max_now = -1000 cent_now = [] for angle in angle_list: coo1[:,0], coo1[:,1] = gn.gnomrev_simple(xi,eta,center[0],center[1],-(rot+angle),1/36000.,0.) centroid, max_value = get_corr_map(coo2, coo1, skypos, skyrange, sec, 0.02, 0.004) if max_value>max_now: max_now = max_value cent_now = np.append(centroid, angle) #centroid.append(angle) coo1[:,0], coo1[:,1] = gn.gnomrev_simple(xi,eta,center[0]-cent_now[0],center[1]-cent_now[1],-(rot+cent_now[2]),1/36000.,0.) sky_data = SkyCoord(coo1, unit='deg', frame=FK5, equinox='J2000.0') gal = sky_data.transform_to(Galactic) data_count = np.concatenate((np.array([gal.l.deg]).T, np.array([gal.b.deg]).T), axis=1) H = hist_g(data_count, wcs_count, imsz_count) count += H sky_data=gal=data_count=H = None gc.collect() #xi2, eta2 = gn.gnomfwd_simple(coo2[:,0], coo2[:,1], center[0], center[1], -rot, 1/36000., 0.0) #r, phi = cart2pol(xi, eta) #r2, phi2 = cart2pol(xi2, eta2) #coo1 = np.array([r,phi]).T #coo2 = np.array([r2,phi2]).T #get_corr_map(coo2, coo1, skypos, skyrange, sec, 0.05, 0.0015) centroids.append(cent_now) print cent_now print centroids #np.save('../data/%s/cata/centroids_rot%d.npy'%(scan_name, initial_sec), centroids) hdu = pyfits.PrimaryHDU(count) hdu = imagetools.fits_header('NUV', skypos_count, tranges_count, skyrange_count, hdu=hdu, wcs=wcs_count) hdulist = pyfits.HDUList([hdu]) hdulist.writeto('../fits/count_map_%s_gal_sec_rot_count.fits'%(scan_name), clobber=False)
photon_list = photon_list[qmask] star_list = np.load('/scratch/dw1519/galex/data/star_photon/back/' + scan + '_bstar.npy') print star_list.shape stars, ct = np.unique(photon_list[:, 0], return_counts=True) print stars.shape star_mask = (ct > 10) print np.sum(star_mask) stars = stars[star_mask] for star in stars: star_mask = (photon_list[:, 0] == star) p = photon_list[star_mask] ix = np.digitize(p[:, 1] / 1000., asp[:, 0]) - 1 xi, eta = gn.gnomfwd_simple(c_radec[star].ra.deg, c_radec[star].dec.deg, asp[ix, 1], asp[ix, 2], -asp[ix, 3], 1 / 36000., 0.) pos = np.array([xi, eta]).T pos = ((pos / 36000.) / (1.25 / 2.) * (1.25 / (800 * 0.001666)) + 1.) / 2. * size Hc, xedge, yedge = np.histogram2d(pos[:, 0], pos[:, 1], bins=[size, size], range=([[0, size], [0, size]])) xi, eta = gn.gnomfwd_simple(c_radec[star].ra.deg, c_radec[star].dec.deg, asp[:, 1], asp[:, 2], -asp[:, 3], 1 / 36000., 0.) pos = np.array([xi, eta]).T pos = ((pos / 36000.) / (1.25 / 2.) *
def main_res(): name = 'AIS_GAL_SCAN_00032_0001' asp = np.load('../data/photon_list/AIS_GAL_SCAN_00032_0001_asp_cal.npy') asp_uni, uni_index=np.unique(asp[:,0], True) asp_uni = asp[uni_index] ix_tmp = (np.round(asp_uni[:,0]-asp_uni[0,0])+1).astype(int) dead_tmp = np.zeros(ix_tmp.shape[0]) scst_tmp = pyfits.open('../AIS_GAL_SCAN/scst/%s-scst.fits'%name)[1].data limit = scst_tmp['t_dead_nuv'].shape[0]-1 ix_tmp[ix_tmp>limit] = limit dead_tmp = scst_tmp['t_dead_nuv'][ix_tmp] cata = spi.load_obj('../data/%s_starset_extra_full'%name) cata_a = np.array(list(cata)) cata_len = len(cata) cata_list = np.insert(cata_a, 0, np.arange(cata_len), axis=1) star_list = load_obj("../data/%s/star/extra/list_new/star_detector"%name) star_list = sorted(star_list, key=getKey) #print star_list plot_list = [] stars = [] istar = star_list[0] stars.append(istar[0]) for i in range(1,len(star_list)): if star_list[i][2] - istar[2]<=100: stars.append(star_list[i][0]) else: plot_list.append(stars) istar = star_list[i] stars = [] stars.append(istar[0]) group_num = 0 flux_stat = [] for plot in plot_list: #f, axes = plt.subplots(len(plot), 1, squeeze=False) print('group_num:%d'%group_num) plot_num = 0 xlim = [0,60] if len(plot) == 1: group_num += 1 continue flux_list = [] for i in plot: #for i in range(397): star_count = [] time_list = [] bkg_time_list = [] bkg_count = [] star_num = '%d'%i csv_file = "../data/%s/star/extra/list_new/star_%s-0.csv"%(name, star_num) bkg_csv_file = "../data/%s/star/extra/bkg/star_bkg_%s-0.csv"%(name, star_num) star_co = cata_a[i, 0:2] star_data = np.genfromtxt(csv_file, delimiter=',') bkg_data = np.genfromtxt(bkg_csv_file, delimiter=',') star_count, edges = np.histogram(star_data[:,0]-star_data[0,0], bins=np.arange(62)*1000) bkg_count, edges = np.histogram(bkg_data[:,0]-star_data[0,0], bins=np.arange(62)*1000) index_0 = (star_data[0,0]-asp_uni[0,0]*1000)/5 index_1 = (star_data[-1,0]-asp_uni[0,0]*1000)/5 #print i, cata_list[i, 0] #print star_co #print np.median(star_data[:,-3:-1], axis=0) if index_1-index_0>12400: continue star_track = asp_uni[index_0:index_1+1,:] dead_t = dead_tmp[index_0:index_1+1] ra = np.ones(star_track.shape[0])*star_co[0] dec = np.ones(star_track.shape[0])*star_co[1] xi, eta = gn.gnomfwd_simple(ra, dec, star_track[:,1], star_track[:,2], -star_track[:,3], 1/36000., 0.0) res_list = res_star.get_res_new(xi, eta, '../fits/flat/NUV_flat.fits') if res_list == None: continue res_list_d = res_list*(1-dead_t) res_flux = running_sum(res_list_d, 200, 61) res_len = cut_tail(res_flux) star_flux = np.array(star_count) - np.array(bkg_count)*64./40. star_flux[star_flux<0] = 0 star_len = cut_tail(star_flux) delta = star_len-res_len if delta>0 and delta<3: star_flux = star_flux[:star_len] res_flux = res_flux[:star_len] elif delta >= 3 or delta<=-3: continue else: star_flux = star_flux[:res_len] res_flux = res_flux[:res_len] if np.mean(star_flux)<5: continue res_flux = res_flux/np.mean(res_flux) star_flux = star_flux/np.mean(star_flux) time_array = np.arange(res_flux.shape[0]) var, likeli = likelihood(star_flux, res_flux) mag = cata_list[i, 5] flux_stat.append((mag, likeli, var, star_flux, res_flux)) print '%.3f %.3f %.3f'%(mag, var, likeli) ''' plt.plot(time_array, star_flux) plt.xlabel('t/s') plt.ylabel('Number of Photons') plt.savefig('../plots/%s/star/star_flux/%s-0.png'%(name, star_num), dpi=190) plt.clf() ''' flux_list.append((time_array, star_flux, i, cata_list[i, 5], res_flux)) if len(flux_list)>1: flux_list = sorted(flux_list, key=getMag) f, axes = plt.subplots(len(flux_list), 1, squeeze=False) for plot_num in range(len(flux_list)): star_flux = flux_list[plot_num][1] time_array = flux_list[plot_num][0] res_flux = flux_list[plot_num][-1] axes[plot_num,0].plot(time_array, star_flux, '-o') axes[plot_num,0].plot(time_array, res_flux, '-o') axes[plot_num,0].text(0.95, 0.8, 'NUV: %.3f'%flux_list[plot_num][3], verticalalignment='bottom', horizontalalignment='right', transform=axes[plot_num,0].transAxes, color='green', fontsize=10) #axes[plot_num,0].set_ylabel('Num of Photons') ylim = axes[plot_num,0].get_ylim() if plot_num == 0: xlim = axes[plot_num,0].get_xlim() axes[plot_num,0].set_xlim([0, 61]) axes[plot_num,0].set_ylim([ylim[0]+np.absolute(ylim[1]-ylim[0])*0.01, ylim[1]]) if plot_num<len(flux_list)-1: plt.setp( axes[plot_num,0].get_xticklabels(), visible=False) else: axes[plot_num,0].set_xlabel('time/s') plt.setp( axes[plot_num,0].get_yticklabels(), visible=False) plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0, hspace=0) plt.legend() plt.savefig('../plots/%s/star/extra/cons_res_flat/cons%d_track.png'%(name, group_num),dpi=190) plt.clf() group_num += 1 save_obj(flux_stat, '../plots/%s/star/extra/cons_res_flat/flux_stat'%(name))
def res_star_new(pid, scan_name, start, end, return_dict): cata = spi.load_obj('../data/%s_starset_new' % scan_name) cata_a = np.array(list(cata)) cata_len = len(cata) cata_list = np.insert(cata_a, 0, np.arange(cata_len), axis=1) asp = np.load('../data/photon_list/AIS_GAL_SCAN_00014_0001_asp_cal.npy') asp_uni, uni_index = np.unique(asp[:, 0], True) asp_uni = asp[uni_index] ix_tmp = (np.round(asp_uni[:, 0] - asp_uni[0, 0]) + 1).astype(int) dead_tmp = np.zeros(ix_tmp.shape[0]) scst_tmp = pyfits.open('../AIS_GAL_SCAN/scst/%s-scst.fits' % scan_name)[1].data limit = scst_tmp['t_dead_nuv'].shape[0] - 1 ix_tmp[ix_tmp > limit] = limit dead_tmp = scst_tmp['t_dead_nuv'][ix_tmp] for star_num in range(start, end + 1): star_co = cata_a[star_num, 0:2] order = 1 star = 'star_%d-%d' % (star_num, order) if not os.path.exists('../data/%s/star/list/%s.csv' % (scan_name, star)): print 'skip:%s' % star continue csv_file = '../data/%s/star/list/%s.csv' % (scan_name, star) count = [] time_list = [] with open(csv_file, 'rb') as file: reader = csv.reader(file) first = float(reader.next()[0]) final = 0 last = 0 reader = csv.reader(file) for row in reader: time = float(row[0]) #time = int(float(row[0])/1000.) if time - last > 200: count.append(1) last = time time_list.append(last) else: count[-1] += 1 final = time time_list = np.array(time_list) / 1000. index_0 = (first - asp_uni[0, 0] * 1000) / 5 index_1 = (final - asp_uni[0, 0] * 1000) / 5 star_track = asp_uni[index_0:index_1 + 1, :] dead_t = dead_tmp[index_0:index_1 + 1] ra = np.ones(star_track.shape[0]) * star_co[0] dec = np.ones(star_track.shape[0]) * star_co[1] xi, eta = gn.gnomfwd_simple(ra, dec, star_track[:, 1], star_track[:, 2], -star_track[:, 3], 1 / 36000., 0.0) output = "../plots/%s/star/res/%s.csv" % (scan_name, scan_name) dir = os.path.dirname(output) if not os.path.exists(dir): os.makedirs(dir) print dead_t res_list = get_res_new(xi, eta) res_list_d = res_list * (1 - dead_t) ''' plt.plot(star_track[:,0], res_list_d) plt.xlabel('t/s') plt.ylabel('response') plt.savefig('../plots/%s/star/res/res%d-%d_track_d.png'%(scan_name, star_num, order), dpi=190) plt.clf() plt.plot(star_track[:,0], res_list) plt.xlabel('t/s') plt.ylabel('response') plt.savefig('../plots/%s/star/res/res%d-%d_track.png'%(scan_name, star_num, order), dpi=190) plt.clf() ''' f, axes = plt.subplots(2, 1) axes[0].plot(time_list, count) axes[0].set_ylabel('Num of Photons') ylim = axes[0].get_ylim() axes[0].set_ylim(ylim + np.absolute(ylim) * 0.01) plt.setp(axes[0].get_xticklabels(), visible=False) #plt.setp( axes[0].get_yticklabels(), visible=False) axes[1].plot(star_track[:, 0], res_list_d) axes[1].set_ylabel('Response') axes[1].set_xlabel('time/s') plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0, hspace=0) plt.savefig('../plots/%s/star/res/2p/res%d-%d_track.png' % (scan_name, star_num, order), dpi=190) plt.clf()
def run_model_chunk(pid, scan_name, chunk, cata_target, cata_lists, size_list, cata_target_len, dead_tmp, asp_uni, return_dict): count_list = [] exp_list = [] chunk_num = 0 for trange in chunk: output = '../fits/%s/extra/new_black/exposure_chunk%d.fits' % ( scan_name, chunk_num) if os.path.exists(output): print 'exists %d' % (chunk_num) chunk_num += 1 continue t_mask = np.zeros(asp_uni.shape[0]) begin = np.where((asp_uni[:, 0] * 1000).astype(int) - trange[0] == 0)[0] end = np.where((asp_uni[:, 0] * 1000).astype(int) - trange[1] == 0)[0] t_mask[begin:end + 1] = 1 t_asp = asp_uni[t_mask > 0] t_dead = dead_tmp[t_mask > 0] t_length = end + 1 - begin print('time length:%d, %f, %f' % (t_length, trange[0], trange[1])) count = np.zeros([t_length, 800, 800]) exp_count = np.zeros([t_length, 800, 800]) for star_num in range(cata_target_len): #print star_num star_co = cata_target[star_num, 0:2] star_flux = cata_target[star_num, 3] #print star_flux ra = np.ones(t_asp.shape[0]) * star_co[0] dec = np.ones(t_asp.shape[0]) * star_co[1] xi, eta = gn.gnomfwd_simple(ra, dec, t_asp[:, 1], t_asp[:, 2], -t_asp[:, 3], 1 / 36000., 0.0) coo = np.array([xi, eta]).T coo = ((coo / 36000.) / (1.25 / 2.) * (1.25 / (800 * 0.001666)) + 1.) / 2. * 800 for i in [-1, 0, 1]: for j in [-1, 0, 1]: coo_tmp = np.zeros([t_length, 3]) coo_tmp[:, 0] = np.arange(t_length) coo_tmp[:, 1] = coo[:, 0] + i coo_tmp[:, 2] = coo[:, 1] + j mask_0 = np.logical_and(coo_tmp[:, 1] >= 0, coo_tmp[:, 1] < 800) mask_1 = np.logical_and(coo_tmp[:, 2] >= 0, coo_tmp[:, 2] < 800) mask = np.logical_and(mask_0, mask_1) total = 1 + 4 * 0.0625 + 4 * 0.00390625 coo_tmp = coo_tmp[mask] t_dead_tmp = t_dead[mask] coo_tmp = np.array(coo_tmp, dtype=int) factor = 1. if (i, j) in set([(-1, 0), (1, 0), (0, -1), (0, 1)]): factor = 0.0625 elif (i, j) in set([(-1, -1), (1, -1), (1, 1), (-1, 1)]): factor = 0.00390625 else: factor = 1. #count[coo_tmp[:,0], coo_tmp[:,1]] += 0.005*factor*star_flux/total count[coo_tmp[:, 0], coo_tmp[:, 1], coo_tmp[:, 2]] += factor * star_flux / total for mask_num in range(3): mask_cata = cata_lists[mask_num] size = size_list[mask_num] radius = size[-1] + 0.5 for star_num in range(mask_cata.shape[0]): #print star_num star_co = mask_cata[star_num, 0:2] #print star_flux ra = np.ones(t_asp.shape[0]) * star_co[0] dec = np.ones(t_asp.shape[0]) * star_co[1] xi, eta = gn.gnomfwd_simple(ra, dec, t_asp[:, 1], t_asp[:, 2], -t_asp[:, 3], 1 / 36000., 0.0) coo = np.array([xi, eta]).T coo = ((coo / 36000.) / (1.25 / 2.) * (1.25 / (800 * 0.001666)) + 1.) / 2. * 800 for i in size: for j in size: if i**2 + j**2 > radius**2: continue coo_tmp = np.zeros([t_length, 3]) coo_tmp[:, 0] = np.arange(t_length) coo_tmp[:, 1] = coo[:, 0] + i coo_tmp[:, 2] = coo[:, 1] + j mask_0 = np.logical_and(coo_tmp[:, 1] >= 0, coo_tmp[:, 1] < 800) mask_1 = np.logical_and(coo_tmp[:, 2] >= 0, coo_tmp[:, 2] < 800) mask = np.logical_and(mask_0, mask_1) coo_tmp = coo_tmp[mask] coo_tmp = np.array(coo_tmp, dtype=int) exp_count[coo_tmp[:, 0], coo_tmp[:, 1], coo_tmp[:, 2]] -= 1 for t_step in range(t_length): exp_count[t_step][ exp_count[t_step] >= 0] = 0.005 * (1 - t_dead[t_step]) exp_count[exp_count < 0] = 0. count *= exp_count exp_count_sum = np.sum(exp_count, axis=0) count_sum = np.sum(count, axis=0) exp_list.append(exp_count_sum) count_list.append(count_sum) exp_count = count = None gc.collect() chunk_num += 1 return_dict[pid] = (count_list, exp_list)
def main_res(): name = 'AIS_GAL_SCAN_00032_0001' asp = np.load('../data/photon_list/AIS_GAL_SCAN_00032_0001_asp_cal.npy') asp_uni, uni_index = np.unique(asp[:, 0], True) asp_uni = asp[uni_index] ix_tmp = (np.round(asp_uni[:, 0] - asp_uni[0, 0]) + 1).astype(int) dead_tmp = np.zeros(ix_tmp.shape[0]) scst_tmp = pyfits.open('../AIS_GAL_SCAN/scst/%s-scst.fits' % name)[1].data limit = scst_tmp['t_dead_nuv'].shape[0] - 1 ix_tmp[ix_tmp > limit] = limit dead_tmp = scst_tmp['t_dead_nuv'][ix_tmp] cata = spi.load_obj('../data/%s_starset_extra_full' % name) cata_a = np.array(list(cata)) cata_len = len(cata) cata_list = np.insert(cata_a, 0, np.arange(cata_len), axis=1) star_list = load_obj("../data/%s/star/extra/list_new/star_detector" % name) star_list = sorted(star_list, key=getKey) #print star_list plot_list = [] stars = [] istar = star_list[0] stars.append(istar[0]) for i in range(1, len(star_list)): if star_list[i][2] - istar[2] <= 100: stars.append(star_list[i][0]) else: plot_list.append(stars) istar = star_list[i] stars = [] stars.append(istar[0]) group_num = 0 flux_stat = [] for plot in plot_list: #f, axes = plt.subplots(len(plot), 1, squeeze=False) print('group_num:%d' % group_num) plot_num = 0 xlim = [0, 60] if len(plot) == 1: group_num += 1 continue flux_list = [] for i in plot: #for i in range(397): star_count = [] time_list = [] bkg_time_list = [] bkg_count = [] star_num = '%d' % i csv_file = "../data/%s/star/extra/list_new/star_%s-0.csv" % ( name, star_num) bkg_csv_file = "../data/%s/star/extra/bkg/star_bkg_%s-0.csv" % ( name, star_num) star_co = cata_a[i, 0:2] star_data = np.genfromtxt(csv_file, delimiter=',') bkg_data = np.genfromtxt(bkg_csv_file, delimiter=',') star_count, edges = np.histogram(star_data[:, 0] - star_data[0, 0], bins=np.arange(62) * 1000) bkg_count, edges = np.histogram(bkg_data[:, 0] - star_data[0, 0], bins=np.arange(62) * 1000) index_0 = (star_data[0, 0] - asp_uni[0, 0] * 1000) / 5 index_1 = (star_data[-1, 0] - asp_uni[0, 0] * 1000) / 5 #print i, cata_list[i, 0] #print star_co #print np.median(star_data[:,-3:-1], axis=0) if index_1 - index_0 > 12400: continue star_track = asp_uni[index_0:index_1 + 1, :] dead_t = dead_tmp[index_0:index_1 + 1] ra = np.ones(star_track.shape[0]) * star_co[0] dec = np.ones(star_track.shape[0]) * star_co[1] xi, eta = gn.gnomfwd_simple(ra, dec, star_track[:, 1], star_track[:, 2], -star_track[:, 3], 1 / 36000., 0.0) res_list = res_star.get_res_new(xi, eta, '../fits/flat/NUV_flat.fits') if res_list == None: continue res_list_d = res_list * (1 - dead_t) res_flux = running_sum(res_list_d, 200, 61) res_len = cut_tail(res_flux) star_flux = np.array(star_count) - np.array(bkg_count) * 64. / 40. star_flux[star_flux < 0] = 0 star_len = cut_tail(star_flux) delta = star_len - res_len if delta > 0 and delta < 3: star_flux = star_flux[:star_len] res_flux = res_flux[:star_len] elif delta >= 3 or delta <= -3: continue else: star_flux = star_flux[:res_len] res_flux = res_flux[:res_len] if np.mean(star_flux) < 5: continue res_flux = res_flux / np.mean(res_flux) star_flux = star_flux / np.mean(star_flux) time_array = np.arange(res_flux.shape[0]) var, likeli = likelihood(star_flux, res_flux) mag = cata_list[i, 5] flux_stat.append((mag, likeli, var, star_flux, res_flux)) print '%.3f %.3f %.3f' % (mag, var, likeli) ''' plt.plot(time_array, star_flux) plt.xlabel('t/s') plt.ylabel('Number of Photons') plt.savefig('../plots/%s/star/star_flux/%s-0.png'%(name, star_num), dpi=190) plt.clf() ''' flux_list.append( (time_array, star_flux, i, cata_list[i, 5], res_flux)) if len(flux_list) > 1: flux_list = sorted(flux_list, key=getMag) f, axes = plt.subplots(len(flux_list), 1, squeeze=False) for plot_num in range(len(flux_list)): star_flux = flux_list[plot_num][1] time_array = flux_list[plot_num][0] res_flux = flux_list[plot_num][-1] axes[plot_num, 0].plot(time_array, star_flux, '-o') axes[plot_num, 0].plot(time_array, res_flux, '-o') axes[plot_num, 0].text(0.95, 0.8, 'NUV: %.3f' % flux_list[plot_num][3], verticalalignment='bottom', horizontalalignment='right', transform=axes[plot_num, 0].transAxes, color='green', fontsize=10) #axes[plot_num,0].set_ylabel('Num of Photons') ylim = axes[plot_num, 0].get_ylim() if plot_num == 0: xlim = axes[plot_num, 0].get_xlim() axes[plot_num, 0].set_xlim([0, 61]) axes[plot_num, 0].set_ylim( [ylim[0] + np.absolute(ylim[1] - ylim[0]) * 0.01, ylim[1]]) if plot_num < len(flux_list) - 1: plt.setp(axes[plot_num, 0].get_xticklabels(), visible=False) else: axes[plot_num, 0].set_xlabel('time/s') plt.setp(axes[plot_num, 0].get_yticklabels(), visible=False) plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0, hspace=0) plt.legend() plt.savefig( '../plots/%s/star/extra/cons_res_flat/cons%d_track.png' % (name, group_num), dpi=190) plt.clf() group_num += 1 save_obj(flux_stat, '../plots/%s/star/extra/cons_res_flat/flux_stat' % (name))
limit = scst_tmp['t_dead_nuv'].shape[0] - 1 ix_tmp[ix_tmp > limit] = limit dead_tmp = scst_tmp['t_dead_nuv'][ix_tmp] count = np.zeros([800, 800]) #for star_num in xrange(1,10): for star_num in range(cata_len): print star_num star_co = cata_a[star_num, 0:2] star_flux = cata_a[star_num, 3] print star_flux ra = np.ones(asp_uni.shape[0]) * star_co[0] dec = np.ones(asp_uni.shape[0]) * star_co[1] xi, eta = gn.gnomfwd_simple(ra, dec, asp_uni[:, 1], asp_uni[:, 2], -asp_uni[:, 3], 1 / 36000., 0.0) coo = np.array([xi, eta]).T #print coo.shape #print coo coo = ((coo / 36000.) / (1.25 / 2.) * (1.25 / (800 * 0.001666)) + 1.) / 2. * 800 ''' mask_0 = np.logical_and(coo[:,0]>=0, coo[:,0]<800) mask_1 = np.logical_and(coo[:,1]>=0, coo[:,1]<800) mask = np.logical_and(mask_0, mask_1) coo = coo[mask] dead_t = dead_tmp[mask]
def get_corr_map(coo1, coo2, skypos, skyrange, sec, pixsz, idx, suffix, info_list, d3, outdir): imsz = imagetools.deg2pix(skypos, skyrange, pixsz).astype(int) count = np.zeros(imsz) #print(imsz) bound = skyrange[0] co_rel = np.array([[0,0]]) infos = np.array([[0,0,0]]) rot = np.array([0]) len1 = coo1.shape[0] len2 = coo2.shape[0] print(len1,len2) wcs = imagetools.define_wcs(skypos,skyrange,width=False,height=False,verbose=0,pixsz=pixsz) #with open('../data/try2_%d.csv'%sec, 'wb') as csvfile: #writer = csv.writer(csvfile) if len2>len1: for i in range(len1): #print(i) tmp_co = coo2-coo1[i,:] mask = (np.absolute(tmp_co[:,0])<=bound) & (np.absolute(tmp_co[:,1])<=bound) tmp_co = tmp_co[np.absolute(tmp_co[:,0])<=bound,:] tmp_co = tmp_co[np.absolute(tmp_co[:,1])<=bound,:] co_rel = np.concatenate((co_rel, tmp_co), axis = 0) infos = np.concatenate((infos,info_list[mask]), axis=0) rot = np.concatenate((rot, d3[mask]), axis=0) else: for i in range(len2): #print(i) tmp_co = coo2[i,:]-coo1 tmp_co = tmp_co[np.absolute(tmp_co[:,0])<=bound,:] tmp_co = tmp_co[np.absolute(tmp_co[:,1])<=bound,:] co_rel = np.concatenate((co_rel, tmp_co), axis = 0) infos = np.concatenate((infos,np.repeat(info_list[i], tmp_co.shape[0])), axis=0) rot = np.concatenate((rot, np.repeat(d3[i], tmp_co.shape[0])), axis=0) foc = wcs.sip_pix2foc(wcs.wcs_world2pix(co_rel[1:],1),1) H,xedges,yedges=np.histogram2d(foc[:,1]-0.5, foc[:,0]-0.5,\ bins=imsz, range=([ [0,imsz[0]],[0,imsz[1]] ])) t = np.percentile(H, 90) t = 500 print 'threshold:{0}'.format(t) hp = H.copy() #plt.colorbar() #plt.plot(co_rel[:,0],co_rel[:,1], 'o', alpha=0.05) #plt.xlim(-0.005,0.005) #plt.ylim(-0.005,0.005) data = H.byteswap(True).newbyteorder() data = data.copy(order='C') data = data.byteswap(True).newbyteorder() c_data = c3.find_centroid(data, t) if c_data is not None: cy, cx, max_value, flux = c_data cy+=0.5 cx+=0.5 centroid = wcs.wcs_pix2world(wcs.sip_foc2pix([[cx, cy]],1),1)[0] else: centroid = [0.,0.] max_value = 0 flux = 500 if centroid[0]>1: centroid[0] = centroid[0]-360. #print 'max:{0}'.format(max_value) print hp.shape #plt.imshow(np.log2(hp+10**-10),interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal', extent=[0.02*3600, -0.02*3600, 0.02*3600, -0.02*3600], origin='upper', vmin=0) ''' plt.imshow(hp+10**-10,interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal', extent=[0.02*3600, -0.02*3600, 0.02*3600, -0.02*3600], origin='upper', norm=LogNorm(10**0,np.max(hp))) plt.colorbar() plt.xlim(-0.01*3600, 0.01*3600) plt.ylim(-0.01*3600, 0.01*3600) plt.ylabel('gb') plt.xlabel('gl') plt.axhline(y=0, color='b', linestyle='dashed', linewidth=1) plt.axvline(x=0, color='b', linestyle='dashed', linewidth=1) plt.plot(centroid[0]*3600,centroid[1]*3600,'+r', markersize=8) #plt.show() rot = np.mean(d3)/180.*np.pi l = np.linspace(0, 8., 5) x_y = np.sin(-rot)*l x_x = np.cos(-rot)*l y_y = np.sin(-rot+np.pi/2.)*l y_x = np.cos(-rot+np.pi/2.)*l plt.plot(x_x, x_y, '--g') plt.plot(y_x, y_y, '--g') co_rel = co_rel*3600 mask = (co_rel[1:,0]**2+co_rel[1:,1]**2) <= (2.5**2) num = np.sum(mask) plt.title('t={0}-{1}s, photons within d=5\" circle:{2}'.format(idx/2-50, idx/2, num)) plt.savefig('{0}/{1}.pdf'.format(outdir,idx)) plt.clf() np.save('{0}/{1}.npy'.format(outdir,idx), co_rel) ''' #co_rel = co_rel*3600 xi, eta = gn.gnomfwd_simple(co_rel[1:,0], co_rel[1:,1], 0, 0, -rot[1:], 1/36000., 0) #co_radec = np.array([xi,eta]).T path = os.path.dirname('{0}/radec/test'.format(outdir)) if not os.path.exists(path): os.makedirs(path) np.save('{0}/{1}.npy'.format(outdir, idx), co_rel*3600) #np.save('{0}/radec/{1}.npy'.format(outdir, idx), co_radec) #np.save('{0}/info_{1}.npy'.format(outdir, idx), infos) ''' plt.scatter(co_rel[1:,0], co_rel[1:,1], c=infos[1:,0], s=.5, alpha=0.3, cmap=plt.get_cmap('jet'), marker='o',edgecolors='face') cb1 = plt.colorbar() cb1.set_label('xa') plt.xlim(-0.02*3600, 0.02*3600) plt.ylim(-0.02*3600, 0.02*3600) plt.savefig('{0}/xa_{1}.png'.format(outdir, idx)) plt.clf() plt.scatter(co_rel[1:,0], co_rel[1:,1], c=infos[1:,1], s=.5, alpha=0.3, cmap=plt.get_cmap('jet'), marker='o',edgecolors='face') cb1 = plt.colorbar() cb1.set_label('ya') plt.xlim(-0.02*3600, 0.02*3600) plt.ylim(-0.02*3600, 0.02*3600) plt.savefig('{0}/ya_{1}.png'.format(outdir, idx)) plt.clf() plt.scatter(co_rel[1:,0], co_rel[1:,1], c=infos[1:,2], s=.5, alpha=0.3, cmap=plt.get_cmap('jet'), marker='o',edgecolors='face') cb1 = plt.colorbar() cb1.set_label('q') plt.xlim(-0.02*3600, 0.02*3600) plt.ylim(-0.02*3600, 0.02*3600) plt.savefig('{0}/q_{1}.png'.format(outdir, idx), dpi=190) plt.clf() ''' ''' n, bins, patches = plt.hist(infos[1:,1], 30, normed=1, facecolor='green', alpha=0.5) plt.savefig('/home/dw1519/dw1519/galex/plots/co239_s/yahist_{0}.pdf'.format(idx), dpi=190) plt.clf() mask = (co_rel[:,0]<-25) & (co_rel[:,0]>-45) & (co_rel[:,1]>42) & (co_rel[:,1]<66) n, bins, patches = plt.hist(infos[mask,1], 30, normed=1, facecolor='green', alpha=0.5) plt.savefig('/home/dw1519/dw1519/galex/plots/co239_s/yahist_gh_{0}.pdf'.format(idx), dpi=190) plt.clf() ''' return centroid, max_value, flux
def correct(name): #name = sys.argv[1] print name scan = '{0:04d}'.format(int(re.split('_', name)[3])) #'3191' print scan #name = 'AIS_GAL_SCAN_0'+scan+'_0002' out = '/scratch/dw1519/galex/data/'+name date = '08-21-2017_1' cfile = '/scratch/dw1519/galex/fits/scan_map/catalog/'+date+'/starcat_'+scan+'mapweight_fec_fwhm.txt' asprta = '/scratch/dw1519/galex/AIS_GAL_SCAN/asprta/'+name+'-cal-sec-dis-cut-asprta.fits' scst = '/scratch/dw1519/galex/AIS_GAL_SCAN/scst/'+name+'-scst.fits' num = int(scan) if num>=5 and num<=185: dis_l = '/scratch/dw1519/galex/data/distortion/5-185-xa_low-centroids.npy' dis_h = '/scratch/dw1519/galex/data/distortion/5-185-xa_high-centroids.npy' elif num>=194 and num<=437: dis_l = '/scratch/dw1519/galex/data/distortion/194-437-xa_low-centroids.npy' dis_h = '/scratch/dw1519/galex/data/distortion/194-437-xa_high-centroids.npy' elif num>=446 and num<=887: dis_l = '/scratch/dw1519/galex/data/distortion/446-887-xa_low-centroids.npy' dis_h = '/scratch/dw1519/galex/data/distortion/446-887-xa_high-centroids.npy' #elif num>=896 and num<=1157: # dis_l = '/scratch/dw1519/galex/data/distortion/896-1157-xa_low-centroids.npy' # dis_h = '/scratch/dw1519/galex/data/distortion/896-1157-xa_high-centroids.npy' elif num>=1166 and num<=1373: dis_l = '/scratch/dw1519/galex/data/distortion/1166-1373-xa_low-centroids.npy' dis_h = '/scratch/dw1519/galex/data/distortion/1166-1373-xa_high-centroids.npy' else: dis_l = '/scratch/dw1519/galex/data/distortion/194-437-xa_low-centroids.npy' dis_h = '/scratch/dw1519/galex/data/distortion/194-437-xa_high-centroids.npy' print dis_l print dis_h data = np.load('/scratch/dw1519/galex/data/photons/'+name+'.npy') print('data:{0}'.format(data.shape)) tycho2 = pyfits.open('/scratch/dw1519/galex/data/tycho2.fits')[1].data df = ld.load_catalog(cfile) c = SkyCoord(df['gl']*u.degree, df['gb']*u.degree, frame='galactic') catalog = SkyCoord(tycho2['Glon']*u.degree, tycho2['Glat']*u.degree, frame='galactic') idx, d2d, d3d = c.match_to_catalog_sky(catalog) mask=d2d<0.001*u.degree ''' dtype = np.dtype([('tycho_num', int), ('Glon', '>f4'), ('Glat', '>f4'), ('RAJ2000', '>f4'), ('DEJ2000', '>f4'), ('flux', float), ('nuv', float), ('gl', float), ('gb', float)]) matched_tycho = tycho2[idx[mask]] matched_df = df[mask] matched_catalog = np.core.records.fromarrays(np.array([idx[mask], matched_tycho['Glon'], matched_tycho['Glat'], matched_tycho['RAJ2000'], matched_tycho['DEJ2000'], np.array(matched_df['FLUX_AUTO']), np.array(matched_df['nuv']), np.array(matched_df['gl']), np.array(matched_df['gb'])]), dtype=dtype) ''' resolution = 0.5 hdulist = pyfits.open(asprta) co_data = hdulist[1].data n=resolution/0.005 #100 T = co_data['T'] ra = co_data['ra'] dec = co_data['dec'] roll = co_data['roll'] t_new = np.arange((T.shape[0]-1)*n)*0.005+T[0] spl_ra = splrep(T, ra) spl_dec = splrep(T, dec) spl_roll = splrep(T, roll) ra_new = splev(t_new, spl_ra) dec_new = splev(t_new, spl_dec) roll_new = splev(t_new, spl_roll) asp = np.array([t_new, ra_new, dec_new, roll_new]).T #np.save('../data/photon_list/%s_asp_fix.npy'%name, asp_cal) hdulist.close() #asp = np.load('../data/photon_list/{0}{1}-correct_asp_new.npy'.format(name, suffix)) scst_file = pyfits.open(scst) scst_data = scst_file[1].data scst_time = scst_data['pktime'].copy() hv = scst_data['hvnom_nuv'].copy() scst_file.close() dis_map = ld.load_dis(dis_l, dis_h) scst_ix = np.digitize(data[:,0]/1000., scst_time) ix_mask = scst_ix<scst_time.shape[0] scst_ix = scst_ix[ix_mask] data = data[ix_mask] data = data[hv[scst_ix]>0] dx_list = [] dy_list = [] ya_list = [] q_list = [] n = 50 step = int(data.shape[0]/n) print step for i in range(n-1): print i data_tmp = ld.dis_correct(data[i*step:(i+1)*step], dis_map, asp, None, None) sky_data = SkyCoord(data_tmp[:,0:2], unit='deg', frame='fk5', equinox='J2000.0') print 'sky_data: {0}'.format(sky_data.shape) idxc, idxcatalog, d2d_p, d3d_p = sky_data.search_around_sky(catalog[idx[mask]], 0.0045*u.deg) print 'idxc: {0}'.format(idxc.shape) xi, eta = gn.gnomfwd_simple(tycho2['RAJ2000'][idx[mask][idxc]], tycho2['DEJ2000'][idx[mask][idxc]], data_tmp[idxcatalog,-3], data_tmp[idxcatalog,-2], -data_tmp[idxcatalog,-1], 1/36000., 0) dx = (data_tmp[idxcatalog,6]-xi)/36000./800/0.001666*2400 dy = (data_tmp[idxcatalog,7]-eta)/36000./800/0.001666*2400 ya = data_tmp[idxcatalog,4] q = data_tmp[idxcatalog,5] dx_list.append(dx) dy_list.append(dy) ya_list.append(ya) q_list.append(q) data_tmp=sky_data=xi=eta=None gc.collect() print n-1 data_tmp = ld.dis_correct(data[(n-1)*step:], dis_map, asp, None, None) sky_data = SkyCoord(data_tmp[:,0:2], unit='deg', frame='fk5', equinox='J2000.0') print 'sky_data: {0}'.format(sky_data.shape) idxc, idxcatalog, d2d_p, d3d_p = sky_data.search_around_sky(catalog[idx[mask]], 0.0045*u.deg) print 'idxc: {0}'.format(idxc.shape) xi, eta = gn.gnomfwd_simple(tycho2['RAJ2000'][idx[mask][idxc]], tycho2['DEJ2000'][idx[mask][idxc]], data_tmp[idxcatalog,-3], data_tmp[idxcatalog,-2], -data_tmp[idxcatalog,-1], 1/36000., 0) dx = (data_tmp[idxcatalog,6]-xi)/36000./800/0.001666*2400 dy = (data_tmp[idxcatalog,7]-eta)/36000./800/0.001666*2400 ya = data_tmp[idxcatalog,4] q = data_tmp[idxcatalog,5] dx_list.append(dx) dy_list.append(dy) ya_list.append(ya) q_list.append(q) data_tmp=sky_data=xi=eta=None gc.collect() dx = np.concatenate(dx_list, axis=0) dy = np.concatenate(dy_list, axis=0) ya = np.concatenate(ya_list, axis=0) q = np.concatenate(q_list, axis=0) data=scst_ix=ix_mask=None gc.collect() print dx.shape print 'max dy: {0}'.format(np.max(dy)) print 'max dx: {0}'.format(np.max(dx)) mask = (dy>=-8) & (dy<=8) & (q<24) imsz = [24, 64] H,xedges,yedges=np.histogram2d(q[mask], dy[mask],\ bins=imsz) plt.imshow(H,interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal',\ extent=[-8, 8, 0, 24], origin='lower', norm=LogNorm()) dy_q = [] for i in range(24): q_mask = (q[mask] == i) dy_c = np.median(dy[mask][q_mask]) dy_q.append(dy_c) plt.plot(dy_q, np.arange(24), '.r') print('dy_q:') print dy_q plt.xlim(-8,8) plt.ylim(0,24) plt.title('scan{0:>5}'.format(scan)) plt.xlabel(r'$\Delta y$ [pixel]') plt.ylabel('q') plt.savefig(out+'/q-y_tot.pdf', dpi=190) plt.clf() plt.plot(np.arange(24), dy_q, '.r') plt.savefig(out+'/q-y_c.pdf', dpi=190) plt.clf() mask = (dx>=-8) & (dx<=8) & (q<24) imsz = [24, 64] H,xedges,yedges=np.histogram2d(q[mask], dx[mask],\ bins=imsz) plt.imshow(H,interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal',\ extent=[-8, 8, 0, 24], origin='lower', norm=LogNorm()) dx_q = [] for i in range(24): q_mask = (q[mask] == i) dx_c = np.median(dx[mask][q_mask]) dx_q.append(dx_c) print('dx_q:') print dx_q plt.plot(dx_q, np.arange(24), '.r') plt.xlim(-8,8) plt.ylim(0,24) plt.title('scan{0:>5}'.format(scan)) plt.xlabel(r'$\Delta x$ [pixel]') plt.ylabel('q') plt.savefig(out+'/q-x_tot.pdf', dpi=190) plt.clf() plt.plot(np.arange(24), dx_q, '.r') plt.savefig(out+'/q-x_c.pdf', dpi=190) plt.clf() q_corr = np.array([np.arange(24), np.array(dx_q), np.array(dy_q)]).T np.save(out+'/q_corr.npy', q_corr) q_mask = q<24 dy[q_mask] = dy[q_mask]-q_corr[q[q_mask].astype(int),-1] dx[q_mask] = dx[q_mask]-q_corr[q[q_mask].astype(int),-2] mask = (dy>=-8) & (dy<=8) imsz = [30, 64] H,xedges,yedges=np.histogram2d(ya[mask], dy[mask],\ bins=imsz) plt.imshow(H,interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal',\ extent=[-8, 8, 2, 32], origin='lower', norm=LogNorm()) dy_ya = [] for i in range(2,32): ya_mask = (ya[mask] == i) dy_c = np.median(dy[mask][ya_mask]) dy_ya.append(dy_c) print('dy_ya:') print dy_ya plt.plot(dy_ya, np.arange(30)+2, '.r') plt.xlim(-8,8) plt.ylim(2,32) plt.title('scan{0:>5}'.format(scan)) plt.xlabel(r'$\Delta y$ [pixel]') plt.ylabel('ya') plt.savefig(out+'/ya-y_tot.pdf', dpi=190) plt.clf() plt.plot(np.arange(30)+2, dy_ya, '.k') plt.savefig(out+'/ya-y_c.pdf', dpi=190) plt.clf() mask = (dx>=-8) & (dx<=8) imsz = [30, 64] H,xedges,yedges=np.histogram2d(ya[mask], dx[mask],\ bins=imsz) plt.imshow(H,interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal',\ extent=[-8, 8, 2, 32], origin='lower', norm=LogNorm()) dx_ya = [] for i in range(2,32): ya_mask = (ya[mask] == i) dx_c = np.median(dx[mask][ya_mask]) dx_ya.append(dx_c) print('dx_ya:') print dx_ya plt.plot(dx_ya, np.arange(30)+2, '.r') plt.xlim(-8,8) plt.ylim(2,32) plt.title('scan{0:>5}'.format(scan)) plt.xlabel(r'$\Delta x$ [pixel]') plt.ylabel('ya') plt.savefig(out+'/ya-x_tot.pdf', dpi=190) plt.clf() plt.plot(np.arange(30)+2, np.array(dx_ya), '.k') plt.savefig(out+'/ya-x_c.pdf', dpi=190) plt.clf() ya_corr = np.array([np.arange(30)+2, np.array(dx_ya), np.array(dy_ya)]).T np.save(out+'/ya_corr.npy', ya_corr) ya_mask = q<24 dy = dy-ya_corr[ya.astype(int)-2,-1] dx = dx-ya_corr[ya.astype(int)-2,-2] #plot corrected mask = (dy>=-8) & (dy<=8) & (q<24) imsz = [24, 64] H,xedges,yedges=np.histogram2d(q[mask], dy[mask],\ bins=imsz) plt.imshow(H,interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal',\ extent=[-8, 8, 0, 24], origin='lower', norm=LogNorm()) dy_cs = [] for i in range(24): q_mask = q[mask] == i dy_c = np.median(dy[mask][q_mask]) dy_cs.append(dy_c) print('dy_q:') print dy_cs plt.plot(dy_cs, np.arange(24), '.r') plt.xlim(-8,8) plt.ylim(0,24) plt.title('scan{0:>5}'.format(scan)) plt.xlabel(r'$\Delta y$ [pixel]') plt.ylabel('q') plt.savefig(out+'/q-y_tot_new.pdf', dpi=190) plt.clf() #np.save(out+'/q-y.npy', np.array([np.arange(24),dy_cs]).T) plt.plot(np.arange(24), dy_cs, '.r') plt.savefig(out+'/q-y_c_new.pdf', dpi=190) plt.clf() mask = (dx>=-8) & (dx<=8) & (q<24) imsz = [24, 64] H,xedges,yedges=np.histogram2d(q[mask], dx[mask],\ bins=imsz) plt.imshow(H,interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal',\ extent=[-8, 8, 0, 24], origin='lower', norm=LogNorm()) dy_cs = [] for i in range(24): q_mask = q[mask] == i dy_c = np.median(dx[mask][q_mask]) dy_cs.append(dy_c) print('dx_q:') print dy_cs plt.plot(dy_cs, np.arange(24), '.r') plt.xlim(-8,8) plt.ylim(0,24) plt.title('scan{0:>5}'.format(scan)) plt.xlabel(r'$\Delta x$ [pixel]') plt.ylabel('q') plt.savefig(out+'/q-x_tot_new.pdf', dpi=190) plt.clf() #np.save(out+'/q-x.npy', np.array([np.arange(24),dy_cs]).T) plt.plot(np.arange(24), dy_cs, '.r') plt.savefig(out+'/q-x_c_new.pdf', dpi=190) plt.clf() mask = (dy>=-8) & (dy<=8) imsz = [30, 64] H,xedges,yedges=np.histogram2d(ya[mask], dy[mask],\ bins=imsz) plt.imshow(H,interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal',\ extent=[-8, 8, 2, 32], origin='lower', norm=LogNorm()) dy_cs = [] for i in range(2,32): ya_mask = ya[mask] == i dy_c = np.median(dy[mask][ya_mask]) dy_cs.append(dy_c) print('dy_ya:') print dy_cs plt.plot(dy_cs, np.arange(30)+2, '.r') plt.xlim(-8,8) plt.ylim(2,32) plt.title('scan{0:>5}'.format(scan)) plt.xlabel(r'$\Delta y$ [pixel]') plt.ylabel('ya') plt.savefig(out+'/ya-y_tot_new.pdf', dpi=190) plt.clf() plt.plot(np.arange(30)+2, dy_cs, '.k') plt.savefig(out+'/ya-y_c_new.pdf', dpi=190) plt.clf() #np.save(out+'/ya-y.npy', np.array([np.arange(30)+2,dy_cs]).T) mask = (dx>=-8) & (dx<=8) imsz = [30, 64] H,xedges,yedges=np.histogram2d(ya[mask], dx[mask],\ bins=imsz) plt.imshow(H,interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal',\ extent=[-8, 8, 2, 32], origin='lower', norm=LogNorm()) dy_cs = [] for i in range(2,32): ya_mask = ya[mask] == i dy_c = np.median(dx[mask][ya_mask]) dy_cs.append(dy_c) print('dx_ya:') print dy_cs plt.plot(dy_cs, np.arange(30)+2, '.r') plt.xlim(-8,8) plt.ylim(2,32) plt.title('scan{0:>5}'.format(scan)) plt.xlabel(r'$\Delta x$ [pixel]') plt.ylabel('ya') plt.savefig(out+'/ya-x_tot_new.pdf', dpi=190) plt.clf() plt.plot(np.arange(30)+2, dy_cs, '.k') plt.savefig(out+'/ya-x_c_new.pdf', dpi=190) plt.clf()
def run_one_r_sec(pid, scan_name, step, start, end, return_dict): print('run one r sec') pixsz = 0.000416666666666667 #skypos_count = [5.,-9.5] #skyrange_count = [2., 3.] #tranges_count = [[0,0]] #imsz_count = imsz = imagetools.deg2pix_g(skypos_count, skyrange_count, pixsz) #wcs_count = imagetools.define_wcs_g(skypos_count,skyrange_count,width=False,height=False,verbose=0,pixsz=pixsz) #count = np.zeros(imsz_count) num_co = int(1/step) hdulist = pyfits.open('../AIS_GAL_SCAN/asprta/%s-asprta.fits'%scan_name) co_data = hdulist[1].data length = co_data.shape[0] #cal_initial = int((co_data[1][0]-0.5)*1000) #offsets = np.load('../data/%s/cata/offsets_inter_half_sec.npy'%scan_name) angle_list = [0.] print length for initial_sec in range(start, end): print 'time:%d'%initial_sec file_path = '../data/%s/cata/centroids_sec%d.npy'%(scan_name, initial_sec) ''' if os.path.exists(file_path): print 'skip:%d'%initial_sec continue ''' intitial_asp = co_data[initial_sec] rot = intitial_asp[3] center = np.array([intitial_asp[1], intitial_asp[2]]) #use the first order calibrated asp instead of the original one #center = cal_asp_r(offsets, cal_initial, intitial_asp[0]*1000, intitial_asp[1:3], 200) #print(intitial_asp) skypos = [0.0, 0.0] skyrange = [0.2, 0.2] wcs = imagetools.define_wcs(skypos,skyrange,width=False,height=False,verbose=0,pixsz=0.0001) initial_time = intitial_asp[0]-0.5 tranges = [] for sec in range(num_co): tranges.append([initial_time+step*sec, initial_time+step*(sec+1)]) print tranges #data = get_data_cal(tranges, scan_name, cal_initial, offsets) data = get_data(tranges, scan_name) print len(data) output = "../data/%s/cata/%s.csv"%(scan_name, scan_name) dir = os.path.dirname(output) if not os.path.exists(dir): os.makedirs(dir) centroids = [] for sec in range(num_co): if len(data[sec]) ==0: centroid = np.array([0.0, 0.0]) centroids.append(centroid) print centroid continue coo1 = np.array(data[sec], dtype='float64')[:,-3:-1] coo2 = catalog_fits.get_catalog(center, 0.69) coo1 = angle_filter(coo1, center, 0.5) coo2 = angle_filter(coo2, center, 0.5) xi, eta = gn.gnomfwd_simple(coo1[:,0], coo1[:,1], center[0], center[1], -rot, 1/36000., 0.0) max_now = -1000 cent_now = [] for angle in angle_list: coo1[:,0], coo1[:,1] = gn.gnomrev_simple(xi,eta,center[0],center[1],-(rot+angle),1/36000.,0.) centroid, max_value = get_corr_map(coo2, coo1, skypos, skyrange, sec, 0.2, 0.004) if max_value>max_now: max_now = max_value cent_now = np.append(centroid, angle) #centroid.append(angle) centroids.append(cent_now) print centroids np.save('../data/%s/cata/centroids_rot%d.npy'%(scan_name, initial_sec), centroids)
limit = scst_tmp['t_dead_nuv'].shape[0]-1 ix_tmp[ix_tmp>limit] = limit dead_tmp = scst_tmp['t_dead_nuv'][ix_tmp] count = np.zeros([800,800]) #for star_num in xrange(1,10): for star_num in range(cata_len): print star_num star_co = cata_a[star_num, 0:2] star_flux = cata_a[star_num, 3] print star_flux ra = np.ones(asp_uni.shape[0])*star_co[0] dec = np.ones(asp_uni.shape[0])*star_co[1] xi, eta = gn.gnomfwd_simple(ra, dec, asp_uni[:,1], asp_uni[:,2], -asp_uni[:,3], 1/36000., 0.0) coo = np.array([xi, eta]).T #print coo.shape #print coo coo = ((coo/36000.)/(1.25/2.)*(1.25/(800* 0.001666))+1.)/2.*800 ''' mask_0 = np.logical_and(coo[:,0]>=0, coo[:,0]<800) mask_1 = np.logical_and(coo[:,1]>=0, coo[:,1]<800) mask = np.logical_and(mask_0, mask_1) coo = coo[mask] dead_t = dead_tmp[mask]
qmask = photon_list[:,-1]>5 photon_list = photon_list[qmask] star_list = np.load('/scratch/dw1519/galex/data/star_photon/'+in_dir+'/'+name+'_star.npy') print star_list.shape stars, ct = np.unique(photon_list[:,0], return_counts=True) nuv = star_list[stars.astype(int),-1] print stars.shape star_mask = (ct>10) & (nuv<17.5) & (nuv>15.5) print np.sum(star_mask) stars = stars[star_mask] for star in stars: star_mask = (photon_list[:,0]==star) p = photon_list[star_mask] ix = np.digitize(p[:,1]/1000., asp[:,0])-1 xi, eta = gn.gnomfwd_simple(c_radec[star].ra.deg, c_radec[star].dec.deg, asp[ix,1], asp[ix,2], -asp[ix,3],1/36000.,0.) pos = np.array([xi,eta]).T pos=((pos/36000.)/(1.25/2.)*(1.25/(800* 0.001666))+1.)/2.*size Hc, xedge, yedge = np.histogram2d(pos[:,0], pos[:,1], bins=[size,size], range=([ [0,size],[0,size] ])) xi, eta = gn.gnomfwd_simple(c_radec[star].ra.deg, c_radec[star].dec.deg, asp[:,1], asp[:,2], -asp[:,3],1/36000.,0.) pos = np.array([xi,eta]).T pos=((pos/36000.)/(1.25/2.)*(1.25/(800* 0.001666))+1.)/2.*size H, xedge, yedge = np.histogram2d(pos[:,0], pos[:,1], bins=[size,size], range=([ [0,size],[0,size] ]), weights=step*(1-dead)*cut)
def res_star_new(pid, scan_name, start, end, return_dict): cata = spi.load_obj('../data/%s_starset_new'%scan_name) cata_a = np.array(list(cata)) cata_len = len(cata) cata_list = np.insert(cata_a, 0, np.arange(cata_len), axis=1) asp = np.load('../data/photon_list/AIS_GAL_SCAN_00014_0001_asp_cal.npy') asp_uni, uni_index=np.unique(asp[:,0], True) asp_uni = asp[uni_index] ix_tmp = (np.round(asp_uni[:,0]-asp_uni[0,0])+1).astype(int) dead_tmp = np.zeros(ix_tmp.shape[0]) scst_tmp = pyfits.open('../AIS_GAL_SCAN/scst/%s-scst.fits'%scan_name)[1].data limit = scst_tmp['t_dead_nuv'].shape[0]-1 ix_tmp[ix_tmp>limit] = limit dead_tmp = scst_tmp['t_dead_nuv'][ix_tmp] for star_num in range(start, end+1): star_co = cata_a[star_num, 0:2] order = 1 star = 'star_%d-%d'%(star_num, order) if not os.path.exists('../data/%s/star/list/%s.csv'%(scan_name, star)): print 'skip:%s'%star continue csv_file = '../data/%s/star/list/%s.csv'%(scan_name, star) count = [] time_list = [] with open(csv_file, 'rb') as file: reader = csv.reader(file) first = float(reader.next()[0]) final = 0 last = 0 reader = csv.reader(file) for row in reader: time = float(row[0])#time = int(float(row[0])/1000.) if time - last > 200: count.append(1) last = time time_list.append(last) else: count[-1] += 1 final = time time_list = np.array(time_list)/1000. index_0 = (first-asp_uni[0,0]*1000)/5 index_1 = (final-asp_uni[0,0]*1000)/5 star_track = asp_uni[index_0:index_1+1,:] dead_t = dead_tmp[index_0:index_1+1] ra = np.ones(star_track.shape[0])*star_co[0] dec = np.ones(star_track.shape[0])*star_co[1] xi, eta = gn.gnomfwd_simple(ra, dec, star_track[:,1], star_track[:,2], -star_track[:,3], 1/36000., 0.0) output = "../plots/%s/star/res/%s.csv"%(scan_name, scan_name) dir = os.path.dirname(output) if not os.path.exists(dir): os.makedirs(dir) print dead_t res_list = get_res_new(xi, eta) res_list_d = res_list*(1-dead_t) ''' plt.plot(star_track[:,0], res_list_d) plt.xlabel('t/s') plt.ylabel('response') plt.savefig('../plots/%s/star/res/res%d-%d_track_d.png'%(scan_name, star_num, order), dpi=190) plt.clf() plt.plot(star_track[:,0], res_list) plt.xlabel('t/s') plt.ylabel('response') plt.savefig('../plots/%s/star/res/res%d-%d_track.png'%(scan_name, star_num, order), dpi=190) plt.clf() ''' f, axes = plt.subplots(2, 1) axes[0].plot(time_list, count) axes[0].set_ylabel('Num of Photons') ylim = axes[0].get_ylim() axes[0].set_ylim(ylim+np.absolute(ylim)*0.01) plt.setp( axes[0].get_xticklabels(), visible=False) #plt.setp( axes[0].get_yticklabels(), visible=False) axes[1].plot(star_track[:,0], res_list_d) axes[1].set_ylabel('Response') axes[1].set_xlabel('time/s') plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0, hspace=0) plt.savefig('../plots/%s/star/res/2p/res%d-%d_track.png'%(scan_name,star_num,order),dpi=190) plt.clf()
def get_corr_map(coo1, coo2, skypos, skyrange, sec, pixsz, idx, suffix, info_list, d3, outdir): imsz = imagetools.deg2pix(skypos, skyrange, pixsz).astype(int) count = np.zeros(imsz) #print(imsz) bound = skyrange[0] / 0.000554 / 2400. * 36000. * 800 * 0.001666 co_rel = np.array([[0, 0]]) infos = np.array([[0, 0, 0]]) rot = np.array([0]) len1 = coo1.shape[0] len2 = coo2.shape[0] print(len1, len2) wcs = imagetools.define_wcs(skypos, skyrange, width=False, height=False, verbose=0, pixsz=pixsz) #with open('../data/try2_%d.csv'%sec, 'wb') as csvfile: #writer = csv.writer(csvfile) ''' photon_len = coo2.shape[0] star_len = coo1.shape[0] print 'repeat coo1' coo1 = np.repeat(coo1, photon_len, axis=0) print coo1.shape print 'repeat d3' d3 = np.tile(d3, (star_len,1)) print d3.shape print 'convert coo1' xi, eta = gn.gnomfwd_simple(coo1[:,0], coo1[:,1], d3[:,1], d3[:,2], -d3[:,3], 1/36000., 0) print 'tile coo2' co_rel = np.tile(coo2, (star_len,1)) - np.array([xi,eta]).T mask = (np.absolute(co_rel[:,0])<=bound) & (np.absolute(co_rel[:,1])<=bound) co_rel = co_rel[mask] print 'tile infos' infos = np.tile(info_list, (star_len,1))[mask] print infos.shape ''' if len2 > len1: for i in range(len1): ones = np.ones(d3.shape[0]) xi, eta = gn.gnomfwd_simple(coo1[i, 0] * ones, coo1[i, 1] * ones, d3[:, 1], d3[:, 2], -d3[:, 3], 1 / 36000., 0) tmp_co = coo2 - np.array([xi, eta]).T mask = (np.absolute(tmp_co[:, 0]) <= bound) & (np.absolute( tmp_co[:, 1]) <= bound) tmp_co = tmp_co[np.absolute(tmp_co[:, 0]) <= bound, :] tmp_co = tmp_co[np.absolute(tmp_co[:, 1]) <= bound, :] co_rel = np.concatenate((co_rel, tmp_co), axis=0) infos = np.concatenate((infos, info_list[mask]), axis=0) #rot = np.concatenate((rot, d3[mask]), axis=0) else: for i in range(len2): #print(i) tmp_co = coo2[i, :] - coo1 tmp_co = tmp_co[np.absolute(tmp_co[:, 0]) <= bound, :] tmp_co = tmp_co[np.absolute(tmp_co[:, 1]) <= bound, :] co_rel = np.concatenate((co_rel, tmp_co), axis=0) infos = np.concatenate( (infos, np.repeat(info_list[i], tmp_co.shape[0])), axis=0) rot = np.concatenate((rot, np.repeat(d3[i], tmp_co.shape[0])), axis=0) path = os.path.dirname('{0}/test/test'.format(outdir)) if not os.path.exists(path): os.makedirs(path) np.save('{0}/test/{1}.npy'.format(outdir, idx), co_rel) #np.save('{0}/radec/{1}.npy'.format(outdir, idx), co_radec) np.save('{0}/test/info_{1}.npy'.format(outdir, idx), infos) return [0, 0], 0, 0
def run_one_r_sec(pid, scan_name, step, start, end, return_dict): print('run one r sec') pixsz = 0.000416666666666667 #skypos_count = [5.,-9.5] #skyrange_count = [2., 3.] #tranges_count = [[0,0]] #imsz_count = imsz = imagetools.deg2pix_g(skypos_count, skyrange_count, pixsz) #wcs_count = imagetools.define_wcs_g(skypos_count,skyrange_count,width=False,height=False,verbose=0,pixsz=pixsz) #count = np.zeros(imsz_count) num_co = int(1 / step) hdulist = pyfits.open('../AIS_GAL_SCAN/asprta/%s-asprta.fits' % scan_name) co_data = hdulist[1].data length = co_data.shape[0] #cal_initial = int((co_data[1][0]-0.5)*1000) #offsets = np.load('../data/%s/cata/offsets_inter_half_sec.npy'%scan_name) angle_list = [0.] print length for initial_sec in range(start, end): print 'time:%d' % initial_sec file_path = '../data/%s/cata/centroids_sec%d.npy' % (scan_name, initial_sec) ''' if os.path.exists(file_path): print 'skip:%d'%initial_sec continue ''' intitial_asp = co_data[initial_sec] rot = intitial_asp[3] center = np.array([intitial_asp[1], intitial_asp[2]]) #use the first order calibrated asp instead of the original one #center = cal_asp_r(offsets, cal_initial, intitial_asp[0]*1000, intitial_asp[1:3], 200) #print(intitial_asp) skypos = [0.0, 0.0] skyrange = [0.2, 0.2] wcs = imagetools.define_wcs(skypos, skyrange, width=False, height=False, verbose=0, pixsz=0.0001) initial_time = intitial_asp[0] - 0.5 tranges = [] for sec in range(num_co): tranges.append( [initial_time + step * sec, initial_time + step * (sec + 1)]) print tranges #data = get_data_cal(tranges, scan_name, cal_initial, offsets) data = get_data(tranges, scan_name) print len(data) output = "../data/%s/cata/%s.csv" % (scan_name, scan_name) dir = os.path.dirname(output) if not os.path.exists(dir): os.makedirs(dir) centroids = [] for sec in range(num_co): if len(data[sec]) == 0: centroid = np.array([0.0, 0.0]) centroids.append(centroid) print centroid continue coo1 = np.array(data[sec], dtype='float64')[:, -3:-1] coo2 = catalog_fits.get_catalog(center, 0.69) coo1 = angle_filter(coo1, center, 0.5) coo2 = angle_filter(coo2, center, 0.5) xi, eta = gn.gnomfwd_simple(coo1[:, 0], coo1[:, 1], center[0], center[1], -rot, 1 / 36000., 0.0) max_now = -1000 cent_now = [] for angle in angle_list: coo1[:, 0], coo1[:, 1] = gn.gnomrev_simple(xi, eta, center[0], center[1], -(rot + angle), 1 / 36000., 0.) centroid, max_value = get_corr_map(coo2, coo1, skypos, skyrange, sec, 0.2, 0.004) if max_value > max_now: max_now = max_value cent_now = np.append(centroid, angle) #centroid.append(angle) centroids.append(cent_now) print centroids np.save( '../data/%s/cata/centroids_rot%d.npy' % (scan_name, initial_sec), centroids)
def run_model_chunk(pid, scan_name, chunk, cata_target, cata_lists, size_list, cata_target_len, dead_tmp, asp_uni, return_dict): count_list=[] exp_list=[] chunk_num = 0 for trange in chunk: output = '../fits/%s/extra/new_black/exposure_chunk%d.fits'%(scan_name, chunk_num) if os.path.exists(output): print 'exists %d'%(chunk_num) chunk_num+=1 continue t_mask = np.zeros(asp_uni.shape[0]) begin = np.where((asp_uni[:,0]*1000).astype(int) - trange[0] == 0)[0] end = np.where((asp_uni[:,0]*1000).astype(int) - trange[1] == 0)[0] t_mask[begin:end+1] = 1 t_asp = asp_uni[t_mask>0] t_dead = dead_tmp[t_mask>0] t_length = end+1-begin print('time length:%d, %f, %f'%(t_length, trange[0], trange[1])) count = np.zeros([t_length,800,800]) exp_count = np.zeros([t_length,800,800]) for star_num in range(cata_target_len): #print star_num star_co = cata_target[star_num, 0:2] star_flux = cata_target[star_num, 3] #print star_flux ra = np.ones(t_asp.shape[0])*star_co[0] dec = np.ones(t_asp.shape[0])*star_co[1] xi, eta = gn.gnomfwd_simple(ra, dec, t_asp[:,1], t_asp[:,2], -t_asp[:,3], 1/36000., 0.0) coo = np.array([xi, eta]).T coo = ((coo/36000.)/(1.25/2.)*(1.25/(800* 0.001666))+1.)/2.*800 for i in [-1,0,1]: for j in [-1,0,1]: coo_tmp = np.zeros([t_length, 3]) coo_tmp[:,0] = np.arange(t_length) coo_tmp[:,1] = coo[:,0]+i coo_tmp[:,2] = coo[:,1]+j mask_0 = np.logical_and(coo_tmp[:,1]>=0, coo_tmp[:,1]<800) mask_1 = np.logical_and(coo_tmp[:,2]>=0, coo_tmp[:,2]<800) mask = np.logical_and(mask_0, mask_1) total = 1+4*0.0625+4*0.00390625 coo_tmp = coo_tmp[mask] t_dead_tmp = t_dead[mask] coo_tmp = np.array(coo_tmp, dtype=int) factor = 1. if (i,j) in set([(-1,0),(1,0),(0,-1),(0,1)]): factor = 0.0625 elif (i,j) in set([(-1,-1),(1,-1),(1,1),(-1,1)]): factor = 0.00390625 else: factor = 1. #count[coo_tmp[:,0], coo_tmp[:,1]] += 0.005*factor*star_flux/total count[coo_tmp[:,0], coo_tmp[:,1], coo_tmp[:,2]] += factor*star_flux/total for mask_num in range(3): mask_cata = cata_lists[mask_num] size = size_list[mask_num] radius = size[-1]+0.5 for star_num in range(mask_cata.shape[0]): #print star_num star_co = mask_cata[star_num, 0:2] #print star_flux ra = np.ones(t_asp.shape[0])*star_co[0] dec = np.ones(t_asp.shape[0])*star_co[1] xi, eta = gn.gnomfwd_simple(ra, dec, t_asp[:,1], t_asp[:,2], -t_asp[:,3], 1/36000., 0.0) coo = np.array([xi, eta]).T coo = ((coo/36000.)/(1.25/2.)*(1.25/(800* 0.001666))+1.)/2.*800 for i in size: for j in size: if i**2+j**2>radius**2: continue coo_tmp = np.zeros([t_length, 3]) coo_tmp[:,0] = np.arange(t_length) coo_tmp[:,1] = coo[:,0]+i coo_tmp[:,2] = coo[:,1]+j mask_0 = np.logical_and(coo_tmp[:,1]>=0, coo_tmp[:,1]<800) mask_1 = np.logical_and(coo_tmp[:,2]>=0, coo_tmp[:,2]<800) mask = np.logical_and(mask_0, mask_1) coo_tmp = coo_tmp[mask] coo_tmp = np.array(coo_tmp, dtype=int) exp_count[coo_tmp[:,0], coo_tmp[:,1], coo_tmp[:,2]] -= 1 for t_step in range(t_length): exp_count[t_step][exp_count[t_step]>=0] = 0.005*(1-t_dead[t_step]) exp_count[exp_count<0] = 0. count *= exp_count exp_count_sum = np.sum(exp_count, axis=0) count_sum = np.sum(count, axis=0) exp_list.append(exp_count_sum) count_list.append(count_sum) exp_count=count=None gc.collect() chunk_num += 1 return_dict[pid] = (count_list, exp_list)
def run_one_r_sec(pid, scan_name, step, resolution, asp_cal, start, end, dis_map, return_dict): print('run one r sec') num_co = int(resolution/step) #load asp file hdulist = pyfits.open('../AIS_GAL_SCAN/asprta/%s-asprta.fits'%scan_name) co_data = hdulist[1].data length = co_data.shape[0] ''' try: asp_cal = np.load('../data/photon_list/%s_asp_new.npy'%scan_name) except IOError: T = co_data['T'] ra = co_data['ra'] dec = co_data['dec'] roll = co_data['roll'] t_new = np.arange((T.shape[0]-1)*200)*0.005+T[0] ra_new = np.interp(t_new, T, ra) dec_new = np.interp(t_new, T, dec) roll_new = np.interp(t_new, T, roll) asp_cal = np.array([t_new, ra_new, dec_new, roll_new]).T np.save('../data/photon_list/%s_asp_new.npy'%scan_name, asp_cal) ''' #cal_initial = int((co_data[1][0]-0.5)*1000) #offsets = np.load('../data/%s/cata/offsets_inter_half_sec.npy'%scan_name) angle_list = [0.] start =600#1000 print length for initial_sec in range(start, end): print 'time:%d'%initial_sec file_path = '../data/%s/cata/centroids_rot%d.npy'%(scan_name, initial_sec) intitial_asp = co_data[initial_sec] rot = intitial_asp[3] #center = np.array([intitial_asp[1], intitial_asp[2]]) #use the first order calibrated asp instead of the original one #center = cal_asp_r(offsets, cal_initial, intitial_asp[0]*1000, intitial_asp[1:3], 200) #print(intitial_asp) skypos = [0.0, 0.0] skyrange = [0.02, 0.02] if step == 1: skyrange = [0.04, 0.04]#[0.3, 0.3] elif step == 0.5: skyrange = [0.02, 0.02] initial_time = intitial_asp[0]-step/2. tranges = [] for sec in range(num_co): tranges.append([initial_time+step*sec, initial_time+step*(sec+1)]) print tranges time_c = np.mean(tranges, axis=1) print 'center time:' print time_c #data = get_data_cal(tranges, scan_name, cal_initial, offsets) data = get_data(tranges, scan_name) print 'number of the photons:' print len(data) centroids = [] center_time = [] for sec in range(num_co): center_time.append(time_c[sec]) if len(data[sec]) == 0: centroid = np.array([0.0, 0.0, 0.0]) centroids.append(centroid) print centroid continue arg = np.argmin(np.absolute(asp_cal[:,0]-time_c[sec])) center = asp_cal[arg, 1:3] data_sec = dis_correct(np.array(data[sec], dtype='float64'), dis_map, asp_cal) coo1 = np.array(data_sec, dtype='float64') aperture = 0.69 #coo1 = np.array(data[sec], dtype='float64')[:,-3:-1] coo3 = catalog_fits.get_catalog_tycho(center, aperture) coo2 = catalog_fits.get_catalog(center, aperture) #coo2[:,0] -= 0.0052 #- 0.01005915 #coo2[:,1] -= -0.006 #- 0.00804992 #data_sec = dis_correct(np.array(data[sec+1], dtype='float64'), dis_map, asp_cal) #coo4 = np.array(data_sec, dtype='float64') #coo2 = catalog_fits.get_catalog(center, 2.) #coo2 = np.concatenate([coo2,coo3], axis=0) coo1 = angle_filter(coo1, center, 0.6) coo2 = angle_filter(coo2, center, 0.6) coo3 = angle_filter(coo3, center, 0.6) #coo4 = angle_filter(coo4, center, 0.6) fig = plt.gcf() fig.set_size_inches(8,8) plt.plot(coo1[:,0], coo1[:,1], '.k', markersize=0.1) plt.plot(coo3[:,0], coo3[:,1], '+r', markersize=12) plt.plot(coo2[:,0], coo2[:,1], '+b', markersize=8) #plt.show() plt.ylabel('Dec') plt.xlabel('RA') plt.xlim(center[0]-0.65, center[0]+0.65) plt.ylim(center[1]-0.65, center[1]+0.65) plt.tight_layout() plt.savefig('/home/dw1519/galex/plots/photons.png', dpi=190) plt.clf() plt.close() ''' #plot field #plt.plot(asp_cal[:,1],'.b') #plt.show() print center print coo1.shape print np.min(coo1[:,0]), np.max(coo1[:,0]) print np.min(coo1[:,1]), np.max(coo1[:,1]) wcs = imagetools.define_wcs(center,[1.5,1.5],width=False,height=False,verbose=0,pixsz=0.002) imsz = imagetools.deg2pix(center, [1.5,1.5], 0.002) foc = wcs.sip_pix2foc(wcs.wcs_world2pix(coo1,1),1) H,xedges,yedges=np.histogram2d(foc[:,1]-0.5, foc[:,0]-0.5,\ bins=imsz, range=([ [0,imsz[0]],[0,imsz[1]] ])) H_new = H.copy() data = H_new.byteswap(True).newbyteorder() data = data.copy(order='C') data = data.byteswap(True).newbyteorder() c_data = c3.find_source(data, 1) if c_data is not None: cx, cy, max_value = c_data print cy, cx centroid = wcs.wcs_pix2world(wcs.sip_foc2pix([[cx, cy]],1),1)[0] coo1 = angle_filter_out(coo1, centroid, 0.01) foc = wcs.sip_pix2foc(wcs.wcs_world2pix(coo1,1),1) H,xedges,yedges=np.histogram2d(foc[:,1]-0.5, foc[:,0]-0.5,\ bins=imsz, range=([ [0,imsz[0]],[0,imsz[1]] ])) plt.imshow(H,interpolation='None', cmap=plt.get_cmap('Greys'), vmax=10) plt.colorbar() plt.show() foc = wcs.sip_pix2foc(wcs.wcs_world2pix(coo2,1),1) H,xedges,yedges=np.histogram2d(foc[:,1]-0.5, foc[:,0]-0.5,\ bins=imsz, range=([ [0,imsz[0]],[0,imsz[1]] ])) plt.imshow(H,interpolation='None', cmap=plt.get_cmap('Greys')) plt.show() ''' xi, eta = gn.gnomfwd_simple(coo1[:,0], coo1[:,1], center[0], center[1], -rot, 1/36000., 0.0) max_now = -1000 cent_now = [] for angle in angle_list: #coo1[:,0], coo1[:,1] = gn.gnomrev_simple(xi,eta,center[0],center[1],-(rot+angle),1/36000.,0.) centroid, max_value, flux = get_corr_map(coo3, coo1, skypos, skyrange, sec, 0.0002, initial_sec, '2') print centroid centroid, max_value, flux = get_corr_map(coo2, coo1, skypos, skyrange, sec, 0.0002, initial_sec, '1') print centroid #centroid, max_value, flux = get_corr_map(coo4, coo1, skypos, skyrange, sec, 0.0002, initial_sec, '3') #print centroid if max_value>max_now: max_now = max_value cent_now = np.append(centroid, angle) #centroid.append(angle) centroids.append(cent_now) print centroids sys.exit(0)
def load_data(name, dis_l, dis_h, ya, c_file, asprta, resolution): #name = 'AIS_GAL_SCAN_00023_0001' suffix = '-cal-sec' #dis_l = '/scratch/dw1519/galex/data/distortion/5-185-xa_low-centroids.npy' #dis_h = '/scratch/dw1519/galex/data/distortion/5-185-xa_high-centroids.npy' #ya = '/scratch/dw1519/galex/co/co23_1-10/test/ya_fit.npy' hdulist = pyfits.open(asprta) co_data = hdulist[1].data n=resolution/0.005 #100 T = co_data['T'] ra = co_data['ra'] dec = co_data['dec'] roll = co_data['roll'] t_new = np.arange((T.shape[0]-1)*n)*0.005+T[0] ra_new = np.interp(t_new, T, ra) dec_new = np.interp(t_new, T, dec) roll_new = np.interp(t_new, T, roll) asp = np.array([t_new, ra_new, dec_new, roll_new]).T #np.save('../data/photon_list/%s_asp_fix.npy'%name, asp_cal) hdulist.close() #asp = np.load('../data/photon_list/{0}{1}-correct_asp_new.npy'.format(name, suffix)) scst_file = pyfits.open('../AIS_GAL_SCAN/scst/{0}-scst.fits'.format(name)) scst_data = scst_file[1].data scst_time = scst_data['pktime'].copy() hv = scst_data['hvnom_nuv'].copy() scst_file.close() dis_map = load_dis(dis_l, dis_h) if ya is not None: ya_info = load_ya(ya) else: ya_info = [None, None] tycho2 = pyfits.open('../data/tycho2.fits')[1].data df = load_catalog(c_file) c = SkyCoord(df['gl']*u.degree, df['gb']*u.degree, frame='galactic') catalog = SkyCoord(tycho2['Glon']*u.degree, tycho2['Glat']*u.degree, frame='galactic') idx, d2d, d3d = c.match_to_catalog_sky(catalog) mask=d2d<0.001*u.degree photon_list = sorted(glob.glob("../data/"+name+suffix+"/split/*.csv"), key=get_key) data_list = [] for f in photon_list: print(f) data = np.loadtxt(f,delimiter=',', usecols=[0,3,4,5,6,7]) if len(data.shape)<2: continue scst_ix = np.digitize(data[:,0]/1000., scst_time) ix_mask = scst_ix<scst_time.shape[0] scst_ix = scst_ix[ix_mask] data = data[ix_mask] print(data[-1,0]/1000.) print(scst_time[scst_ix[-1]]) print(hv[scst_ix[-1]]) data = data[hv[scst_ix]>0] if len(data)==0: print('skip') continue data = dis_correct(data, dis_map, asp, ya_info[0], ya_info[1]) sky_data = SkyCoord(data[:,0:2], unit='deg', frame='fk5', equinox='J2000.0') gal = sky_data.transform_to('galactic') idxc, idxcatalog, d2d_p, d3d_p = gal.search_around_sky(catalog[idx[mask]], 0.0045*u.deg) catalog_id = np.zeros((gal.shape[0], 3))-1 #catalog_id[idxcatalog,0] = if len(idxc)>0: xi, eta = gn.gnomfwd_simple(tycho2['RAJ2000'][idx[mask][idxc]], tycho2['DEJ2000'][idx[mask][idxc]], data[idxcatalog,-3], data[idxcatalog,-2], -data[idxcatalog,-1], 1/36000., 0) #print xi.shape #print eta.shape #print data[idxcatalog,6].shape #print (data[idxcatalog,7]-eta).shape catalog_id[idxcatalog] = np.column_stack([idx[mask][idxc], (data[idxcatalog,6]-xi),\ (data[idxcatalog,7]-eta)]) else: print 'no star' #catalog_id = np.array([catalog_id]).T data = np.concatenate([np.array([gal.l.deg]).T, np.array([gal.b.deg]).T, data[:,2:8],catalog_id], axis=1) data_list.append(data) gc.collect() return np.concatenate(data_list, axis=0)
def get_corr_map(coo1, coo2, skypos, skyrange, sec, pixsz, idx, suffix, info_list, d3, outdir): imsz = imagetools.deg2pix(skypos, skyrange, pixsz).astype(int) count = np.zeros(imsz) #print(imsz) bound = skyrange[0]/0.000554/2400.*36000.*800*0.001666 co_rel = np.array([[0,0]]) infos = np.array([[0,0,0]]) rot = np.array([0]) len1 = coo1.shape[0] len2 = coo2.shape[0] print(len1,len2) wcs = imagetools.define_wcs(skypos,skyrange,width=False,height=False,verbose=0,pixsz=pixsz) #with open('../data/try2_%d.csv'%sec, 'wb') as csvfile: #writer = csv.writer(csvfile) ''' photon_len = coo2.shape[0] star_len = coo1.shape[0] print 'repeat coo1' coo1 = np.repeat(coo1, photon_len, axis=0) print coo1.shape print 'repeat d3' d3 = np.tile(d3, (star_len,1)) print d3.shape print 'convert coo1' xi, eta = gn.gnomfwd_simple(coo1[:,0], coo1[:,1], d3[:,1], d3[:,2], -d3[:,3], 1/36000., 0) print 'tile coo2' co_rel = np.tile(coo2, (star_len,1)) - np.array([xi,eta]).T mask = (np.absolute(co_rel[:,0])<=bound) & (np.absolute(co_rel[:,1])<=bound) co_rel = co_rel[mask] print 'tile infos' infos = np.tile(info_list, (star_len,1))[mask] print infos.shape ''' if len2>len1: for i in range(len1): ones = np.ones(d3.shape[0]) xi, eta = gn.gnomfwd_simple(coo1[i,0]*ones, coo1[i,1]*ones, d3[:,1], d3[:,2], -d3[:,3], 1/36000., 0) tmp_co = coo2-np.array([xi,eta]).T mask = (np.absolute(tmp_co[:,0])<=bound) & (np.absolute(tmp_co[:,1])<=bound) tmp_co = tmp_co[np.absolute(tmp_co[:,0])<=bound,:] tmp_co = tmp_co[np.absolute(tmp_co[:,1])<=bound,:] co_rel = np.concatenate((co_rel, tmp_co), axis = 0) infos = np.concatenate((infos,info_list[mask]), axis=0) #rot = np.concatenate((rot, d3[mask]), axis=0) else: for i in range(len2): #print(i) tmp_co = coo2[i,:]-coo1 tmp_co = tmp_co[np.absolute(tmp_co[:,0])<=bound,:] tmp_co = tmp_co[np.absolute(tmp_co[:,1])<=bound,:] co_rel = np.concatenate((co_rel, tmp_co), axis = 0) infos = np.concatenate((infos,np.repeat(info_list[i], tmp_co.shape[0])), axis=0) rot = np.concatenate((rot, np.repeat(d3[i], tmp_co.shape[0])), axis=0) path = os.path.dirname('{0}/test/test'.format(outdir)) if not os.path.exists(path): os.makedirs(path) np.save('{0}/test/{1}.npy'.format(outdir, idx), co_rel) #np.save('{0}/radec/{1}.npy'.format(outdir, idx), co_radec) np.save('{0}/test/info_{1}.npy'.format(outdir, idx), infos) return [0,0], 0, 0
def get_corr_map(coo1, coo2, skypos, skyrange, sec, pixsz, idx, suffix, info_list, d3, outdir): imsz = imagetools.deg2pix(skypos, skyrange, pixsz).astype(int) count = np.zeros(imsz) #print(imsz) bound = skyrange[0] co_rel = np.array([[0, 0]]) infos = np.array([[0, 0, 0]]) rot = np.array([0]) len1 = coo1.shape[0] len2 = coo2.shape[0] print(len1, len2) wcs = imagetools.define_wcs(skypos, skyrange, width=False, height=False, verbose=0, pixsz=pixsz) #with open('../data/try2_%d.csv'%sec, 'wb') as csvfile: #writer = csv.writer(csvfile) if len2 > len1: for i in range(len1): #print(i) tmp_co = coo2 - coo1[i, :] mask = (np.absolute(tmp_co[:, 0]) <= bound) & (np.absolute( tmp_co[:, 1]) <= bound) tmp_co = tmp_co[np.absolute(tmp_co[:, 0]) <= bound, :] tmp_co = tmp_co[np.absolute(tmp_co[:, 1]) <= bound, :] co_rel = np.concatenate((co_rel, tmp_co), axis=0) infos = np.concatenate((infos, info_list[mask]), axis=0) rot = np.concatenate((rot, d3[mask]), axis=0) else: for i in range(len2): #print(i) tmp_co = coo2[i, :] - coo1 tmp_co = tmp_co[np.absolute(tmp_co[:, 0]) <= bound, :] tmp_co = tmp_co[np.absolute(tmp_co[:, 1]) <= bound, :] co_rel = np.concatenate((co_rel, tmp_co), axis=0) infos = np.concatenate( (infos, np.repeat(info_list[i], tmp_co.shape[0])), axis=0) rot = np.concatenate((rot, np.repeat(d3[i], tmp_co.shape[0])), axis=0) foc = wcs.sip_pix2foc(wcs.wcs_world2pix(co_rel[1:], 1), 1) H,xedges,yedges=np.histogram2d(foc[:,1]-0.5, foc[:,0]-0.5,\ bins=imsz, range=([ [0,imsz[0]],[0,imsz[1]] ])) t = np.percentile(H, 90) t = 500 print 'threshold:{0}'.format(t) hp = H.copy() #plt.colorbar() #plt.plot(co_rel[:,0],co_rel[:,1], 'o', alpha=0.05) #plt.xlim(-0.005,0.005) #plt.ylim(-0.005,0.005) data = H.byteswap(True).newbyteorder() data = data.copy(order='C') data = data.byteswap(True).newbyteorder() c_data = c3.find_centroid(data, t) if c_data is not None: cy, cx, max_value, flux = c_data cy += 0.5 cx += 0.5 centroid = wcs.wcs_pix2world(wcs.sip_foc2pix([[cx, cy]], 1), 1)[0] else: centroid = [0., 0.] max_value = 0 flux = 500 if centroid[0] > 1: centroid[0] = centroid[0] - 360. #print 'max:{0}'.format(max_value) print hp.shape #plt.imshow(np.log2(hp+10**-10),interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal', extent=[0.02*3600, -0.02*3600, 0.02*3600, -0.02*3600], origin='upper', vmin=0) ''' plt.imshow(hp+10**-10,interpolation='None', cmap=plt.get_cmap('Greys'), aspect='equal', extent=[0.02*3600, -0.02*3600, 0.02*3600, -0.02*3600], origin='upper', norm=LogNorm(10**0,np.max(hp))) plt.colorbar() plt.xlim(-0.01*3600, 0.01*3600) plt.ylim(-0.01*3600, 0.01*3600) plt.ylabel('gb') plt.xlabel('gl') plt.axhline(y=0, color='b', linestyle='dashed', linewidth=1) plt.axvline(x=0, color='b', linestyle='dashed', linewidth=1) plt.plot(centroid[0]*3600,centroid[1]*3600,'+r', markersize=8) #plt.show() rot = np.mean(d3)/180.*np.pi l = np.linspace(0, 8., 5) x_y = np.sin(-rot)*l x_x = np.cos(-rot)*l y_y = np.sin(-rot+np.pi/2.)*l y_x = np.cos(-rot+np.pi/2.)*l plt.plot(x_x, x_y, '--g') plt.plot(y_x, y_y, '--g') co_rel = co_rel*3600 mask = (co_rel[1:,0]**2+co_rel[1:,1]**2) <= (2.5**2) num = np.sum(mask) plt.title('t={0}-{1}s, photons within d=5\" circle:{2}'.format(idx/2-50, idx/2, num)) plt.savefig('{0}/{1}.pdf'.format(outdir,idx)) plt.clf() np.save('{0}/{1}.npy'.format(outdir,idx), co_rel) ''' #co_rel = co_rel*3600 xi, eta = gn.gnomfwd_simple(co_rel[1:, 0], co_rel[1:, 1], 0, 0, -rot[1:], 1 / 36000., 0) #co_radec = np.array([xi,eta]).T path = os.path.dirname('{0}/radec/test'.format(outdir)) if not os.path.exists(path): os.makedirs(path) np.save('{0}/{1}.npy'.format(outdir, idx), co_rel * 3600) #np.save('{0}/radec/{1}.npy'.format(outdir, idx), co_radec) #np.save('{0}/info_{1}.npy'.format(outdir, idx), infos) ''' plt.scatter(co_rel[1:,0], co_rel[1:,1], c=infos[1:,0], s=.5, alpha=0.3, cmap=plt.get_cmap('jet'), marker='o',edgecolors='face') cb1 = plt.colorbar() cb1.set_label('xa') plt.xlim(-0.02*3600, 0.02*3600) plt.ylim(-0.02*3600, 0.02*3600) plt.savefig('{0}/xa_{1}.png'.format(outdir, idx)) plt.clf() plt.scatter(co_rel[1:,0], co_rel[1:,1], c=infos[1:,1], s=.5, alpha=0.3, cmap=plt.get_cmap('jet'), marker='o',edgecolors='face') cb1 = plt.colorbar() cb1.set_label('ya') plt.xlim(-0.02*3600, 0.02*3600) plt.ylim(-0.02*3600, 0.02*3600) plt.savefig('{0}/ya_{1}.png'.format(outdir, idx)) plt.clf() plt.scatter(co_rel[1:,0], co_rel[1:,1], c=infos[1:,2], s=.5, alpha=0.3, cmap=plt.get_cmap('jet'), marker='o',edgecolors='face') cb1 = plt.colorbar() cb1.set_label('q') plt.xlim(-0.02*3600, 0.02*3600) plt.ylim(-0.02*3600, 0.02*3600) plt.savefig('{0}/q_{1}.png'.format(outdir, idx), dpi=190) plt.clf() ''' ''' n, bins, patches = plt.hist(infos[1:,1], 30, normed=1, facecolor='green', alpha=0.5) plt.savefig('/home/dw1519/dw1519/galex/plots/co239_s/yahist_{0}.pdf'.format(idx), dpi=190) plt.clf() mask = (co_rel[:,0]<-25) & (co_rel[:,0]>-45) & (co_rel[:,1]>42) & (co_rel[:,1]<66) n, bins, patches = plt.hist(infos[mask,1], 30, normed=1, facecolor='green', alpha=0.5) plt.savefig('/home/dw1519/dw1519/galex/plots/co239_s/yahist_gh_{0}.pdf'.format(idx), dpi=190) plt.clf() ''' return centroid, max_value, flux