This makes my eyes hurt. Please put this formatted correctly as an update into your original question.
hi , i'm using biopython to parse my blast xml output i make condition print on the number of for query. i print my query and sbject if the query have only one hit. but it's not working here is my script please help. thanks
result_handle = open("result.xml")
blast_records = NCBIXML.parse(result_handle)
for blast_record in blast_records:
for alignment in blast_record.alignments:
for hsp in alignment.hsps:
if(hsp.num_alignments == 1):
print "Query:",blast_record.query
print "subjet:",alignment.hit_def
print "length:", alignment.length
print "nombre de gaps:",hsp.gaps
4 answers
I always do it with the commandline:
cut -f 1 blastFile | grep queryId | sort -u | wc
this example works for tabular output. (-m 8). For XML just drop the cut.
It's not clear to me if you want to find all the HSPs for one HIT or if you want to find the result having one HSP for one Hit. However, the following XSLT stylesheet prints all the HSPs if there is only one hit.
<xsl:stylesheet xmlns:xsl="<a href=" http:="" www.w3.org="" 1999="" XSL="" Transform"="" rel="nofollow">http://www.w3.org/1999/XSL/Transform"
version="1.0"
>
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="BlastOutput"/>
</xsl:template>
<xsl:template match="BlastOutput">
<xsl:if test="count(BlastOutput_iterations/Iteration/Iteration_hits/Hit)=1">
<xsl:variable name="q" select="BlastOutput_query-def"/>
<xsl:variable name="h" select="BlastOutput_iterations/Iteration/Iteration_hits/Hit[1]/Hit_def"/>
<xsl:for-each select="BlastOutput_iterations/Iteration/Iteration_hits/Hit[1]/Hit_hsps/Hsp">
<xsl:value-of select="$q"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$h"/>
<xsl:text> </xsl:text>
<xsl:value-of select="Hsp_align-len"/>
<xsl:text> </xsl:text>
<xsl:value-of select="Hsp_gaps"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Usage:
$ xsltproc --novalid stylesheet.xsl blast.xml
No definition line Homo sapiens zinc finger CCCH-type containing 7B (ZC3H7B), mRNA 295 8
thanks for your help , i try your code but working it is not working , because my blast output is in xml. here is a small part of my blast xml output . i have many heat for the same query. i just want to get only the query which have only one hit. <?xml version="1.0"?> <!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "NCBI_BlastOutput.dtd"> [?] [?]blastn[?] [?]BLASTN 2.2.25+[?] [?]Zheng Zhang, Scott Schwartz, Lukas Wagner, and Webb Miller (2000), [?]A greedy algorithm for aligning DNA sequences[?], J Comput Biol 2000; 7(1-2):203-14.[?] [?]TriFLDB_Wheat[?] [?]Query_1[?] [?]RFL_Contig1[?] [?]590[?] [?] [?] [?]10[?] [?]1[?] [?]-2[?] [?]0[?] [?]0[?] [?]L;m;[?] [?] [?] [?] [?] [?]1[?] [?]Query_1[?] [?]RFL_Contig1[?] [?]590[?] [?] [?] [?]1[?] [?]gnl|BL_ORD_ID|0[?] [?]RFL_Contig1[?] [?]0[?] [?]590[?] [?] [?] [?]1[?] [?]1090.64358911306[?] [?]590[?] [?]0[?] [?]1[?] [?]590[?] [?]1[?] [?]590[?] [?]1[?] [?]1[?] [?]590[?] [?]590[?] [?]0[?] [?]590[?] [?]GGGCTCGCTCATCGTCCCATCCAACCCCGGAGCACCACCGGCGAAGCGGGAAGGCATCCATCCATGGTCGTCTCCACCTTCAGTGGCCCTGGGATTGGGCTCGGCTTCGGCGTCGGCTGCGGATTCGGAGTCGGATGGGGGTTCGGGGGTGAGGTTTTTACACCGCTCAAGTTTTAAGGGAGGGGCGAGAACTTGGAATCGCTTCTCGTTCAAGCATATTCGGGAGAATTGCTCTTGATTTTTGCTTATAGATTTCGCTGTTTAGCAGTCCCACTCCGTACAAAAGGGAATCTGTTTACCCGCTTCATAACCAGTAAGATGCATGCGAATTGGTTACCAAAAGCCTCCAGATGGAGTTAATTGTTATATGGAGTCACAAAGAAATAACGGAACAGCTTTGTGTACGATGAAATTGGTCTAACTTGTTACGACGATGGATCACCACTGCCCACAGACGTGATAAAATGGACGGTGGATTTCAACCATCGTACCAAAATTGTATGATAATATGTTGTACGCACAGAAATGCTTATGCCGCAAGATTCAATATGATATGAAGCCGGTTTTCCATGAAAAAAAAAAAAAAACGA[?] [?]GGGCTCGCTCATCGTCCCATCCAACCCCGGAGCACCACCGGCGAAGCGGGAAGGCATCCATCCATGGTCGTCTCCACCTTCAGTGGCCCTGGGATTGGGCTCGGCTTCGGCGTCGGCTGCGGATTCGGAGTCGGATGGGGGTTCGGGGGTGAGGTTTTTACACCGCTCAAGTTTTAAGGGAGGGGCGAGAACTTGGAATCGCTTCTCGTTCAAGCATATTCGGGAGAATTGCTCTTGATTTTTGCTTATAGATTTCGCTGTTTAGCAGTCCCACTCCGTACAAAAGGGAATCTGTTTACCCGCTTCATAACCAGTAAGATGCATGCGAATTGGTTACCAAAAGCCTCCAGATGGAGTTAATTGTTATATGGAGTCACAAAGAAATAACGGAACAGCTTTGTGTACGATGAAATTGGTCTAACTTGTTACGACGATGGATCACCACTGCCCACAGACGTGATAAAATGGACGGTGGATTTCAACCATCGTACCAAAATTGTATGATAATATGTTGTACGCACAGAAATGCTTATGCCGCAAGATTCAATATGATATGAAGCCGGTTTTCCATGAAAAAAAAAAAAAAACGA[?] [?]||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[?] [?] [?] [?] [?] [?] [?] [?]6162[?] [?]10638298[?] [?]23[?] [?]5951556324[?] [?]0.46[?] [?]1.28[?] [?]0.85[?] [?] [?] [?] [?]
did your code is and additionnal option to add in blast commande when blasting my query in the my local database??
Log in to answer this question.
Please indent lines of code with 4 or more spaces to make it readable.
And please elaborate: what are you trying to do, what is the result you want to get, and what do you get instead? In this form, it is not clear what you're asking at all.