blast
authorcmzmasek@gmail.com <cmzmasek@gmail.com@ca865154-3058-d1c3-3e42-d8f55a55bdbd>
Fri, 5 Oct 2012 20:02:45 +0000 (20:02 +0000)
committercmzmasek@gmail.com <cmzmasek@gmail.com@ca865154-3058-d1c3-3e42-d8f55a55bdbd>
Fri, 5 Oct 2012 20:02:45 +0000 (20:02 +0000)
forester/java/src/org/forester/archaeopteryx/Constants.java
forester/java/src/org/forester/archaeopteryx/TreePanel.java
forester/java/src/org/forester/archaeopteryx/tools/Blast.java
forester/java/src/org/forester/util/SequenceIdParser.java

index 46d88d2..1b47fb9 100644 (file)
@@ -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" };
index af982e4..7a643cc 100644 (file)
@@ -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() {
index 97120ad..4d94450 100644 (file)
@@ -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;
     }
index 0856f34..ff9b91d 100644 (file)
@@ -76,6 +76,10 @@ public final class SequenceIdParser {
         return null;\r
     }\r
 \r
+    public static boolean isProtein( final String query ) {\r
+        return GENBANK_PROTEIN_AC_PATTERN.matcher( query ).lookingAt();\r
+    }\r
+\r
     /**\r
      * Returns null if no match.\r
      * \r