import numpy as np from astropy import units as u from spectral_cube import SpectralCube from lines import lines for spwnum in (0,1,2,3): cube = SpectralCube.read('Orion_NW_12m_spw{0}_lines.fits'.format(spwnum)) for line,frq in lines.items(): if frq > cube.spectral_extrema[0] and frq < cube.spectral_extrema[1]: print("Extracting {0}".format(line)) vcube = cube.with_spectral_unit(u.km/u.s, rest_value=frq, velocity_convention='radio') subcube = vcube.spectral_slab(2*u.km/u.s, 15*u.km/u.s) frqint = int(np.round(frq.to(u.GHz).value)) subcube.write("Orion_NW_12m_spw{0}_{1}_{2}.fits".format(spwnum, line, frqint), overwrite=True)
from astropy.io import fits from astropy import units as u import numpy as np import spectral_cube import pyspeckit from spectral_cube.spectral_axis import vac_to_air from lines import lines cube = spectral_cube.SpectralCube.read('DATACUBEFINALuser_20140216T010259_78380e1d.fits', hdu=1) cont = cube.spectral_slab(6380*u.AA, 6500*u.AA).apply_numpy_function(np.mean, axis=0) airlines = {line: vac_to_air(wl*u.AA) for line,wl in lines.items()} #wavelengths = spectral_cube.spectral_axis.vac_to_air(np.array(lines.values())*u.AA) # 5877.25, 7064.21, 7137.8, 7320.94, 7331.68 wlslabs = {line: cube.spectral_slab(wl-5*u.AA, wl+6*u.AA) for line,wl in airlines.items()} for line,slab in wlslabs.items(): print "AA",line mom1 = slab.moment1(axis=0) mom1.write('moments/moment1_085_{0}_angstroms.fits'.format(line), overwrite=True) mean_moment = np.mean([fits.getdata('moments/moment1_085_{0}_angstroms.fits'.format(line))-airlines[line].value for line in wlslabs], axis=0) fits.PrimaryHDU(data=mean_moment, header=fits.getheader('moments/moment1_085_{0}_angstroms.fits'.format(line))).writeto('moments/moment1_085_mean_deltaangstroms.fits', clobber=True) # Cube velocity conversion should use vacuum wavelengths slabs = {line: cube.with_spectral_unit(u.km/u.s, velocity_convention='optical', rest_value=wl*u.AA)