/// <summary>
        /// Load the mapping between ResultID and Protein Name
        /// </summary>
        /// <param name="resultToSeqMap">Output: ResultToSeqMap list; keys are ResultID, Values as SeqID</param>
        /// <param name="seqToProteinMap">Output: SeqToProteinMap list; keys are SeqID, Values are list of ProteinInfo objects</param>
        /// <param name="seqInfo">Output: SeqInfo list; keys are SeqID, Values are seq details stored in SeqInfo objects</param>
        /// <param name="pepToProteinMap">Output: PepToProteinMap list; keys are clean peptide sequences (no mods), Values are Protein name and residue start/end locations for the peptide</param>
        /// <returns>True if successful, false if an error</returns>
        public bool GetProteinMapping(
            SortedList <int, int> resultToSeqMap,
            SortedList <int, List <ProteinInfo> > seqToProteinMap,
            SortedList <int, SequenceInfo> seqInfo,
            Dictionary <string, PepToProteinMapInfo> pepToProteinMap)
        {
            bool   success;
            string filePath;

            resultToSeqMap.Clear();
            seqToProteinMap.Clear();
            seqInfo.Clear();
            pepToProteinMap.Clear();

            // Note: do not put a Try/Catch handler in this method
            //       Instead, allow LoadResultToSeqMapping or LoadSeqToProteinMapping to raise exceptions

            if (string.IsNullOrEmpty(ResultToSeqMapFilename))
            {
                success = false;
            }
            else
            {
                filePath = Path.Combine(InputDirectoryPath, ResultToSeqMapFilename);
                if (!File.Exists(filePath))
                {
                    ErrorMessage = "SeqInfo file not found: " + filePath;
                    success      = false;
                }
                else
                {
                    success = LoadResultToSeqMapping(filePath, resultToSeqMap);
                }
            }

            if (!success)
            {
                return(false);
            }

            if (!string.IsNullOrEmpty(mSeqInfoFilename))
            {
                filePath = Path.Combine(InputDirectoryPath, mSeqInfoFilename);
                if (File.Exists(filePath))
                {
                    LoadSeqInfo(filePath, seqInfo);
                }
            }

            if (!string.IsNullOrEmpty(SeqToProteinMapFilename))
            {
                filePath = Path.Combine(InputDirectoryPath, SeqToProteinMapFilename);
                if (!File.Exists(filePath))
                {
                    ErrorMessage = "SeqInfo file not found: " + filePath;
                    success      = false;
                }
                else
                {
                    success = LoadSeqToProteinMapping(filePath, seqToProteinMap);
                }
            }
            else
            {
                success = false;
            }

            if (!success || string.IsNullOrEmpty(PepToProteinMapFilename))
            {
                return(success);
            }

            filePath = Path.Combine(InputDirectoryPath, PepToProteinMapFilename);
            if (!File.Exists(filePath))
            {
                var filePathAlternate = ReaderFactory.AutoSwitchToLegacyMSGFDBIfRequired(filePath, "Dataset_msgfdb.txt");
                if (File.Exists(filePathAlternate))
                {
                    filePath = filePathAlternate;
                }
            }

            if (!File.Exists(filePath))
            {
                Console.WriteLine("Warning: PepToProtMap file not found; protein residue start/end values will be zero");
                Console.WriteLine("         " + filePath);
            }
            else
            {
                success = LoadPepToProtMapData(filePath, pepToProteinMap);
            }

            return(success);
        }
 public static string AutoSwitchToLegacyMSGFDBIfRequired(string filePath, string basePHRPFileName)
 {
     return(ReaderFactory.AutoSwitchToLegacyMSGFDBIfRequired(filePath, basePHRPFileName));
 }