예제 #1
0
def save_other_target(img, center_QSO, other_target,target_name,c_psf_list,extra_psfs,ID=None,reg_ty=None,ifsave=True):
    fig = plt.figure(figsize=(15,15))
    ax=fig.add_subplot(1,1,1)
    import copy, matplotlib
    my_cmap = copy.copy(matplotlib.cm.get_cmap('gist_heat')) # copy the default cmap
    my_cmap.set_bad('black')
    if reg_ty == None:
        vmax = 2.2
        vmin = 1.e-2
        QSO_box_size = 30
        PSF_box_size = 20
    elif reg_ty == 'astrodrz_06':
        vmax = 2.1 
        vmin = 1.e-3
        QSO_box_size = 60
        PSF_box_size = 40
    elif reg_ty == 'acs':
        vmax = 2.1 
        vmin = 1.e-3
        QSO_box_size = 100
        PSF_box_size = 60 
    cax=ax.imshow(img,origin='lower', cmap=my_cmap, norm=LogNorm(), vmin=vmin, vmax=vmax)
    QSO_reg = pix_region(center_QSO, radius= QSO_box_size)
    QSO_mask = QSO_reg.to_mask(mode='center')
    ax.text(center_QSO[0]-2*QSO_box_size, center_QSO[1]+1.5*QSO_box_size, 'QSO',color='white', fontsize=20)
    ax.add_patch(QSO_mask.bbox.as_patch(facecolor='none', edgecolor='white', linewidth=2))
#   setting for other target
    target_reg = pix_region(other_target, radius= PSF_box_size)
    target_mask = target_reg.to_mask(mode='center')
    ax.add_patch(target_mask.bbox.as_patch(facecolor='none', edgecolor='white', linewidth=2))
    ax.text(other_target[0]-5*PSF_box_size, other_target[1]+2*PSF_box_size, '{0}'.format(target_name),color='white', fontsize=15)
    ax.xaxis.set_visible(False)
    ax.yaxis.set_visible(False)
#    plt.colorbar(cax)
    count = 0
    if c_psf_list is not None:
        for i in range(len(c_psf_list)):
            PSF_reg = pix_region(c_psf_list[i], radius= PSF_box_size)
            PSF_mask = PSF_reg.to_mask(mode='center')
            ax.add_patch(PSF_mask.bbox.as_patch(facecolor='none', edgecolor='blue', linewidth=2))
            ax.text(c_psf_list[i][0]-2*PSF_box_size, c_psf_list[i][1]+2*PSF_box_size, 'PSF{0}'.format(count),color='white', fontsize=15)
            ax.xaxis.set_visible(False)
            ax.yaxis.set_visible(False)
            count += 1
    if extra_psfs is not None:
        for i in range(len(extra_psfs)):
            PSF_reg = pix_region(extra_psfs[i], radius= PSF_box_size)
            PSF_mask = PSF_reg.to_mask(mode='center')
            ax.add_patch(PSF_mask.bbox.as_patch(facecolor='none', edgecolor='yellow', linewidth=2))
            ax.text(extra_psfs[i][0]-2*PSF_box_size, extra_psfs[i][1]+2*PSF_box_size, 'PSF{0}?'.format(count),color='white', fontsize=15)
            ax.xaxis.set_visible(False)
            ax.yaxis.set_visible(False)
            count += 1
#    plt.colorbar(cax)
    if not ID == None:
        ax.text(len(img)*0.05, len(img)*0.8, ID,color='white', fontsize=30)
    if ifsave == True:
        fig.savefig('QSO_PSF_loc.pdf')
