from astropy.wcs import WCS from astropy import wcs from astropy.nddata import Cutout2D from spectral_cube import SpectralCube import numpy as np from astropy import units as u from outflow_meta import e2e, between_e2e_and_e8, e8fil, north import aplpy from get_m0 import get_mom0 #'CH3OH808-716':'CH$_3$OH $8_{0,8}-7_{1,6}$', fn = paths.dpath('merge/W51_b6_7M_12M.CH3OH808-716.image.pbcor.fits') cube = SpectralCube.read(fn) m0 = get_mom0(fn) blue_fits_fn = paths.dpath('moments/w51_12co2-1_blue0to45_masked.fits') red_fits_fn = paths.dpath('moments/w51_12co2-1_red73to130_masked.fits') red_fits = fits.open(red_fits_fn) blue_fits = fits.open(blue_fits_fn) redhead = red_fits[0].header bluehead = blue_fits[0].header red_wcs = wcs.WCS(redhead) blue_wcs = wcs.WCS(bluehead) #ax = fig1.add_axes([0.15, 0.1, 0.8, 0.8], projection=cube.wcs.celestial) #ax.imshow(cutout_m0.data, cmap='gray') # #ax.contourf(cutout_blue.data,
from astropy.wcs import WCS from astropy import wcs from astropy.nddata import Cutout2D from spectral_cube import SpectralCube import numpy as np from astropy import units as u from outflow_meta import e2e, between_e2e_and_e8, e8fil, north import aplpy from get_m0 import get_mom0 #'CH3OH808-716':'CH$_3$OH $8_{0,8}-7_{1,6}$', fn = paths.dpath('merge/W51_b6_7M_12M.CH3OH808-716.image.pbcor.fits') cube = SpectralCube.read(fn) m0 = get_mom0(fn) blue_fits_fn = paths.dpath('moments/w51_12co2-1_blue0to45_masked.fits') red_fits_fn = paths.dpath('moments/w51_12co2-1_red73to130_masked.fits') red_fits = fits.open(red_fits_fn) blue_fits = fits.open(blue_fits_fn) redhead = red_fits[0].header bluehead = blue_fits[0].header red_wcs = wcs.WCS(redhead) blue_wcs = wcs.WCS(bluehead) #ax = fig1.add_axes([0.15, 0.1, 0.8, 0.8], projection=cube.wcs.celestial) #ax.imshow(cutout_m0.data, cmap='gray') #
def zoomfigure(target=e2e, targetname='e2e', radius=7.5*u.arcsec, cutout='e2e8', zoom_radius=3*u.arcsec, tick_spacing=1.8*u.arcsec): fn = paths.dpath('merge/cutouts/W51_b6_7M_12M.HNCO10010-909.image.pbcor_{0}cutout.fits'.format(cutout)) m0hnco = get_mom0(fn, iterate=False) cutout_cont = Cutout2D(cont_fits[0].data, target, radius, wcs=wcs.WCS(cont_fits[0].header)) cutout_ch3oh = Cutout2D(m0ch3oh.value, target, radius, wcs=wcs.WCS(m0ch3oh.header)) cutout_hnco = Cutout2D(m0hnco.value, target, radius, wcs=wcs.WCS(m0hnco.header)) cont_fits_cutout = fits.PrimaryHDU(data=cutout_cont.data, header=cutout_cont.wcs.to_header()) ch3oh_fits_cutout = fits.PrimaryHDU(data=cutout_ch3oh.data, header=cutout_ch3oh.wcs.to_header()) hnco_fits_cutout = fits.PrimaryHDU(data=cutout_hnco.data, header=cutout_hnco.wcs.to_header()) cont_fits_fn = "rgb/continuum_{0}_cutout.fits".format(targetname) hnco_fits_fn = "rgb/hnco_{0}_cutout.fits".format(targetname) ch3oh_fits_fn = "rgb/ch3oh_{0}_cutout.fits".format(targetname) cont_fits_cutout.writeto(cont_fits_fn, clobber=True) ch3oh_fits_cutout.writeto(ch3oh_fits_fn, clobber=True) hnco_fits_cutout.writeto(hnco_fits_fn, clobber=True) rgb_cube_fits = '{0}_ch3oh_hnco_cont.fits'.format(targetname) if not os.path.exists(rgb_cube_fits): # does not return anything aplpy.make_rgb_cube([ch3oh_fits_fn, hnco_fits_fn, cont_fits_fn,], rgb_cube_fits) rgb_cube_png = rgb_cube_fits[:-5]+"_auto.png" rgb_im = aplpy.make_rgb_image(data=rgb_cube_fits, output=rgb_cube_png, embed_avm_tags=True) rgb_cube_png = rgb_cube_fits[:-5]+"_logcont.png" rgb_im = aplpy.make_rgb_image(data=rgb_cube_fits, output=rgb_cube_png, #vmin_b=0.005, #vmax_b=0.15, stretch_b='log', embed_avm_tags=True) #rgb_cube_png = rgb_cube_fits[:-5]+"_asinhgreen.png" #rgb_im = aplpy.make_rgb_image(data=rgb_cube_fits, output=rgb_cube_png, # vmax_g=0.017, # vmax_b=6.5, # vmax_r=7.0, # vmin_g=0.0001, # stretch_g='arcsinh', embed_avm_tags=True) # # pl.rcParams['font.size'] = 18 fig1 = pl.figure(1) fig1.clf() F = aplpy.FITSFigure(rgb_cube_png, figure=fig1) F.show_rgb(rgb_cube_png) #F.recenter(290.93315, 14.509584, radius=0.00075) F.recenter(target.ra.deg, target.dec.deg, radius=zoom_radius.to(u.deg).value) F.add_scalebar((0.025*u.pc / (5400*u.pc)).to(u.deg,u.dimensionless_angles())) F.scalebar.set_label('5000 au / 0.025 pc') F.scalebar.set_color('w') F.set_tick_xspacing(tick_spacing.to(u.deg).value) F.add_label(0.05, 0.95, "CH$_3$OH", relative=True, color='r', horizontalalignment='left') F.add_label(0.05, 0.91, "HNCO", relative=True, color='g', horizontalalignment='left') F.add_label(0.05, 0.87, "Continuum", relative=True, color='b', horizontalalignment='left') F.save(paths.fpath("W51{0}_ch3oh_hnco_continuum_aplpy.png".format(targetname))) F.save(paths.fpath("W51{0}_ch3oh_hnco_continuum_aplpy.pdf".format(targetname))) F.show_contour(paths.vpath('data/W51Ku_BDarray_continuum_2048_both_uniform.hires.clean.image.fits'), levels=np.array([0.0015,0.0045,0.0135,0.0270,0.054,0.108])*1.25, colors=['w']*7, layer='evla_cont') F.save(paths.fpath("W51{0}_ch3oh_hnco_continuum_aplpy_kucontours.png".format(targetname))) F.save(paths.fpath("W51{0}_ch3oh_hnco_continuum_aplpy_kucontours.pdf".format(targetname)))
""" import numpy as np from astropy import units as u import os import pylab as pl import aplpy import paths from astropy.io import fits from astropy.nddata import Cutout2D from astropy import wcs from outflow_meta import e2e, e8fil, north, e8, e8south, d2 from get_m0 import get_mom0 fn = paths.dpath('merge/W51_b6_7M_12M.CH3OH808-716.image.pbcor.fits') m0ch3oh = get_mom0(fn, iterate=False) # iteration takes longer but doesn't risk eating 100% memory cont_fits = fits.open(paths.dpath('w51_te_continuum_best.fits')) def zoomfigure(target=e2e, targetname='e2e', radius=7.5*u.arcsec, cutout='e2e8', zoom_radius=3*u.arcsec, tick_spacing=1.8*u.arcsec): fn = paths.dpath('merge/cutouts/W51_b6_7M_12M.HNCO10010-909.image.pbcor_{0}cutout.fits'.format(cutout)) m0hnco = get_mom0(fn, iterate=False) cutout_cont = Cutout2D(cont_fits[0].data, target, radius, wcs=wcs.WCS(cont_fits[0].header)) cutout_ch3oh = Cutout2D(m0ch3oh.value, target, radius, wcs=wcs.WCS(m0ch3oh.header)) cutout_hnco = Cutout2D(m0hnco.value, target, radius, wcs=wcs.WCS(m0hnco.header)) cont_fits_cutout = fits.PrimaryHDU(data=cutout_cont.data, header=cutout_cont.wcs.to_header())
def zoomfigure( target=e2e, targetname="e2e", radius=7.5 * u.arcsec, cutout="e2e8", zoom_radius=3 * u.arcsec, tick_spacing=1.8 * u.arcsec, ): fn = paths.dpath("merge/cutouts/W51_b6_7M_12M.HNCO10010-909.image.pbcor_{0}cutout.fits".format(cutout)) m0hnco = get_mom0(fn, iterate=False) cutout_cont = Cutout2D(cont_fits[0].data, target, radius, wcs=wcs.WCS(cont_fits[0].header)) cutout_ch3oh = Cutout2D(m0ch3oh.value, target, radius, wcs=wcs.WCS(m0ch3oh.header)) cutout_hnco = Cutout2D(m0hnco.value, target, radius, wcs=wcs.WCS(m0hnco.header)) cont_fits_cutout = fits.PrimaryHDU(data=cutout_cont.data, header=cutout_cont.wcs.to_header()) ch3oh_fits_cutout = fits.PrimaryHDU(data=cutout_ch3oh.data, header=cutout_ch3oh.wcs.to_header()) hnco_fits_cutout = fits.PrimaryHDU(data=cutout_hnco.data, header=cutout_hnco.wcs.to_header()) cont_fits_fn = "rgb/continuum_{0}_cutout.fits".format(targetname) hnco_fits_fn = "rgb/hnco_{0}_cutout.fits".format(targetname) ch3oh_fits_fn = "rgb/ch3oh_{0}_cutout.fits".format(targetname) cont_fits_cutout.writeto(cont_fits_fn, clobber=True) ch3oh_fits_cutout.writeto(ch3oh_fits_fn, clobber=True) hnco_fits_cutout.writeto(hnco_fits_fn, clobber=True) rgb_cube_fits = "{0}_ch3oh_hnco_cont.fits".format(targetname) if not os.path.exists(rgb_cube_fits): # does not return anything aplpy.make_rgb_cube([ch3oh_fits_fn, hnco_fits_fn, cont_fits_fn], rgb_cube_fits) rgb_cube_png = rgb_cube_fits[:-5] + "_auto.png" rgb_im = aplpy.make_rgb_image(data=rgb_cube_fits, output=rgb_cube_png, embed_avm_tags=True) rgb_cube_png = rgb_cube_fits[:-5] + "_logcont.png" rgb_im = aplpy.make_rgb_image( data=rgb_cube_fits, output=rgb_cube_png, # vmin_b=0.005, # vmax_b=0.15, stretch_b="log", embed_avm_tags=True, ) # rgb_cube_png = rgb_cube_fits[:-5]+"_asinhgreen.png" # rgb_im = aplpy.make_rgb_image(data=rgb_cube_fits, output=rgb_cube_png, # vmax_g=0.017, # vmax_b=6.5, # vmax_r=7.0, # vmin_g=0.0001, # stretch_g='arcsinh', embed_avm_tags=True) # # pl.rcParams["font.size"] = 18 fig1 = pl.figure(1) fig1.clf() F = aplpy.FITSFigure(rgb_cube_png, figure=fig1) F.show_rgb(rgb_cube_png) # F.recenter(290.93315, 14.509584, radius=0.00075) F.recenter(target.ra.deg, target.dec.deg, radius=zoom_radius.to(u.deg).value) F.add_scalebar((0.025 * u.pc / (5400 * u.pc)).to(u.deg, u.dimensionless_angles())) F.scalebar.set_label("5000 au / 0.025 pc") F.scalebar.set_color("w") F.set_tick_xspacing(tick_spacing.to(u.deg).value) F.add_label(0.05, 0.95, "CH$_3$OH", relative=True, color="r", horizontalalignment="left") F.add_label(0.05, 0.91, "HNCO", relative=True, color="g", horizontalalignment="left") F.add_label(0.05, 0.87, "Continuum", relative=True, color="b", horizontalalignment="left") F.save(paths.fpath("rgb_zooms/W51{0}_ch3oh_hnco_continuum_aplpy.png".format(targetname))) F.save(paths.fpath("rgb_zooms/W51{0}_ch3oh_hnco_continuum_aplpy.pdf".format(targetname))) F.show_contour( paths.vpath("data/W51Ku_BDarray_continuum_2048_both_uniform.hires.clean.image.fits"), levels=np.array([0.0015, 0.0045, 0.0135, 0.0270, 0.054, 0.108]) * 1.25, colors=["w"] * 7, layer="evla_cont", ) F.save(paths.fpath("rgb_zooms/W51{0}_ch3oh_hnco_continuum_aplpy_kucontours.png".format(targetname))) F.save(paths.fpath("rgb_zooms/W51{0}_ch3oh_hnco_continuum_aplpy_kucontours.pdf".format(targetname)))
""" import numpy as np from astropy import units as u import os import pylab as pl import aplpy import paths from astropy.io import fits from astropy.nddata import Cutout2D from astropy import wcs from outflow_meta import e2e, e8fil, north, e8, e8south, d2, e1 from get_m0 import get_mom0 fn = paths.dpath("merge/W51_b6_7M_12M.CH3OH808-716.image.pbcor.fits") m0ch3oh = get_mom0(fn, iterate=False) # iteration takes longer but doesn't risk eating 100% memory cont_fits = fits.open(paths.dpath("w51_te_continuum_best.fits")) def zoomfigure( target=e2e, targetname="e2e", radius=7.5 * u.arcsec, cutout="e2e8", zoom_radius=3 * u.arcsec, tick_spacing=1.8 * u.arcsec, ): fn = paths.dpath("merge/cutouts/W51_b6_7M_12M.HNCO10010-909.image.pbcor_{0}cutout.fits".format(cutout)) m0hnco = get_mom0(fn, iterate=False)