【问题标题】:How can I convert the qblast XML output into the NCBI BLAST -outfmt 17?如何将 qblast XML 输出转换为 NCBI BLAST -outfmt 17?
【发布时间】:2016-08-11 23:59:30
【问题描述】:

我从 NCBI 独立 BLAST 开始我的项目,并使用了 -outfmt 17 选项。出于我的目的,格式化非常有帮助。但是,我不得不更改为 Biopython,我现在使用 qblast 将我的序列与 NCBI NT 数据库对齐。我可以将 qblast XML 保存/转换为与 NCBI BLAST 独立 -outfmt 17 格式相当的格式吗?

非常感谢您的帮助!

干杯, 菲利普

【问题讨论】:

    标签: format biopython blast


    【解决方案1】:

    我假设您的意思是 -outfmt 7,并且您需要一个带有列的输出。

    from Bio.Blast import NCBIWWW, NCBIXML
    
    # This is the BLASTN query which returns an XML handler in a StringIO
    r = NCBIWWW.qblast(
        "blastn",
        "nr",
        "ACGGGGTCTCGAAAAAAGGAGAATGGGATGAGAAGGATATATGGGTAGTGTCATTTTTTAACTTGCAGAT" +
        "TTCATCCTAGTCTTCCAGTTATCGTTTCCTAGCACTCCATGTTCCCAAGATAGTGTCACCACCCCAAGGA" +
        "CTCTCTCTCATTTTCTTTGCCTGGGCCCTCTTTCTACTGAGGAGTCGTGGCCTTCCATCAGTAGAAGCCG",
        expect=1E-5)
    
    # Now we read that XML extracting the info
    
    for record in NCBIXML.parse(r):
        for alignment in record.alignments:
            for hsp in alignment.hsps:
                cols = "{}\t" * 10
                print(cols.format(hsp.positives / hsp.align_length,
                                  hsp.align_length,
                                  hsp.align_length - hsp.positives,
                                  hsp.gaps,
                                  hsp.query_start,
                                  hsp.query_end,
                                  hsp.sbjct_start,
                                  hsp.sbjct_end,
                                  hsp.expect,
                                  hsp.score))
    

    输出类似:

    1   210 0   0   1   210 89250   89459   8.73028e-102    420.0   
    0   206 19  2   5   210 46259   46462   5.16461e-73 314.0   
    1   210 0   0   1   210 68822   69031   8.73028e-102    420.0   
    0   206 19  2   5   210 25825   26028   5.16461e-73 314.0   
    1   210 0   0   1   210 65887   66096   8.73028e-102    420.0   
    ...
    

    【讨论】:

    • 其实我的意思是 -outfmt 17 :) 但无论如何你的回答非常有帮助。我将尝试为我的需要编写一个解析器。我是编码新手,所以可能需要一段时间,但希望它会起作用。谢谢!
    • 我的 BLAST 在 11 之前只有 outfmt,如果您提供输出示例,我会更新我的答案。如果您认为我的回答对您的问题有效,您应该接受它。
    • 我不知道为什么,但我还有一些 outfmt 选项。以下是 outfmt 17 输出的样子: KC262216.1 0 Query_1 1 255 8199H713M10H * 0 0 * * AS:i:713 EV:f:0 NM:i:0 PI:f:100.00 BS:f:1317.78 无论如何我修改了上面的代码,将数据转换为我可以使用的格式。这不是 outfmt 17,而是在我的数据处理中更进一步。再次感谢您的帮助
    猜你喜欢
    • 2022-01-19
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多