Example #1
0
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
Example #2
0
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