Ejemplo n.º 1
0
def load_and_convert_spectra(globname):
    speclist = [
        pyspeckit.Spectrum(fn) for fn in glob.glob(paths.spath(globname))
    ]
    for sp in speclist:
        sp.data -= np.nanpercentile(sp.data, 25)
    spectra = pyspeckit.Spectra(speclist)
    beam = radio_beam.Beam.from_fits_header(spectra.header)
    # "baseline"
    #spectra.data -= np.nanpercentile(spectra.data, 10)
    spectra.data *= beam.jtok(spectra.xarr)
    spectra.unit = 'K'

    spectra.xarr.refX = 220 * u.GHz  # hackalack

    return spectra
def load_and_convert_spectra(globname):
    import glob
    import paths
    from astropy import wcs
    import pyspeckit
    import radio_beam
    speclist = [pyspeckit.Spectrum(fn) for fn in
                glob.glob(paths.spath(globname))]
    for sp in speclist:
        sp.data -= np.nanpercentile(sp.data, 25)
    spectra = pyspeckit.Spectra(speclist)
    beam = radio_beam.Beam.from_fits_header(spectra.header)
    # "baseline"
    #spectra.data -= np.nanpercentile(spectra.data, 10)
    spectra.data *= beam.jtok(spectra.xarr)
    spectra.unit='K'

    spectra.xarr.refX = 220*u.GHz # hackalack

    return spectra
warnings.filterwarnings('ignore', category=MaskedArrayFutureWarning)

line_table = table.Table.read(paths.apath('full_line_table.csv'))
line_table.sort('Species')

regions = (pyregion.open(paths.rpath("cores.reg")))

# check that it will finish before running everything
for region in regions:
    name = region.attr[1]['text']
    if region.name == 'point':
        # when we're using peak pixels from the photometry catalog, the 'point'
        # objects can be skipped
        continue

    spectral_files = glob.glob(paths.spath('{0}_spw[0123]_peak.fits'.format(name)))
    #background_spectral_files = glob.glob(paths.spath('{0}_spw[0123]_background_mean.fits'.format(name)))
    assert len(spectral_files) == 4#len(background_spectral_files) == 4
    vcen = velo_guesses.guesses[name]

for region in regions:
    name = region.attr[1]['text']
    if region.name == 'point':
        # when we're using peak pixels from the photometry catalog, the 'point'
        # objects can be skipped
        continue

    spectral_files = glob.glob(paths.spath('{0}_spw[0123]_peak.fits'.format(name)))
    #background_spectral_files = glob.glob(paths.spath('{0}_spw[0123]_background_mean.fits'.format(name)))
    assert len(spectral_files) == 4#len(background_spectral_files) == 4
    spectra = pyspeckit.Spectra(spectral_files)
Ejemplo n.º 4
0
    
    return myclass

pyspeckit.spectrum.fitters.default_Registry.add_fitter('hnco_absorption',hnco_absorption_fitter(),5)


if __name__ == "__main__" and False:

    import glob
    import pyspeckit
    import paths
    import radio_beam

    target = 'e2nw'

    spectra = pyspeckit.Spectra(glob.glob(paths.spath("*{0}*fits".format(target))))
    beam = radio_beam.Beam.from_fits_header(spectra.header)
    # "baseline"
    spectra.data -= 0.15
    spectra.data *= beam.jtok(spectra.xarr)

    spectra.plotter()

    spectra.specfit.Registry.add_fitter('hnco', hnco_fitter(), 4)
    spectra.specfit(fittype='hnco', guesses=[55, 4, 200, 5e15],
                    limitedmin=[True]*4, limitedmax=[True]*4, limits=[(50,70),
                                                                      (1,8),
                                                                      (20,
                                                                       1000),
                                                                      (1e13,
                                                                       1e18)])
