{'fraction_non_alphanumeric': 0.016678752719361856, 'fraction_numerical': 0.0, 'mean_word_length': 5.052631578947368, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
An efficient data structure for applying multiple seeds in homology search

Homology search is a fundamental tool in genomics and proteomics research and considerable attention has been paid to the development of faster homology finding algorithms. The most efficient homology search algorithms known are based on finding short exact or near exact subsequences and then extending these to form long matches. Traditional tools such as FASTA and BLAST use the consecutive seed model, that is, an exact short match is found and then extended. More recently, PatternHunter, which uses the spaced seeds model, has shown considerably better sensitivity and attention has been focused on the design of optimal seeds for specific data sets. In some cases, the use of multiple seeds has been shown to be necessary. Here we focus on the problem of applying multiple seeds to a dataset in an efficient manner. In particular, when multiple seeds are applied, each seed can result in the same subsequence being found necessitating the removal of duplicates. We propose an efficient data structure that, given a set of seeds and two input sequences, reports the set of matching subsequences (that is, reports matching subsequences without duplications). We show that for any number of seeds, our algorithm is asymptotically optimal when the input sequences are longer than a certain threshold.