예제 #2
0
def QSO_star_color(img, QSO_pos, QSO_mags, psf_list, mag_0, mag_1,
                   mag_diff, ID, reg_ty='astrodrz_06', ifsave=False,
                   label_shift_NO=(),shift_where=None):
    fig = plt.figure(figsize=(15,15))
    ax=fig.add_subplot(1,1,1)
    import copy, matplotlib
    my_cmap = copy.copy(matplotlib.cm.get_cmap('gist_heat')) # copy the default cmap
    my_cmap.set_bad('black')
    if reg_ty == 'astrodrz_06':
        vmax = 2.1 
        vmin = 1.e-3
        QSO_box_size = 40
        PSF_box_size = 40
    elif reg_ty == 'acs':
        vmax = 2.1 
        vmin = 1.e-3
        QSO_box_size = 60
        PSF_box_size = 60 
    ax.imshow(img,origin='lower', cmap=my_cmap, norm=LogNorm(), vmin=vmin, vmax=vmax)
    QSO_reg = pix_region(QSO_pos, radius= QSO_box_size)
    QSO_mask = QSO_reg.to_mask(mode='center')
    ax.text(QSO_pos[0]-4*QSO_box_size, QSO_pos[1]+2.6*QSO_box_size, 'QSO',color='white', fontsize=13)
    ax.text(QSO_pos[0]-1*QSO_box_size, QSO_pos[1]+3.6*QSO_box_size, '{0}'.format(round(QSO_mags[0],2)),color='yellow', fontsize=13)
    ax.text(QSO_pos[0]-1*QSO_box_size, QSO_pos[1]+2.6*QSO_box_size, '{0}'.format(round(QSO_mags[1],2)),color='c', fontsize=13)
    ax.text(QSO_pos[0]-1*QSO_box_size, QSO_pos[1]+1.6*QSO_box_size, '{0}'.format(round(QSO_mags[0]-QSO_mags[1],2)),color='white', fontsize=13)
    ax.add_patch(QSO_mask.bbox.as_patch(facecolor='none', edgecolor='white', linewidth=2))
    count=0
    count_shift = 0
    for i in range(len(psf_list)):
        PSF_reg = pix_region(psf_list[i], radius= PSF_box_size)
        PSF_mask = PSF_reg.to_mask(mode='center')
        if count not in label_shift_NO:
            ax.add_patch(PSF_mask.bbox.as_patch(facecolor='none', edgecolor='blue', linewidth=2))
            ax.text(psf_list[i][0]-4*PSF_box_size, psf_list[i][1]+2*PSF_box_size, 'PSF{0}'.format(count),color='white', fontsize=13)
            ax.text(psf_list[i][0]-1*PSF_box_size, psf_list[i][1]+3*PSF_box_size, '{0}'.format(round(mag_0[i],2)),color='yellow', fontsize=13)
            ax.text(psf_list[i][0]-1*PSF_box_size, psf_list[i][1]+2*PSF_box_size, '{0}'.format(round(mag_1[i],2)),color='c', fontsize=13)
            ax.text(psf_list[i][0]-1*PSF_box_size, psf_list[i][1]+1*PSF_box_size, '{0}'.format(round(mag_diff[i],2)),color='white', fontsize=13)
            ax.xaxis.set_visible(False)
            ax.yaxis.set_visible(False)
        elif count in label_shift_NO:
            shift = shift_label_index(shift_where[count_shift])        
            ax.add_patch(PSF_mask.bbox.as_patch(facecolor='none', edgecolor='blue', linewidth=2))
            ax.text(psf_list[i][0]+shift[0]*PSF_box_size, psf_list[i][1]+shift[1]*PSF_box_size, 'PSF{0}'.format(count),color='white', fontsize=13)
            ax.text(psf_list[i][0]+(shift[0]+3)*PSF_box_size, psf_list[i][1]+(shift[1]+1)*PSF_box_size, '{0}'.format(round(mag_0[i],2)),color='yellow', fontsize=13)
            ax.text(psf_list[i][0]+(shift[0]+3)*PSF_box_size, psf_list[i][1]+(shift[1]+0)*PSF_box_size, '{0}'.format(round(mag_1[i],2)),color='c', fontsize=13)
            ax.text(psf_list[i][0]+(shift[0]+3)*PSF_box_size, psf_list[i][1]+(shift[1]-1)*PSF_box_size, '{0}'.format(round(mag_diff[i],2)),color='white', fontsize=13)
            ax.xaxis.set_visible(False)
            ax.yaxis.set_visible(False)
            count_shift += 1
        count += 1
    if not ID == None:
        ax.text(len(img)*0.05, len(img)*0.8, ID,color='white', fontsize=30)
    if ifsave == True:
        fig.savefig('PSF_color.pdf')
