好久没更了,找一篇没什么用的笔记放上来水一水吧

作用是快速展示carta导出的谱线,并进行简单的基线修正,方便组会展示(笑

PlotCarta

用carta导出的谱线存储为tsv格式,可以粗暴地通过定位字符搜寻&正则表达式得到数据并画图:

import re
import numpy as np

file_path2 = '/home/walnut/test/F4N1.tsv'
count2 = len(open(file_path2,'r').readlines())
freql2 = []
v_hil2 = []
fluxl2 = []
fix2 = []

for i in range(count2-7):
    with open(file_path2, 'r') as f:  
        lines2 = f.readlines() 
        line2 = lines2[i+6]   #carta导出的文件数据从第七行开始
    fix2.append(line2.split("e")[1]) #修正指数
    line2 = re.findall('-?\d+.?\d+',line2)   
    freql2.append(line2[0])
    fluxl2.append(line2[1])

freq2 = np.array(list(map(float,freql2)))
flux2_1 = np.array(list(map(float,fluxl2)))
fix = np.array(list(map(float,fix2)))
fixn = np.power(10.,fix)
flux2 = fixn * flux2_1
from matplotlib import pyplot as plt

fig, ax = plt.subplots()
plt.xlim([1.005,1.019])
#plt.ylim([-0.4,0.5])
#plt.axvline(1.39217791,c='r')
#plt.axvline(1.39308106,c='r')

plt.plot(freq2,flux2,c='k')
plt.xlabel("GHz")
plt.ylabel("mJy/beam")
plt.title('Index 1')
plt.axvline(1.0113255,c='g')
plt.axvline(1.014,c='g')
fig.set_size_inches(19.5, 10.5)

对噪声进行0阶多项式拟合,修正基线:

lscr=1400
rscr=1750

unfitline = np.append(flux2[0:lscr],flux2[rscr:-1])  #取噪声段
unfitline_x = np.arange(0,unfitline.shape[0])
p = np.polyfit(unfitline_x, unfitline, 0)            #多项式拟合
fitline_x = np.arange(0,flux2.shape[0])
y=np.polyval(p,fitline_x)
flux2 = flux2 - y