首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重复1000个核苷酸窗口中的序列

重复1000个核苷酸窗口中的序列
EN

Stack Overflow用户
提问于 2017-04-19 02:49:54
回答 1查看 183关注 0票数 1

我试图用Python编写一个代码来检查我的fasta文件中的每个序列,并使用一个1000个核苷酸滑动窗口打印每个序列的新列表,但我不知道出了什么问题。

代码语言:javascript
运行
复制
"Traceback (most recent call last):
 File "<stdin>", line 4, in <module>
TypeError: expected a string or other character buffer object"

这是我的代码:

代码语言:javascript
运行
复制
from Bio import SeqIO
for record in SeqIO.parse("fasta.txt", "fasta"):
    pos=0
    if pos<len(record)+1:
        dna_1000.write("\n"+">"+record.id+"_"+pos+"\n"+record[pos:pos+1000])
        pos=pos+1000

我试过的方式略有不同:

代码语言:javascript
运行
复制
from Bio import SeqIO
for record in SeqIO.parse("fasta.txt", "fasta"):    
    for pos in range(0,len(record)+1,1000):
        dna_1000.write("\n"+">"+record.id+"_"+"\n"+record[pos:pos+1000])

但我也收到了这样的信息:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
TypeError: expected a string or other character buffer object

非常感谢你来看这个!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-19 05:08:38

原始代码在TypeError: cannot concatenate 'str' and 'int' objects中失败,因为dna_1000.write(...+'_'+pos+...)行将对象'_' where type('_') = str添加到对象pos where type(pos) = int中。这是不可能的,因为Python从不隐式地添加字符串和int :您必须在添加int:dna_1000.write(...+'_'+str(pos)+...)之前将其转换为字符串。

现在我们遇到了另一个错误TypeError: expected a string or other character buffer object。这源于dna_1000.write方法,该方法抱怨它不知道如何处理它的参数。它希望得到类似于字符串的内容,但得到的是"\n"+">"+record.id+"_"+str(pos)+"\n"+record[pos:pos+1000]),即SeqRecord。这是因为record是一个SeqRecord,切片一个SeqRecord会给您一个SeqRecord,而向SeqRecord中添加一个字符串会给您一个SeqRecord (带有一个修改的核苷酸序列)。

要真正访问切片record的底层核苷酸序列,需要使用.seq,并将其写入文件中,您需要将其转换为字符串。因此,要使代码运行不出现错误,可以执行以下操作:

代码语言:javascript
运行
复制
from Bio import SeqIO
for record in SeqIO.parse("fasta.txt", "fasta"):
    pos=0
    if pos<len(record)+1:
        seqstr = str(record[pos:pos+1000].seq)
        dna_1000.write("\n"+">"+record.id+"_"+str(pos)+"\n"+seqstr)
        pos=pos+1000

这是否是解决问题的最佳方法(或者这段代码是否能实现您的期望)是另一个我没有背景可以回答的问题。我唯一的其他建议是阅读http://biopython.org/wiki/SeqIO,看看包含的IO函数是否有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43485479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档