from astropy import units as u
from sdpy import makecube
from paths import dpath

flat_vrange = [45,75]

cubename_lores_supersampled = dpath('W51_H2CO22_pyproc_cube_lores_supersampled')
linefreq = 14.488479e9
makecube.make_taucube(cubename_lores_supersampled,
                      cubename_lores_supersampled+"_continuum.fits",
                      etamb=0.886, linefreq=linefreq*u.Hz, tex=0)
makecube.make_flats(cubename_lores_supersampled.replace("cube","taucube"),
                    vrange=flat_vrange,noisevrange=[-50,-1],suffix='.fits')
makecube.make_flats(cubename_lores_supersampled, vrange=[45,75],
                    noisevrange=[-15,30])


linefreq = 4.8296594e9
cubename_supersampled = dpath('W51_H2CO11_cube_supersampled')
makecube.make_taucube(cubename_supersampled,
                      continuum=cubename_supersampled+"_continuum.fits",
                      linefreq=linefreq, tex=0) # etamb accounted for already , etamb=0.51)
makecube.make_flats(cubename_supersampled.replace("cube","taucube"),
                    vrange=flat_vrange,noisevrange=[-50,-1],suffix='.fits')
                                      kernel_fwhm=20./3600.,
                                      nhits=cubename+'_nhits.fits',
                                      velocityrange=velocityrange,
                                      excludefitrange=[vmin,vmax],
                                      linefreq=linefreq,
                                      progressbar=True,
                                      chmod=True) # security risk, but too many files!
        else:
            raise IOError("Did not find file {0}".format(fn))


    flat_vrange = [20,100]

    if os.path.exists(cubename+".fits"):
        makecube.runscript(cubename)
        makecube.make_flats(cubename,vrange=flat_vrange,noisevrange=[-50,-1])
        #makecube.make_flats(cubename,vrange=flat_vrange,noisevrange=[-50,-1],suffix='.fits')
    else:
        print "Failure at ",line


    # 6/18/2014: add "superresolution" maps of HELIUM

    helium_freq = {112: 4.62067,
                   111: 4.74612,
                   110: 4.87614,
                   109: 5.01096,
                   108:  5.1508,
                   107: 5.29589,
                   106: 5.44648,}
          '15B_129_1_77to134_D1_5_F1.fits',
          '15B_129_1_149to194_D1_5_F1.fits',
          '15B_129_1_196to242_D1_5_F1.fits',
          '15B_129_1_248to305_D1_5_F1.fits',
          '15B_129_1_306to352_D1_5_F1.fits',
          '15B_129_1_19to76_D2_5_F1.fits',
          '15B_129_1_77to134_D2_5_F1.fits',
          '15B_129_1_149to194_D2_5_F1.fits',
          '15B_129_1_196to242_D2_5_F1.fits',
          '15B_129_1_248to305_D2_5_F1.fits',
          '15B_129_1_306to352_D2_5_F1.fits',
         )
        ]

for fn in files:
    makecube.add_file_to_cube(fn,
                              cubename+'.fits',nhits=cubename+'_nhits.fits',
                              chmod=True,
                              add_with_kernel=True,
                              kernel_fwhm=20./3600.,
                              velocityrange=[-200,200],
                              excludefitrange=[-25,150],
                              diagnostic_plot_name=fn.replace('.fits','_data_scrubbed.png'),
                              progressbar=True
                             )

#os.system(os.path.join(outpath,'CMZ_East_H2CO22_cube_starlink.sh'))

makecube.make_flats(cubename,vrange=[-20,60],noisevrange=[250,300])

#cd3 = 1.0 # Arecibo is limited to 0.64 because one of the receivers went bad at hi-res mode once
#naxis3 = int(np.ceil((velocityrange[1]-velocityrange[0])/cd3))+4 # +4 is BAD!  don't do that.
naxis3 = int((velocityrange[1]-velocityrange[0]) / cd3) + 1 # +1 is good: include -50
crval3 = 50.0
# dumb debug stuff
vels = crval3+cd3*(np.arange(naxis3)+1-naxis3/2-1)
# this will probably cause an error but I must insist..
#if velocityrange[0]<=vels.min() or velocityrange[1]>=vels.max():
#    raise ValueError("Add more points.  Something's going to be out of range for stupid star stupid link")
makecube.generate_header(49.209553, -0.277137, naxis1=192, naxis2=128,
                         pixsize=24, naxis3=naxis3, cd3=cd3, crval3=crval3,
                         clobber=True, restfreq=14.488479e9)
makecube.make_blank_images(cubename_lores,clobber=True)


