如何从BLAST输出中获取无空位序列?

时间:2011-09-15 12:18:53

标签: python biopython fasta blast

我感兴趣的是从FASTA格式的BLAST输出中获取无空位序列。我以为我可以使用hsps_no_gap但它不起作用。我有什么方法可以用来完成这项工作吗?

3 个答案:

答案 0 :(得分:0)

BLAST输出的格式是什么? XML?您可以从爆炸输出中获取hsps并执行以下操作:

for alignment in blast_record.alignments:
    for hsp in alignment.hsps:
        query_no_gaps = hsp.query.replace("-","")
        sbjct_no_gaps = hsp.sbjct.replace("-","")

然后使用这些新变量写入fasta。

答案 1 :(得分:0)

我假设您的序列存储在SeqIO.Seq个对象中。

您可能希望在ungap中使用SeqIO.Seq方法。 documentation非常好。 ungap()是比字符串替换操作更好的选择(例如,它可以从序列字母表中推断出间隙字符)。

示例代码:

from Bio import SeqIO

seq_records = SeqIO.parse("input.fasta", format='fasta')
for record in seq_records:
    seq_ungapped = record.seq.ungap('-')

答案 2 :(得分:0)

如果您想要选择没有GAPS的序列,请尝试使用

for records in blast:
   if records.alignments:
   for align in records.alignments:
      if align.hsps.gap == 0
      print ("These ID have ungapped alignment : %s" % records.query)