Python:如何对一组峰中的每个峰进行线性基线处理

时间:2014-05-19 22:32:30

标签: python baseline

我需要帮助编写代码,以便我能够在一组峰中对每个峰进行基线(焓与时间等温滴定量热法数据)。

数据由ITC仪器以这种方式创建(其中'@#'表示峰的开始,数据在下面列为时间[秒],焓[ucal / s]和温度[deg。 C但不必要,因为它通常保持不变]):

@0
2.00,13.585249,25.00761
4.00,13.585438,25.00699
6.00,13.585557,25.00688
8.00,13.585472,25.00804
@1,6.0000
302.00,13.607173,25.00958
304.00,13.607608,25.00931
306.00,13.607758,25.00965

每个峰有超过100个点(我已将其缩短到上面),我想在每个峰中加入一个线性方程来归零每个焓值,这样我就可以整合每个峰以产生一个结合图。我欢迎任何帮助/建议;谢谢!

1 个答案:

答案 0 :(得分:0)

我能够做到。谢谢那些回复的人!我将把这个留给任何可能需要在未来以线性拟合基线峰值的人(假设第一点和最后40点就足够像ITC那样在适当的拟合线上):

#defining function to calculate baseline of peaks in x vs y graph
def calc_baseline(x,y):   
    zeroed_y=[]   
    for n in range(len(y)): 
        line_y=array(y[n][0:1]+y[n][-41:-1])
        line_x=array(x[n][0:1]+x[n][-41:-1])
        p=scipy.polyfit(baseline_x,baseline_y,1)
        baseline_y=array(x[n])*p[0]+p[1]
        zeroed_y.append(baseline_y)
    return zeroed_y

#defining function to zero baselines of peaks in x vs y graph, assuming number_injections is a known integer
def zero_baseline(number_injections,y,zeroed_y):
    zeroed_y_lists=[]
    for i in range(0,number_injections+1):
        zeroed_y=y[i]-zeroed_y[i]
        zeroed_y_lists.append(zeroed_y)
    return zeroed_y_lists