Exemplo n.º 1
0
def simple_stack(logger,parsed):
    '''code to run the stacks'''
    #read in parameters from the command line
    fields = parsed['fields']
    bands = parsed['bands']
    mys = parsed['mys']
    chips = parsed['chips']
    workdir = parsed['workdir']
    cuts={'zp':parsed['zcut'],'psf':parsed['pcut'],'teff':parsed['tcut']}
    logger.info("Parsed command line and will work on:\n Fields: %s \n Bands: %s \n MYs: %s \n Chips: %s"%(fields,bands,mys,chips))
    for fi in fields:
        for b in bands:
            try:
                if parsed['optimized']:
                    cuts = get_cuts(fi,b)
            except:
                pass
            for my in mys:

                s = stack.Stack(fi,b,my,chips,workdir,cuts=cuts,db=True)
                s.do_my_stack(cuts=cuts,final=True)
                s.run_stack_source(cuts=cuts,final=True)
                s.init_phot()
                tempfiles = glob.glob('/media/data3/wiseman/des/coadding/temp/*%s_%s_%s*'%(my,fi,b))
                for f in tempfiles:
                    os.remove(f)
Exemplo n.º 2
0
def multi_init_phot(my, f, b, chips):
    #cuts = {'psf':1.3,'teff':0.02}
    cuts = stack_tools.get_cuts(f, b)
    args = [my, f, b, cuts]
    pool_size = multiprocessing.cpu_count() * 2
    act = multiprocessing.active_children()
    pool = pp.ProcessPool(
        processes=pool_size,
        maxtasksperchild=2,
    )
    pool._clear()
    pool._serve()

    chips = list(chips)

    all_args = []
    for c in chips:
        all_args.append([args, c])
        #p = Process(target=worker,args=(args,c))
        #p.start()
        #p.join()

    results = pool.map(init_phot_worker, all_args)

    pool.close()
    pool.join()
    return results
Exemplo n.º 3
0
def main():
    for f in fields:
        f = 'SN-' + f
        for b in bands:
            cuts = stack_tools.get_cuts(f, b)
            for y in [1, 2, 3, 4, 5]:
                #cuts = {'teff':0.02,'psf':1.3}

                multi_init_phot(y, f, b, good_des_chips)
    print(bad_cats)
Exemplo n.º 4
0
def add_lim(y,f,chip):
    res_df = pd.read_csv(os.path.join('/media/data3/wiseman/des/coadding/5yr_stacks','MY%s'%y,f,'CAP',str(chip),'%s_%s_%s_obj_deep.cat'%(y,f,chip)),index_col=0)
    for b in bands:
        cuts = get_cuts(f,b)
        s = stack.Stack(f, b, y, [str(chip)] ,'coadding',cuts=cuts)
        quals= np.loadtxt(os.path.join(s.band_dir,str(chip),'ana','%s_ana.qual'%s.cutstring))
        zp,zp_sig,av_fwhm = (float(quals[i]) for i in [0,1,2])
        with open(os.path.join(s.band_dir,str(chip),'ana','%s_%s_%s_%s_init_wgtd.result'%(y,f,s.band,chip)),'r') as res:
            header = [next(res) for x in range(9)]
        limmag = header[-1].split(' ')[-1].strip('\n')
        limflux = 10**((float(limmag)-zp)/-2.5)
        res_df['LIMMAG_%s'%b] = limmag
        res_df['LIMFLUX_%s'%b] = limflux
    res_df.to_csv(os.path.join('/media/data3/wiseman/des/coadding/5yr_stacks','MY%s'%y,f,'CAP',str(chip),'%s_%s_%s_obj_deep.cat'%(y,f,chip)))
    print ('Done',y,f,chip)
