private void InitializeExperDesign() { SpectraFileExperimentalDesign.Clear(); foreach (var item in SpectraFiles.Where(p => p.Use).Select(p => p.FilePath)) { SpectraFileExperimentalDesign.Add(new ExperimentalDesignForDataGrid(item)); } if (SpectraFileExperimentalDesign.Any()) { outputPath = Directory.GetParent(SpectraFileExperimentalDesign.First().FullFilePathWithExtension).FullName; outputPath = Path.Combine(outputPath, GlobalVariables.ExperimentalDesignFileName); } DgQuant.DataContext = SpectraFileExperimentalDesign; // read/set existing experimental design var filePaths = SpectraFileExperimentalDesign.Select(p => p.FullFilePathWithExtension).ToList(); var existingDesign = ExperimentalDesign.ReadExperimentalDesign(outputPath, filePaths, out var errors); foreach (SpectraFileInfo fileInfo in existingDesign) { ExperimentalDesignForDataGrid match = SpectraFileExperimentalDesign.FirstOrDefault(p => p.FullFilePathWithExtension == fileInfo.FullFilePathWithExtension); if (match != null) { match.Condition = fileInfo.Condition; match.Biorep = (fileInfo.BiologicalReplicate + 1).ToString(); match.Techrep = (fileInfo.TechnicalReplicate + 1).ToString(); match.Fraction = (fileInfo.Fraction + 1).ToString(); } } }
private void ReadExperDesignFromTsv(string filePath) { if (!File.Exists(filePath)) { return; } var lines = File.ReadAllLines(filePath); Dictionary <string, int> typeToIndex = new Dictionary <string, int>(); for (int l = 0; l < lines.Length; l++) { var split = lines[l].Split('\t'); if (l == 0) { foreach (var type in split) { typeToIndex.Add(type, Array.IndexOf(split, type)); } } else { ExperimentalDesignForDataGrid file = spectraFilesQuantSets.Where(p => p.FileName == split[typeToIndex["FileName"]]).FirstOrDefault(); if (file == null) { continue; } file.Condition = split[typeToIndex["Condition"]]; file.Biorep = split[typeToIndex["Biorep"]]; file.Fraction = split[typeToIndex["Fraction"]]; file.Techrep = split[typeToIndex["Techrep"]]; } } }