package org.forester.archaeopteryx;
+import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics2D;
import java.awt.GraphicsEnvironment;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStream;
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;
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;
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<Confidence> 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,
System.out.println( "[" + applet_name + "] > " + message );
}
- final static Phylogeny[] readPhylogeniesFromUrl( final URL url,
- final boolean phyloxml_validate_against_xsd,
- final boolean replace_underscores,
- final boolean internal_numbers_are_confidences,
- final TAXONOMY_EXTRACTION taxonomy_extraction,
- final boolean midpoint_reroot ) throws FileNotFoundException,
- IOException {
+ final public static Phylogeny[] readPhylogeniesFromUrl( final URL url,
+ final boolean phyloxml_validate_against_xsd,
+ final boolean replace_underscores,
+ final boolean internal_numbers_are_confidences,
+ final TAXONOMY_EXTRACTION taxonomy_extraction,
+ final boolean midpoint_reroot )
+ throws FileNotFoundException, IOException {
final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
final PhylogenyParser parser;
boolean nhx_or_nexus = false;
}
}
AptxUtil.printAppletMessage( "Archaeopteryx", "parser is " + parser.getName() );
- final Phylogeny[] phys = factory.create( url.openStream(), parser );
+ 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 ) {
if ( nhx_or_nexus && internal_numbers_are_confidences ) {
for( final Phylogeny phy : phys ) {
}
}
- // 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" );
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;
+ }
}