for fn in [filename]:
    print "Adding file %s" % fn
    fullfn = fn
    makecube.add_file_to_cube(fullfn,
                              cubename_lores+".fits",
                              add_with_kernel=True,
                              kernel_fwhm=50./3600.,
                              nhits=cubename_lores+"_nhits.fits",
                              diagnostic_plot_name=fullfn.replace('.fits','_data_scrubbed.png'),
                              velocityrange=velocityrange,excludefitrange=[40,75],noisecut=1.0)
                              # more aggressive noisecut

makecube.runscript(cubename_lores)
makecube.make_flats(cubename_lores,vrange=[45,75],noisevrange=[-15,30])
makecube.make_taucube(cubename_lores,cubename_lores+"_continuum.fits",etamb=0.886)
        for obsrun in scanranges
        for scan1, scan2 in scanranges[obsrun]
        for x in [
            os.path.join(
                outpath, fntemplate.format(scan1, scan2, samplers[ii], sampler_feeds[samplers[ii][0]], obsrun=obsrun)
            )
            for ii in range(len(samplers))
        ]
    ]

    iterator = makecube.freq_iterator if ctype3 == "FREQ" else makecube.velo_iterator

    for fn in files:
        makecube.add_file_to_cube(
            fn,
            cubename + ".fits",
            nhits=cubename + "_nhits.fits",
            add_with_kernel=True,
            chmod=True,
            velo_iterator=iterator,
            kernel_fwhm=20.0 / 3600.0,
            default_unit=u.Unit(cunit3),
            progressbar=True,
            linefreq=restfreq,
            flatheader=cubename + "flatheader.txt",
            cubeheader=cubename + "cubeheader.txt",
        )

    if ctype3 == "VRAD":
        makecube.make_flats(cubename, vrange=[-20, 80], noisevrange=[150, 200])
    "W51_h213coW_spectra_0910.fits",
    "W51_h213coW_spectra_0911.fits",
    "W51_h213coW_spectra_0912.fits",
    "W51_h213coW_spectra_0915.fits",
]

for fn in files:
    fullfn = fix_TDIM_in_header(prefix + fn)
    makecube.add_file_to_cube(
        fullfn,
        cubename_supersampled + ".fits",
        add_with_kernel=True,
        kernel_fwhm=20.0 / 3600.0,
        nhits=cubename_supersampled + "_nhits.fits",
        diagnostic_plot_name=fullfn.replace(".fits", "_data_scrubbed.png"),
        velocityrange=velocityrange,
        excludefitrange=[vmin, vmax],
        linefreq=linefreq,
    )

flat_vrange = [45, 75]

makecube.runscript(cubename_supersampled)
makecube.make_flats(cubename_supersampled, vrange=flat_vrange, noisevrange=[-50, -1])
makecube.make_taucube(
    cubename_supersampled, continuum=cubename_supersampled + "_continuum.fits", linefreq=linefreq
)  # etamb accounted for already , etamb=0.51)
makecube.make_flats(
    cubename_supersampled.replace("cube", "taucube"), vrange=flat_vrange, noisevrange=[-50, -1], suffix=".fits"
)
from set_headers import set_header_keywords
from paths import dpath

"""
H107, 108 are affected by the missing sampler on day 1
H111 has terrible baseline issues throughout.  I don't know why.
"""

fn = dpath('W51_h%ialpha_cube_supersampled_sub.fits')
halpha_6cm_cube = np.mean([fits.getdata(fn % i) for i in (110,112)],axis=0)
# use 111's header as an average of 110/112
halpha_6cm_hdr = set_header_keywords(fits.getheader(fn % 111), telescope='Arecibo')
halpha_6cm_hdr['RESTFREQ'] = (4.74418e9,"H110alpha rest frequency")
halpha_6cm_hdu = fits.PrimaryHDU(halpha_6cm_cube, halpha_6cm_hdr)
halpha_6cm_hdu.writeto(dpath('W51_Halpha_6cm_cube_supersampled_sub.fits'),clobber=True)
makecube.make_flats(dpath('W51_Halpha_6cm_cube_supersampled'),vrange=[35,85],noisevrange=[-15,30])

fn = dpath('W51_h%ialpha_cube_supersampled_continuum.fits')
halpha_6cm_cont = np.mean([fits.getdata(fn % i) for i in (110,112)],axis=0)
# use 111's header as an average of 110/112
halpha_6cm_hdr = set_header_keywords(fits.getheader(fn % 111), telescope='Arecibo')
halpha_6cm_hdr['RESTFREQ'] = (4.74418e9,"H110alpha rest frequency")
halpha_6cm_conthdu = fits.PrimaryHDU(halpha_6cm_cont, halpha_6cm_hdr)
halpha_6cm_conthdu.writeto(dpath('W51_Halpha_6cm_cube_supersampled_continuum.fits'),clobber=True)