Ejemplo n.º 5
0
                    (True, False), (True, False)],
        parlimits=[(0, 0), (0, 0), (0, 0), (0, 0), (0, 0)],
        shortvarnames=(r'\Delta x', r'\sigma', 'T_{ex}', 'N', 'T_{BG}'),
        centroid_par='shift',
    )
    myclass.__name__ = "ch3cn_absorption"

    return myclass


pyspeckit.spectrum.fitters.default_Registry.add_fitter(
    'ch3cn_absorption', ch3cn_absorption_fitter(), 5)

if __name__ == "__main__":

    sp = pyspeckit.Spectrum(paths.spath('e2e_radial_bin_0.00to0.38_spw2.fits'))
    sp.specfit.register_fitter('13ch3cn_spw', ch3cn_spw_fitter(), 12)
    sp.xarr.convert_to_unit(u.GHz)
    sp.plotter(xmin=231.88, xmax=232.52)
    F = False
    T = True
    sp.baseline.basespec[:] = 0.380
    sp.baseline.baselinepars = [0, 0.380]
    limits = [
        (54, 59),
        (1.5, 5),
    ] + [(0.01, 0.25)] * 9 + [(0.0, 0.01)]
    fixed = [
        F,
        T,
    ] + [T] * 6 + [F] * 3 + [T]
line_table = table.Table.read(paths.apath('full_line_table.csv'))
line_table.sort('Species')

regions = (pyregion.open(paths.rpath("cores.reg")))

# check that it will finish before running everything
for region in regions:
    name = region.attr[1]['text']
    if region.name == 'point':
        # when we're using peak pixels from the photometry catalog, the 'point'
        # objects can be skipped
        continue

    spectral_files = glob.glob(
        paths.spath('{0}_spw[0123]_peak.fits'.format(name)))
    #background_spectral_files = glob.glob(paths.spath('{0}_spw[0123]_background_mean.fits'.format(name)))
    assert len(spectral_files) == 4  #len(background_spectral_files) == 4
    vcen = velo_guesses.guesses[name]

for region in regions:
    name = region.attr[1]['text']
    if region.name == 'point':
        # when we're using peak pixels from the photometry catalog, the 'point'
        # objects can be skipped
        continue

    spectral_files = glob.glob(
        paths.spath('{0}_spw[0123]_peak.fits'.format(name)))
    #background_spectral_files = glob.glob(paths.spath('{0}_spw[0123]_background_mean.fits'.format(name)))
    assert len(spectral_files) == 4  #len(background_spectral_files) == 4
    myvtbl = Table.read(paths.tpath('core_velocities.txt'),
                        # write as ascii.fixed_width
                        format='ascii.fixed_width', delimiter='|')

    line_table = Table.read(paths.apath('full_line_table.csv'))
    all_line_ids = {"{0}_{1}".format(row['Species'], row['Resolved QNs']):
                    (row['Freq-GHz'] if row['Freq-GHz']
                     else row['Meas Freq-GHz'])*u.GHz
                    for row in line_table}
    all_line_ids.update(line_ids)

    for row in myvtbl:

        speclist = [pyspeckit.Spectrum(fn) for fn in
                    glob.glob(paths.spath("{0}_spw*_peak.fits".format(row['source'])))]
        if len(speclist) == 0:
            continue

        for sp in speclist:
            beam = radio_beam.Beam.from_fits_header(sp.header)
            sp.data *= beam.jtok(sp.xarr)
            sp.unit='K'

        plot_whole_spectrum(speclist,
                            title=row['source'],
                            line_id=all_line_ids,
                            figname='fullspectra/ALLLINES_{0}.png'.format(row['source']),
                            velocity=row['velocity']*u.km/u.s,
                           )
Ejemplo n.º 8
0
import velo_guesses
import radio_beam

import warnings
from numpy.ma.core import MaskedArrayFutureWarning
warnings.filterwarnings('ignore', category=MaskedArrayFutureWarning)

line_table = table.Table.read(paths.apath('full_line_table.csv'))
line_table.sort('Species')

