首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BioPython修剪fasta文件

使用BioPython修剪fasta文件
EN

Stack Overflow用户
提问于 2018-08-01 19:44:32
回答 1查看 704关注 0票数 1

我有一个包含多个序列的fasta文件。有些序列跟在“-”后面,我想从最后的序列中剪短它们。有没有一种干净的方法来修剪它们并使用Biopython编写一个没有破折号的新fasta文件?

我看到了这个帖子How to remove all-N sequence entries from fasta file(s),并试图修改一些代码,但它没有工作.

包含如下序列的文件:

sequence_of_interest

代码语言:javascript
复制
def dash_removal(file_in, file_out):
    records = SeqIO.parse(file_in, 'fasta')
    filtered = (rec for rec in records if any(ch != '-' for ch in rec.seq))
    SeqIO.write(filtered, file_out, 'fasta')
    dash_removal("dash_removal_test.fasta", "dashes_gone?.fasta")

所有的序列最终都应该修剪成如下所示:

sequence_of_interest

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-01 21:38:42

使用sed的所有选项都是很棒的,因为它们更快,但是这里有一种在BioPython中这样做的方法。

其思想是对每个记录的rstrip属性使用seqrstrip可以用于序列,就像在Python中的任何其他字符串上一样。

代码语言:javascript
复制
from Bio import SeqIO
import io

seq = """>sequence_of_interest
CAGGCCATTTCACCTAGAACTTTAAATGCATGGGTAAAAGTAGTAGAAGAGAAGGCTTTTAGCCCAGAAGTAATACCCAT
GTTTTCAGCATTATCAGAAGGAGCCACCCCACAAGATTTAAACACCATGCTAAACACAGTGGGGGGACATCAAGCAGCAA
TGCAAATGTTAAAAGAGACCATCAATGAGGAAGCTGCAGAATGGGATAGATTGCATCCAGTGCACGCAGGGCCTATTGCA
CCAGGCCAGATGAGAGAA--------------------------------------------------------------"""

f = io.StringIO(seq) # replace it with f = open('my_fasta.fa', 'r')
clean_records = []
for record in SeqIO.parse(f, "fasta"):
    record.seq = record.seq.rstrip('-')
    clean_records.append(record)

with open('clean_fasta.fa', 'w') as f:
    SeqIO.write(clean_records, f, 'fasta')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51641192

复制
相关文章

相似问题

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