Biopython:不能使用.count()进行biopython

时间:2017-03-31 22:10:15

标签: biopython

我的目标是接收DNA序列中出现的'g'时间。

我使用列表理解通过Biopython导入了一个DNA序列

seq = [record for record in SeqIO.parse('sequences/hiv.gbk.rtf', 'fasta')]

然后我尝试在新创建的列表comp变量

上使用.count()方法
print(seq.count('g'))

我收到一条错误,内容为

  

NotImplementedError:故意不是SeqRecord比较   实现。明确比较感兴趣的属性。

任何人都知道这个故事是什么? Biopython的手册说所有标准的python方法都应该有效。

1 个答案:

答案 0 :(得分:2)

您正尝试将count应用于列表。您需要将其应用于每个元素的序列,例如

print(seq[0].seq.count('g'))

或者如果你想得到所有序列的总和

print(sum([s.seq.count('g') for s in seq]))

这是一个最小的工作示例

from Bio import SeqIO

txt = """>gnl|TC-DB|O60669|2.A.1.13.5 Monocarboxylate transporter 2 - Homo sapiens (Human).
MPPMPSAPPVHPPPDGGWGWIVVGAAFISIGFSYAFPKAVTVFFKEIQQIFHTTYSEIAW
>gnl|TC-DB|O60706|3.A.1.208.23 ATP-binding cassette sub-family C member 9 OS=Homo sapiens GN=ABCC9 PE=1 SV=2
MSLSFCGNNISSYNINDGVLQNSCFVDALNLVPHVFLLFITFPILFIGWGSQSSKVQIHH
>gnl|TC-DB|O60721|3.A.1.208.23 Sodium/potassium/calcium exchanger 1 OS=Homo sapiens GN=SLC24A1 PE=1 SV=1
MGKLIRMGPQERWLLRTKRLHWSRLLFLLGMLIIGSTYQHLRRPRGLSSLWAAVSSHQPI
>gnl|TC-DB|O60779|2.A.1.13.5 Thiamine transporter 1 (THTR-1) (ThTr1) (Thiamine carrier 1) (TC1) - Homo sapiens (Human).
MDVPGPVSRRAAAAAATVLLRTARVRRECWFLPTALLCAYGFFASLRPSEPFLTPYLLGP"""

filename = 'sequences.fa'
with open(filename, 'w') as f:
    f.write(txt)

seqs = [record for record in SeqIO.parse(filename, 'fasta')]

print(sum([s.seq.count('P') for s in seqs]))    
>>> 21

print(seqs[0].seq.count('P'))
>>> 9