/// <summary> /// Expand each data file in the comparison into the variable mapping /// and lists of variables and array variables /// </summary> /// <param name="comparison"></param> private VariableMappings mapFiles(TreatmentComparison comparison) { // There is no point in mapping if no concentration file was found if (comparison.ConcentrationFile == null) { return(null); } // Extract variables for concentration var extendedConc = this.extractVariables(comparison.ConcentrationFile); // If no array variables were found in concentration data is useless, return if (!extendedConc.ArrayVariables.Any()) { return(null); } // Extract variables for pk and time var extendedPk = this.extractVariables(comparison.PkFile); var extendedTime = comparison.UseTimeFile ? this.extractVariables(comparison.TimeFile) : null; // Compute the list of common variables var commonVarNames = extendedPk.Variables.Intersect(extendedConc.Variables); var commonVars = commonVarNames.Select(v => new Variable { Name = v, Values = extendedConc.Data.AsEnumerable() .Select(r => r[v].ToString()).Distinct().ToList() }); var mappings = new VariableMappings { CommonVariables = commonVars.ToList() }; // Add the array variables mappings.ArrayVariables = extendedConc.ArrayVariables; mappings.ArrayVariables.ForEach(v => v.File = "CONC"); if (comparison.UseTimeFile) { extendedTime.ArrayVariables.ForEach(v => v.File = "TIME"); mappings.ArrayVariables.AddRange(extendedTime.ArrayVariables); } // Map common variables mappings.CommonVariableMappings = this.mapCommonVariables(mappings); // Map array variables mappings.ArrayVariableMappings = this.mapConcentrationVariables(mappings.ArrayVariables); return(mappings); }
string getTitleFromPath(TreatmentComparison comparison) { var trimmedPath = comparison.PkFile.Path; trimmedPath.Substring(trimmedPath.IndexOf(@"\m5\") + 4); var title = ""; do { trimmedPath = Path.GetDirectoryName(trimmedPath); title = Path.GetFileName(trimmedPath); } while (title != null && nonMeaningfulFolderNames.Contains(title.ToLower())); return(title); }
public void Post(string submissionId, string projectName, [FromBody] TreatmentComparison comparison) { var generator = new OgdScriptGenerator(submissionId, projectName, comparison); generator.Create(); var zipFilename = Path.ChangeExtension(generator.OutputFolder, "zip"); if (File.Exists(zipFilename)) { File.Delete(zipFilename); } ZipFile.CreateFromDirectory(generator.OutputFolder, zipFilename); }
public VariableMappings MapComparison([FromBody] TreatmentComparison comparison) { return(this.mapFiles(comparison)); }