Team:Freiburg software/Code/BlastSearch.java

background-position:0% -42px; } background-position:100% -42px; color:#213340; } display:none; }
 * 1) tabs a.code_active {
 * 1) tabs a.code_active span {
 * 1) toc {

BlastSearch
/*
 * Copyright: synbiowave
 * License: GPL
 * Authors: Paul Staab
 * Version: 0.1
 * DESCRIPTION:
 * This class helps handles blastsearches
 * Version: 0.1
 * DESCRIPTION:
 * This class helps handles blastsearches
 * This class helps handles blastsearches

package blastRobot;

import java.io.BufferedReader;

public class BlastSearch {	//Variables private SymbolList sequence; private String database=""; private String program=""; private String rid=""; private String numberOfResults="10"; private List results = new ArrayList; //Constructors public BlastSearch { 	}  	public BlastSearch(SymbolList sequence) throws Exception { 		  	this.sequence = sequence; }

public BlastSearch(SymbolList sequence, String database, String program) throws Exception { 		  	this.sequence = sequence; this.database = database; this.program = program; } 	//Getters and Setters public SymbolList getSequence { return sequence; }

public void setSequence(SymbolList sequence) { this.sequence = sequence; }

public String getDatabase { return database; }

public void setDatabase(String database) { this.database = database; }

public String getProgram { return program; }

public void setProgram(String program) { this.program = program; }

public String getRID { return rid; }

public void setRID(String rid) { this.rid = rid; }	//Methods public void search throws Exception { 		//manual create a blast-query... //Should be done as POST, as URLs are limited to 255 chars afaik. URL searchurl = new URL("" + 				"http://www.ncbi.nlm.nih.gov/blast/Blast.cgi" +  				"?CMD=Put" +  				"&DATABASE=" + this.database +  				"&PROGRAM=" + this.program +  				"&HITLIST_SIZE=" + this.numberOfResults +  				"&QUERY=" + this.sequence.seqString ); //Query it 		BufferedReader reader = new BufferedReader ( 				new InputStreamReader( searchurl.openStream, "UTF-8"  )   		); //Receive the RID String line = ""; while ((line = reader.readLine) != null) { 			//BAD method to get the RID of the Request; if ( line.contains("Request ID") ) this.rid += line.substring(70, 81); } 		reader.close;

} 	public void parseResult throws Exception {  		URL searchurl = new URL("" +  				"http://www.ncbi.nlm.nih.gov/blast/Blast.cgi" +  				"?CMD=Get" +  				"&FORMAT_TYPE=XML" +  				"&RID=" + this.rid );

//do the parsing, the biojava-cookbook for documentation BlastXMLParserFacade blast = new BlastXMLParserFacade; SeqSimilarityAdapter adapter = new SeqSimilarityAdapter; blast.setContentHandler(adapter); SearchContentHandler builder = new BlastLikeSearchBuilder(results, new DummySequenceDB("queries"), new DummySequenceDBInstallation ); adapter.setSearchContentHandler(builder); blast.parse( new InputSource( searchurl.openStream ) ); }    	public String waveOutput throws Exception { 		String waveOutput = "\nBlast-Search\n"; for (Iterator i = results.iterator; i.hasNext; ) {       	SeqSimilaritySearchResult result = (SeqSimilaritySearchResult)i.next; Annotation anno = result.getAnnotation; for (Iterator j = anno.keys.iterator; j.hasNext; ) {       		Object key = j.next; Object property = anno.getProperty(key); waveOutput += (key+" : "+property) + "\n"; }       	waveOutput += ("Hits: \n"); //list the hits

for (Iterator k = result.getHits.iterator; k.hasNext; ) {       		SeqSimilaritySearchHit hit = (SeqSimilaritySearchHit)k.next; waveOutput += ("\t match: "+ hit.getSubjectID ); waveOutput += ("\t\t\t"+ hit.getEValue ) + "\n"; }       }        return waveOutput;

} }