org.biojavax.bio.phylo.ParsimonyTreeMethod Maven / Gradle / Ivy
package org.biojavax.bio.phylo;
import java.io.*;
import java.lang.*;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.biojava.utils.process.ExternalProcess;
import org.biojavax.bio.phylo.io.nexus.*;
import org.jgrapht.*;
import org.jgrapht.generate.*;
import org.jgrapht.graph.*;
public class ParsimonyTreeMethod {
public static void MP(TaxaBlock t, CharactersBlock ch){
int NTax = t.getDimensionsNTax();
int NChar = ch.getDimensionsNChar();
List labels = t.getTaxLabels();
String [] seq = new String[NTax];
//WeightedGraph [] jgrapht;
//writing number of taxa & length of sequences to the phylip input file
try{
FileWriter fw = new FileWriter(new File("C:\\Program Files\\phylip3.67\\exe\\temp.txt"), true);
fw.write(NTax + " " + NChar + "\n");
fw.close();
}catch(IOException e){
System.out.println("Error in Writing Temp_File(1)!");
}
for(int i = 0; i < NTax; i++){
seq[i] = "";
}
int name_len = 0; // variable for finding the longest taxa name (for alignment)
for (Iterator i = labels.iterator(); i.hasNext(); ) {
String taxa = (String)i.next();
List matrix = ch.getMatrixData(taxa);
if(name_len < taxa.length())
name_len = taxa.length();
for (Iterator j = matrix.iterator(); j.hasNext(); ) {
Object elem = j.next();
if (elem instanceof Set) {
Set data = (Set)elem;
} else if (elem instanceof List) {
List data = (List)elem;
} else {
String data = elem.toString();
if(data != null && data != " ")
seq[labels.indexOf(taxa)] += data;
}
}
}
//writing taxa name & sequence to the phylip input file
for(Iterator i = labels.iterator(); i.hasNext(); ) {
String taxa = (String)i.next();
try{
FileWriter fw = new FileWriter(new File("C:\\Program Files\\phylip3.67\\exe\\temp.txt"), true);
fw.write(taxa);
for(int j = 0; j < name_len - taxa.length(); j++)
fw.write(" ");
fw.write(" " + seq[labels.indexOf(taxa)] + "\n");
fw.close();
}catch(IOException e){
System.out.println("Error in Writing Temp_File(2)!");
}
}
try{
FileWriter fw = new FileWriter(new File("C:\\Program Files\\phylip3.67\\exe\\temp.txt"), true);
fw.write("\n \n");
fw.close();
}catch(IOException e){
System.out.println("Error in Writing Temp_File(1)!");
}
ExternalProcess ep = new ExternalProcess();
Object [] cmd = new Object[2];
cmd[0] = "C:\\Program Files\\phylip3.67\\exe\\dnapars";
cmd[1] = "Y";
//cmd[2] = "F";
StringWriter output = new StringWriter();
//System.out.println(ep.joinCommands(cmd));
try{
try{
try{
try{
try{
ep.execute(ep.joinCommands(cmd), "C:\\Program Files\\phylip3.67\\exe\\temp.txt", output, null);
} catch (IOException ie){}
}catch (InterruptedException ite){}
}catch(NullPointerException ne){}
}catch(SecurityException se){}
}catch(IllegalArgumentException iae){}
}
}