Exemple #1
0
        private void RunKMeans(string name, string dirName, string alignFile = null, DCDFile dcd = null)
        {
            DateTime        cpuPart1 = DateTime.Now;
            ClusterOutput   clustOut;
            DistanceMeasure distance = null;

            if (dcd == null)
            {
                distance = CreateMeasure(name, dirName, opt.kmeans.kDistance, opt.kmeans.kAtoms, opt.kmeans.reference1Djury,
                                         alignFile, opt.kmeans.hammingProfile, opt.kmeans.jury1DProfile);
            }
            else
            {
                distance = CreateMeasureForDCD(dcd, opt.kmeans.kDistance, opt.kmeans.kAtoms, opt.kmeans.reference1Djury,
                                               opt.kmeans.alignmentFileName, opt.kmeans.hammingProfile, opt.kmeans.jury1DProfile);
            }

            kMeans km;

            km = new kMeans(distance, opt.kmeans.kMeans_init);
            if (beginJob != null)
            {
                beginJob(currentProcessName, km.ToString(), dirName, distance.ToString());
            }

            progressDic.Add(name, km);
            distance.InitMeasure();
            DateTime cpuPart2 = DateTime.Now;

            clType = km.ToString();
            if ((int)opt.kmeans.maxK <= 1)
            {
                throw new Exception("k in k-Means must be bigger then 1, right now is: " + (int)opt.kmeans.maxK);
            }
            if (distance.structNames.Count < 10)
            {
                throw new Exception("Number of structures to cluster must be bigger then 10 right now is: " + distance.structNames.Count);
            }

            clustOut = km.kMeansLevel((int)opt.kmeans.maxK, opt.kmeans.maxIter, new List <string>(distance.structNames.Keys));
            UpdateOutput(name, dirName, alignFile, clustOut, distance.ToString(), cpuPart1, cpuPart2, km);
            GC.SuppressFinalize(distance);
        }
Exemple #2
0
        private void RunHKMeans(string name, string dirName, string alignFile = null, DCDFile dcd = null)
        {
            DateTime        cpuPart1 = DateTime.Now;
            ClusterOutput   clustOut = null;
            DistanceMeasure distance = null;

            if (dcd == null)
            {
                distance = CreateMeasure(name, dirName, opt.hierarchical.distance, opt.hierarchical.atoms, opt.hierarchical.reference1DjuryKmeans,
                                         alignFile, opt.hierarchical.hammingProfile, opt.hierarchical.jury1DProfileKmeans);
            }
            else
            {
                distance = CreateMeasureForDCD(dcd, opt.hierarchical.distance, opt.hierarchical.atoms, opt.hierarchical.reference1DjuryKmeans,
                                               opt.hierarchical.alignmentFileName, opt.hierarchical.hammingProfile, opt.hierarchical.jury1DProfileKmeans);
            }

            kMeans km;

            km = new kMeans(distance, true);
            if (beginJob != null)
            {
                beginJob(currentProcessName, km.ToString(), dirName, distance.ToString());
            }

            progressDic.Add(name, km);
            DateTime cpuPart2 = DateTime.Now;

            distance.InitMeasure();



            clType       = km.ToString();
            km.BMIndex   = opt.hierarchical.indexDB;
            km.threshold = opt.hierarchical.numberOfStruct;
            km.maxRepeat = opt.hierarchical.repeatTime;
            km.maxK      = opt.hierarchical.maxK;
            clustOut     = km.HierarchicalKMeans();
            UpdateOutput(name, dirName, alignFile, clustOut, distance.ToString(), cpuPart1, cpuPart2, km);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        private void RunKMeans(string name, string dirName, string alignFile=null, DCDFile dcd = null)
        {
            DateTime cpuPart1 = DateTime.Now;
            ClusterOutput clustOut;
            DistanceMeasure distance = null;

            if(dcd==null)
                distance = CreateMeasure(name,dirName,opt.kmeans.kDistance, opt.kmeans.kAtoms, opt.kmeans.reference1Djury,
                    alignFile, opt.kmeans.hammingProfile, opt.kmeans.jury1DProfile);
            else
                distance =CreateMeasureForDCD(dcd, opt.kmeans.kDistance, opt.kmeans.kAtoms, opt.kmeans.reference1Djury,
                    opt.kmeans.alignmentFileName, opt.kmeans.hammingProfile, opt.kmeans.jury1DProfile);

            kMeans km;            
            km = new kMeans(distance, opt.kmeans.kMeans_init);

            progressDic.Add(name, km);
            distance.InitMeasure();
            DateTime cpuPart2 = DateTime.Now;
            clType = km.ToString();
            if ((int)opt.kmeans.maxK <= 1)
                throw new Exception("k in k-Means must be bigger then 1, right now is: " + (int)opt.kmeans.maxK);
            if (distance.structNames.Count < 10)
                throw new Exception("Number of structures to cluster must be bigger then 10 right now is: " + distance.structNames.Count);

            clustOut = km.kMeansLevel((int)opt.kmeans.maxK, opt.kmeans.maxIter,new List <string>(distance.structNames.Keys));
            UpdateOutput(name, dirName,alignFile, clustOut, distance.ToString(), cpuPart1, cpuPart2,km);
            GC.SuppressFinalize(distance);                        
        }
Exemple #5
0
        private void RunHKMeans(string name, string dirName, string alignFile=null,DCDFile dcd = null)
        {
            DateTime cpuPart1 = DateTime.Now;
            ClusterOutput clustOut = null;
            DistanceMeasure distance = null;
            if(dcd==null)
                distance = CreateMeasure(name,dirName,opt.hierarchical.distance, opt.hierarchical.atoms, opt.hierarchical.reference1DjuryKmeans,
                                        alignFile, opt.hierarchical.hammingProfile, opt.hierarchical.jury1DProfileKmeans);
            else
                distance = CreateMeasureForDCD(dcd, opt.hierarchical.distance, opt.hierarchical.atoms, opt.hierarchical.reference1DjuryKmeans,
                                        opt.hierarchical.alignmentFileName, opt.hierarchical.hammingProfile, opt.hierarchical.jury1DProfileKmeans);
         
            kMeans km;

            km = new kMeans(distance,true);
            progressDic.Add(name, km);
            DateTime cpuPart2 = DateTime.Now;
            distance.InitMeasure();

            

            clType = km.ToString();
            km.BMIndex = opt.hierarchical.indexDB;
            km.threshold = opt.hierarchical.numberOfStruct;
            km.maxRepeat = opt.hierarchical.repeatTime;
            km.maxK = opt.hierarchical.maxK;
            clustOut = km.HierarchicalKMeans();
            UpdateOutput(name, dirName,alignFile,clustOut, distance.ToString(), cpuPart1, cpuPart2, km);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        ClusterOutput DivideSpaceKmeans(List <string> list)
        {
            kMeans km = new kMeans(dMeasure);

            return(km.kMeansLevel(2, 30, list));
        }
Exemple #8
0
        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;
            

        }
Exemple #9
0
 ClusterOutput DivideSpaceKmeans(List<string> list)
 {
      kMeans km = new kMeans(dMeasure);
      return km.kMeansLevel(2,30, list);
 }
Exemple #10
0
        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;
        }