regions = (pyregion.open(paths.rpath("cores.reg")))

for region in regions:
    name = region.attr[1]['text']

    spectral_files = glob.glob(paths.spath('{0}_spw[0123]_mean.fits'.format(name)))
    #background_spectral_files = glob.glob(paths.spath('{0}_spw[0123]_background_mean.fits'.format(name)))
    assert len(spectral_files) == 4#len(background_spectral_files) == 4
    spectra = pyspeckit.Spectra(spectral_files)
    #bgspectra = pyspeckit.Spectra(background_spectral_files)
    stats = spectra.stats()
    err = stats['std'] # overly conservative guess

    for sp in spectra:
        sp.data -= np.nanpercentile(sp.data, 25)
    #med = stats['median']
    #if med < 0:
    #    med = 0

    line_table.add_column(table.Column(name='{0}FittedAmplitude'.format(name), data=np.zeros(len(line_table))))
    line_table.add_column(table.Column(name='{0}FittedCenter'.format(name), data=np.zeros(len(line_table))))
Ejemplo n.º 9
0

if __name__ == "__main__":

    import glob
    import pyspeckit
    from astropy import wcs
    from astropy import coordinates
    import pyregion
    import paths
    import radio_beam

    target = 'e2e'

    spectra = pyspeckit.Spectra(
        glob.glob(paths.spath("*{0}_spw[0-9]_mean.fits".format(target))))
    beam = radio_beam.Beam.from_fits_header(spectra.header)
    # "baseline"
    spectra.data -= np.nanpercentile(spectra.data, 10)
    spectra.data *= beam.jtok(spectra.xarr)

    spectra.plotter()

    spectra.specfit.Registry.add_fitter('ch3oh', ch3oh_fitter(), 4)
    spectra.specfit(fittype='ch3oh',
                    guesses=[55, 4, 200, 5e15],
                    limitedmin=[True] * 4,
                    limitedmax=[True] * 4,
                    limits=[(50, 70), (1, 4), (20, 1000), (1e13, 1e18)])

    ok = slaim['Species'] == 'CH3OHvt=0'
        format='ascii.fixed_width',
        delimiter='|')

    line_table = Table.read(paths.apath('full_line_table.csv'))
    all_line_ids = {
        "{0}_{1}".format(row['Species'], row['Resolved QNs']):
        (row['Freq-GHz'] if row['Freq-GHz'] else row['Meas Freq-GHz']) * u.GHz
        for row in line_table
    }
    all_line_ids.update(line_ids)

    for row in myvtbl:

        speclist = [
            pyspeckit.Spectrum(fn) for fn in glob.glob(
                paths.spath("{0}_spw*_peak.fits".format(row['source'])))
        ]
        if len(speclist) == 0:
            continue

        for sp in speclist:
            beam = radio_beam.Beam.from_fits_header(sp.header)
            sp.data *= beam.jtok(sp.xarr)
            sp.unit = 'K'

        plot_whole_spectrum(
            speclist,
            title=row['source'],
            line_id=all_line_ids,
            figname='fullspectra/ALLLINES_{0}.png'.format(row['source']),
            velocity=row['velocity'] * u.km / u.s,
        cubefn = paths.dpath('12m/fullcube_cutouts/e2cutout_full_W51_spw{0}_lines.fits'
                             .format(spw))
        print(cubefn)

        spectra = spectra_from_cubefn(cubefn, reg, bins_arcsec, coordinate)

        pl.figure(1).clf()

        for bins, (key, spectrum) in zip(bins_arcsec, spectra.items()):
            include = np.isfinite(spectrum) & np.array([(bm.major < 1*u.arcsec) &
                                                        (bm.minor < 1*u.arcsec)
                                                        for bm in spectrum.beams])
            avg_beam = spectral_cube.cube_utils.average_beams(spectrum.beams,
                                                              includemask=include)
            spectrum.meta['beam'] = avg_beam
            spectrum.write(paths.spath('e2e_radial_bin_{0:0.2f}to{1:0.2f}_spw{2}.fits'
                                       .format(bins[0], bins[1], spw)),
                           overwrite=True
                          )


            pl.plot(spectrum.spectral_axis.to(u.GHz).value, spectrum.value,
                    label='{0:0.1f}-{1:0.1f}'.format(*bins))

        pl.xlabel("Frequency (GHz)")
        pl.ylabel("Intensity (Jy)")
        pl.gca().ticklabel_format(useOffset=False)
        pl.gca().get_xaxis().get_major_formatter().set_scientific(False)
        pl.gca().get_yaxis().get_major_formatter().set_scientific(False)
        
        pl.legend(loc='best')
        pl.savefig(paths.fpath('radial_spectra/e2e_radial_spectra_spw{0}.png'
from line_parameters import frequencies, freq_name_mapping, yoffset

cores = pyregion.open(paths.rpath('cores.reg'))

minvelo = 45*u.km/u.s
maxvelo = 90*u.km/u.s

data = {}

for corereg in cores:
    name = corereg.attr[1]['text']
    data[name] = {}

    fn = "{name}_spw{ii}_mean.fits"
    spectra = pyspeckit.Spectra([paths.spath(fn.format(name=name, ii=ii))
                                 for ii in range(4)])
    spectra.data[(233.84*u.GHz<spectra.xarr) & (spectra.xarr>234.036*u.GHz)] = np.nan
    spectra.data[(230.00*u.GHz<spectra.xarr) & (spectra.xarr>230.523*u.GHz)] = np.nan
    scaling = np.nanmax(spectra.data) - np.nanpercentile(spectra.data, 20)
    assert not np.isnan(scaling)
    print("Scaling for {fn} = {scaling}".format(fn=fn.format(name=name, ii=0), scaling=scaling))

    fig = pl.figure(1)
    fig.clf()

    for spwnum,sp in enumerate(spectra):
        if spwnum == 3:
            # flag out the middle section where apparently many antennae have been flagged
            sp.data[1600:1984] = np.nan
        elif spwnum == 2:
           'e2se': -0.005,
           'north': 0.2,
          }
velo = {'e8mm': 61*u.km/u.s,
        'e2e': 56*u.km/u.s,
        'ALMAmm14': 62*u.km/u.s,
        'ALMAmm41': 55*u.km/u.s,
        'e2nw': 55.626*u.km/u.s,
        'e2se': 54*u.km/u.s,
        'north': 58*u.km/u.s,
       }

pl.figure(1).clf()

for target in snu_min:
    files = glob.glob(paths.spath("*{0}*fits".format(target)))
    if len(files) == 0:
        print("No matches for {0}".format(target))
        continue

    spectra = pyspeckit.Spectra(files)

    for ii in range(4):
        spectra[ii].plotter(figure=pl.figure(1))

        species_names = [x[0] for x in line_to_image_list]
        frequencies = u.Quantity([float(x[1].strip("GHz")) for x in line_to_image_list],
                                 unit=u.GHz)

        spectra[ii].plotter.axis.set_ylim(snu_min[target],
                                          spectra[ii].plotter.axis.get_ylim()[1])


if __name__ == "__main__":

    import glob
    import pyspeckit
    from astropy import wcs
    from astropy import coordinates
    import pyregion
    import paths
    import radio_beam

    target = 'e2e'

    spectra = pyspeckit.Spectra(glob.glob(paths.spath("*{0}_spw[0-9]_mean.fits".format(target))))
    beam = radio_beam.Beam.from_fits_header(spectra.header)
    # "baseline"
    spectra.data -= np.nanpercentile(spectra.data, 10)
    spectra.data *= beam.jtok(spectra.xarr)

    spectra.plotter()

    spectra.specfit.Registry.add_fitter('ch3oh', ch3oh_fitter(), 4)
    spectra.specfit(fittype='ch3oh', guesses=[55, 4, 200, 5e15],
                    limitedmin=[True]*4, limitedmax=[True]*4, limits=[(50,70),
                                                                      (1,4),
                                                                      (20,
                                                                       1000),
                                                                      (1e13,
                                                                       1e18)])
    for key in colnames
]
data_list.insert(0, names)

tbl = Table(data_list)
tbl.sort('SourceID')
tbl.write(paths.tpath("dendro_core_velocities_7m12mspectra.ipac"),
          format="ascii.ipac")

# 12m only
data = {}

for row in pruned_ppcat:
    name = row['_idx']

    fn = paths.spath("dendro{name:03d}_spw{ii}_mean.fits")

    result = spectral_overlays.spectral_overlays(
        fn,
        name=name,
        freq_name_mapping=freq_name_mapping,
        frequencies=frequencies,
        yoffset=yoffset,
        minvelo=minvelo,
        maxvelo=maxvelo,
    )
    if result:
        data[name] = result

firstentry = list(data.keys())[0]
colnames = list(data[firstentry].keys())
    'north': 0.3,
    'e2nw': 0.1,
}
velo = {
    'e8mm': 61 * u.km / u.s,
    'e2e': 56 * u.km / u.s,
    'e2nw': 55.626 * u.km / u.s,
    'ALMAmm14': 62 * u.km / u.s,
    'north': 55 * u.km / u.s,
}

