【问题标题】:Biopython: Cant use .count() for biopythonBiopython:不能将 .count() 用于 biopython
【发布时间】:2017-03-31 22:10:15
【问题描述】:

我的目标是接收“g”在 DNA 序列中出现的时间量。

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

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

然后我尝试在新创建的列表 comp 变量上使用 .count() 方法

print(seq.count('g'))

我收到一条错误消息

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

有人知道dealio是什么吗? Biopython 的手册说所有标准的 python 方法都应该有效。

【问题讨论】:

  • 请不要在 biostars 和 scicomp 上交叉发布您的问题。

标签: biopython


【解决方案1】:

您正在尝试将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

【讨论】:

  • 谢谢!在导入没有列表理解的文件时,.count() 是否有任何原因不起作用,例如 rec = SeqIO.parse("sequences/hiv.gbk.rtf", "fasta")
  • countstringslists常用的方法。 BioPython 的制造者没有为SeqIO 对象实现它。我的猜测是结果会模棱两可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
相关资源
最近更新 更多