from ch3cn_fits import SpectralCube, pyspeckit, fits, u, np
import os
import paths
T=True
F=False

cubefn = paths.dpath('longbaseline/W51northcax.SPW2_ALL_cutout.fits')
cubeKfn = paths.dpath('longbaseline/W51northcax.SPW2_ALL_cutout_medsub_K.fits')
medKfn = paths.dpath('longbaseline/W51northcax.SPW2_ALL_cutout_med_K.fits')
if not os.path.exists(cubeKfn):
    cube = SpectralCube.read(cubefn).minimal_subcube()
    contcubeK = cube.to(u.K, u.brightness_temperature(cube.beam,
                                                      cube.wcs.wcs.restfrq*u.Hz))
    cube.allow_huge_operations = True
    cubeK = cube.to(u.K, u.brightness_temperature(cube.beam,
                                                  cube.wcs.wcs.restfrq*u.Hz))
    med = cubeK.percentile(25, axis=0)
    cubeK.allow_huge_operations=True
    cubeK = cubeK - med
    med.write(medKfn)
    cubeK.write(cubeKfn)
else:
    cubeK = SpectralCube.read(cubeKfn)
    cubeK.allow_huge_operations = True
    med = fits.getdata(medKfn) * u.K
    contcubeK = cubeK + med
    contcubeK.allow_huge_operations = True

# BAD error estimate
err = cubeK.std(axis=0)
err[:] = 5*u.K
Beispiel #2
0
from ch3cn_fits import SpectralCube, pyspeckit, fits, u, np
import paths
import os
T = True
F = False

cubefn = '../FITS/merge/SgrB2_b3_7M_12M.CH3CN.image.pbcor_medsub.fits'
if not os.path.exists(cubefn):
    cube = SpectralCube.read(
        '../FITS/merge/SgrB2_b3_7M_12M.CH3CN.image.pbcor.fits'
    ).minimal_subcube()
    med = cube.percentile(25, axis=0)
    cube.allow_huge_operations = True
    cube = cube - med
    cube.write(cubefn)
else:
    cube = SpectralCube.read(cubefn).minimal_subcube()
cubeK = cube.to(
    u.K, u.brightness_temperature(cube.beam, cube.wcs.wcs.restfrq * u.Hz))
err = cubeK[:30].std(axis=0)
peak = cubeK.max(axis=0)
mask = (peak > 1 * u.K) & (peak > 6 * err)

subcube = cubeK.spectral_slab(-50 * u.km / u.s, 200 * u.km / u.s)

pcube = pyspeckit.Cube(cube=subcube)

vguesses = subcube.spectral_axis[subcube.argmax(axis=0)]
colguesses = np.ones_like(mask) * 1e15
temguesses = np.ones_like(mask) * 150.
widths = np.ones_like(mask) * 5.0
from ch3cn_fits import (SpectralCube, pyspeckit, fits, u, np, line_name_dict,
                        line_aij, line_deg, frequencies, line_names, line_eu,
                        fit_tex, nupper_of_kkms, fit_all_tex)
import pyregion
from astropy import constants
import scipy.stats
import os
import paths
T = True
F = False

cubefn = paths.dpath('longbaseline/W51e2e_CH3CN_cutout.fits')
cube = SpectralCube.read(cubefn).minimal_subcube()
contcubeK = cube.to(
    u.K, u.brightness_temperature(cube.beam, cube.wcs.wcs.restfrq * u.Hz))
cubeK = cube.to(
    u.K, u.brightness_temperature(cube.beam, cube.wcs.wcs.restfrq * u.Hz))
med = cubeK.percentile(50, axis=0)
#cubeK.allow_huge_operations=True
#cubeK = cubeK - med

# determine where absorption...
skew = cubeK.apply_numpy_function(scipy.stats.skew, axis=0)

# BAD error estimate
err = cubeK.std(axis=0)
err[:] = 5 * u.K
peak = (cubeK).max(axis=0)
nadir = (cubeK).min(axis=0)
#mask = (peak > 200*u.K) & (skew > 0.1)
absorption_mask = (skew < -0.1)
from ch3cn_fits import SpectralCube, pyspeckit, fits, u, np
import os
import paths
T = True
F = False

cubefn = paths.dpath('longbaseline/W51e2e_CH3CN_cutout.fits')
cube = SpectralCube.read(cubefn).minimal_subcube()
contcubeK = cube.to(
    u.K, u.brightness_temperature(cube.beam, cube.wcs.wcs.restfrq * u.Hz))
cubeK = cube.to(
    u.K, u.brightness_temperature(cube.beam, cube.wcs.wcs.restfrq * u.Hz))
med = cubeK.percentile(25, axis=0)
cubeK.allow_huge_operations = True
cubeK = cubeK - med

# BAD error estimate
err = cubeK.std(axis=0)
err[:] = 5 * u.K
peak = (cubeK).max(axis=0)
mask = (peak > 200 * u.K)  # & (peak > 6*err)
absorption_mask = cubeK.min(axis=0) < -150 * u.K
mask = mask & (~absorption_mask)

pcube = pyspeckit.Cube(cube=cubeK[:400, :, :])  # crop out k=0,1

if os.path.exists('e2e_CH3CN_Emission_fits.fits'):
    pcube.load_model_fit('e2e_CH3CN_Emission_fits.fits', npars=4)
else:
    vguesses = 62 * u.km / u.s
    colguesses = np.ones_like(mask) * 1e16
