【发布时间】:2020-12-25 18:58:45
【问题描述】:
我有一个来自 Biopython 包的名为 SeqRecord 的对象。
此对象包含以下格式的信息:
ID: chr1_8969882_-:chr1_568670_-:a1;113
Name: chr1_8969882_-:chr1_568670_-:a1;113
Description: chr1_8969882_-:chr1_568670_-:a1;113 total_counts: 7600 Seed: 225 K: 20 length: 86
Number of features: 0
Seq('CACTCATGAGCTGTCCCCACATTAGGCTTAAAAACAGATGCAATTCCCGGACGT...ACC', SingleLetterAlphabet())
因此它包含一个序列Seq 和一些其他属性:ID、Name、Description 等。
我想要的是计算序列中不同数量的字母。比如:
Secuencia 0:
Number of A´s:
Number of C´s:
Number of G´s:
Number of T´s:
到目前为止我做了什么?
这些对象通常有多个序列,所以我的想法是首先选择所有序列,然后计算每个序列的出现次数:
sequences=[]
for line in object:
if line.startswith ("Seq"):
sequences.append(line)
但这会弹出下一条消息:
'SeqRecord' object has no attribute 'startswith'
我也尝试过其他方法,但大多数 python 方法都不能使用这个对象类。
知道如何用基本的 python 解决这个问题吗?*
PD: * SeqRecord 有一些方法可以让你轻松完成,但我想用基本的 python 函数来做
【问题讨论】:
-
Python 标准库也有
collections.Counter。 -
SeqRecord不知道这种方法。它不是一个字符串。你可以在一个对象上调用dir()来查看它的属性(包括它的方法)。 -
你能解释一下为什么,如果你已经有一个
SeqRecord对象并且它提供了一个你想要的方法,你不想只调用那个方法吗? -
" python 方法不能使用这个对象类。"什么?问题是您试图将其视为
str对象(不是“python 对象”),但它不是。 -
for line in object:等等,什么?