2 package org.forester.applications;
6 import java.util.SortedSet;
7 import java.util.TreeSet;
9 import org.forester.io.parsers.util.ParserUtils;
10 import org.forester.phylogeny.Phylogeny;
11 import org.forester.phylogeny.PhylogenyNode;
12 import org.forester.phylogeny.iterators.PhylogenyNodeIterator;
13 import org.forester.util.ForesterUtil;
15 // javac -cp ~/SOFTWARE_DEV/ECLIPSE_WORKSPACE/forester/java/forester.jar
16 // ~/SOFTWARE_DEV/ECLIPSE_WORKSPACE/forester_applications/src/org/forester/applications/domainloss_replacement.java
18 // /home/czmasek/SOFTWARE_DEV/ECLIPSE_WORKSPACE/forester_applications/src/:/home/czmasek/SOFTWARE_DEV/ECLIPSE_WORKSPACE/forester/java/forester.jar
19 // org.forester.applications.domainloss_replacement
20 public class domainloss_replacement {
22 public static void main( final String args[] ) {
24 if ( args.length != 2 ) {
26 .println( "Usage: domainloss_replacement <phylogeny file> <file with replacement characters>" );
29 final Phylogeny p = ParserUtils.readPhylogenies( args[ 0 ] )[ 0 ];
30 final Set<String> replacement_domains = ForesterUtil.file2set( new File( args[ 1 ] ) );
31 for( final PhylogenyNodeIterator it = p.iteratorExternalForward(); it.hasNext(); ) {
32 PhylogenyNode n = it.next();
34 if ( n.getNodeData().isHasTaxonomy()
35 && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getScientificName() ) ) {
36 name = n.getNodeData().getTaxonomy().getScientificName();
41 final SortedSet<String> lost_chars = new TreeSet<String>();
42 while ( !n.isRoot() ) {
43 lost_chars.addAll( n.getNodeData().getBinaryCharacters().getLostCharacters() );
46 final int losses = lost_chars.size();
47 lost_chars.retainAll( replacement_domains );
48 final int intersection = lost_chars.size();
49 final double percentage = 100.0 * intersection / losses;
50 System.out.println( name + "\t" + intersection + "\t" + losses + "\t"
51 + ForesterUtil.round( percentage, 3 ) );
54 catch ( final Exception e ) {