使用python创建矩阵

2024-06-16 11:49:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有6个文本文件(每个文件对应一个特定的示例),每个文件如下所示:

Gene_ID Gene_Name   Strand  Start   End Length  Coverage    FPKM    TPM
ENSMUSG00000102735  Gm7369  +   4610471 4611406 936 0   0   0
ENSMUSG00000025900  Rp1 -   4290846 4409241 10926   0   0   0
ENSMUSG00000104123  Gm37483 -   4363346 4364829 1484    0   0   0
ENSMUSG00000102175  Gm6119  -   4692219 4693424 1206    0.328358    0.015815    0.008621

我想收集一个文件中1列和2列中的所有元素,以及新文件中每个示例对应的tpm值(第9列),因此在没有tpm值的地方输入0。你知道吗

我的输出文件应如下所示:

gene_id gene_name sample1_tpm sample2_tpm sample3_tpm ......sample6_tpm

Tags: 文件nameid示例coveragestartlengthend
1条回答
网友
1楼 · 发布于 2024-06-16 11:49:04

一种方法是保留一个字典来存储每个基因id的样本值

初始化字典={}

遍历6个文件中的每个文件并执行以下操作:

for file in [f1,f2,f3..f6]:
   for line in file:
        labels = line.split(" ")
        val = 1 if labels[8] else 0 
     if labels[0] not in dictionary:
        dictionary[labels[0]] = {'name' : labels[1], 'sample' : [val]}            
     else:
        dictionary[labels[0]]['sample'].append(val) 

这将存储键作为gene\u id和name,sample(6个sample\u id的列表)作为值。你知道吗

现在只需遍历键和值就可以写入输出文件。你知道吗

f = open("output.txt","w+")
f.write("gene_id,gene_name,sample1,sample2,sample3,sample4,sample5,sample6\n")
for key in dictionary.keys():
    samples = ",".join(dictionary[key]['sample'])
    f.write(dictionary[key]+","+dictionary[key]['name']+","+samples+"\n")
f.close()

相关问题 更多 >