pl.figure(1).clf()

for target, species_list in spectra_to_species.items():
    spectra = pyspeckit.Spectra(
        glob.glob(paths.spath("*{0}*fits".format(target))))

    for species_tuple in species_list:
        species_name, chemid, tmax = species_tuple

        for ii in range(4):
            cat = Splatalogue.query_lines(spectra[ii].xarr.min(),
                                          spectra[ii].xarr.max(),
                                          chemical_name=chemid,
                                          energy_max=tmax,
                                          energy_type='eu_k',
                                          noHFS=True,
                                          line_lists=['SLAIM'])
            spectra[ii].plotter(figure=pl.figure(1))
            spectra[ii].plotter.axis.set_ylim(
                snu_min[target], spectra[ii].plotter.axis.get_ylim()[1])
from line_parameters import frequencies, freq_name_mapping, yoffset

cores = pyregion.open(paths.rpath('cores.reg'))

minvelo = 45 * u.km / u.s
maxvelo = 90 * u.km / u.s

data = {}

for corereg in cores:
    name = corereg.attr[1]['text']
    data[name] = {}

    fn = "{name}_spw{ii}_mean.fits"
    spectra = pyspeckit.Spectra(
        [paths.spath(fn.format(name=name, ii=ii)) for ii in range(4)])
    spectra.data[(233.84 * u.GHz < spectra.xarr)
                 & (spectra.xarr > 234.036 * u.GHz)] = np.nan
    spectra.data[(230.00 * u.GHz < spectra.xarr)
                 & (spectra.xarr > 230.523 * u.GHz)] = np.nan
    scaling = np.nanmax(spectra.data) - np.nanpercentile(spectra.data, 20)
    assert not np.isnan(scaling)
    print("Scaling for {fn} = {scaling}".format(fn=fn.format(name=name, ii=0),
                                                scaling=scaling))

    fig = pl.figure(1)
    fig.clf()

    for spwnum, sp in enumerate(spectra):
        if spwnum == 3:
            # flag out the middle section where apparently many antennae have been flagged
