package dr.evomodel.antigenic.phyloClustering.misc;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.ListIterator;
public class mergeAdjacencyMatrixPlots {
public static void main(String[] args) {
int NUM_BURNINs = 250;
// /Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H1N1/adjacencyMatrices/
//int numdata = 363;
FileReader fileReader2;
try {
int numdata = 115; // H1N1
String input="/Users/charles/Documents/researchData/clustering/forManuscripts-moreReplicates/H1N1/mds0_8/H1N1_mds.clusterLabels.log";
String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript7-31-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_8-adjacencyMatrix.txt";
// String input="/Users/charles/Documents/researchData/clustering/forManuscripts-moreReplicates/H1N1/mds0_7/H1N1_mds.clusterLabels.log";
// String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript7-31-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_7-adjacencyMatrix.txt";
// String input="/Users/charles/Documents/researchData/clustering/forManuscripts-moreReplicates/H1N1/mds0_6/H1N1_mds.clusterLabels.log";
// String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript7-31-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_6-adjacencyMatrix.txt";
// String input="/Users/charles/Documents/researchData/clustering/forManuscripts-moreReplicates/H1N1/mds0_5/H1N1_mds.clusterLabels.log";
// String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript7-31-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_5-adjacencyMatrix.txt";
// String input="/Users/charles/Documents/researchData/clustering/forManuscripts-moreReplicates/H1N1/mds0_4/H1N1_mds.clusterLabels.log";
// String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript7-31-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_4-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H1N1/C3b-mds0_1/H1N1_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_1-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H1N1/C3b-mds0_3/H1N1_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_3-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H1N1/C3b/H1N1_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H1N1/adjacencyMatrices/H1N1-C3b-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H1N1/C3b-mds0_1-sample2/H1N1_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_1-sample2-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H1N1/C3b-mds0_1-sample3/H1N1_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_1-sample3-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H1N1/C3b-mds0_1-sample4/H1N1_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_1-sample4-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H1N1/C3b-mds0_1-sample5/H1N1_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_1-sample5-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H1N1/C3b-mds0_1-sample6/H1N1_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H1N1/adjacencyMatrices/H1N1-C3b-mds0_1-sample6-adjacencyMatrix.txt";
// int numdata = 402; //H3N2
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H3N2/C3b-mds0_1/H3N2_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H3N2/adjacencyMatrices/H3N2-C3b-mds0_1-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H3N2/C3b-mds0_05/H3N2_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H3N2/adjacencyMatrices/H3N2-C3b-mds0_05-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H3N2/C3b-mds0_15/H3N2_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H3N2/adjacencyMatrices/H3N2-C3b-mds0_15-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H3N2/C3b/H3N2_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H3N2/adjacencyMatrices/H3N2-C3b-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H3N2/C3b-mds0_05-sample2/H3N2_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H3N2/adjacencyMatrices/H3N2-C3b-mds0_05-sample2-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H3N2/C3b-mds0_05-sample3/H3N2_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H3N2/adjacencyMatrices/H3N2-C3b-mds0_05-sample3-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H3N2/C3b-mds0_05-sample4/H3N2_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H3N2/adjacencyMatrices/H3N2-C3b-mds0_05-sample4-adjacencyMatrix.txt";
//String input="/Users/charles/Documents/researchData/clustering/forManuscript/H3N2/C3b-mds0_05-sample5/H3N2_mds.clusterLabels.log";
//String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H3N2/adjacencyMatrices/H3N2-C3b-mds0_05-sample5-adjacencyMatrix.txt";
// String input="/Users/charles/Documents/researchData/clustering/forManuscript/H3N2/C3b-mds0_05-sample6/H3N2_mds.clusterLabels.log";
// String output="/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysisManuscript2-12-2015/H3N2/adjacencyMatrices/H3N2-C3b-mds0_05-sample6-adjacencyMatrix.txt";
fileReader2 = new FileReader(input);
BufferedWriter outputWriter = new BufferedWriter(new FileWriter(output));
// fileReader2 = new FileReader("/Users/charles/Documents/research/antigenic/GenoPheno/Gabriela/results/initialConditionWithInitialLocationDrift/H3N2ddCRP.log");
//fileReader2 = new FileReader("/Users/charles/Documents/research/antigenic/GenoPheno/Gabriela/results/testModel/longRun/H3N2ddCRP.log");
// fileReader2 = new FileReader("/Users/charles/Documents/research/antigenic/GenoPheno/Gabriela/results/testModel/30Mrun/H3N2ddCRP-1to6M.log");
//fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/varyParameters/fixK20/H3N2_mds.clusterLabels.log");
// fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/varyParameters-fullData/default/H3N2_mds.clusterLabels.log");
//fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/tmpDec18/H1N1/mds0_15/H1N1_mds.clusterLabels.log");
//BufferedWriter outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fluTypes/H1N1/summaryCooccurrence.txt"));
//int numdata = 115; // H1N1
//fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/tmpDec19/H1N1/mds0_3/H1N1_mds.clusterLabels.log");
//BufferedWriter outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fluTypes/H1N1/summaryCooccurrence-mds0_3.txt"));
//int numdata = 115; // H1N1
// fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/tmpDec18/Vic/mds0_15-prior2/Vic_mds.clusterLabels.log");
// BufferedWriter outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fluTypes/Vic/summaryCooccurrence.txt"));
// int numdata = 179; //Vic
// fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/tmpDec19/Vic/mds0_3-prior4/Vic_mds.clusterLabels.log");
// BufferedWriter outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fluTypes/Vic/summaryCooccurrence-mds0_3-prior4.txt"));
// int numdata = 179; //Vic
// fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/tmpDec19/Vic/mds0_2-prior4/Vic_mds.clusterLabels.log");
// BufferedWriter outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fluTypes/Vic/summaryCooccurrence-mds0_2-prior4.txt"));
// int numdata = 179; //Vic
// fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/tmpDec18/Yam/mds0_15-prior2/Yam_mds.clusterLabels.log");
// BufferedWriter outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fluTypes/Yam/summaryCooccurrence.txt"));
// int numdata = 174; //Yam
// fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/tmpDec19/Yam/mds0_2-prior4/Yam_mds.clusterLabels.log");
// BufferedWriter outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fluTypes/Yam/summaryCooccurrence-mds0_2-prior4.txt"));
// int numdata = 174; //Yam
// fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/tmpDec18/H3N2/mds0_15/H3N2_mds.clusterLabels.log");
// BufferedWriter outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fluTypes/H3N2/summaryCooccurrence_0_15.txt"));
// int numdata = 402; //H3N2
// fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/tmpDec18/H3N2/mds0_1/H3N2_mds.clusterLabels.log");
// BufferedWriter outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fluTypes/H3N2/summaryCooccurrence_0_1.txt"));
// int numdata = 402; //H3N2
// fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/tmpDec18/H3N2/mds0_05/H3N2_mds.clusterLabels.log");
// BufferedWriter outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fluTypes/H3N2/summaryCooccurrence_0_05.txt"));
// int numdata = 402; //H3N2
//h3n2 full data doesn't fix mds
//fileReader2 = new FileReader("/Users/charles/Documents/researchData/clustering/varyParameters-fullData/default/H3N2_mds.clusterLabels.log");
//BufferedWriter outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fluTypes/H3N2/old_summaryCooccurrence.txt"));
//int numdata = 402; //H3N2
//
//print the matrix into a file
//outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/Gabriela/results/initialConditionWithInitialLocationDrift/summarizeClusters.txt"));
//outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/Gabriela/results/testModel/30Mrun/summarizeClusters1to6M.txt"));
//outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fixK20/summaryCooccurence.txt"));
//outputWriter = new BufferedWriter(new FileWriter("/Users/charles/Documents/research/antigenic/GenoPheno/driver/clustering/analysis/fullData-default/summaryCooccurence.txt"));
BufferedReader bReader2 = new BufferedReader( fileReader2);
int[][] coOccur = new int[numdata][numdata];
//assume initializes to 0
String line2;
//this routine may give false results if there are extra lines with spaces
//ignore the first few lines of the file
line2 = bReader2.readLine();
line2 = bReader2.readLine();
line2 = bReader2.readLine();
for(int i=0; i < NUM_BURNINs; i++){
line2 = bReader2.readLine();
}
System.out.println(line2);
while((line2 = bReader2.readLine()) != null){
System.out.println(line2);
String datavalue2[] = line2.split("\t");
LinkedList<Integer>[] clusterLL = new LinkedList[numdata];
for (int i = 0; i < clusterLL.length; i++){
clusterLL[i] = new LinkedList<Integer>();
}
for (int i = 0; i < numdata; i++) {
//put data into cluster bin linked list
int num = (int) Double.parseDouble(datavalue2[i+2]);
// System.out.println(num);
clusterLL[num ].add(i);
}
for (int i = 0; i < numdata; i++) {
//System.out.print("Bin=" + i + " ");
int clusterSize = clusterLL[i].size();
if(clusterSize >0){
int[] clusterArray = new int[clusterSize];
ListIterator<Integer> iter = clusterLL[i].listIterator();
for(int j=0; j < clusterSize; j++){
clusterArray[j] = iter.next();
//System.out.print(clusterArray[j] + " ");
}
//System.out.println("");
//for each cluster, increment each pair of points in the coocurrence matrix
for(int a=0; a< clusterSize; a++){
for(int b=a; b< clusterSize; b++){
coOccur[ clusterArray[a]][clusterArray[b]] ++;
}
}
}//clusterSize >0
//
}
}//while
bReader2.close();
//write the lower triangle in the symmetric matrix
for(int i=0; i< numdata; i++){
for(int j=(i+1); j< numdata; j++){
coOccur[j][i] = coOccur[i][j];
}
}
for(int i=0; i < numdata; i++){
for(int j=0; j < numdata; j++){
outputWriter.write(coOccur[i][j] + " ");// Here I know i cant just write x[0] or anything. Do i need to loop in order to write the array?
}
outputWriter.newLine();
outputWriter.flush();
}
outputWriter.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}