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 java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import org.forester.phylogeny.PhylogenyMethods;
import org.forester.phylogeny.PhylogenyMethods.DESCENDANT_SORT_PRIORITY;
import org.forester.phylogeny.PhylogenyNode;
-import org.forester.phylogeny.data.Accession;
+import org.forester.phylogeny.data.Confidence;
import org.forester.phylogeny.data.Taxonomy;
import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory;
import org.forester.phylogeny.factories.PhylogenyFactory;
private final static String[] AVAILABLE_FONT_FAMILIES_SORTED = GraphicsEnvironment.getLocalGraphicsEnvironment()
.getAvailableFontFamilyNames();
- private final static Pattern seq_identifier_pattern_1 = Pattern
- .compile( "^([A-Za-z]{2,5})[|=:]([0-9A-Za-z_\\.]{5,40})\\s*$" );
- private final static Pattern seq_identifier_pattern_2 = Pattern
- .compile( "^([A-Za-z]{2,5})[|=:]([0-9A-Za-z_\\.]{5,40})[|,; ].*$" );
static {
Arrays.sort( AVAILABLE_FONT_FAMILIES_SORTED );
}
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,
return tax_set;
}
- public final static Accession obtainSequenceAccessionFromName( final String sequence_name ) {
- final String n = sequence_name.trim();
- final Matcher matcher1 = seq_identifier_pattern_1.matcher( n );
- String group1 = "";
- String group2 = "";
- if ( matcher1.matches() ) {
- group1 = matcher1.group( 1 );
- group2 = matcher1.group( 2 );
- }
- else {
- final Matcher matcher2 = seq_identifier_pattern_2.matcher( n );
- if ( matcher2.matches() ) {
- group1 = matcher2.group( 1 );
- group2 = matcher2.group( 2 );
- }
- }
- if ( ForesterUtil.isEmpty( group1 ) || ForesterUtil.isEmpty( group2 ) ) {
- return null;
- }
- return new Accession( group2, group1 );
- }
-
public final static void printWarningMessage( final String name, final String message ) {
System.out.println( "[" + name + "] > " + message );
}
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;
nex.setIgnoreQuotes( false );
}
}
- final Phylogeny[] phys = factory.create( url.openStream(), parser );
- if ( nhx_or_nexus && internal_numbers_are_confidences ) {
- for( final Phylogeny phy : phys ) {
- PhylogenyMethods.transferInternalNodeNamesToConfidence( phy );
+ AptxUtil.printAppletMessage( "Archaeopteryx", "parser is " + parser.getName() );
+ 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 ) {
+ PhylogenyMethods.transferInternalNodeNamesToConfidence( phy, "" );
+ }
}
- }
- if ( midpoint_reroot ) {
- for( final Phylogeny phy : phys ) {
- PhylogenyMethods.midpointRoot( phy );
- PhylogenyMethods.orderAppearance( phy.getRoot(), true, true, DESCENDANT_SORT_PRIORITY.NODE_NAME );
+ if ( midpoint_reroot ) {
+ for( final Phylogeny phy : phys ) {
+ PhylogenyMethods.midpointRoot( phy );
+ PhylogenyMethods.orderAppearance( phy.getRoot(), true, true, DESCENDANT_SORT_PRIORITY.NODE_NAME );
+ }
}
}
return phys;
}
}
+ final static void removeVisualStyles( final Phylogeny phy ) {
+ for( final PhylogenyNodeIterator it = phy.iteratorPreorder(); it.hasNext(); ) {
+ it.next().getNodeData().setNodeVisualData( null );
+ }
+ }
+
final static void unexpectedError( final Error e ) {
System.err.println();
e.printStackTrace( System.err );
}
}
- // 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;
+ }
}