+ else if ( tax_group.equals( TaxonomyGroups.PLACOZOA ) ) {
+ return TaxonomyColors.PLACOZOA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.CTENOPHORA ) ) {
+ return TaxonomyColors.CTENOPHORA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.PORIFERA ) ) {
+ return TaxonomyColors.PORIFERA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.CHOANOFLAGELLIDA ) ) {
+ return TaxonomyColors.CHOANOFLAGELLIDA;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.ICHTHYOPHONIDA_FILASTEREA ) ) {
+ return TaxonomyColors.ICHTHYOSPOREA_AND_FILASTEREA;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.DIKARYA ) ) {
+ return TaxonomyColors.DIKARYA_COLOR;
+ }
+ else if ( tax_group.equalsIgnoreCase( TaxonomyGroups.FUNGI )
+ || tax_group.equalsIgnoreCase( TaxonomyGroups.OTHER_FUNGI ) ) {
+ return TaxonomyColors.OTHER_FUNGI_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.NUCLEARIIDAE_AND_FONTICULA_GROUP ) ) {
+ return TaxonomyColors.NUCLEARIIDAE_AND_FONTICULA_GROUP_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.AMOEBOZOA ) ) {
+ return TaxonomyColors.AMOEBOZOA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.EMBRYOPHYTA ) ) {
+ return TaxonomyColors.EMBRYOPHYTA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.CHLOROPHYTA ) ) {
+ return TaxonomyColors.CHLOROPHYTA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.RHODOPHYTA ) ) {
+ return TaxonomyColors.RHODOPHYTA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.HACROBIA ) ) {
+ return TaxonomyColors.HACROBIA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.GLAUCOCYSTOPHYCEAE ) ) {
+ return TaxonomyColors.GLAUCOPHYTA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.STRAMENOPILES ) ) {
+ return TaxonomyColors.STRAMENOPILES_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.ALVEOLATA ) ) {
+ return TaxonomyColors.ALVEOLATA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.RHIZARIA ) ) {
+ return TaxonomyColors.RHIZARIA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.EXCAVATA ) ) {
+ return TaxonomyColors.EXCAVATA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.APUSOZOA ) ) {
+ return TaxonomyColors.APUSOZOA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.ARCHAEA ) ) {
+ return TaxonomyColors.ARCHAEA_COLOR;
+ }
+ else if ( tax_group.equals( TaxonomyGroups.BACTERIA ) ) {
+ return TaxonomyColors.BACTERIA_COLOR;
+ }
+ }
+ return null;
+ }
+
+ public final static String obtainNormalizedTaxonomyGroup( final String tax ) {
+ if ( tax.equalsIgnoreCase( TaxonomyGroups.DEUTEROSTOMIA ) ) {
+ return TaxonomyGroups.DEUTEROSTOMIA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.PROTOSTOMIA ) ) {
+ return TaxonomyGroups.PROTOSTOMIA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.CNIDARIA ) ) {
+ return TaxonomyGroups.CNIDARIA;
+ }
+ else if ( tax.toLowerCase().startsWith( "trichoplax" ) || tax.equalsIgnoreCase( TaxonomyGroups.PLACOZOA ) ) {
+ return TaxonomyGroups.PLACOZOA;
+ }
+ else if ( tax.toLowerCase().startsWith( "mnemiopsis" ) || tax.equalsIgnoreCase( TaxonomyGroups.CTENOPHORA ) ) {
+ return TaxonomyGroups.CTENOPHORA;
+ }
+ else if ( tax.toLowerCase().startsWith( "amphimedon" ) || tax.equalsIgnoreCase( TaxonomyGroups.PORIFERA ) ) {
+ return TaxonomyGroups.PORIFERA;
+ }
+ else if ( tax.equalsIgnoreCase( "codonosigidae" ) || tax.equalsIgnoreCase( TaxonomyGroups.CHOANOFLAGELLIDA ) ) {
+ return TaxonomyGroups.CHOANOFLAGELLIDA;
+ }
+ else if ( tax.toLowerCase().startsWith( TaxonomyGroups.ICHTHYOPHONIDA_FILASTEREA )
+ || tax.toLowerCase().startsWith( "ichthyophonida and filasterea" )
+ || tax.toLowerCase().startsWith( "ichthyosporea & filasterea" )
+ || tax.toLowerCase().startsWith( "ichthyosporea and filasterea" ) ) {
+ return TaxonomyGroups.ICHTHYOPHONIDA_FILASTEREA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.DIKARYA ) ) {
+ return TaxonomyGroups.DIKARYA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.FUNGI ) || tax.equalsIgnoreCase( TaxonomyGroups.OTHER_FUNGI ) ) {
+ return TaxonomyGroups.OTHER_FUNGI;
+ }
+ else if ( tax.toLowerCase().startsWith( "nucleariidae and fonticula" ) ) {
+ return TaxonomyGroups.NUCLEARIIDAE_AND_FONTICULA_GROUP;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.AMOEBOZOA ) ) {
+ return TaxonomyGroups.AMOEBOZOA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.EMBRYOPHYTA ) ) {
+ return TaxonomyGroups.EMBRYOPHYTA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.CHLOROPHYTA ) ) {
+ return TaxonomyGroups.CHLOROPHYTA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.RHODOPHYTA ) ) {
+ return TaxonomyGroups.RHODOPHYTA;
+ }
+ else if ( tax.toLowerCase().startsWith( TaxonomyGroups.HACROBIA ) ) {
+ return TaxonomyGroups.HACROBIA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.GLAUCOCYSTOPHYCEAE ) || tax.equalsIgnoreCase( "glaucophyta" ) ) {
+ return TaxonomyGroups.GLAUCOCYSTOPHYCEAE;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.STRAMENOPILES ) ) {
+ return TaxonomyGroups.STRAMENOPILES;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.ALVEOLATA ) ) {
+ return TaxonomyGroups.ALVEOLATA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.RHIZARIA ) ) {
+ return TaxonomyGroups.RHIZARIA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.EXCAVATA ) ) {
+ return TaxonomyGroups.EXCAVATA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.APUSOZOA ) ) {
+ return TaxonomyGroups.APUSOZOA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.ARCHAEA ) ) {
+ return TaxonomyGroups.ARCHAEA;
+ }
+ else if ( tax.equalsIgnoreCase( TaxonomyGroups.BACTERIA ) ) {
+ return TaxonomyGroups.BACTERIA;
+ }
+ return null;
+ }
+
+ final public static BufferedReader obtainReader( final Object source ) throws IOException, FileNotFoundException {
+ BufferedReader reader = null;
+ if ( source instanceof File ) {
+ final File f = ( File ) source;
+ if ( !f.exists() ) {
+ throw new IOException( "\"" + f.getAbsolutePath() + "\" does not exist" );
+ }
+ else if ( !f.isFile() ) {
+ throw new IOException( "\"" + f.getAbsolutePath() + "\" is not a file" );
+ }
+ else if ( !f.canRead() ) {
+ throw new IOException( "\"" + f.getAbsolutePath() + "\" is not a readable" );
+ }
+ reader = new BufferedReader( new FileReader( f ) );
+ }
+ else if ( source instanceof InputStream ) {
+ reader = new BufferedReader( new InputStreamReader( ( InputStream ) source ) );
+ }
+ else if ( source instanceof String ) {
+ reader = new BufferedReader( new StringReader( ( String ) source ) );
+ }
+ else if ( source instanceof StringBuffer ) {
+ reader = new BufferedReader( new StringReader( source.toString() ) );
+ }
+ else {
+ throw new IllegalArgumentException( "attempt to parse object of type [" + source.getClass()
+ + "] (can only parse objects of type File, InputStream, String, or StringBuffer)" );
+ }
+ return reader;
+ }
+
+ public final static void outOfMemoryError( final OutOfMemoryError e ) {
+ System.err.println();
+ System.err.println( "Java memory allocation might be too small, try \"-Xmx2048m\" java command line option" );
+ System.err.println();
+ e.printStackTrace( System.err );
+ System.err.println();
+ System.exit( -1 );
+ }
+
+ final public static StringBuffer pad( final double number, final int size, final char pad, final boolean left_pad ) {
+ return pad( new StringBuffer( number + "" ), size, pad, left_pad );
+ }
+
+ final public static StringBuffer pad( final String string, final int size, final char pad, final boolean left_pad ) {
+ return pad( new StringBuffer( string ), size, pad, left_pad );
+ }
+
+ final public static StringBuffer pad( final StringBuffer string,