得到p-value值和校正后的p-value值,能不能也把FDR数值也算出来
时间: 2024-01-15 09:03:36 浏览: 95
当然,我们可以计算FDR值并将其添加到基因表格中。以下是修改后的代码示例:
```python
import pandas as pd
from scipy.stats import ttest_ind
from statsmodels.stats.multitest import multipletests
# 读取基因表格数据
gene_data = pd.read_csv('gene_expression.csv')
# 获取条件列名
condition_columns = gene_data.columns[1:]
# 创建空的p-value列
gene_data['p_value'] = 0.0
# 计算每个基因的p-value值
for index, row in gene_data.iterrows():
gene_expression = row[1:] # 获取基因在不同条件下的表达量
condition_1 = gene_expression[:len(condition_columns)//2]
condition_2 = gene_expression[len(condition_columns)//2:]
_, p_value = ttest_ind(condition_1, condition_2) # 使用 t-test 计算p-value值
gene_data.at[index, 'p_value'] = p_value
# 进行FDR校正并计算FDR值
rejected, adjusted_p_values, _, fdr_values = multipletests(gene_data['p_value'], method='fdr_bh', is_sorted=False, returnsorted=False)
gene_data['adjusted_p_value'] = adjusted_p_values
gene_data['fdr'] = fdr_values
# 保存数据到新的表格
gene_data.to_csv('gene_expression_with_p_value_fdr.csv', index=False)
```
在这段代码中,我们使用 `multipletests` 函数进行FDR校正,并将校正后的调整p-value值保存在 "adjusted_p_value" 列中,同时将FDR值保存在 "fdr" 列中。
请注意,`multipletests` 函数的 `is_sorted` 参数设置为 False,表示输入的p-value值未排序。如果您的p-value值已经按照某个顺序排列,可以将 `is_sorted` 参数设置为 True,以提高计算效率。
最后,我们将包含新数据的基因表格保存到 'gene_expression_with_p_value_fdr.csv' 文件中。
这是一个简单的示例,您可以根据您的具体需求进行修改和调整。
阅读全文