Changeset 4441
- Timestamp:
- Mar 12, 2013, 12:52:29 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/plugin/src/org/proteios/plugins/FeatureSequencePropagator.java
r4402 r4441 40 40 import java.util.ListIterator; 41 41 import java.util.Map.Entry; 42 import java.util.Set; 42 43 import java.util.TreeMap; 43 44 import java.util.TreeSet; … … 167 168 .getValue("matchBetweenFractions"); 168 169 169 //TODO: remove later!!170 boolean PRINT_POINTS = false;171 172 170 173 171 // the percentage of the most intense features used to … … 737 735 log.debug("Number of files in this fraction: " +nbrOfFiles); 738 736 737 TreeMap<Integer, TreeSet<Integer>> fileMatchMap = new TreeMap<Integer, TreeSet<Integer>>(); 738 739 for (int i=0;i<nbrOfFiles;i++){ 740 TreeSet<Integer> tempSet = new TreeSet<Integer>(); 741 tempSet.add(i); 742 fileMatchMap.put(i,tempSet); 743 } 744 745 Set<Integer> maxSet = fileMatchMap.keySet(); 746 Set<Integer> firstSubSet = fileMatchMap.get(0); 747 Set<Integer> secondSubSet = fileMatchMap.get(0); 748 int addedSetMatches = 0; 749 739 750 // new MATCHED_FILES_LIMIT needs to be computed for 740 751 // every fraction-matching … … 757 768 log.debug("Fraction based matched files limit: " 758 769 + MATCHED_FILES_LIMIT); 759 boolean[] ignoreLimit = new boolean[nbrOfFiles];760 761 if(simList.size()<(nbrOfFiles*(nbrOfFiles-1))/2){770 //boolean[] ignoreLimit = new boolean[nbrOfFiles]; 771 772 /*if(simList.size()<(nbrOfFiles*(nbrOfFiles-1))/2){ 762 773 int nRemovedPairs = (nbrOfFiles*(nbrOfFiles-1))/2 -simList.size(); 763 774 writer.println("Number of removed file-pairs from alignment: " +nRemovedPairs); … … 792 803 793 804 } 794 805 */ 795 806 796 807 if (progress != null) { … … 821 832 822 833 boolean breakAlignment = false; 834 boolean hasMatchedAllFiles = false; 835 boolean addedSetAlignment = false; 823 836 824 837 int totNbrAlignments = simList.size(); … … 858 871 .getSecondFile()); 859 872 860 if (ignoreLimit[firstFileIndex] || ignoreLimit[secondFileIndex] || ((nbrMatchesPerFile[firstFileIndex]<currentMatch || nbrMatchesPerFile[secondFileIndex]<currentMatch) && nbrMatchesPerFile[firstFileIndex]<MATCHED_FILES_LIMIT+1 && nbrMatchesPerFile[secondFileIndex]<MATCHED_FILES_LIMIT+1)) { 873 if (addedSetAlignment && firstSubSet.contains(fp.getFirstFile()) && secondSubSet.contains(fp.getSecondFile()) && addedSetMatches<MATCHED_FILES_LIMIT || ((nbrMatchesPerFile[firstFileIndex]<currentMatch || nbrMatchesPerFile[secondFileIndex]<currentMatch) && nbrMatchesPerFile[firstFileIndex]<MATCHED_FILES_LIMIT+1 && nbrMatchesPerFile[secondFileIndex]<MATCHED_FILES_LIMIT+1)) { 874 875 if (addedSetAlignment){ 876 877 addedSetMatches++; 878 } 879 880 if (addedSetMatches==MATCHED_FILES_LIMIT){ 881 writer.println("Subgroups have matched " +(addedSetMatches-1) +"times." ); 882 addedSetAlignment = false; 883 } 861 884 862 885 currentNbrALignments++; … … 887 910 + fp.getSimValue()); 888 911 writer.println(); 912 913 hasMatchedAllFiles=setMatchedFiles(fp.getFirstFile(), fp.getSecondFile(), fileMatchMap, nbrOfFiles, writer); 889 914 890 915 // Alignment is to be performed, the matching … … 915 940 points, writer); 916 941 917 if(PRINT_POINTS == true){918 writer.println("Points : "); for (Point919 p:points){ writer.println(p.getX() +" "920 +func.value(p.getX()) + " " +p.getY()); }921 922 writer.println();923 writer.println("Eval points : "); for (Point924 p:evalPoints){ writer.println(p.getX() +" "925 +func.value(p.getX()) + " " +p.getY()); }926 927 }928 942 929 943 if (func == null) { … … 1059 1073 itr.remove(); 1060 1074 } 1061 1062 if(!breakAlignment){ 1075 1076 if(!addedSetAlignment){ 1077 1078 if(!breakAlignment){ 1079 for (int ii = 0; ii < nbrMatchesPerFile.length; ii++) { 1080 if (nbrMatchesPerFile[ii]< MATCHED_FILES_LIMIT) { 1081 break; 1082 } 1083 if(ii == nbrMatchesPerFile.length-1){ 1084 breakAlignment=true; 1085 } 1086 } 1087 1088 } 1089 } 1090 1091 1092 if (breakAlignment) { 1093 1094 if (hasMatchedAllFiles && !addedSetAlignment){ 1095 1096 simList.clear(); 1097 break; 1098 1099 }else{ 1100 //there are subgroups of files that have not matched to each other 1101 writer.println("There are subgroups in data."); 1102 1103 addedSetAlignment = true; 1104 1105 firstSubSet = fileMatchMap.get(0); 1106 writer.println("First subgroup: " +firstSubSet.toString()); 1107 1108 maxSet.removeAll(firstSubSet); 1109 secondSubSet = new TreeSet<Integer>(maxSet); 1110 writer.println("Other subgroup: " +secondSubSet.toString()); 1111 1112 maxSet = fileMatchMap.keySet(); 1113 itr = simList.listIterator(); 1114 continue; 1115 1116 } 1117 1118 1119 1120 } 1121 1122 if(!addedSetAlignment){ 1063 1123 for (int ii = 0; ii < nbrMatchesPerFile.length; ii++) { 1064 if (nbrMatchesPerFile[ii]< MATCHED_FILES_LIMIT) {1124 if (nbrMatchesPerFile[ii]<currentMatch) { 1065 1125 break; 1066 1126 } 1127 1067 1128 if(ii == nbrMatchesPerFile.length-1){ 1068 breakAlignment=true; 1129 currentMatch++; 1130 itr = simList.listIterator(); 1069 1131 } 1070 }1071 1072 }1073 1074 1075 if (breakAlignment) {1076 1077 simList.clear();1078 1079 break;1080 }1081 1082 for (int ii = 0; ii < nbrMatchesPerFile.length; ii++) {1083 if (nbrMatchesPerFile[ii]<currentMatch) {1084 break;1085 }1086 1087 if(ii == nbrMatchesPerFile.length-1){1088 currentMatch++;1089 itr = simList.listIterator();1090 1132 } 1091 1133 } … … 1423 1465 } 1424 1466 1467 } 1468 1469 private boolean setMatchedFiles(int file1, int file2, TreeMap<Integer, TreeSet<Integer>> fileMatchMap, int nbrOfFiles, PrintWriter writer){ 1470 1471 Set<Integer> firstFileSet = fileMatchMap.get(file1); 1472 1473 if(firstFileSet.size()==nbrOfFiles){ 1474 return true; 1475 } 1476 1477 if(firstFileSet.contains(file2)){ 1478 return false; 1479 } 1480 1481 Set<Integer> secondFileSet = fileMatchMap.get(file2); 1482 1483 TreeSet<Integer> combinedSet = new TreeSet<Integer>(); 1484 combinedSet.addAll(firstFileSet); 1485 combinedSet.addAll(secondFileSet); 1486 1487 for(Integer key:firstFileSet){ 1488 fileMatchMap.put(key, combinedSet); 1489 } 1490 1491 for(Integer key:secondFileSet){ 1492 fileMatchMap.put(key, combinedSet); 1493 } 1494 1495 writer.println("Current map."); 1496 for (int i=0; i<nbrOfFiles;i++){ 1497 writer.println(i +" " +fileMatchMap.get(i).toString()); 1498 1499 } 1500 1501 if(combinedSet.size()==nbrOfFiles){ 1502 return true; 1503 }else{ 1504 return false; 1505 } 1425 1506 } 1426 1507
Note: See TracChangeset
for help on using the changeset viewer.