Exemplo n.º 5
0
def main(args, logger):
    sn_name = args.sn_name
    match_dist = args.distance

    if sn_name:
        l = [sn_name]
    else:
        l = np.genfromtxt(args.namelist, dtype=str, delimiter='\n')
    for sn in l:
        sn_name = sn
        sn_cap_dir = os.path.join(
            '/media/data3/wiseman/des/coadding/5yr_stacks/CAP/', sn_name)
        logger.info("Locating result file for %s ..." % sn)
        logger.info(
            "First querying the DES database to get the RA,Dec of %s." % sn)
        sn_ra, sn_dec, f, y, chip = get_sn_dat(sn)
        logger.info("%s has the following info:" % sn)
        logger.info("RA:     %s" % sn_ra)
        logger.info("Dec:    %s" % sn_dec)
        logger.info("Season: %s" % y)
        logger.info("Field:  %s" % f)
        logger.info("CCD:    %s" % chip)
        sngals_deep = pd.read_csv(
            '/media/data3/wiseman/des/coadding/results/sngals_deep_v6.csv',
            index_col=0)
        sn_res = sngals_deep[sngals_deep['TRANSIENT_NAME'] == sn]
        has_spec = sn_res[sn_res['SPECZ'] > 0]
        if len(has_spec) > 0:
            loc = has_spec.index
        host = sn_res[sn_res['DLR_RANK'] == 1]
        phost = sn_res[sn_res['DLR_RANK'] == -1]
        if len(host) > 0:
            logger.info('Found the host! \n %s' % host)

        logger.info("You want a stamp of %s too. So I'm making one." % sn)
        logger.warning("You might need AplPy installed...")
        import aplpy
        fig, ax = plt.subplots()  #figsize=(16,9)
        w = args.size / 3600
        ax.set_xticks([])
        ax.set_yticks([])
        for loc in ['top', 'right', 'left', 'bottom']:
            ax.spines[loc].set_visible(False)
        #ax.set_ylabel('Declination (J2000)',fontsize=12,labelpad = 30)
        hor_line = np.array([[sn_ra - (w / 7), sn_ra + (w / 7)],
                             [sn_dec, sn_dec]])
        ver_line = np.array([[sn_ra, sn_ra],
                             [sn_dec - (w / 7), sn_dec + (w / 7)]])
        if args.band != 'All':
            bands = [args.band]
        else:
            bands = ['g', 'r', 'i', 'z']
        palette = itertools.cycle(
            sns.color_palette(palette='colorblind', n_colors=5))
        for counter, b in enumerate(bands):

            color = next(palette)
            if counter == 1:
                color = next(palette)
            try:
                img_fn = glob.glob(
                    os.path.join(sn_cap_dir,
                                 'ccd_*%s*_sci.resamp.fits' % b))[0]
            except:
                from des_stacks import des_stack as stack
                from des_stacks.utils.stack_tools import make_cap_stamps, get_cuts
                cuts = [get_cuts(f, b) for b in bands]
                sg, sr, si, sz = [
                    stack.Stack(f, b, y, [str(chip)], 'coadding',
                                cuts[counter])
                    for counter, b in enumerate(bands)
                ]
                make_cap_stamps(sg, sr, si, sz, chip, sn_name, sn_ra, sn_dec,
                                args.width, args.width)
                img_fn = glob.glob(
                    os.path.join(sn_cap_dir,
                                 'ccd_*%s*_sci.resamp.fits' % b))[0]

            if os.path.isfile(img_fn):

                sn_res = sn_res[sn_res['RA'] < sn_ra + (w)]
                sn_res = sn_res[sn_res['RA'] > sn_ra - (w)]
                sn_res = sn_res[sn_res['DEC'] < sn_dec + (w)]
                sn_res = sn_res[sn_res['DEC'] > sn_dec - (w)]

                img = fits.open(img_fn)
                if not args.paper:
                    plot_locs = plot_locs_labeled
                else:
                    plot_locs = plot_locs_paper

                if args.band != 'All':
                    fg = aplpy.FITSFigure(img, figure=fig)
                else:
                    fg = aplpy.FITSFigure(img,
                                          figure=fig,
                                          subplot=plot_locs[b])
                try:
                    fg.recenter(sn_ra, sn_dec, w)
                except:
                    logger.info('Could not recenter to outside the frame')

                fg.show_lines([ver_line, hor_line], color=color, linewidth=2.5)
                fg.show_grayscale(vmin=float(args.vmin), vmax=float(args.vmax))
                fg.axis_labels.hide()
                fg.tick_labels.hide()
                fg.set_theme('publication')
                fg.ticks.set_length(0)
                if args.paper:
                    fg.ticks.hide()
                fg.add_label(0.9,
                             0.8,
                             b,
                             relative=True,
                             color=color,
                             fontsize=26,
                             weight='bold')
                fg.add_scalebar(5 / 3600,
                                color=color,
                                linewidth=3,
                                fontsize=20,
                                weight='bold')
                fg.scalebar.set_label('5"')
                # now add some region ellipses and axis_labels
                try:
                    i = sn_res[(sn_res['RA'] < host['RA'].values[0] + 0.00001)
                               & (sn_res['RA'] > host['RA'].values[0] -
                                  0.00001)].index
                    sn_res.drop(i, inplace=True)
                except:
                    pass
                try:
                    j = sn_res[
                        (sn_res['RA'] < has_spec['RA'].values[0] + 0.00001)
                        & (sn_res['RA'] > has_spec['RA'].values[0] -
                           0.00001)].index
                    sn_res.drop(j, inplace=True)
                except:
                    pass

                if not args.finder and not args.paper:
                    try:
                        As, Bs, thetas = sn_res.A_IMAGE.values * pix_arcsec * 4 / 3600, sn_res.B_IMAGE.values * pix_arcsec * 4 / 3600, sn_res.THETA_IMAGE.values
                        ras, decs = sn_res.RA.values, sn_res.DEC.values
                        mags, errs = sn_res['MAG_AUTO_%s' %
                                            b.capitalize()].values, sn_res[
                                                'MAGERR_AUTO_%s' %
                                                b.capitalize()].values

                        fg.show_ellipses(ras,
                                         decs,
                                         As,
                                         Bs,
                                         thetas,
                                         edgecolor='g',
                                         facecolor='none',
                                         linewidth=1,
                                         alpha=.8)
                        if len(host) > 0:
                            if not math.isnan(host['SPECZ'].values[0]):
                                fg.show_ellipses(host.RA.values,
                                                 host.DEC.values,
                                                 4 * host.A_IMAGE.values *
                                                 pix_arcsec / 3600,
                                                 4 * host.B_IMAGE.values *
                                                 pix_arcsec / 3600,
                                                 host.THETA_IMAGE.values,
                                                 edgecolor='r',
                                                 facecolor='none',
                                                 linewidth=1)
                            else:
                                fg.show_ellipses(host.RA.values,
                                                 host.DEC.values,
                                                 4 * host.A_IMAGE.values *
                                                 pix_arcsec / 3600,
                                                 4 * host.B_IMAGE.values *
                                                 pix_arcsec / 3600,
                                                 host.THETA_IMAGE.values,
                                                 edgecolor='b',
                                                 facecolor='none',
                                                 linewidth=1)
                                fg.add_label(host.RA.values[0],
                                             host.DEC.values[0] + 0.00045,
                                             '%.3f +/- %.3f' %
                                             (host['MAG_AUTO_%s' %
                                                   b.capitalize()].values[0],
                                              host['MAGERR_AUTO_%s' %
                                                   b.capitalize()].values[0]),
                                             size=8,
                                             color='b',
                                             weight='bold')

                        for obj in range(len(ras)):

                            if decs[obj] + 0.00045 < sn_dec + w:

                                fg.add_label(ras[obj],
                                             decs[obj] + 0.00045,
                                             '%.3f +/- %.3f' %
                                             (mags[obj], errs[obj]),
                                             size=7,
                                             color='g',
                                             weight='bold')
                            else:
                                fg.add_label(ras[obj],
                                             decs[obj] - 0.00045,
                                             '%.3f +/- %.3f' %
                                             (mags[obj], errs[obj]),
                                             size=7,
                                             color='g',
                                             weight='bold')
                        for spec in range(len(has_spec.RA.values)):
                            row = has_spec.iloc[spec]
                            if len(host) > 0:
                                if row['RA'] != host['RA'].values[0]:
                                    fg.add_label(row.RA,
                                                 row.DEC + 0.001,
                                                 'z = %.3g' %
                                                 has_spec.SPECZ.values[spec],
                                                 size=7,
                                                 color='b',
                                                 weight='bold')
                                    fg.add_label(
                                        row.RA,
                                        row.DEC + 0.00065,
                                        '%.3f +/- %.3f' %
                                        (row['MAG_AUTO_%s' % b.capitalize()],
                                         row['MAGERR_AUTO_%s' %
                                             b.capitalize()]),
                                        size=8,
                                        color='b',
                                        weight='bold')
                                    fg.show_ellipses(
                                        row.RA,
                                        row.DEC,
                                        4 * row.A_IMAGE * pix_arcsec / 3600,
                                        4 * row.B_IMAGE * pix_arcsec / 3600,
                                        row.THETA_IMAGE,
                                        edgecolor='b',
                                        facecolor='none',
                                        linewidth=1)
                                else:
                                    fg.add_label(row.RA,
                                                 row.DEC + 0.001,
                                                 'z = %.3g' %
                                                 has_spec.SPECZ.values[spec],
                                                 size=7,
                                                 color='r',
                                                 weight='bold')
                                    fg.add_label(
                                        row.RA,
                                        row.DEC + 0.00065,
                                        '%.3f +/- %.3f' %
                                        (row['MAG_AUTO_%s' % b.capitalize()],
                                         row['MAGERR_AUTO_%s' %
                                             b.capitalize()]),
                                        size=8,
                                        color='r',
                                        weight='bold')

                            else:
                                fg.add_label(row.RA,
                                             row.DEC + 0.001,
                                             'z = %.3g' %
                                             has_spec.SPECZ.values[spec],
                                             size=7,
                                             color='b',
                                             weight='bold')
                                fg.add_label(
                                    row.RA,
                                    row.DEC + 0.00065,
                                    '%.2f +/- %.2f' %
                                    (row['MAG_AUTO_%s' % b.capitalize()],
                                     row['MAGERR_AUTO_%s' % b.capitalize()]),
                                    size=8,
                                    color='b',
                                    weight='bold')

                    except:
                        pass
                '''if counter in [0,2]:
                    fg.tick_labels.show_y()
                if counter in [2,3]:
                    fg.tick_labels.show_x()'''
            else:
                fg = aplpy.FITSFigure(
                    '/media/data3/wiseman/des/coadding/config/blank2.fits',
                    figure=fig,
                    subplot=plot_locs[b])
                fg.axis_labels.hide()
                fg.tick_labels.hide()
                fg.add_label(0.5,
                             0.5,
                             '[Failed to load %s band image]' % b,
                             relative=True,
                             fontsize=12,
                             color='black')
            if counter == 0 and not args.paper:
                fg.add_label(0.99,
                             1.05,
                             sn,
                             relative=True,
                             fontsize=14,
                             color='black')
        if args.paper:
            plt.subplots_adjust(left=0.02, right=0.98)
        #plt.suptitle('Right Ascension (J2000)',x=0.57,y=0.04)
        if args.path == 'sn_dir':
            savepath = os.path.join(sn_cap_dir,
                                    '%s_stamp.%s' % (sn, args.ftype))
        else:
            savepath = os.path.join(args.path,
                                    '%s_stamp.%s' % (sn, args.ftype))

        plt.savefig(savepath)
        plt.close(fig)
        logger.info("Figure saved to %s" % savepath)
        logger.info("************* Finished looking up %s! *************" % sn)
