【问题标题】:BaselineRemoval package for background fluorescence/noise removal用于背景荧光/噪声去除的 BaselineRemoval 软件包
【发布时间】:2020-12-17 09:42:24
【问题描述】:

我正在尝试使用BaselineRemoval 包从一些拉曼光谱中去除背景荧光。在代码文档中,它将输入的首选格式声明为input_array: A pandas dataframe column provided in input as dataframe['input_df_column']. It can also be a Python list object

我的例子-

df = pd.DataFrame(
    {'Patient': [1, 2, 3, 4, 5, 6],
     'Group': [1, 1, 1, 2, 2, 2],
     'Samples': [list(np.random.randn(3).round(2)) for i in range(6)]
    }
)

input_array = df['Samples']
polynomial_degree = 2

baseObj = BaselineRemoval(input_array)
Modpoly_output = baseObj.ModPoly(polynomial_degree)

但是,这会产生错误ValueError: setting an array element with a sequence.

不知道如何继续。

【问题讨论】:

  • 我检查了Samples 列的第一行的值。它看起来像一个列表对象[-0.89, 0.09, 1.23]。可以为一组值计算拉曼光谱。例如TemperaturePressureWavelength但是分开。而这个 pandas 列的内容是 [温度、压力、波长]。可以对数组对象进行基线移除,而不是多维矩阵。相反,如果您将这些值存储在单独的数组中并分别处理每个数组,那么它将为您提供所需的基线移除光谱。
  • 检查并修复数组的维度,拆分为多个数组,分别处理。
  • 嗯。上面的数据框只是一个从表面上看的虚拟示例。它们都是由不输出多维矩阵的拉曼尺度的探针记录的幅度。所以该列是 [amplitue_at_wavenumber1,amplitue_at_wavenumber2,amplitue_at_wavenumber3]。在我的原始数据集中,每个患者的样本列中有超过 2000 个荧光幅度。不确定将它们存储为单独的值会有什么帮助。
  • 我看到您面临的问题是关于如何整理数据。如果它采用数组形式,该库可以帮助您进行基线移除。在这种情况下,一个简单的 for 循环应该为您完成这项工作,正如您正确识别的那样。祝您项目一切顺利。

标签: python arrays signal-processing noise-reduction baselineremoval


【解决方案1】:

一个简单的for 循环应该可以做到。

df = pd.DataFrame(
    {'Patient': [1, 2, 3, 4, 5, 6],
     'Group': [1, 1, 1, 2, 2, 2],
     'Samples': [list(np.random.randn(3).round(2)) for i in range(6)]
    }
)

input_array = df['Samples']
polynomial_degree = 2

for row in input_array:
    print(BaselineRemoval(row).ModPoly(polynomial_degree))

【讨论】:

    猜你喜欢
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 2012-04-27
    相关资源
    最近更新 更多