예제 #3
0
def QSO_star_mag(img, center_QSO, QSO_mag, psf_list,mag, ID=None, reg_ty='astrodrz_06', ifsave=False):
    fig = plt.figure(figsize=(15,15))
    ax=fig.add_subplot(1,1,1)
    import copy, matplotlib
    my_cmap = copy.copy(matplotlib.cm.get_cmap('gist_heat')) # copy the default cmap
    my_cmap.set_bad('black')
    if reg_ty == None:
        vmax = 2.2
        vmin = 1.e-2
        QSO_box_size = 30
        PSF_box_size = 20
    elif reg_ty == 'astrodrz_06':
        vmax = 2.1 
        vmin = 1.e-3
        QSO_box_size = 60
        PSF_box_size = 40
    elif reg_ty == 'acs':
        vmax = 2.1 
        vmin = 1.e-3
        QSO_box_size = 100
        PSF_box_size = 60 
    ax.imshow(img,origin='lower', cmap=my_cmap, norm=LogNorm(), vmin=vmin, vmax=vmax)
    QSO_reg = pix_region(center_QSO, radius= QSO_box_size)
    QSO_mask = QSO_reg.to_mask(mode='center')
    ax.text(center_QSO[0]-3*QSO_box_size, center_QSO[1]+1.5*QSO_box_size, 'QSO:',color='white', fontsize=15)
    ax.text(center_QSO[0]+0*QSO_box_size, center_QSO[1]+1.5*QSO_box_size, '{0}'.format(round(QSO_mag,2)),color='white', fontsize=15)
    ax.add_patch(QSO_mask.bbox.as_patch(facecolor='none', edgecolor='white', linewidth=2))
    count=0
    for i in range(len(psf_list)):
        PSF_reg = pix_region(psf_list[i], radius= PSF_box_size)
        PSF_mask = PSF_reg.to_mask(mode='center')
        ax.add_patch(PSF_mask.bbox.as_patch(facecolor='none', edgecolor='blue', linewidth=2))
        ax.text(psf_list[i][0]-5*PSF_box_size, psf_list[i][1]+2*PSF_box_size, 'PSF{0}:'.format(count),color='white', fontsize=13)
        ax.text(psf_list[i][0]-1*PSF_box_size, psf_list[i][1]+2*PSF_box_size, '{0}'.format(round(mag[i],2)),color='c', fontsize=13)
        ax.xaxis.set_visible(False)
        ax.yaxis.set_visible(False)
        count += 1
    if not ID == None:
        ax.text(len(img)*0.05, len(img)*0.8, ID,color='white', fontsize=30)
    if ifsave == True:
        fig.savefig('PSF_mag.pdf')
예제 #4
0
def cut_image(image, center, radius):
    region = pix_region(center, radius=radius)
    cut = region.to_mask(mode='exact')
    cut_image = cut.cutout(image)
    return cut_image
