Exemple #1
0
        private void LoadPsms(out List <string> errors, bool haveLoadedSpectra)
        {
            errors = new List <string>();

            HashSet <string> fileNamesWithoutExtension = new HashSet <string>(
                SpectraFilePaths.Select(p => Path.GetFileName(p.Replace(GlobalVariables.GetFileExtension(p), string.Empty))));
            List <PsmFromTsv> psmsThatDontHaveMatchingSpectraFile = new List <PsmFromTsv>();

            try
            {
                foreach (var resultsFile in PsmResultFilePaths)
                {
                    lock (ThreadLocker)
                    {
                        foreach (PsmFromTsv psm in PsmTsvReader.ReadTsv(resultsFile, out List <string> warnings))
                        {
                            if (fileNamesWithoutExtension.Contains(psm.FileNameWithoutExtension) || !haveLoadedSpectra)
                            {
                                AllPsms.Add(psm);
                            }
                            else
                            {
                                psmsThatDontHaveMatchingSpectraFile.Add(psm);
                            }

                            if (PsmsGroupedByFile.TryGetValue(psm.FileNameWithoutExtension, out var psmsForThisFile))
                            {
                                psmsForThisFile.Add(psm);
                            }
                            else
                            {
                                PsmsGroupedByFile.Add(psm.FileNameWithoutExtension, new ObservableCollection <PsmFromTsv> {
                                    psm
                                });
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                errors.Add("Error reading PSM file:\n" + e.Message);
            }

            if (psmsThatDontHaveMatchingSpectraFile.Any())
            {
                foreach (var file in psmsThatDontHaveMatchingSpectraFile.GroupBy(p => p.FileNameWithoutExtension))
                {
                    errors.Add(file.Count() + " PSMs from " + file.Key + " were not loaded because this spectra file was not found");
                }
            }

            FilterPsms();
        }
Exemple #2
0
        private void LoadSpectraFiles(out List <string> errors)
        {
            errors = new List <string>();

            foreach (var filepath in SpectraFilePaths)
            {
                lock (ThreadLocker)
                {
                    var fileNameWithoutExtension = filepath.Replace(GlobalVariables.GetFileExtension(filepath), string.Empty);
                    fileNameWithoutExtension = Path.GetFileName(fileNameWithoutExtension);

                    DynamicDataConnection spectraFile = null;
                    string extension = GlobalVariables.GetFileExtension(filepath);

                    if (extension.Equals(".mzML", StringComparison.OrdinalIgnoreCase))
                    {
                        spectraFile = new MzmlDynamicData(filepath);
                    }
                    else if (extension.Equals(".mgf", StringComparison.OrdinalIgnoreCase))
                    {
                        spectraFile = new MgfDynamicData(filepath);
                    }
                    else if (extension.Equals(".raw", StringComparison.OrdinalIgnoreCase))
                    {
                        spectraFile = new ThermoDynamicData(filepath);
                    }
                    else
                    {
                        errors.Add("Unrecognized spectra file type: " + extension);
                        continue;
                    }

                    if (!MsDataFiles.TryAdd(fileNameWithoutExtension, spectraFile))
                    {
                        spectraFile.CloseDynamicConnection();
                        // print warning? but probably unnecessary. this means the data file was loaded twice.
                        // which is an error but not an important one because the data is loaded
                    }
                }
            }
        }