def gen_scan_c_mod_moon_ellip( theta_antisun_long, theta_antisun_short, theta_boresight, freq_antisun, freq_boresight, \ total_time, today_julian, sample_rate, dir_out, filename, \ title, nside, runtime_i, option_gen_ptg): print '[lib_LBscan.py,gen_scan_c_mod] initial', (time.time()-runtime_i)/60., 'min' # define time related variables n_time = long(total_time*sample_rate) print '[lib_LBscan.py,gen_scan_c_mod] The number of samples in a day', n_time sec2date = (1.e-4/8.64) time_julian = np.arange(n_time)/(n_time-1.)*total_time*sec2date + today_julian # time in julian [day] # cal sun position print '[lib_LBscan.py,gen_scan_c_mod] before sun_position_quick', (time.time()-runtime_i)/60., 'min' DJD = mylib.convert_Julian2Dublin(time_julian) lon_spe, lat_spe = sun_position_quick(DJD) ra_mp, dec_mp = moon_position(DJD) print today_julian, time_julian, DJD DJD = 0; # convert ra/dec to ecliptic coordinate # lon_spe, lat_spe = mylib.EULER( ra_sp*radeg, dec_sp*radeg, 3, 'J2000') lon_mpe, lat_mpe = mylib.EULER( ra_mp*radeg, dec_mp*radeg, 3, 'J2000') ra_mp = 0; dec_mp = 0 time_i = time_julian /sec2date # time in [sec] # convert the sun vector to anti-sun vector # lat_aspe = -lat_spe/radeg # lon_aspe = lon_spe/radeg + pi lat_aspe = -lat_spe lon_aspe = lon_spe + pi lat_spe = 0 lon_spe = 0 # from ecliptic lat, lon convention to theta, phi convention theta_asp = pi/2.-lat_aspe phi_asp = lon_aspe x_asp,y_asp,z_asp = ang2pos_3D(theta_asp,phi_asp) phi_antisun = mylib.wraparound_2pi(2.*pi*freq_antisun*time_i) phi_boresight = mylib.wraparound_2pi(2.*pi*freq_boresight*time_i) # theta_antisun_arr = 0.5*(theta_antisun_long - theta_antisun_short) * np.cos(mylib.wraparound_2pi(2.*pi*freq_antisun*time_i)) \ # + 0.5*(theta_antisun_long+theta_antisun_short) theta_antisun_arr = 0.5*(70./180.*pi - 5./180.*pi) * np.cos(mylib.wraparound_2pi(2.*pi*freq_antisun*time_i)) \ + 0.5*(70./180.*pi + 5./180.*pi) theta_boresight = 0. print '[lib_LBscan.py,gen_scan_c_mod] before LB_rotmatrix_multi', (time.time()-runtime_i)/60., 'min' p_out = liblbscanc.LB_rotmatrix_multi_ellip(theta_asp, phi_asp, theta_antisun_arr, phi_antisun, theta_boresight, phi_boresight) theta_out = np.arctan2(np.sqrt(p_out[0,:]**2+p_out[1,:]**2),p_out[2,:]) phi_out = np.arctan2(p_out[1,:],p_out[0,:])+pi theta_asp=0; phi_asp=0; p_out=0; time_i=0; phi_antisun=0; phi_boresight=0; ipix = h.ang2pix( nside, theta_out, phi_out) nbPix_scan = len(ipix)-1 nbPix = h.nside2npix(nside) dpvec = np.zeros((3,nbPix_scan)) dtvec = np.zeros((3,nbPix_scan)) dphivec = np.zeros((3,nbPix_scan)) xp,yp,zp = ang2pos_3D(theta_out,phi_out) dpvec = ang2_scandirec_3D(xp,yp,zp) dtvec = ang2_deriv_theta_3D(theta_out,phi_out) dphivec = ang2_deriv_phi_3D(theta_out,phi_out) alpha = np.zeros(nbPix_scan) alpha = np.arccos( (dpvec[0,:]*dtvec[0,:]+dpvec[1,:]*dtvec[1,:]+dpvec[2,:]*dtvec[2,:]) /np.sqrt(dpvec[0,:]*dpvec[0,:]+dpvec[1,:]*dpvec[1,:]+dpvec[2,:]*dpvec[2,:]) /np.sqrt(dtvec[0,:]*dtvec[0,:]+dtvec[1,:]*dtvec[1,:]+dtvec[2,:]*dtvec[2,:]) ) beta = np.zeros(nbPix_scan) beta = np.arccos( (dpvec[0,:]*dphivec[0,:]+dpvec[1,:]*dphivec[1,:]+dpvec[2,:]*dphivec[2,:]) /np.sqrt(dpvec[0,:]*dpvec[0,:]+dpvec[1,:]*dpvec[1,:]+dpvec[2,:]*dpvec[2,:]) /np.sqrt(dphivec[0,:]*dphivec[0,:]+dphivec[1,:]*dphivec[1,:]+dphivec[2,:]*dphivec[2,:]) ) print '[lib_LBscan.py,gen_scan_c_mod] before summing up', (time.time()-runtime_i)/60., 'min' ind = np.where((beta >= 90./180.*pi) & (beta < 180./180.*pi)) alpha[ind[0]] = - alpha[ind[0]] ############################################################################3 if option_gen_ptg == True: fname=dir_out+'/'+title+'_'+str(int(today_julian))+'_latlon_eclip' tmpstr = time_julian[0]-2400000.5 # time_arr = np.arange(len(alpha)+1) # print len(theta_out), len(phi_out), len(alpha), len(time_arr) # np.savez(fname,time_julian[0],time_arr/float(sample_rate)+tmpstr*86400., pi/2.-theta_out, phi_out, alpha, beta) np.savez(fname,time_julian[0],float(sample_rate), pi/2.-theta_out, phi_out, alpha, beta) np.savez(fname+'_moon', lat_mpe/radeg, lon_mpe/radeg) # del(time_arr) del(time_julian) ############################################################################3 beta=0; dphivec=0; dpvec=0; dtvec=0; theta_out=0; phi_out=0 mapout = liblbscanc.Maps_summingup(nbPix, np.float_(ipix), alpha) print '[lib_LBscan.py,gen_scan_c_mod] before writing text file ['+str(option_gen_ptg)+']', (time.time()-runtime_i)/60., 'min' ipix=0; alpha=0 runtime_f = time.time() print '[lib_LBscan.py,gen_scan_c_mod] END of gen_scan_c_mod ', (time.time()-runtime_i)/60., 'min' print '' return mapout
def gen_scan_c_mod( theta_antisun, theta_boresight, freq_antisun, freq_boresight, \ total_time, today_julian, sample_rate, dir_out, filename, \ title, nside, runtime_i, option_gen_ptg): print '[lib_LBscan.py,gen_scan_c_mod] initial', (time.time()-runtime_i)/60., 'min' # define time related variables n_time = long(total_time*sample_rate) print '[lib_LBscan.py,gen_scan_c_mod] The number of samples in a day', n_time sec2date = (1.e-4/8.64) time_julian = np.arange(n_time)/(n_time-1.)*total_time*sec2date + today_julian # time in julian [day] # cal sun position print '[lib_LBscan.py,gen_scan_c_mod] before sun_position_quick', (time.time()-runtime_i)/60., 'min' DJD = mylib.convert_Julian2Dublin(time_julian) phi_asp, theta_asp = sun_position_quick(DJD) DJD = 0; time_i = time_julian /sec2date # time in [sec] # from ecliptic lat, lon convention to theta, phi convention theta_asp = pi/2.-theta_asp phi_antisun = mylib.wraparound_2pi(2.*pi*freq_antisun*time_i) phi_boresight = mylib.wraparound_2pi(2.*pi*freq_boresight*time_i) print '[lib_LBscan.py,gen_scan_c_mod] before LB_rotmatrix_multi', (time.time()-runtime_i)/60., 'min' p_out = liblbscanc.LB_rotmatrix_multi(theta_asp, phi_asp, theta_antisun, phi_antisun, theta_boresight, phi_boresight) theta_out = np.arctan2(np.sqrt(p_out[0,:]**2+p_out[1,:]**2),p_out[2,:]) phi_out = np.arctan2(p_out[1,:],p_out[0,:])+pi theta_asp=0; phi_asp=0; p_out=0; time_i=0; phi_antisun=0; phi_boresight=0; ipix = h.ang2pix( nside, theta_out, phi_out) nbPix_scan = len(ipix)-1 nbPix = h.nside2npix(nside) dpvec = np.zeros((3,nbPix_scan)) dtvec = np.zeros((3,nbPix_scan)) dphivec = np.zeros((3,nbPix_scan)) xp,yp,zp = ang2pos_3D(theta_out,phi_out) dpvec = ang2_scandirec_3D(xp,yp,zp) dtvec = ang2_deriv_theta_3D(theta_out,phi_out) dphivec = ang2_deriv_phi_3D(theta_out,phi_out) alpha = np.zeros(nbPix_scan) alpha = np.arccos( (dpvec[0,:]*dtvec[0,:]+dpvec[1,:]*dtvec[1,:]+dpvec[2,:]*dtvec[2,:]) /np.sqrt(dpvec[0,:]*dpvec[0,:]+dpvec[1,:]*dpvec[1,:]+dpvec[2,:]*dpvec[2,:]) /np.sqrt(dtvec[0,:]*dtvec[0,:]+dtvec[1,:]*dtvec[1,:]+dtvec[2,:]*dtvec[2,:]) ) beta = np.zeros(nbPix_scan) beta = np.arccos( (dpvec[0,:]*dphivec[0,:]+dpvec[1,:]*dphivec[1,:]+dpvec[2,:]*dphivec[2,:]) /np.sqrt(dpvec[0,:]*dpvec[0,:]+dpvec[1,:]*dpvec[1,:]+dpvec[2,:]*dpvec[2,:]) /np.sqrt(dphivec[0,:]*dphivec[0,:]+dphivec[1,:]*dphivec[1,:]+dphivec[2,:]*dphivec[2,:]) ) print '[lib_LBscan.py,gen_scan_c_mod] before summing up', (time.time()-runtime_i)/60., 'min' ind = np.where((beta >= 90./180.*pi) & (beta < 180./180.*pi)) alpha[ind[0]] = - alpha[ind[0]] ############################################################################3 if option_gen_ptg == True: fname=dir_out+'/ptg/LBPTG_latlon_eclip_'+str(int(today_julian)) tmpstr = time_julian[0]-2400000.5 time_arr = np.arange(len(alpha)+1) print len(theta_out), len(phi_out), len(alpha), len(time_arr) # outdict = {'julian_t0':time_julian[0], 'samplerate': sample_rate, 'lat': pi/2.-theta_out, 'lon': phi_out, 'pa': alpha, 'help': 'This dictionary in npy contains with the keyword of \n julian_t0 (julian time of the first sample), \n samplerate (samplerate in [Hz]), \n lon (ecliptic coordinate in [rad]) \n lat (ecliptic coordinate in [rad]), \n pa (alpha angle [rad] wrt theta hat angle) \n This pointing file is generated by the gen_scan_c_mod in lib_LBScan.py written by T.Matsumura.'} np.savez(fname, \ julian_t0=time_julian[0], \ sample_rate= sample_rate, \ lat=pi/2.-theta_out, \ lon=phi_out, \ pa=alpha, \ help='This dictionary in npy contains with the keyword of \n julian_t0 (julian time of the first sample), \n samplerate (sample_rate in [Hz]), \n lon (ecliptic coordinate in [rad]) \n lat (ecliptic coordinate in [rad]), \n pa (alpha angle [rad] wrt theta hat angle) \n This pointing file is generated by the gen_scan_c_mod in lib_LBScan.py written by T.Matsumura.') db_name = dir_out+'/ptg/LBPTG_latlon_eclip' fname_tmp='LBPTG_latlon_eclip_'+str(int(today_julian)) write_ptgdb(db_name+'.db',time_julian[0],dir_out+'/ptg/'+fname_tmp) write_ptgidxdb(db_name+'_'+str(int(today_julian))+'.db',today_julian,sample_rate,freq_boresight) del(time_arr) del(time_julian) ############################################################################3 beta=0; dphivec=0; dpvec=0; dtvec=0; theta_out=0; phi_out=0 mapout = liblbscanc.Maps_summingup(nbPix, np.float_(ipix), alpha) print '[lib_LBscan.py,gen_scan_c_mod] before writing text file ['+str(option_gen_ptg)+']', (time.time()-runtime_i)/60., 'min' ipix=0; alpha=0 runtime_f = time.time() print '[lib_LBscan.py,gen_scan_c_mod] END of gen_scan_c_mod ', (time.time()-runtime_i)/60., 'min' print '' return mapout
def sun_position_quick(DJD): freq = 1./((365.25)*24.*60.*60.) phi = mylib.wraparound_2pi(2.*pi*freq*DJD*(8.64*1.e4)) return phi, np.zeros(len(phi))
def gen_scan_c( theta_antisun, theta_boresight, freq_antisun, freq_boresight, \ total_time, today_julian, sample_rate, dir_out, filename, \ title, nside, runtime_i, option_gen_ptg): # define time related variables n_time = long(total_time*sample_rate) print '[lib_LBscan.py] The number of samples in a day', n_time sec2date = (1.e-4/8.64) time_julian = np.arange(n_time)/(n_time-1.)*total_time*sec2date + today_julian # time in julian [day] # cal sun position DJD = mylib.convert_Julian2Dublin(time_julian) ra_sp, dec_sp = sun_position(DJD) # convert ra/dec to ecliptic coordinate lon_spe, lat_spe = mylib.EULER( ra_sp*radeg, dec_sp*radeg, 3, 'J2000') ra_sp = 0 dec_sp = 0 time_i = time_julian /sec2date # time in [sec] # convert the sun vector to anti-sun vector lat_aspe = -lat_spe/radeg lon_aspe = lon_spe/radeg + pi lat_spe = 0 lon_spe = 0 # idxwrap = np.where( lon_aspe > 2.*pi ) # if len(idxwrap[0]) == 1: # if idxwrap[0] == -1: lon_aspe = lon_aspe # if idxwrap[0] != -1: lon_aspe[idxwrap[0]] = lon_aspe[idxwrap[0]] - 2.*pi # else: lon_aspe[idxwrap[0]] = lon_aspe[idxwrap[0]] - 2.*pi # from ecliptic lat, lon convention to theta, phi convention theta_asp = pi/2.-lat_aspe phi_asp = lon_aspe x_asp,y_asp,z_asp = ang2pos_3D(theta_asp,phi_asp) # for i in range(0,len(x_asp)): # print '>', theta_asp[i]/pi*180., phi_asp[i]/pi*180., x_asp[i], y_asp[i], z_asp[i] phi_antisun = mylib.wraparound_2pi(2.*pi*freq_antisun*time_i) phi_boresight = mylib.wraparound_2pi(2.*pi*freq_boresight*time_i) # for i in range(0,len(x_asp)): # print '>', theta_asp[i]/pi*180., phi_asp[i]/pi*180., x_asp[i], y_asp[i], z_asp[i], phi_antisun[i]/pi*180., phi_boresight[i]/pi*180. # py.subplot(211) # py.plot(phi_antisun/pi*180.) # py.subplot(212) # py.plot(phi_boresight/pi*180.) # py.show() # theta_out = np.zeros(n_time) # phi_out = np.zeros(n_time) print '[lib_LBscan.py,gen_scan] current run time: before matrix', (time.time()-runtime_i)/60., 'min' # print theta_asp, phi_asp # print theta_antisun/pi*180., phi_antisun # print theta_boresight/pi*180., phi_boresight # py.subplot(211) # py.plot(phi_antisun) # py.subplot(212) # py.plot(phi_boresight) # py.show() # sys.exit() p_out = liblbscanc.LB_rotmatrix_multi(theta_asp, phi_asp, theta_antisun, phi_antisun, theta_boresight, phi_boresight) # for i in range(0,n_time): # if y_asp[i] >= 0: rel_phi = np.arccos(x_asp[i]) # if y_asp[i] < 0: rel_phi = -np.arccos(x_asp[i]) + 2.*pi # # p_asp = [[x_asp[i]],[y_asp[i]],[z_asp[i]]] # p_out = rot_xy(-rel_phi) * rot_xz(-pi/2.) \ # * rot_xy(-phi_antisun[i]) * rot_xz(-theta_antisun) \ # * rot_xy(-phi_boresight[i]) * rot_xz(-theta_boresight) \ # * rot_xz(theta_antisun) * rot_xy(phi_antisun[i]) \ # * rot_xy(-phi_antisun[i]) * rot_xz(-theta_antisun) \ # * rot_xz(pi/2.) * rot_xy(rel_phi) \ # * p_asp theta_out = np.arctan2(np.sqrt(p_out[0,:]**2+p_out[1,:]**2),p_out[2,:]) phi_out = np.arctan2(p_out[1,:],p_out[0,:])+pi # py.subplot(311) # py.plot(phi_out/pi*180.,theta_out/pi*180.,'.') # py.subplot(312) # py.plot(theta_out/pi*180.) # py.subplot(313) # py.plot(phi_out/pi*180.) # py.show() # sys.exit() print 'current run time: after matrix', (time.time()-runtime_i)/60., 'min' print 'after the first for loop' # p_asp = 0 # x_asp = 0 # y_asp = 0 # z_asp = 0 lon_aspe = 0 lat_aspe = 0 ipix = h.ang2pix( nside, theta_out, phi_out) nbPix_scan = len(ipix)-1 nbPix = h.nside2npix(nside) dpvec = np.zeros((3,nbPix_scan)) dtvec = np.zeros((3,nbPix_scan)) dphivec = np.zeros((3,nbPix_scan)) xp,yp,zp = ang2pos_3D(theta_out,phi_out) dpvec = ang2_scandirec_3D(xp,yp,zp) dtvec = ang2_deriv_theta_3D(theta_out,phi_out) dphivec = ang2_deriv_phi_3D(theta_out,phi_out) alpha = np.zeros(nbPix_scan) alpha = np.arccos( (dpvec[0,:]*dtvec[0,:]+dpvec[1,:]*dtvec[1,:]+dpvec[2,:]*dtvec[2,:]) /np.sqrt(dpvec[0,:]*dpvec[0,:]+dpvec[1,:]*dpvec[1,:]+dpvec[2,:]*dpvec[2,:]) /np.sqrt(dtvec[0,:]*dtvec[0,:]+dtvec[1,:]*dtvec[1,:]+dtvec[2,:]*dtvec[2,:]) ) beta = np.zeros(nbPix_scan) beta = np.arccos( (dpvec[0,:]*dphivec[0,:]+dpvec[1,:]*dphivec[1,:]+dpvec[2,:]*dphivec[2,:]) /np.sqrt(dpvec[0,:]*dpvec[0,:]+dpvec[1,:]*dpvec[1,:]+dpvec[2,:]*dpvec[2,:]) /np.sqrt(dphivec[0,:]*dphivec[0,:]+dphivec[1,:]*dphivec[1,:]+dphivec[2,:]*dphivec[2,:]) ) print 'current run time: before summing up ', (time.time()-runtime_i)/60., 'min' Nhits = np.zeros(nbPix) clfom = np.zeros(nbPix) cos_r1 = np.zeros(nbPix) sin_r1 = np.zeros(nbPix) cos_r2 = np.zeros(nbPix) sin_r2 = np.zeros(nbPix) cos_r4 = np.zeros(nbPix) sin_r4 = np.zeros(nbPix) for i in range(0,nbPix_scan): Nhits[ipix[i]] += 1. # if ((alpha[i] >= 0./180.*pi) and (alpha[i] < 90./180.*pi) # and (beta[i] >= 0./180.*pi) and (beta[i] < 90./180.*pi)): # alpha[i] = alpha[i] # # if ((alpha[i] >= 90./180.*pi) and (alpha[i] < 180./180.*pi) # and (beta[i] >= 0./180.*pi) and (beta[i] < 90./180.*pi)): # alpha[i] = alpha[i] # # if ((alpha[i] >= 0./180.*pi) and (alpha[i] < 90./180.*pi) # and (beta[i] >= 90./180.*pi) and (beta[i] < 180./180.*pi)): # alpha[i] = - alpha[i] # # if ((alpha[i] >= 90./180.*pi) and (alpha[i] < 180./180.*pi) # and (beta[i] >= 90./180.*pi) and (beta[i] < 180./180.*pi)): # alpha[i] = - alpha[i] # print '' # print alpha[i]/pi*180., beta[i]/pi*180., alpha[i]/pi*180.+beta[i]/pi*180., alpha[i]/pi*180.-beta[i]/pi*180. # if (alpha[i] >= 180./180.*pi): alpha[i] = pi - alpha[i] if ((beta[i] >= 90./180.*pi) and (beta[i] < 180./180.*pi)): alpha[i] = - alpha[i] # print alpha[i]/pi*180., beta[i]/pi*180., alpha[i]/pi*180.+beta[i]/pi*180., alpha[i]/pi*180.-beta[i]/pi*180. # if i == 10000: return cos_r1[ipix[i]] += np.cos(alpha[i]) sin_r1[ipix[i]] += np.sin(alpha[i]) cos_r2[ipix[i]] += np.cos(2.*alpha[i]) sin_r2[ipix[i]] += np.sin(2.*alpha[i]) cos_r4[ipix[i]] += np.cos(4.*alpha[i]) sin_r4[ipix[i]] += np.sin(4.*alpha[i]) ############################################################################3 if option_gen_ptg == True: fname=dir_out+'/ptg/'+title+'_'+str(int(today_julian))+'_latlon_eclip.txt' tmpstr = time_julian[0]-2400000.5 time_arr = np.arange(len(alpha)) print len(theta_out), len(phi_out), len(alpha), len(time_arr) mylib.write_txt5(fname,time_arr/float(sample_rate)+tmpstr, pi/2.-theta_out, phi_out, alpha, beta) ############################################################################3 runtime_m = time.time() print 'current run time: after summing up', (runtime_m-runtime_i)/60., 'min' h.write_map( 'dataout/'+filename+'/fits/nhits_tmp.fits', Nhits) h.write_map( 'dataout/'+filename+'/fits/cos_r1_tmp.fits', cos_r1) h.write_map( 'dataout/'+filename+'/fits/sin_r1_tmp.fits', sin_r1) h.write_map( 'dataout/'+filename+'/fits/cos_r2_tmp.fits', cos_r2) h.write_map( 'dataout/'+filename+'/fits/sin_r2_tmp.fits', sin_r2) h.write_map( 'dataout/'+filename+'/fits/cos_r4_tmp.fits', cos_r4) h.write_map( 'dataout/'+filename+'/fits/sin_r4_tmp.fits', sin_r4) runtime_f = time.time() print 'final run time: ', (runtime_f-runtime_i)/60., 'min' print '[lib_LBscan.py/gen_scan_c] End of gen_scan_c()' print ''