X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FAptxUtil.java;h=b2c3dd849557588b203a4ed4be00d75f721d877f;hb=362bd0a813f302f28631d9c9447dd8aa9ee0ceda;hp=c56d068e4b35d2a3fe56545a97ce745f5b6f586f;hpb=ff79eee1cd2e65925ada2e6fd484010122c74d22;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/AptxUtil.java b/forester/java/src/org/forester/archaeopteryx/AptxUtil.java index c56d068..b2c3dd8 100644 --- a/forester/java/src/org/forester/archaeopteryx/AptxUtil.java +++ b/forester/java/src/org/forester/archaeopteryx/AptxUtil.java @@ -25,6 +25,7 @@ package org.forester.archaeopteryx; +import java.awt.Color; import java.awt.Component; import java.awt.Graphics2D; import java.awt.GraphicsEnvironment; @@ -40,6 +41,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URI; import java.net.URL; +import java.net.URLConnection; import java.text.ParseException; import java.util.Arrays; import java.util.HashSet; @@ -70,6 +72,7 @@ import org.forester.phylogeny.Phylogeny; import org.forester.phylogeny.PhylogenyMethods; import org.forester.phylogeny.PhylogenyMethods.DESCENDANT_SORT_PRIORITY; import org.forester.phylogeny.PhylogenyNode; +import org.forester.phylogeny.data.Confidence; import org.forester.phylogeny.data.Taxonomy; import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory; import org.forester.phylogeny.factories.PhylogenyFactory; @@ -133,6 +136,46 @@ public final class AptxUtil { return false; } + final static public boolean isHasAtLeastOneBranchWithSupportSD( final Phylogeny phy ) { + final PhylogenyNodeIterator it = phy.iteratorPostorder(); + while ( it.hasNext() ) { + final PhylogenyNode n = it.next(); + if ( n.getBranchData().isHasConfidences() ) { + final List c = n.getBranchData().getConfidences(); + for( final Confidence confidence : c ) { + if ( confidence.getStandardDeviation() > 0 ) { + return true; + } + } + } + } + return false; + } + + final static public boolean isHasAtLeastOneNodeWithScientificName( final Phylogeny phy ) { + final PhylogenyNodeIterator it = phy.iteratorPostorder(); + while ( it.hasNext() ) { + final PhylogenyNode n = it.next(); + if ( n.getNodeData().isHasTaxonomy() + && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getScientificName() ) ) { + return true; + } + } + return false; + } + + final static public boolean isHasAtLeastOneNodeWithSequenceAnnotation( final Phylogeny phy ) { + final PhylogenyNodeIterator it = phy.iteratorPostorder(); + while ( it.hasNext() ) { + final PhylogenyNode n = it.next(); + if ( n.getNodeData().isHasSequence() + && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getAnnotations() ) ) { + return true; + } + } + return false; + } + final public static void launchWebBrowser( final URI uri, final boolean is_applet, final JApplet applet, @@ -680,7 +723,9 @@ public final class AptxUtil { } } AptxUtil.printAppletMessage( "Archaeopteryx", "parser is " + parser.getName() ); - final InputStream i = url.openStream(); + final URLConnection url_connection = url.openConnection(); + url_connection.setDefaultUseCaches( false ); + final InputStream i = url_connection.getInputStream(); final Phylogeny[] phys = factory.create( i, parser ); i.close(); if ( phys != null ) { @@ -943,30 +988,6 @@ public final class AptxUtil { } } - // See: http://www.xml.nig.ac.jp/tutorial/rest/index.html#2.2 - // static void openDDBJRest() throws IOException { - // //set URL - // URL url = new URL( "http://xml.nig.ac.jp/rest/Invoke" ); - // //set parameter - // String query = "service=GetEntry&method=getDDBJEntry&accession=AB000100"; - // //make connection - // URLConnection urlc = url.openConnection(); - // //use post mode - // urlc.setDoOutput( true ); - // urlc.setAllowUserInteraction( false ); - // //send query - // PrintStream ps = new PrintStream( urlc.getOutputStream() ); - // ps.print( query ); - // ps.close(); - // //get result - // BufferedReader br = new BufferedReader( new InputStreamReader( - // urlc.getInputStream() ) ); - // String l = null; - // while ( ( l = br.readLine() ) != null ) { - // System.out.println( l ); - // } - // br.close(); - // } public static enum GraphicsExportType { BMP( "bmp" ), GIF( "gif" ), JPG( "jpg" ), PDF( "pdf" ), PNG( "png" ), TIFF( "tif" ); @@ -981,4 +1002,50 @@ public final class AptxUtil { return _suffix; } } + + final public static Color calculateColorFromString( final String str, final boolean is_taxonomy ) { + final String my_str = str.toUpperCase(); + char first = my_str.charAt( 0 ); + char second = ' '; + char third = ' '; + if ( my_str.length() > 1 ) { + if ( is_taxonomy ) { + second = my_str.charAt( 1 ); + } + else { + second = my_str.charAt( my_str.length() - 1 ); + } + if ( is_taxonomy ) { + if ( my_str.length() > 2 ) { + if ( my_str.indexOf( " " ) > 0 ) { + third = my_str.charAt( my_str.indexOf( " " ) + 1 ); + } + else { + third = my_str.charAt( 2 ); + } + } + } + else if ( my_str.length() > 2 ) { + third = my_str.charAt( ( my_str.length() - 1 ) / 2 ); + } + } + first = normalizeCharForRGB( first ); + second = normalizeCharForRGB( second ); + third = normalizeCharForRGB( third ); + if ( ( first > 235 ) && ( second > 235 ) && ( third > 235 ) ) { + first = 0; + } + else if ( ( first < 60 ) && ( second < 60 ) && ( third < 60 ) ) { + second = 255; + } + return new Color( first, second, third ); + } + + final private static char normalizeCharForRGB( char c ) { + c -= 65; + c *= 10.2; + c = c > 255 ? 255 : c; + c = c < 0 ? 0 : c; + return c; + } }