예제 #5
0
def save_loc_png(img,
                 center_QSO,
                 c_psf_list=None,
                 extra_psfs=None,
                 ID=None,
                 label=None,
                 reg_ty=None,
                 ifsave=True,
                 label_shift_NO=(),
                 shift_where=None,
                 v_max=None,
                 v_min=None):
    '''
    label shift_where: 1,2,3,4 --- up, right, down, left
    '''
    fig = plt.figure(figsize=(15, 15))
    ax = fig.add_subplot(1, 1, 1)
    import copy, matplotlib
    my_cmap = copy.copy(
        matplotlib.cm.get_cmap('gist_heat'))  # copy the default cmap
    my_cmap.set_bad('black')
    if reg_ty == None:
        vmax = 2.2
        vmin = 1.e-2
        QSO_box_size = 30
        PSF_box_size = 20
    elif reg_ty == 'astrodrz_06':
        vmax = 2.1
        vmin = 1.e-3
        QSO_box_size = 60
        PSF_box_size = 40
    elif reg_ty == 'acs':
        vmax = 2.1
        vmin = 1.e-3
        QSO_box_size = 100
        PSF_box_size = 60
    elif reg_ty == 'flt':
        vmax = 2.1
        vmin = 1.e-3
        QSO_box_size = 100
        PSF_box_size = 60
    if v_max != None:
        vmax = v_max
    if v_min != None:
        vmin = v_min
    cax = ax.imshow(img,
                    origin='lower',
                    cmap=my_cmap,
                    norm=LogNorm(),
                    vmin=vmin,
                    vmax=vmax)
    QSO_reg = pix_region(center_QSO, radius=QSO_box_size)
    QSO_mask = QSO_reg.to_mask(mode='center')
    ax.text(center_QSO[0] - 2 * QSO_box_size,
            center_QSO[1] + 1.5 * QSO_box_size,
            'QSO',
            color='white',
            fontsize=20)
    ax.add_patch(
        QSO_mask.bbox.as_artist(facecolor='none',
                                edgecolor='white',
                                linewidth=2))
    count = 0
    count_shift = 0
    if label == None:
        name = 'PSF'
    elif label is not None:
        name = label
    if c_psf_list is not None:
        for i in range(len(c_psf_list)):
            PSF_reg = pix_region(c_psf_list[i], radius=PSF_box_size)
            PSF_mask = PSF_reg.to_mask(mode='center')
            ax.add_patch(
                PSF_mask.bbox.as_artist(facecolor='none',
                                        edgecolor='blue',
                                        linewidth=2))
            if count not in label_shift_NO:
                ax.text(c_psf_list[i][0] - 2 * PSF_box_size,
                        c_psf_list[i][1] + 2 * PSF_box_size,
                        '{1}{0}'.format(count, name),
                        color='white',
                        fontsize=15)
            else:
                if count in label_shift_NO:
                    shift = shift_label_index(shift_where[count_shift])
                    ax.text(c_psf_list[i][0] + shift[0] * PSF_box_size,
                            c_psf_list[i][1] + shift[1] * PSF_box_size,
                            '{1}{0}'.format(count, name),
                            color='white',
                            fontsize=15)
                    count_shift += 1
            ax.xaxis.set_visible(False)
            ax.yaxis.set_visible(False)
            count += 1
#    plt.colorbar(cax)
    if extra_psfs is not None:
        for i in range(len(extra_psfs)):
            PSF_reg = pix_region(extra_psfs[i], radius=PSF_box_size)
            PSF_mask = PSF_reg.to_mask(mode='center')
            ax.add_patch(
                PSF_mask.bbox.as_artist(facecolor='none',
                                        edgecolor='yellow',
                                        linewidth=2))
            if count not in label_shift_NO:
                ax.text(extra_psfs[i][0] - 2 * PSF_box_size,
                        extra_psfs[i][1] + 2 * PSF_box_size,
                        '{1}{0}?'.format(count, name),
                        color='white',
                        fontsize=15)
            else:
                if count in label_shift_NO:
                    shift = shift_label_index(shift_where[count_shift])
                    print(extra_psfs[i][0], shift[0] * PSF_box_size)
                    ax.text(extra_psfs[i][0] + shift[0] * PSF_box_size,
                            extra_psfs[i][1] + shift[1] * PSF_box_size,
                            '{1}{0}?'.format(count, name),
                            color='white',
                            fontsize=15)
                    count_shift += 1
            ax.xaxis.set_visible(False)
            ax.yaxis.set_visible(False)
            count += 1


#    plt.colorbar(cax)
    if not ID == None:
        ax.text(len(img) * 0.05,
                len(img) * 0.8,
                ID,
                color='white',
                fontsize=30)
    if ifsave == True:
        fig.savefig('QSO_{0}_loc.pdf'.format(name))
    plt.show()