data_list.insert(0, names)


tbl = Table(data_list)
tbl.sort('SourceID')
tbl.write(paths.tpath("core_velocities_7m12m_hires.ipac"), format="ascii.ipac",
          overwrite=True)


# 12m only
data = {}

for corereg in cores:
    name = corereg.attr[1]['text']

    fn = paths.spath("{name}_spw{ii}_mean.fits")

    result = spectral_overlays.spectral_overlays(fn, name=name,
                                                 freq_name_mapping=freq_name_mapping,
                                                 frequencies=frequencies,
                                                 yoffset=yoffset,
                                                 minvelo=minvelo,
                                                 maxvelo=maxvelo,
                                                )
    if result:
        data[name] = result

firstentry = list(data.keys())[0]
colnames = list(data[firstentry].keys())
coltypes = {k:type(data[firstentry][k]) for k in colnames}
names = Column([name for name in data], name='SourceID')
import paths
import pyspeckit
import glob
import matplotlib
matplotlib.use('Qt4Agg')
import os
import pylab as pl

tbl = Table.read(paths.mpath('diffuse_lines_mainonly.ipac'),
                 format='ascii.ipac')
rfreq = tbl['FreqGHz']
rfreq[rfreq.mask] = tbl['MeasFreqGHz'][rfreq.mask]

