X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2Ftools%2FBlast.java;h=97120ad4969a7790881af51ef9bda92e04c87577;hb=d772adf9d23c4cdbf84b2af9d23e2e7ebedfcf3a;hp=5bfc31e38a8c1953d7065ceb557140349b80f1ee;hpb=0f295917c869b17a9322af3e738e3527ba9b31d4;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/tools/Blast.java b/forester/java/src/org/forester/archaeopteryx/tools/Blast.java index 5bfc31e..97120ad 100644 --- a/forester/java/src/org/forester/archaeopteryx/tools/Blast.java +++ b/forester/java/src/org/forester/archaeopteryx/tools/Blast.java @@ -26,19 +26,78 @@ package org.forester.archaeopteryx.tools; import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; import java.util.Arrays; import java.util.Enumeration; import java.util.Hashtable; import java.util.Vector; +import javax.swing.JApplet; + +import org.forester.archaeopteryx.AptxUtil; +import org.forester.archaeopteryx.TreePanel; +import org.forester.phylogeny.PhylogenyNode; +import org.forester.phylogeny.data.Accession; +import org.forester.util.ForesterUtil; import org.forester.ws.wabi.RestUtil; -public class Blast { +public final class Blast { + + final public static void openNcbiBlastWeb( final String query, + final boolean is_nucleic_acids, + final JApplet applet, + final TreePanel p ) { + //http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?CMD=Web&PAGE=Proteins&DATABASE=swissprot&QUERY=gi|163848401 + final StringBuilder uri_str = new StringBuilder(); + uri_str.append( "http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?CMD=Web&DATABASE=nr&PAGE=" ); + if ( is_nucleic_acids ) { + uri_str.append( "Nucleotide" ); + } + else { + uri_str.append( "Proteins" ); + } + uri_str.append( "&QUERY=" ); + uri_str.append( query ); + try { + AptxUtil.launchWebBrowser( new URI( uri_str.toString() ), applet != null, applet, "_aptx_blast" ); + } + catch ( final IOException e ) { + AptxUtil.showErrorMessage( p, e.toString() ); + e.printStackTrace(); + } + catch ( final URISyntaxException e ) { + AptxUtil.showErrorMessage( p, e.toString() ); + e.printStackTrace(); + } + } + + final public static String obtainQueryForBlast( final PhylogenyNode node ) { + String query = ""; + if ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getMolecularSequence() ) ) { + query = node.getNodeData().getSequence().getMolecularSequence(); + } + else if ( ( node.getNodeData().getSequence().getAccession() != null ) + && !ForesterUtil.isEmpty( node.getNodeData().getSequence().getAccession().getValue() ) ) { + if ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getAccession().getSource() ) ) { + query = node.getNodeData().getSequence().getAccession().getSource() + "%7C"; + } + query += node.getNodeData().getSequence().getAccession().getValue(); + } + else if ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getName() ) ) { + final Accession acc = AptxUtil.obtainSequenceAccessionFromName( node.getNodeData().getSequence().getName() ); + if ( acc != null ) { + query = acc.getSource() + "%7C" + acc.getValue(); + } + } + return query; + } - public Blast() { + final public static boolean isContainsQueryForBlast( final PhylogenyNode node ) { + return !ForesterUtil.isEmpty( obtainQueryForBlast( node ) ); } - public void go( final String geneName ) { + final public void ddbjBlast( final String geneName ) { // Retrieve accession number list which has specified gene name from searchByXMLPath of ARSA. Please click here for details of ARSA. /*target: Sequence length is between 300bp and 1000bp. Feature key is CDS.