ClusterOutput DivideSpace1DJury(List <string> list) { ClusterOutput outC, finalOut = new ClusterOutput(); outC = jury.JuryOptWeights(list); double dev = CalcStandDev(outC); List <string> clust1 = new List <string>(); List <string> clust2 = new List <string>(); dev += dev; if (useKMeans) { clust1.Add(outC.juryLike[0].Key); clust1.Add(outC.juryLike[outC.juryLike.Count - 1].Key); kMeans km = new kMeans(dMeasure); return(km.kMeansRun(kMeansIter, list, clust1)); } else { for (int i = 0; i < outC.juryLike.Count; i++) { if (i < outC.juryLike.Count / 2) { clust1.Add(outC.juryLike[i].Key); } else { clust2.Add(outC.juryLike[i].Key); } } finalOut.clusters = new List <List <string> >(); finalOut.clusters.Add(clust1); finalOut.clusters.Add(clust2); } return(finalOut); }
ClusterOutput DivideSpaceHamming(List <string> list) { ClusterOutput output = new ClusterOutput(); Dictionary <string, int> aux = new Dictionary <string, int>(); ClusterOutput outC = jury.JuryOptWeights(list); if (outC == null) { return(null); } List <string> clust1 = new List <string>(); List <string> clust2 = new List <string>(); //consensus.ToConsensusStates(list, jury.GetStructureStates(outC.juryLike[0].Key)); consensus.ToConsensusStates(list, outC.juryLike[0].Key); foreach (var item in list) { aux.Add(item, consensus.distanceOrdered[item]); } if (useKMeans) { clust1.Add(outC.juryLike[0].Key); var item = aux.OrderByDescending(j => j.Value); int dist = item.First().Value; foreach (var ll in item) { if (dist != ll.Value) { break; } else { clust2.Add(ll.Key); } } Dictionary <string, double> dic = new Dictionary <string, double>(); foreach (var it in outC.juryLike) { dic.Add(it.Key, it.Value); } double min = Double.MaxValue; string rem = ""; foreach (var it in clust2) { if (dic[it] < min) { min = dic[it]; rem = it; } } clust1.Add(rem); kMeans km = new kMeans(dMeasure); return(km.kMeansRun(kMeansIter, list, clust1)); } else { int i = 0; foreach (var item in aux.OrderBy(j => j.Value)) { if (i < list.Count() / 2) { clust1.Add(item.Key); } else { clust2.Add(item.Key); } i++; } output.clusters = new List <List <string> >(); output.clusters.Add(clust1); output.clusters.Add(clust2); } return(output); }
ClusterOutput DivideSpaceHamming(List<string> list) { ClusterOutput output=new ClusterOutput(); Dictionary<string, int> aux = new Dictionary<string, int>(); ClusterOutput outC = jury.JuryOptWeights(list); if (outC == null) return null; List<string> clust1 = new List<string>(); List<string> clust2 = new List<string>(); //consensus.ToConsensusStates(list, jury.GetStructureStates(outC.juryLike[0].Key)); consensus.ToConsensusStates(list,outC.juryLike[0].Key); foreach (var item in list) aux.Add(item, consensus.distanceOrdered[item]); if (useKMeans) { clust1.Add(outC.juryLike[0].Key); var item = aux.OrderByDescending(j => j.Value); int dist = item.First().Value; foreach (var ll in item) { if (dist != ll.Value) break; else clust2.Add(ll.Key); } Dictionary<string, double> dic = new Dictionary<string, double>(); foreach (var it in outC.juryLike) dic.Add(it.Key, it.Value); double min = Double.MaxValue; string rem = ""; foreach (var it in clust2) { if (dic[it] < min) { min = dic[it]; rem = it; } } clust1.Add(rem); kMeans km = new kMeans(dMeasure); return km.kMeansRun(kMeansIter,list, clust1); } else { int i = 0; foreach (var item in aux.OrderBy(j => j.Value)) { if (i < list.Count() / 2) clust1.Add(item.Key); else clust2.Add(item.Key); i++; } output.clusters = new List<List<string>>(); output.clusters.Add(clust1); output.clusters.Add(clust2); } return output; }
ClusterOutput DivideSpace1DJury(List<string> list) { ClusterOutput outC,finalOut=new ClusterOutput(); outC=jury.JuryOptWeights(list); double dev = CalcStandDev(outC); List<string> clust1 = new List<string>(); List<string> clust2 = new List<string>(); dev += dev; if (useKMeans) { clust1.Add(outC.juryLike[0].Key); clust1.Add(outC.juryLike[outC.juryLike.Count - 1].Key); kMeans km = new kMeans(dMeasure); return km.kMeansRun(kMeansIter,list, clust1); } else { for (int i = 0; i < outC.juryLike.Count; i++) if(i<outC.juryLike.Count / 2) clust1.Add(outC.juryLike[i].Key); else clust2.Add(outC.juryLike[i].Key); finalOut.clusters = new List<List<string>>(); finalOut.clusters.Add(clust1); finalOut.clusters.Add(clust2); } return finalOut; }