freq = rfreq * (1-65*u.km/u.s/constants.c)

for fn in glob.glob(paths.spath("*.fits")):
    sp = pyspeckit.Spectrum(fn)
    sp.xarr.convert_to_unit('GHz')
    sp.plotter(figure=pl.figure(1), clear=True)
    sp.plotter.line_ids(tbl['Species'], freq*u.GHz, unit='GHz')
    outname = os.path.splitext(os.path.split(fn)[1])[0]
    sp.plotter.savefig(paths.sppath("{0}.png".format(outname)))


"""
import paths
import pyspeckit
import numpy as np
import glob
sp = pyspeckit.Spectrum('ionization_front_circle_SgrB2_12m_spw0_lines.fits')
sp.plotter()
Ejemplo n.º 20
0
                spw))
        print(cubefn)

        spectra = spectra_from_cubefn(cubefn, reg, bins_arcsec, coordinate)

        pl.figure(1).clf()

        for bins, (key, spectrum) in zip(bins_arcsec, spectra.items()):
            include = np.isfinite(spectrum) & np.array(
                [(bm.major < 1 * u.arcsec) & (bm.minor < 1 * u.arcsec)
                 for bm in spectrum.beams])
            avg_beam = spectral_cube.cube_utils.average_beams(
                spectrum.beams, includemask=include)
            spectrum.meta['beam'] = avg_beam
            spectrum.write(paths.spath(
                'e2e_radial_bin_{0:0.2f}to{1:0.2f}_spw{2}.fits'.format(
                    bins[0], bins[1], spw)),
                           overwrite=True)

            pl.plot(spectrum.spectral_axis.to(u.GHz).value,
                    spectrum.value,
                    label='{0:0.1f}-{1:0.1f}'.format(*bins))

        pl.xlabel("Frequency (GHz)")
        pl.ylabel("Intensity (Jy)")
        pl.gca().ticklabel_format(useOffset=False)
        pl.gca().get_xaxis().get_major_formatter().set_scientific(False)
        pl.gca().get_yaxis().get_major_formatter().set_scientific(False)

        pl.legend(loc='best')
        pl.savefig(
             for key in colnames]
data_list.insert(0, names)


tbl = Table(data_list)
tbl.sort('SourceID')
tbl.write(paths.tpath("dendro_core_velocities_7m12mspectra.ipac"), format="ascii.ipac")


# 12m only
data = {}

for row in pruned_ppcat:
    name = row['_idx']

    fn = paths.spath("dendro{name:03d}_spw{ii}_mean.fits")

    result = spectral_overlays.spectral_overlays(fn, name=name,
                                                 freq_name_mapping=freq_name_mapping,
                                                 frequencies=frequencies,
                                                 yoffset=yoffset,
                                                 minvelo=minvelo,
                                                 maxvelo=maxvelo,
                                                )
    if result:
        data[name] = result

firstentry = list(data.keys())[0]
colnames = list(data[firstentry].keys())
coltypes = {k:type(data[firstentry][k]) for k in colnames}
names = Column([name for name in data], name='SourceID')
Ejemplo n.º 22
0
    myvtbl = Table.read(paths.tpath('core_velocities.txt'),
                        # write as ascii.fixed_width
                        format='ascii.fixed_width', delimiter='|')

    line_table = Table.read(paths.apath('full_line_table.csv'))
    all_line_ids = {"{0}_{1}".format(row['Species'], row['Resolved QNs']):
                    (row['Freq-GHz'] if row['Freq-GHz']
                     else row['Meas Freq-GHz'])*u.GHz
                    for row in line_table}
    all_line_ids.update(line_ids)

    for row in myvtbl:

        speclist = [pyspeckit.Spectrum(fn) for fn in
                    glob.glob(paths.spath("{0}_spw*fits".format(row['source'])))]

        for sp in speclist:
            beam = radio_beam.Beam.from_fits_header(sp.header)
            sp.data *= beam.jtok(sp.xarr)
            sp.unit='K'

        plot_whole_spectrum(speclist,
                            title=row['source'],
                            line_id=all_line_ids,
                            figname='fullspectra/ALLLINES_{0}.png'.format(row['source']),
                            velocity=row['velocity']*u.km/u.s,
                           )


    "e2nw": [("formamide", "NH2CHO", 500), ("methylformate", "CH3OCHO", 1500), ("dimethylether", "CH3OCH3", 1500)],
    "ALMAmm14": [("methanol", "CH3OH", 500)],
}
snu_min = {"e8mm": 0.3, "e2e": 0.3, "ALMAmm14": 0.0, "north": 0.3, "e2nw": 0.1}
velo = {
    "e8mm": 61 * u.km / u.s,
    "e2e": 56 * u.km / u.s,
    "e2nw": 55.626 * u.km / u.s,
    "ALMAmm14": 62 * u.km / u.s,
    "north": 55 * u.km / u.s,
}

pl.figure(1).clf()

for target, species_list in spectra_to_species.items():
    spectra = pyspeckit.Spectra(glob.glob(paths.spath("*{0}*fits".format(target))))

    for species_tuple in species_list:
        species_name, chemid, tmax = species_tuple

        for ii in range(4):
            cat = Splatalogue.query_lines(
                spectra[ii].xarr.min(),
                spectra[ii].xarr.max(),
                chemical_name=chemid,
                energy_max=tmax,
                energy_type="eu_k",
                noHFS=True,
                line_lists=["SLAIM"],
            )
            spectra[ii].plotter(figure=pl.figure(1))
import paths
import pyspeckit
import glob
import matplotlib
matplotlib.use('Qt4Agg')
import os
import pylab as pl

tbl = Table.read(paths.mpath('diffuse_lines_mainonly.ipac'),
                 format='ascii.ipac')
rfreq = tbl['FreqGHz']
rfreq[rfreq.mask] = tbl['MeasFreqGHz'][rfreq.mask]

freq = rfreq * (1 - 65 * u.km / u.s / constants.c)

for fn in glob.glob(paths.spath("*.fits")):
    sp = pyspeckit.Spectrum(fn)
    sp.xarr.convert_to_unit('GHz')
    sp.plotter(figure=pl.figure(1), clear=True)
    sp.plotter.line_ids(tbl['Species'], freq * u.GHz, unit='GHz')
    outname = os.path.splitext(os.path.split(fn)[1])[0]
    sp.plotter.savefig(paths.sppath("{0}.png".format(outname)))
"""
import paths
import pyspeckit
import numpy as np
import glob
sp = pyspeckit.Spectrum('ionization_front_circle_SgrB2_12m_spw0_lines.fits')
sp.plotter()
tbl = Table.read('/Users/adam/work/sgrb2/molecules/diffuse_lines_mainonly.ipac',format='ascii.ipac')
freq = tbl['FreqGHz']