from ch3cn_fits import (SpectralCube, pyspeckit, fits, u, np, line_name_dict,
                        line_aij, line_deg, frequencies, line_names, line_eu,
                        fit_tex, nupper_of_kkms,
                        fit_all_tex)
import pyregion
from astropy import constants
import scipy.stats
import os
import paths
T=True
F=False

cubefn = paths.dpath('longbaseline/W51e2e_CH3CN_cutout.fits')
cube = SpectralCube.read(cubefn).minimal_subcube()
contcubeK = cube.to(u.K, u.brightness_temperature(cube.beam,
                                                  cube.wcs.wcs.restfrq*u.Hz))
cubeK = cube.to(u.K, u.brightness_temperature(cube.beam,
                                              cube.wcs.wcs.restfrq*u.Hz))
med = cubeK.percentile(50, axis=0)
#cubeK.allow_huge_operations=True
#cubeK = cubeK - med

# determine where absorption...
skew = cubeK.apply_numpy_function(scipy.stats.skew, axis=0)

# BAD error estimate
err = cubeK.std(axis=0)
err[:] = 5*u.K
peak = (cubeK).max(axis=0)
nadir = (cubeK).min(axis=0)
#mask = (peak > 200*u.K) & (skew > 0.1)
Beispiel #6
0
import os
import paths
from astropy import coordinates
from astropy import units as u
T = True
F = False

e2e_peak = coordinates.SkyCoord(290.9331916067147 * u.deg,
                                14.50958361099483 * u.deg,
                                frame='icrs')

spectra = []
for fn in ('W51e2cax.SPW{0}_ALL_cutout.fits'.format(ii) for ii in range(10)):

    cubefn = paths.dpath('longbaseline/linked/{0}'.format(fn))
    cube = SpectralCube.read(cubefn)
    #contcubeK = cube.to(u.K, u.brightness_temperature(cube.beam,
    #                                                  cube.wcs.wcs.restfrq*u.Hz))
    #cubeK = cube.to(u.K, u.brightness_temperature(cube.beam,
    #                                              cube.wcs.wcs.restfrq*u.Hz))

    xx, yy = cube.wcs.celestial.wcs_world2pix(e2e_peak.ra.deg,
                                              e2e_peak.dec.deg, 0)
    spectrum_Jy = cube[:, int(np.round(yy)), int(np.round(xx))]
    spectrum_K = spectrum_Jy.to(u.K, cube.beam.jtok_equiv(cube.spectral_axis))

    spectra.append(spectrum_K)

# already done at import stage
#pyspeckit.spectrum.fitters.default_Registry.add_fitter('ch3cn_absorption',ch3cn_absorption_fitter(),5)
from ch3cn_fits import SpectralCube, pyspeckit, fits, u, np
import paths
import os
T=True
F=False

cubefn = '../FITS/merge/SgrB2_b3_7M_12M.CH3CN.image.pbcor_medsub.fits'
if not os.path.exists(cubefn):
    cube = SpectralCube.read('../FITS/merge/SgrB2_b3_7M_12M.CH3CN.image.pbcor.fits').minimal_subcube()
    med = cube.percentile(25, axis=0)
    cube.allow_huge_operations=True
    cube = cube - med
    cube.write(cubefn)
else:
    cube = SpectralCube.read(cubefn).minimal_subcube()
cubeK = cube.to(u.K, u.brightness_temperature(cube.beam,
                                              cube.wcs.wcs.restfrq*u.Hz))
err = cubeK[:30].std(axis=0)
peak = cubeK.max(axis=0)
mask = (peak > 1*u.K) & (peak > 6*err)

subcube = cubeK.spectral_slab(-50*u.km/u.s, 200*u.km/u.s)

pcube = pyspeckit.Cube(cube=subcube)

vguesses = subcube.spectral_axis[subcube.argmax(axis=0)]
colguesses = np.ones_like(mask)*1e15
temguesses = np.ones_like(mask)*150.
widths = np.ones_like(mask)*5.0
guesses = np.array([vguesses.value, widths, temguesses, colguesses])
Beispiel #8
0
from ch3cn_fits import SpectralCube, pyspeckit, fits, u, np
import os
T=True
F=False

cubefn = '../../FITS/longbaseline/W51e8_CH3CN_cutout.fits'
if not os.path.exists(cubefn):
    cube = SpectralCube.read('../../FITS/longbaseline/W51e2cax.CH3CN_K3_nat_all.image.fits')
    scube = cube[:,1120:1440,2400:2760]
    scube.write(cubefn)
cube = SpectralCube.read(cubefn).minimal_subcube()
contcubeK = cube.to(u.K, u.brightness_temperature(cube.beam,
                                                  cube.wcs.wcs.restfrq*u.Hz))
cubeK = cube.to(u.K, u.brightness_temperature(cube.beam,
                                              cube.wcs.wcs.restfrq*u.Hz))
med = cubeK.percentile(25, axis=0)
cubeK.allow_huge_operations=True
cubeK = cubeK - med

# BAD error estimate
err = cubeK.std(axis=0)
err[:] = 5*u.K
peak = (cubeK).max(axis=0)
mask = (peak > 200*u.K)# & (peak > 6*err)
absorption_mask = cubeK.min(axis=0) < -150*u.K
mask = mask & (~absorption_mask)

pcube = pyspeckit.Cube(cube=cubeK[:400,:,:]) # crop out k=0,1

vguesses = 62*u.km/u.s
colguesses = np.ones_like(mask)*1e16