Beispiel #1
0
        internal IList <long> GetProteinIdsThatMightHaveSequence(IStatelessSession session, ICollection <string> sequencesToLookFor)
        {
            Func <ICollection <String>, IEnumerable <long> > functionToCall;
            IList <String> uniqueStrings;
            bool           useSubsequenceTable;

            if (UseSubsequenceTable.HasValue)
            {
                useSubsequenceTable = UseSubsequenceTable.Value;
            }
            else
            {
                useSubsequenceTable = ProteomeDb.HasSubsequencesTable(() => session.Connection) &&
                                      !sequencesToLookFor.Any(s => s.Length < ProteomeDb.MIN_SEQUENCE_LENGTH);
            }
            if (useSubsequenceTable)
            {
                functionToCall = batchedArgs => QuerySubsequencesTableForSubstrings(session, batchedArgs);
                uniqueStrings  = RemoveSuperstrings(sequencesToLookFor
                                                    .Select(s => s.Substring(0, Math.Min(s.Length, ProteomeDb.MAX_SEQUENCE_LENGTH))));
            }
            else
            {
                functionToCall = batchedArgs => QueryProteinTableForSubstrings(session, batchedArgs);
                uniqueStrings  = RemoveSuperstrings(sequencesToLookFor);
            }
            return(ProteomeDb.BatchUpArgumentsForFunction(functionToCall, uniqueStrings, 500).Distinct().ToArray());
        }