A simple web API for BLAST which returns results as XML.
GET .../databases
Returns a list of supported databases, one per line, valid
for the db
parameter.
POST .../blast
Requires the POST parameters db
and
query
to select the BLAST database and query
sequence. The query sequence must be nucleotides.
Optional parameters are:
Parameter | Description |
---|---|
max_target_seqs |
Positive integer to use for -max_target_seqs
option to blastn. Defaults to 10.
|
dust |
String used for the -dust option to blastn.
Unused by default. You may wish to set this to
no , for example.
|
On success (HTTP 200) the response body is the XML output by BLAST. Both HTTP 4xx and 5xx status codes are used on failure with plain text bodies containing an error message.
HTTP Status | Reason |
---|---|
400 Bad Request | You did not provide a valid database or a query sequence |
500 Internal Server Error | An unexpected error occurred while processing your request |
If you run into issues, please let us know!
Created by Thomas Sibley of the Mullins Lab at the University of Washington, Department of Microbiology.
Questions? Drop us a line.
curl -X POST http://indra.mullins.microbiol.washington.edu/masterblaster/blast \ --data db=HXB2 \ --data query=TCATTATATAATACAGTAGCAACCCTCTATTGTGTGCATCAAAGG
<?xml version="1.0"?> <!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "http://www.ncbi.nlm.nih.gov/dtd/NCBI_BlastOutput.dtd"> <BlastOutput> <BlastOutput_program>blastn</BlastOutput_program> <BlastOutput_version>BLASTN 2.2.30+</BlastOutput_version> <BlastOutput_reference>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.</BlastOutput_reference> <BlastOutput_db>/opt/home/apps/masterblaster/db/HXB2</BlastOutput_db> <BlastOutput_query-ID>Query_1</BlastOutput_query-ID> <BlastOutput_query-def>No definition line</BlastOutput_query-def> <BlastOutput_query-len>45</BlastOutput_query-len> <BlastOutput_param> <Parameters> <Parameters_expect>10</Parameters_expect> <Parameters_sc-match>1</Parameters_sc-match> <Parameters_sc-mismatch>-2</Parameters_sc-mismatch> <Parameters_gap-open>0</Parameters_gap-open> <Parameters_gap-extend>0</Parameters_gap-extend> <Parameters_filter>L;m;</Parameters_filter> </Parameters> </BlastOutput_param> <BlastOutput_iterations> <Iteration> <Iteration_iter-num>1</Iteration_iter-num> <Iteration_query-ID>Query_1</Iteration_query-ID> <Iteration_query-def>No definition line</Iteration_query-def> <Iteration_query-len>45</Iteration_query-len> <Iteration_hits> <Hit> <Hit_num>1</Hit_num> <Hit_id>gnl|BL_ORD_ID|0</Hit_id> <Hit_def>K03455|HIVHXB2CG</Hit_def> <Hit_accession>0</Hit_accession> <Hit_len>9719</Hit_len> <Hit_hsps> <Hsp> <Hsp_num>1</Hsp_num> <Hsp_bit-score>84.2195</Hsp_bit-score> <Hsp_score>45</Hsp_score> <Hsp_evalue>1.46556e-20</Hsp_evalue> <Hsp_query-from>1</Hsp_query-from> <Hsp_query-to>45</Hsp_query-to> <Hsp_hit-from>1018</Hsp_hit-from> <Hsp_hit-to>1062</Hsp_hit-to> <Hsp_query-frame>1</Hsp_query-frame> <Hsp_hit-frame>1</Hsp_hit-frame> <Hsp_identity>45</Hsp_identity> <Hsp_positive>45</Hsp_positive> <Hsp_gaps>0</Hsp_gaps> <Hsp_align-len>45</Hsp_align-len> <Hsp_qseq>TCATTATATAATACAGTAGCAACCCTCTATTGTGTGCATCAAAGG</Hsp_qseq> <Hsp_hseq>TCATTATATAATACAGTAGCAACCCTCTATTGTGTGCATCAAAGG</Hsp_hseq> <Hsp_midline>|||||||||||||||||||||||||||||||||||||||||||||</Hsp_midline> </Hsp> </Hit_hsps> </Hit> </Iteration_hits> <Iteration_stat> <Statistics> <Statistics_db-num>1</Statistics_db-num> <Statistics_db-len>9719</Statistics_db-len> <Statistics_hsp-len>11</Statistics_hsp-len> <Statistics_eff-space>330072</Statistics_eff-space> <Statistics_kappa>0.46</Statistics_kappa> <Statistics_lambda>1.28</Statistics_lambda> <Statistics_entropy>0.85</Statistics_entropy> </Statistics> </Iteration_stat> </Iteration> </BlastOutput_iterations> </BlastOutput>
#!/usr/bin/env perl use strict; use warnings; use LWP::UserAgent; my $ua = LWP::UserAgent->new; sub blast { my $response = $ua->post( 'http://indra.mullins.microbiol.washington.edu/masterblaster/blast', { @_, dust => 'no', max_target_seqs => 10, } ); die "Request failed: ", $response->status_line unless $response->is_success; return $response->decoded_content; } my $xml = blast( db => 'HXB2', query => 'TCATTATATAATACAGTAGCAACCCTCTATTGTGTGCATCAAAGG' ); print $xml;