330 likes | 485 Views
"Quadratic time algorithms for finding common intervals in two and more sequences". by T. Schmidt and J. Stoye, Proc. 15th Annual Symposium on Combinatorial Pattern Matching , Lecture Notes in Computer Science 3109, pp. 347-358 (2004). Presented by Gangman Yi. Overview. Introduction
E N D
"Quadratic time algorithms for finding common intervals in two and more sequences" by T. Schmidt and J. Stoye, Proc. 15th Annual Symposium on Combinatorial Pattern Matching, Lecture Notes in Computer Science 3109, pp. 347-358 (2004). Presented by Gangman Yi
Overview • Introduction • Formal Model • Algorithms • Assignment
Gene Order & Function in Bacteria: • Observations: • Gene order in bacterial genomes is weakly conserved • Some genes tend to cluster together even in unrelated species • Functional association of genes inside a cluster ?
Formalization of Gene Clusters: • Genomes: permutations π1, π2 ,…, πk • Genes: numbers 1,…,n
1 2 3 4 5 6 7 8 π1 π2 π3 π4 Formalization of Gene Clusters: • Genomes: permutations π1, π2 ,…, πk • Genes: numbers 1,…,n
1 2 3 4 5 6 7 8 π1 π2 π3 π4 Formalization of Gene Clusters: • Genomes: permutations π1, π2 ,…, πk • Genes: numbers 1,…,n 8 7 6 4 5 2 1 3 3 1 2 5 8 7 6 4 6 7 4 2 1 3 8 5
π1 1 2 3 4 5 6 7 8 π2 8 7 6 4 5 2 1 3 π3 3 1 2 5 8 7 6 4 π4 6 7 4 2 1 3 8 5 Formalization of Gene Clusters: • Genomes: permutations π1, π2 ,…, πk • Genes: numbers 1,…,n • Gene cluster: common interval subset of numbers occurring contiguously in all permutations)
π1 1 2 3 4 5 6 7 8 π2 8 7 6 4 5 2 1 3 π3 3 1 2 5 8 7 6 4 π4 6 7 4 2 1 3 8 5 Formalization of Gene Clusters: • Genomes: permutations π1, π2 ,…, πk • Genes: numbers 1,…,n • Gene cluster: common interval subset of numbers occurring contiguously in all permutations)
π1 1 2 3 4 5 6 7 8 π2 8 7 6 4 5 2 1 3 π3 3 1 2 5 8 7 6 4 π4 6 7 4 2 1 3 8 5 Formalization of Gene Clusters: • Genomes: permutations π1, π2 ,…, πk • Genes: numbers 1,…,n • Gene cluster: common interval subset of numbers occurring contiguously in all permutations)
Formalization of Gene Clusters: • Genomes: permutations π1, π2 ,…, πk • Genes: numbers 1,…,n • Gene cluster: common interval subset of numbers occurring contiguously in all permutations) Algorithms: Uno & Yagiura, Algorithmica 2000: Find all common intervals of two permutations in O(n+|output|) time. Heber & Stoye, CPM 2001: Find all common intervals of k ≥ 2 permutations in O(kn+|output|) time.
1 2 3 4 5 6 7 8 π1 7 ? π2 π3 Modeling multiple copies of a gene (paralogs): • Problem: • Gene duplication results in multiple copies of a gene inside a genome • Difficult to assign the correct gene pair
1 2 3 4 5 6 7 8 π1 ? 7 π2 π3 Modeling multiple copies of a gene (paralogs): • Problem: • Gene duplication results in multiple copies of a gene inside a genome • Difficult to assign the correct gene pair
1 2 3 4 5 6 7 8 π1 π2 3 1 2 ? ? π3 Modeling multiple copies of a gene (paralogs): • Problem: • Gene duplication results in multiple copies of a gene inside a genome • Difficult to assign the correct gene pair
1 2 3 4 5 6 7 8 π1 π2 3 ? 2 1 ? π3 Modeling multiple copies of a gene (paralogs): • Problem: • Gene duplication results in multiple copies of a gene inside a genome • Difficult to assign the correct gene pair
1 2 3 4 5 6 7 8 S1 8 7 6 7 5 4 2 1 3 S2 3 1 2 4 8 7 6 1 2 S3 Modeling multiple copies of a gene (paralogs): • Solution: • Do not distinguish between paralogous gene copies • Each paralogous copy of a gene gets the same number • Consequence: • Genomes are modeled as sequences instead of permutations
S : 3 1 2 3 1 5 2 6 1 2 3 45 6 7 8 CS(S[2,5]) := {1,2,3} Formal Model: • Given: String Sover a finite alphabet Σ • Notation:S[i] = the i-th character of S S[i,j] = substring of S starting at index iand ending at j • Definition: The character setCS(S[i,j]) := {S[k] | i ≤ k ≤ j} is the set of all characters occurring in the substring S[i,j]. • Example:
S : 3 1 2 3 1 5 2 6 12 3 45 6 7 8 Formal Model: • Given: Subset C Σ • Definition: (i, j) is a CS-locationofC in S, iff CS(S[i,j]) = C left-maximal =S[i-1] C right-maximal = S[j+1] C maximal = both left- and right-maximal • Example: The pair (3,5)is a CS-location of the set C={1,2,3}, because CS(S[3,5]) = {1,2,3}, but it is not left-maximal !
S1 : 3 2 1 3 1 5 1 6 S2 : 4 3 5 5 5 1 4 2 2 S3 : 7 5 1 5 3 6 5 0 1 2 3 4 5 6 7 12 3 4 5 6 7 8 9 Formal Model: • Given: Collection of k strings S* = (S1,...,Sk) over alphabet Σ • Definition: C Σ is a common CS-factor of S* if and only if C has aCS-location in each Sl , 1 ≤ l ≤ k. • Example: common CS-factor: {1,3,5} => S1: (3,7) ― S2: (2,6) ― S3: (2,5)
Problem Formulation: • A common CS-factor of k strings represents a gene cluster that occurs in each of the k genomes. • Given a collection of k strings S*: • Problem 1: Find all common CS-factors in S*. • Problem 2: For each common CS-factor find all its maximal CS-locations in each of the strings.
Algorithm "Connecting Intervals" (CI) • Algorithm CI solves Problem 1 and Problem 2 for two sequences • Input: Two sequences of length up to n with characters drawn from Σ = {1,...,m}, m ≤ 2n • Output: Pairs of CS-locations of all common CS-factors • Time & Space complexity: O(n²)
1 2 3 4 5 6 7 8 1 1 2 3 3 3 4 4 5 2 1 2 3 3 4 4 5 3 1 2 3 4 4 5 4 1 2 3 4 5 5 1 2 3 4 6 1 2 3 7 1 2 8 1 POS[1] = 2,5 POS[2] = 3,7 POS[3] = 1,4 POS[4] = empty POS[5] = 6 POS[6] = 8 NUM(i,j) : Preprocessing Compute two tables for S1= (3,1,2,3,1,5,2,6) i j POS[c] holds all positions where character c occurs in S1. NUM(i,j) counts the number of unique characters in S1[i,j].
NUM(i,j) : i j 1 2 3 4 5 6 7 8 1 1 2 3 3 3 4 4 5 2 1 2 3 3 4 4 5 3 1 2 3 4 4 5 4 1 2 3 4 5 5 1 2 3 4 6 1 2 3 7 1 2 8 1 POS[1] = 2,5 POS[2] = 3,7 POS[3] = 1,4 POS[4] = empty POS[5] = 6 POS[6] = 8 S2 : 4 3 5 5 5 1 4 2 2 S1 : 3 1 2 3 1 5 2 6 12 3 4 5 6 7 8 i j Algorithm CI Algorithm: While reading S2, mark in S1 the observed character and track maximal intervals of marked characters
Algorithm CI NUM(i,j) : i j 1 2 3 4 5 6 7 8 1 1 2 3 3 3 4 4 5 2 1 2 3 3 4 4 5 3 1 2 3 4 4 5 4 1 2 3 4 5 5 1 2 3 4 6 1 2 3 7 1 2 8 1 POS[1] = 2,5 POS[2] = 3,7 POS[3] = 1,4 POS[4] = empty POS[5] = 6 POS[6] = 8 Algorithm: While reading S2, mark in S1 the observed character and track maximal intervals of marked characters S2 : 4 3 5 5 5 1 4 2 2 S1 : 3 1 2 3 1 5 2 6 12 3 4 5 6 7 8 i j
Algorithm CI NUM(i,j) : i j 1 2 3 4 5 6 7 8 1 1 2 3 3 3 4 4 5 2 1 2 3 3 4 4 5 3 1 2 3 4 4 5 4 1 2 3 4 5 5 1 2 3 4 6 1 2 3 7 1 2 8 1 POS[1] = 2,5 POS[2] = 3,7 POS[3] = 1,4 POS[4] = empty POS[5] = 6 POS[6] = 8 Algorithm: While reading S2, mark in S1 the observed character and track maximal intervals of marked characters S2 : 4 3 5 5 5 1 4 2 2 S1 : 3 1 2 3 1 5 2 6 12 3 4 5 6 7 8 i j Output: ((2,2)-(1,1)) ((2,2)-(4,4))
Algorithm CI NUM(i,j) : i j 1 2 3 4 5 6 7 8 1 1 2 3 3 3 4 4 5 2 1 2 3 3 4 4 5 3 1 2 3 4 4 5 4 1 2 3 4 5 5 1 2 3 4 6 1 2 3 7 1 2 8 1 POS[1] = 2,5 POS[2] = 3,7 POS[3] = 1,4 POS[4] = empty POS[5] = 6 POS[6] = 8 Algorithm: While reading S2, mark in S1 the observed character and track maximal intervals of marked characters S2 : 4 35 5 5 1 4 2 2 S1 : 3 1 2 3 1 5 2 6 12 3 4 5 6 7 8 i j Output: ((2,2)-(1,1)) ((2,2)-(4,4))
Algorithm CI NUM(i,j) : i j 1 2 3 4 5 6 7 8 1 1 2 3 3 3 4 4 5 2 1 2 3 3 4 4 5 3 1 2 3 4 4 5 4 1 2 3 4 5 5 1 2 3 4 6 1 2 3 7 1 2 8 1 POS[1] = 2,5 POS[2] = 3,7 POS[3] = 1,4 POS[4] = empty POS[5] = 6 POS[6] = 8 Algorithm: While reading S2, mark in S1 the observed character and track maximal intervals of marked characters S2 : 4 35 5 5 1 4 2 2 S1 : 31 2 315 2 6 12 3 4 5 6 7 8 i j Output: ((2,2)-(1,1)) ((2,2)-(4,4))
Algorithm CI NUM(i,j) : i j 1 2 3 4 5 6 7 8 1 1 2 3 3 3 4 4 5 2 1 2 3 3 4 4 5 3 1 2 3 4 4 5 4 1 2 3 4 5 5 1 2 3 4 6 1 2 3 7 1 2 8 1 POS[1] = 2,5 POS[2] = 3,7 POS[3] = 1,4 POS[4] = empty POS[5] = 6 POS[6] = 8 Algorithm: While reading S2, mark in S1 the observed character and track maximal intervals of marked characters S2 : 4 35 5 5 1 4 2 2 S1 : 31 2 315 2 6 12 3 4 5 6 7 8 i j Output: ((2,2)-(1,1)) ((2,2)-(4,4))
Algorithm CI NUM(i,j) : i j 1 2 3 4 5 6 7 8 1 1 2 3 3 3 4 4 5 2 1 2 3 3 4 4 5 3 1 2 3 4 4 5 4 1 2 3 4 5 5 1 2 3 4 6 1 2 3 7 1 2 8 1 POS[1] = 2,5 POS[2] = 3,7 POS[3] = 1,4 POS[4] = empty POS[5] = 6 POS[6] = 8 Algorithm: While reading S2, mark in S1 the observed character and track maximal intervals of marked characters S2 : 4 35 5 5 1 4 2 2 S1 : 31 2 315 2 6 12 3 4 5 6 7 8 i j Output: ((2,2)-(1,1)) ((2,2)-(4,4)) ((1,5)-(4,6))
Algorithm CI NUM(i,j) : i j 1 2 3 4 5 6 7 8 1 1 2 3 3 3 4 4 5 2 1 2 3 3 4 4 5 3 1 2 3 4 4 5 4 1 2 3 4 5 5 1 2 3 4 6 1 2 3 7 1 2 8 1 POS[1] = 2,5 POS[2] = 3,7 POS[3] = 1,4 POS[4] = empty POS[5] = 6 POS[6] = 8 Algorithm: While reading S2, mark in S1 the observed character and track maximal intervals of marked characters S2 : 4 35 5 5 14 2 2 S1 : 31 2 315 2 6 12 3 4 5 6 7 8 i j
Time Complexity Algorithm CI finds all common CS-factors of S1 and S2 in O(n²) time. • fori = 1,...,|S2| do • j = i • whilej < |S2| and (i,j) is maximal do • if (c = S2[j]) is seen the first time • for each entry in POS(c) do • mark and track • end for • end if • j = j + 1 • end while • end for
Multiple Genomes Goal : Find all common CS-factors of a collection S*=(S1,S2,...,Sk) Algorithm : Apply Algorithm CI to all pairs (S1,Sl), 2 ≤ l ≤ k Output only the common CS-factor detected in all pairs Time complexity : O(kn²) Space complexity : O(kn²) with redundant output, O(n²) otherwise Further extension : Find all common CS-factors appearing in at least k' of k strings of S* Time complexity : O(k(1+k-k')n²) Saving space : Due to the storage of the table NUM, Algorithm CI requires quadratic space.
n S1 Output Example S2 Max. size for the cluster, m = 4 S3 ABDCBCDAADCBBCAD EF FE EF FE Sk Assignment • Make a clustering algorithm.Each sequence S has n unique genes, but the same gene can be in the other sequences. The number of sequences are k. Maximum output size for the cluster has to be m, so each cluster can have at most m genes. Do not consider about the order of genes in each cluster.
Gangman Yi • Email : gangman@cs.tamu.edu THANK YOU