fn = dpath('W51_he%ialpha_cube_supersampled_sub.fits')
healpha_6cm_cube = np.mean([fits.getdata(fn % i) for i in (110,112)],axis=0)
# use 111's header as an average of 110/112
healpha_6cm_hdr = set_header_keywords(fits.getheader(fn % 111), telescope='Arecibo')
healpha_6cm_hdr['NOTE'] = 'Average of He110 and He112alpha'
halpha_6cm_hdr['RESTFREQ'] = (4.74418e9,"He110alpha rest frequency")
for fn in filelist+filelist2:
    log.info("Adding file %s" % fn)
    fullfn = '/Users/adam/observations/gbt/W51map/'+fn
    d = pyfits.getdata(fullfn)
    pl.clf()
    pl.imshow(d['DATA'],norm=asinh_norm.AsinhNorm())
    pl.savefig(fullfn.replace(".fits","_data.png"))
    pl.clf()
    dsub = d['DATA']-np.median(d['DATA'],axis=1)[:,None]
    pl.imshow(dsub)
    pl.savefig(fullfn.replace(".fits","_data_subbed.png"))
    makecube.add_file_to_cube(fullfn,
                              cubename_lores_supersampled+".fits",
                              add_with_kernel=True,
                              kernel_fwhm=20./3600.,
                              nhits=cubename_lores_supersampled+"_nhits.fits",
                              diagnostic_plot_name=fullfn.replace('.fits','_data_scrubbed.png'),
                              velocityrange=velocityrange,excludefitrange=[40,75],noisecut=np.inf,
                              continuum_prefix=cubename_lores_supersampled+fn.replace(".fits",''),
                              progressbar=True,
                              chmod=True,
                              linefreq=linefreq,
                              negative_mean_cut=-1)

makecube.runscript(cubename_lores_supersampled)
makecube.make_flats(cubename_lores_supersampled, vrange=[45,75],
                    noisevrange=[-15,30])
makecube.make_taucube(cubename_lores_supersampled,
                      cubename_lores_supersampled+"_continuum.fits",
                      etamb=0.886, linefreq=linefreq*u.Hz, tex=0)
makecube.make_blank_images(cubename_supersampled,clobber=True)


for fn in filelist+filelist2:
    log.info("Adding file %s" % fn)
    fullfn = '/Users/adam/observations/gbt/W51map/'+fn
    d = fits.getdata(fullfn)
    pl.clf()
    pl.imshow(d['DATA'],norm=asinh_norm.AsinhNorm())
    pl.savefig(fullfn.replace(".fits","_data.png"))
    pl.clf()
    dsub = d['DATA']-np.median(d['DATA'],axis=1)[:,None]
    pl.imshow(dsub)
    pl.savefig(fullfn.replace(".fits","_data_subbed.png"))
    makecube.add_file_to_cube(fullfn,
                              cubename_supersampled+".fits",
                              add_with_kernel=True,
                              kernel_fwhm=20./3600.,
                              nhits=cubename_supersampled+"_nhits.fits", 
                              diagnostic_plot_name=fullfn.replace('.fits','_data_scrubbed.png'),
                              velocityrange=velocityrange,excludefitrange=[20,100],noisecut=50,
                              continuum_prefix=cubename_supersampled+fn.replace(".fits",''),
                              progressbar=True,
                              chmod=True,
                              negative_mean_cut=-1)
                              # noisecut was probably a bad idea: it cut SIGNAL  
                              # more aggressive noisecut

makecube.runscript(cubename_supersampled)
makecube.make_flats(cubename_supersampled,vrange=[20,100],noisevrange=[-15,20])
Exemple #10
0
                         naxis1=192,
                         naxis2=128,
                         pixsize=24,
                         naxis3=naxis3,
                         cd3=cd3,
                         crval3=crval3,
                         clobber=True,
                         restfreq=14.488479e9)
makecube.make_blank_images(cubename_lores, clobber=True)

for fn in [filename]:
    print "Adding file %s" % fn
    fullfn = fn
    makecube.add_file_to_cube(fullfn,
                              cubename_lores + ".fits",
                              add_with_kernel=True,
                              kernel_fwhm=50. / 3600.,
                              nhits=cubename_lores + "_nhits.fits",
                              diagnostic_plot_name=fullfn.replace(
                                  '.fits', '_data_scrubbed.png'),
                              velocityrange=velocityrange,
                              excludefitrange=[40, 75],
                              noisecut=1.0)
    # more aggressive noisecut

makecube.runscript(cubename_lores)
makecube.make_flats(cubename_lores, vrange=[45, 75], noisevrange=[-15, 30])
makecube.make_taucube(cubename_lores,
                      cubename_lores + "_continuum.fits",
                      etamb=0.886)