From: cmzmasek@gmail.com Date: Fri, 5 Oct 2012 20:02:45 +0000 (+0000) Subject: blast X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=d55628ea76bcf138e44e6aee3d0e953dec1c2360;p=jalview.git blast --- diff --git a/forester/java/src/org/forester/archaeopteryx/Constants.java b/forester/java/src/org/forester/archaeopteryx/Constants.java index 46d88d2..1b47fb9 100644 --- a/forester/java/src/org/forester/archaeopteryx/Constants.java +++ b/forester/java/src/org/forester/archaeopteryx/Constants.java @@ -43,7 +43,7 @@ public final class Constants { public final static boolean ALLOW_DDBJ_BLAST = false; public final static String PRG_NAME = "Archaeopteryx"; final static String VERSION = "0.974"; - final static String PRG_DATE = "121003"; + final static String PRG_DATE = "121005"; final static String DEFAULT_CONFIGURATION_FILE_NAME = "_aptx_configuration_file"; final static String[] DEFAULT_FONT_CHOICES = { "Verdana", "Tahoma", "Arial", "Helvetica", "Dialog", "Lucida Sans", "SansSerif", "Sans-serif", "Sans" }; diff --git a/forester/java/src/org/forester/archaeopteryx/TreePanel.java b/forester/java/src/org/forester/archaeopteryx/TreePanel.java index af982e4..7a643cc 100644 --- a/forester/java/src/org/forester/archaeopteryx/TreePanel.java +++ b/forester/java/src/org/forester/archaeopteryx/TreePanel.java @@ -463,18 +463,23 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee JOptionPane.WARNING_MESSAGE ); return; } - if ( node.getNodeData().isHasSequence() ) { + if ( node.getNodeData().isHasSequence() || !ForesterUtil.isEmpty( node.getName() ) ) { final String query = Blast.obtainQueryForBlast( node ); + System.out.println( "query for BLAST is: " + query ); boolean nucleotide = false; - if ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getType() ) ) { - if ( !node.getNodeData().getSequence().getType().toLowerCase().equals( PhyloXmlUtil.SEQ_TYPE_PROTEIN ) ) { - nucleotide = true; - } - } - else if ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getMolecularSequence() ) ) { - nucleotide = !ForesterUtil.seqIsLikelyToBeAa( node.getNodeData().getSequence().getMolecularSequence() ); - } if ( !ForesterUtil.isEmpty( query ) ) { + if ( node.getNodeData().isHasSequence() ) { + if ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getType() ) ) { + if ( !node.getNodeData().getSequence().getType().toLowerCase() + .equals( PhyloXmlUtil.SEQ_TYPE_PROTEIN ) ) { + nucleotide = true; + } + } + else if ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getMolecularSequence() ) ) { + nucleotide = !ForesterUtil.seqIsLikelyToBeAa( node.getNodeData().getSequence() + .getMolecularSequence() ); + } + } JApplet applet = null; if ( isApplet() ) { applet = obtainApplet(); @@ -1524,12 +1529,11 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee } final private boolean isCanBlast( final PhylogenyNode node ) { - return ( node.getNodeData().isHasSequence() - && ( ( ( node.getNodeData().getSequence().getAccession() != null ) && !ForesterUtil.isEmpty( node - .getNodeData().getSequence().getAccession().getValue() ) ) - || !ForesterUtil.isEmpty( node.getNodeData().getSequence().getName() ) || !ForesterUtil - .isEmpty( node.getNodeData().getSequence().getMolecularSequence() ) ) && Blast - .isContainsQueryForBlast( node ) ); + return ( ( node.getNodeData().isHasSequence() && ( ( ( node.getNodeData().getSequence().getAccession() != null ) && !ForesterUtil + .isEmpty( node.getNodeData().getSequence().getAccession().getValue() ) ) + || !ForesterUtil.isEmpty( node.getNodeData().getSequence().getName() ) || !ForesterUtil.isEmpty( node + .getNodeData().getSequence().getMolecularSequence() ) ) ) || ( ( !ForesterUtil.isEmpty( node.getName() ) ) && Blast + .isContainsQueryForBlast( node ) ) ); } final boolean isCanCollapse() { diff --git a/forester/java/src/org/forester/archaeopteryx/tools/Blast.java b/forester/java/src/org/forester/archaeopteryx/tools/Blast.java index 97120ad..4d94450 100644 --- a/forester/java/src/org/forester/archaeopteryx/tools/Blast.java +++ b/forester/java/src/org/forester/archaeopteryx/tools/Blast.java @@ -39,7 +39,9 @@ import org.forester.archaeopteryx.AptxUtil; import org.forester.archaeopteryx.TreePanel; import org.forester.phylogeny.PhylogenyNode; import org.forester.phylogeny.data.Accession; +import org.forester.phylogeny.data.Identifier; import org.forester.util.ForesterUtil; +import org.forester.util.SequenceIdParser; import org.forester.ws.wabi.RestUtil; public final class Blast { @@ -74,21 +76,36 @@ public final class Blast { 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"; + if ( node.getNodeData().isHasSequence() ) { + 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(); + } } - query += node.getNodeData().getSequence().getAccession().getValue(); } - else if ( !ForesterUtil.isEmpty( node.getNodeData().getSequence().getName() ) ) { - final Accession acc = AptxUtil.obtainSequenceAccessionFromName( node.getNodeData().getSequence().getName() ); + else if ( !ForesterUtil.isEmpty( node.getName() ) ) { + final Accession acc = AptxUtil.obtainSequenceAccessionFromName( node.getName() ); if ( acc != null ) { query = acc.getSource() + "%7C" + acc.getValue(); } + else { + final Identifier id = SequenceIdParser.parse( node.getName() ); + if ( id != null ) { + query = id.getValue(); + } + } } return query; } diff --git a/forester/java/src/org/forester/util/SequenceIdParser.java b/forester/java/src/org/forester/util/SequenceIdParser.java index 0856f34..ff9b91d 100644 --- a/forester/java/src/org/forester/util/SequenceIdParser.java +++ b/forester/java/src/org/forester/util/SequenceIdParser.java @@ -76,6 +76,10 @@ public final class SequenceIdParser { return null; } + public static boolean isProtein( final String query ) { + return GENBANK_PROTEIN_AC_PATTERN.matcher( query ).lookingAt(); + } + /** * Returns null if no match. *