Beispiel #1
0
        public static StatisticalResultCsv[] Run(string name, string method, int ke, int keep, IEnumerable <StatisticalResultCsv> selectedMembers)
        {
            string methodFolder = $"{Config.WorkingFolder}\\{name}";

            Directory.CreateDirectory(methodFolder);
            string candidatesFolder = $"{Config.WorkingFolder}\\{name}\\candidates\\";

            Directory.CreateDirectory(candidatesFolder);
            foreach (var member in selectedMembers)
            {
                File.Copy($"{Config.WorkingFolder}\\{member.Method}\\{member.Dataset}\\individuals\\{member.File}", $"{candidatesFolder}\\{member.File}", true);
            }
            Icas.Common.ProcessExtension.Run("RScript", $"job_ensemble.R {name} {method} {selectedMembers.First().Dataset} {selectedMembers.First().Degredome} {keep}");
            FeatureType dt = FeatureType.Reactivity;

            FeatureType.TryParse(selectedMembers.First().DataType, out dt);

            ProcessExtension.Run("Python", $"{Config.JobOnewayPy} {name} {selectedMembers.First().Dataset}");
            ProcessExtension.Run("RScript", $"{Config.JobPairwiseComparisonR} {name} {selectedMembers.First().Dataset}");
            AlgorithmCsv algorithm = new AlgorithmCsv();

            algorithm.Name    = name;
            algorithm.Feature = selectedMembers.First().DataType;
            DatasetCsv dataset = MiSettings.Datasets.First(c => c.Name == selectedMembers.First().Dataset);
            var        results = Icas.Clustering.Cluster.RunIndividual(algorithm, new[] { dataset }, false);

            Icas.Clustering.Cluster.Summarize(algorithm);
            return(results);
        }
Beispiel #2
0
        public void Filter(AlgorithmCsv algorithm)
        {
            var all      = MiSettings.Datasets;
            var filtered = all.Where(c => c.Feature == algorithm.Feature);

            if (!string.IsNullOrWhiteSpace(algorithm.Transformation))
            {
                filtered = filtered.Where(c => c.Transformation == algorithm.Transformation);
            }
            this.DataSource = filtered.ToArray();
        }
Beispiel #3
0
        public static StatisticalResultCsv[] AttachCompactness(AlgorithmCsv algorithm, DatasetCsv dataset)
        {
            List <StatisticalResultCsv> final_results = new List <StatisticalResultCsv>();
            double best_sr        = 0;
            double min_compact    = 0;
            int    min_compact_at = 0;

            string current_folder = $"{Config.WorkingFolder}\\{algorithm.Name}\\{dataset.Name}\\";
            var    dataType       = FeatureTypeExtension.FromString(dataset.Feature);

            PairwiseComparisonCsv[] pairwiseResults = CsvContext.ReadFile <PairwiseComparisonCsv>(current_folder + Config.PairwiseComparisonCsv);
            if (pairwiseResults.Length == 0)
            {
                return(OutputResults(final_results, algorithm.Name, dataset.Name));
            }
            best_sr     = pairwiseResults[0].significant_rate;
            min_compact = GetCompactness(current_folder + "\\individuals\\" + pairwiseResults[0].File, dataset);
            PairwiseComparisonCsv[] best_pairwiseResults = pairwiseResults.Where(c => c.significant_rate == best_sr).ToArray();

            for (int i = 0; i < best_pairwiseResults.Length; i++)
            {
                //double compact =
                StatisticalResultCsv finalResult = new StatisticalResultCsv();
                finalResult.DataType = dataType.ToString();
                finalResult.Method   = algorithm.Name;
                DatasetCsvToFinalCsv(dataset, finalResult);
                PairCsvToFinalCsv(best_pairwiseResults[i], finalResult);
                finalResult.Compactness = GetCompactness(current_folder + "\\individuals\\" + best_pairwiseResults[i].File, dataset);
                if (finalResult.Compactness < min_compact)
                {
                    min_compact    = finalResult.Compactness;
                    min_compact_at = i;
                }
                final_results.Add(finalResult);
            }
            final_results[min_compact_at].Best = true;

            for (int i = best_pairwiseResults.Length; i < best_pairwiseResults.Length + 5 && i < pairwiseResults.Length; i++)
            {
                StatisticalResultCsv finalResult = new StatisticalResultCsv();
                finalResult.DataType = dataType.ToString();
                finalResult.Method   = algorithm.Name;
                DatasetCsvToFinalCsv(dataset, finalResult);
                PairCsvToFinalCsv(pairwiseResults[i], finalResult);
                finalResult.Compactness = GetCompactness(current_folder + "\\individuals\\" + pairwiseResults[i].File, dataset);
                final_results.Add(finalResult);
            }

            return(OutputResults(final_results, algorithm.Name, dataset.Name));
        }
Beispiel #4
0
        public static void Summarize(AlgorithmCsv algorithm)
        {
            //string[] files = Directory.GetFiles($"{Config.WorkingFolder}\\results\\", "*_all.csv");
            List <StatisticalResultCsv> results = new List <StatisticalResultCsv>();

            string[] subFolders = Directory.GetDirectories($"{Config.WorkingFolder}\\{algorithm.Name}\\");
            foreach (var subFolder in subFolders)
            {
                foreach (var file in Directory.GetFiles(subFolder))
                {
                    var fi = new System.IO.FileInfo(file);
                    if (fi.Name.StartsWith(algorithm.Name) && fi.Name.EndsWith("_results.csv"))
                    {
                        results.AddRange(CsvContext.ReadFile <StatisticalResultCsv>(file));
                    }
                }
            }
            CsvContext.WriteFile($"{Config.WorkingFolder}\\results\\{algorithm}_all.csv", results, CsvConfig.Default);
            StatisticalResultCsv[] best_results = results.Where(c => c.Best).ToArray();
            CsvContext.WriteFile($"{Config.WorkingFolder}\\results\\{algorithm}_summary.csv", best_results, CsvConfig.Default);
        }
Beispiel #5
0
        public static StatisticalResultCsv[] RunIndividual(AlgorithmCsv algorithm, DatasetCsv dataset, int k, bool runScript)
        {
            List <StatisticalResultCsv> finalResults = new List <StatisticalResultCsv>();

            FeatureType dataType = FeatureTypeExtension.FromString(dataset.Feature);

            if (runScript)
            {
                //ProcessExtension.Run("python", $"\"{Config.WorkingFolder}{algorithm.Script}\" {dataset.Name} 10 100");
                ProcessExtension.RunScript($"{Config.WorkingFolder}{algorithm.Script}", $"{dataset.Name} 10 100 {k}");
                //onewan ANOVA
                ProcessExtension.Run("python", $"\"{Config.WorkingFolder}{Config.JobOnewayPy}\" {algorithm.Name} {dataset.Name}");
                //pairwise comparison
                ProcessExtension.Run("RScript", $"\"{Config.WorkingFolder}{Config.JobPairwiseComparisonR}\" {algorithm.Name} {dataset.Name}");
            }

            //compactness

            string folder = $"{Config.WorkingFolder}{algorithm.Name}\\{dataset.Name}\\";

            if (!Directory.Exists(folder))
            {
                throw new FileNotFoundException();
            }

            switch (dataType)
            {
            case FeatureType.Reactivity:
                finalResults.AddRange(CSCompactness.AttachCompactness(algorithm, dataset));
                break;

            case FeatureType.RnaDistance:
                finalResults.AddRange(CSCompactness.AttachCompactness(algorithm, dataset));
                break;
            }


            return(finalResults.ToArray());
        }