Exemplo n.º 6
0
def main(args, logger):
    if args.ra:
        l = [[args.ra, args.dec]]
    else:
        l = np.loadtxt(args.coordlist)
    for coords in l:
        ra, dec = coords[0], coords[1]
        f, ccd = find_chip(ra, dec)
        import aplpy
        fig, ax = plt.subplots(figsize=(15, 15))  #figsize=(16,9)
        w = float(args.size) / 3600
        ax.set_xticks([])
        ax.set_yticks([])
        for loc in ['top', 'right', 'left', 'bottom']:
            ax.spines[loc].set_visible(False)
        #ax.set_ylabel('Declination (J2000)',fontsize=12,labelpad = 30)

        if args.band != 'All':
            bands = [args.band]
        else:
            bands = ['g', 'r', 'i', 'z']
        palette = itertools.cycle(
            sns.color_palette(palette='colorblind', n_colors=5))
        fdir = '/media/data3/wiseman/des/coadding/5yr_stacks/MY1/%s/' % f
        for counter, b in enumerate(bands):
            bdir = os.path.join(fdir, b)
            capdir = os.path.join(
                '/media/data3/wiseman/des/coadding/5yr_stacks/CAP/%s_%s' %
                (ra, dec))
            if not os.path.isdir(capdir):
                os.mkdir(capdir)
            color = next(palette)
            if counter == 1:
                color = next(palette)
            try:
                img_fn = glob.glob(
                    os.path.join(capdir,
                                 'ccd_%s*%s*_sci.resamp.fits' % (ccd, b)))[0]
            except:
                from des_stacks import des_stack as stack
                from des_stacks.utils.stack_tools import make_cap_stamps, get_cuts
                cuts = [get_cuts(f, b) for b in bands]
                sg, sr, si, sz = [
                    stack.Stack(f, b, 1, [str(ccd)], 'coadding', cuts[counter])
                    for counter, b in enumerate(bands)
                ]
                make_cap_stamps(sg, sr, si, sz, ccd, '%s_%s' % (ra, dec), ra,
                                dec,
                                float(args.size) / 0.264,
                                float(args.size) / 0.264)
                img_fn = glob.glob(
                    os.path.join(capdir,
                                 'ccd_%s*%s*_sci.resamp.fits' % (ccd, b)))[0]

            if os.path.isfile(img_fn):

                img = fits.open(img_fn)
                if not args.paper:
                    plot_locs = plot_locs_labeled
                else:
                    plot_locs = plot_locs_paper

                if args.band != 'All':
                    fg = aplpy.FITSFigure(img, figure=fig)
                else:
                    fg = aplpy.FITSFigure(img,
                                          figure=fig,
                                          subplot=plot_locs[b])
                try:
                    fg.recenter(ra, dec, w / 2)
                except:
                    logger.info('Could not recenter to outside the frame')

                fg.show_grayscale(vmin=float(args.vmin), vmax=float(args.vmax))
                fg.axis_labels.hide()
                fg.tick_labels.hide()
                fg.set_theme('publication')
                fg.ticks.set_length(0)
                if args.paper:
                    fg.ticks.hide()
                fg.add_label(0.1,
                             0.8,
                             b,
                             relative=True,
                             color=color,
                             fontsize=24,
                             weight='bold')
                fg.add_scalebar(1 / 60,
                                color=color,
                                linewidth=3,
                                fontsize=20,
                                weight='bold')
                fg.scalebar.set_label("1'")

            else:
                fg = aplpy.FITSFigure(
                    '/media/data3/wiseman/des/coadding/config/blank2.fits',
                    figure=fig,
                    subplot=plot_locs[b])
                fg.axis_labels.hide()
                fg.tick_labels.hide()
                fg.add_label(0.5,
                             0.5,
                             '[Failed to load %s band image]' % b,
                             relative=True,
                             fontsize=12,
                             color='black')
            if counter == 0 and not args.paper:
                fg.add_label(0.99,
                             1.05,
                             '%s_%s' % (ra, dec),
                             relative=True,
                             fontsize=14,
                             color='black')
        if args.paper:
            plt.subplots_adjust(left=0.02, right=0.98)
        #plt.suptitle('Right Ascension (J2000)',x=0.57,y=0.04)
        if args.path == 'sn_dir':
            savepath = os.path.join(capdir,
                                    '%s_%s_stamp.%s' % (f, ccd, args.ftype))
        else:
            savepath = os.path.join(args.path,
                                    '%s_%s_stamp.%s' % (f, ccd, args.ftype))

        plt.savefig(savepath)
        plt.close(fig)
        logger.info("Figure saved to %s" % savepath)
        logger.info(
            "************* Finished making stamp for %s, %s! *************" %
            (f, ccd))