import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
+import java.util.regex.Pattern;
-import org.forester.clade_analysis.Analysis;
-import org.forester.clade_analysis.Result;
+import org.forester.clade_analysis.AnalysisMulti;
+import org.forester.clade_analysis.Prefix;
+import org.forester.clade_analysis.ResultMulti;
import org.forester.io.parsers.PhylogenyParser;
import org.forester.io.parsers.util.ParserUtils;
import org.forester.phylogeny.Phylogeny;
public final class cladinator {
final static private String PRG_NAME = "cladinator";
- final static private String PRG_VERSION = "0.101";
- final static private String PRG_DATE = "170810";
+ final static private String PRG_VERSION = "0.100";
+ final static private String PRG_DATE = "170823";
final static private String PRG_DESC = "clades within clades -- analysis of pplacer type outputs";
final static private String E_MAIL = "phyloxml@gmail.com";
final static private String WWW = "https://sites.google.com/site/cmzmasek/home/software/forester";
final static private String HELP_OPTION_1 = "help";
final static private String HELP_OPTION_2 = "h";
final static private String SEP_OPTION = "s";
- private final static DecimalFormat df2 = new DecimalFormat( ".##" );
+ private final static DecimalFormat df2 = new DecimalFormat( "0.0#" );
public static void main( final String args[] ) {
try {
print_help();
System.exit( 0 );
}
- else if ( ( args.length != 2 && args.length != 3 ) ) {
+ else if ( ( ( args.length != 2 ) && ( args.length != 3 ) ) ) {
System.out.println();
System.out.println( "Wrong number of arguments." );
System.out.println();
print_help();
System.exit( -1 );
}
- final List<String> allowed_options = new ArrayList<String>();
+ final List<String> allowed_options = new ArrayList<>();
allowed_options.add( SEP_OPTION );
final String dissallowed_options = cla.validateAllowedOptionsAsString( allowed_options );
if ( dissallowed_options.length() > 0 ) {
System.out.println( "\nCould not read \"" + intreefile + "\" [" + e.getMessage() + "]\n" );
System.exit( -1 );
}
- final Result res = Analysis.execute( p, query, separator );
+ final Pattern pattern = Pattern.compile( query );
+ final ResultMulti res = AnalysisMulti.execute( p, pattern, separator, 0.5 );
System.out.println();
System.out.println( "Result:" );
System.out.println( "Query : " + query );
- System.out.print( "Greatest Common Prefix : " + res.getGreatestCommonPrefix() );
- if ( !ForesterUtil.isEmpty( res.getGreatestCommonPrefix() )
- && !ForesterUtil.isEmpty( res.getGreatestCommonCladeConfidence() ) ) {
- System.out.println( "\t(" + res.getGreatestCommonCladeConfidence() + ")" );
- }
- else {
- System.out.println();
- }
- System.out.print( "Greatest Common Prefix Up : " + res.getGreatestCommonPrefixUp() );
- if ( !ForesterUtil.isEmpty( res.getGreatestCommonPrefixUp() )
- && !ForesterUtil.isEmpty( res.getGreatestCommonCladeUpConfidence() ) ) {
- System.out.println( "\t(" + res.getGreatestCommonCladeUpConfidence() + ")" );
- }
- else {
- System.out.println();
- }
- System.out.print( "Greatest Common Prefix Down : " + res.getGreatestCommonPrefixDown() );
- if ( !ForesterUtil.isEmpty( res.getGreatestCommonPrefixDown() )
- && !ForesterUtil.isEmpty( res.getGreatestCommonCladeDownConfidence() ) ) {
- System.out.println( "\t(" + res.getGreatestCommonCladeDownConfidence() + ")" );
+ ///////////////////
+ System.out.println( "Collapsed:" );
+ for( final Prefix prefix : res.getCollapsedMultiHitPrefixes() ) {
+ System.out.println( prefix );
+ }
+ if ( res.isHasSpecificMultiHitsPrefixes() ) {
+ System.out.println( "Specifics:" );
+ for( final Prefix prefix : res.getSpecificMultiHitPrefixes() ) {
+ System.out.println( prefix );
+ }
+ System.out.println( "Collapsed With Specifics:" );
+ for( final Prefix prefix : res.getCollapsedMultiHitPrefixes() ) {
+ System.out.println( prefix );
+ for( final Prefix spec : res.getSpecificMultiHitPrefixes() ) {
+ if ( spec.getPrefix().startsWith( prefix.getPrefix() ) ) {
+ System.out.println( " " + spec );
+ }
+ }
+ }
}
- else {
- System.out.println();
+ if ( !ForesterUtil.isEmpty( res.getAllMultiHitPrefixesDown() ) ) {
+ System.out.println( "Collapsed Down:" );
+ for( final Prefix prefix : res.getCollapsedMultiHitPrefixesDown() ) {
+ System.out.println( prefix );
+ }
}
- System.out.println( "Least Encompassing Clade size: " + res.getLeastEncompassingCladeSize()
- + " external nodes" );
- final double lec_ratio = ( 100.0 * res.getLeastEncompassingCladeSize() ) / res.getTreeSize();
- System.out.println( "Least Encompassing Clade size: " + df2.format( lec_ratio ) + "%" );
- System.out.println( "Total tree size : " + res.getTreeSize() + " external nodes" );
- if ( res.getWarnings().size() > 0 ) {
- System.out.println( "Warnings:" );
- for( final String s : res.getWarnings() ) {
- System.out.println( s );
+ if ( !ForesterUtil.isEmpty( res.getAllMultiHitPrefixesUp() ) ) {
+ System.out.println( "Collapsed Up:" );
+ for( final Prefix prefix : res.getAllMultiHitPrefixesUp() ) {
+ System.out.println( prefix );
}
}
+ ///////////////////
System.out.println();
}
catch ( final IllegalArgumentException e ) {