gpt4 book ai didi

python - 通过序列输出解析 - Python

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:40 26 4
gpt4 key购买 nike

我从细菌群落的测序中获得了这些数据。我了解一些基本的 Python,并且正在完成 codecademy 教程。出于实际目的,请将 OTU 视为“物种”的另一种说法

这是原始数据的示例:

OTU ID   OTU Sum Lineage
591820 1083 k__Bacteria; p__Fusobacteria; c__Fusobacteria; o__Fusobacteriales; f__Fusobacteriaceae; g__u114; s__
532752 517 k__Bacteria; p__Fusobacteria; c__Fusobacteria; o__Fusobacteriales; f__Fusobacteriaceae; g__u114; s__
218456 346 k__Bacteria; p__Proteobacteria; c__Betaproteobacteria; o__Burkholderiales; f__Alcaligenaceae; g__Bordetella; s__
590248 330 k__Bacteria; p__Proteobacteria; c__Betaproteobacteria; o__Burkholderiales; f__Alcaligenaceae; g__; s__
343284 321 k__Bacteria; p__Proteobacteria; c__Betaproteobacteria; o__Burkholderiales; f__Comamonadaceae; g__Limnohabitans; s__

数据包括三项内容:物种的引用编号、该物种在样本中出现的次数以及该物种的分类学。

我想做的是将找到一个分类科(在数据中指定为 f_x)的序列的所有时间相加。

这是所需输出的示例:

f__Fusobacteriaceae 1600
f__Alcaligenaceae 676
f__Comamonadaceae 321

这不是为了上课。我几个月前开始学习 python,所以我至少能够查找任何建议。我知道它是如何通过缓慢的方式(在 excel 中复制和粘贴)来实现的,所以这供将来引用。

最佳答案

如果你的文件中的行真的像这样,你可以这样做

from collections import defaultdict
import re
nums = defaultdict(int)
with open("file.txt") as f:
for line in f:
items = line.split(None, 2) # Split twice on any whitespace
if items[0].isdigit():
key = re.search(r"f__\w+", items[2]).group(0)
nums[key] += int(items[1])

结果:

>>> nums
defaultdict(<type 'int'>, {'f__Comamonadaceae': 321, 'f__Fusobacteriaceae': 1600,
'f__Alcaligenaceae': 676})

关于python - 通过序列输出解析 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22415625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com