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); }
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(); }
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)); }
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); }
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()); }