Published on

RNA synthesis

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide


  1. 1. Detection of Genetic Motifs Bioinfo talk 11 Promoters – Biology Information theory Random Projections Composed motif detection
  2. 2. Motifs and promoters
  3. 3. DNA sequence gene junk DNA gene UTR-5 UTR-3 e1 e2 e3 e4 e5 exon intron INR = Initiator Region DSE = DownStream region TSS = Transcription Start SitePromoter module Promoter module TSS TATA box INR INR DSE DSE TFBS TFBSDistal Promoter Proximal promoter Core promoter
  4. 4. TFBS-Transcription Factor Binding Site Short strings (12 to 20 nucleotides long) protein that spreaded over up to 5kb is going to bind before TSS The string structure select the protein that will bind on the basis of Van der Waals interactions ACCGATTATCA Van der Waals interactions example of a Transcription Factor - Binding Sites TFBS
  5. 5. Assembly of the promoter protein complex of transcription 1st stage Transcription factors TF TFIID TBP TSS TATA box DNA Transcription factor Binding Sites TFBS INR
  6. 6. Assembly of the promoter protein complex of transcription 2nd stage TFIID TBP TATA TSS INR core promoter DNA
  7. 7. Assembly of the promoter protein complex of transcription DNA looping /Distal promoter enhancer TF4 TF3 TF5 Proximal TF2 promoter TBP TATA TFIIE TFIIA TFIIH TFIIB TFIID TFIIB TSS TF1 INR RNA Poly II core promoter DNA
  8. 8. Information based motif detection
  9. 9. The set of all TFBS (for a certain class of genes, organism or other) Unknown Known known unknownTFBSs with the same colour are correlated
  10. 10. Example Protein of the Promoter complex Protein of the Promoter complexA T G C T C A T C C T G
  11. 11. Entropy Given a probability distribution, we want a function representing the quantity of information stored in the distribution. We define the entropy (H) as: H = −∑ p (i ) log( p (i )) i or H = − ∫ p ( x) log( p ( x))dx For the sake of simplicity, we will use from now on the discrete definition.
  12. 12. Observed entropy The real distribution is usually unknown, but we can replace it by the observed distribution f(x). The resulting entropy is: H ( x) = −∑ f ( x) log( f ( x)) x For a multi dimensional probability distribution it is: H ( x, y ) = −∑ f ( x, y ) log( f ( x, y )) x, y = ∑ f ( x)∑ f ( y | x) log( f ( x, y )) x, y y
  13. 13. Mutual Information f ( x, y )I ( x. y ) = −∑ f ( x, y ) log( ) x, y f ( x) f ( y )= −∑ f ( x, y )[log( f ( x, y )) − log( f ( x)) − log( f ( y ))] x, y= H ( x, y ) − H ( x ) − H ( y ) X and Y are strings of equal length, S={A, C, G, T}, x and y belong to S f(x,y) is the relative joint frequency of x,y in X and Y f(x) is the relative frequency of x in X f(y) is the relative frequency of y in Y
  14. 14. Information divergence Given two distributions P and Q p( x) D( P, Q) = ∑ p ( x) log( Not for exam x q( x) ) = ∑ p ( x) log( p ( x)) − ∑ p ( x) log(q ( x)) x x
  15. 15. Example of calculationX A C A T T T A CC A T A G A C A A C T AY A C T T T T A CG A T G G A A A C C T G f(x,y) 6 4 4 6 f(x,y) A C G T 9 A 5 1 2 1 f(x) 5 C 1 3 1 0 1 G 0 0 1 0 5 T 0 0 0 5 Divide by 20 to obtain relative frequencies
  16. 16. Algorithm for finding new TFBS1) select a true TFBS (for example ACATTTACCATAGACAACT) (from a data bank as IUPAC or TRANSFAC) as a probe;2) shift the probe over a non-coding zone;3) evaluate step-by-step mutual information I(P,S), where P is the probe and S is the current adjacent string on the sequence;4) select the positions (and the corresponding adjacent strings) for which I(P,S)> threshold5) the strings starting from these positions are candidate TFBS,which need to be validated in vitro.
  18. 18. Detected values for I(P,S) 4 C become G and 5 G become Cthe same string C and G exchanged complementary 1 1 error complementary+1error 2 errors complementary+2errors C becomes G complementary+5errors 08 . 5 errors 1 letter more 06 . 2 letters more 3 letters more 04 . 02 .
  19. 19. Conclusions: Use Mutual information as a tool to capture strings that are correlated to a true TFBS used as a probe. validate in vitro the candidates so obtained This is more flexible than the use of Hamming or Levenshtein distance, since correlated strings could be very distant one anotherDrawbacks:1. the method need a precise calibration of the threshold2. Does not include gaps
  20. 20. Random Projection Approach to Motif Finding
  21. 21. daf-19 Binding Sites in C. elegans GTTGTCATGGTGAC GTTTCCATGGAAAC GCTACCATGGCAAC GTTACCATAGTAAC GTTTCCATGGTAAC che-2 daf-19 osm-1 osm-6 F02D8.3-150 -1
  22. 22. The (l,d) Planted Motif Problem Generate a random length l consensus sequence C. Generate 20 instances, each differing from C by d random mutations. Plant one at a random position in each of N=20 random sequences of length n=600. Can you find the planted instances?
  24. 24. Random Projection Algorithm Buhler and Tompa (2001) Guiding principle: Some instances of a motif agree on a subset of positions. Use information from multiple motif instances to construct model.x(1) ...ccATCCGACca...x(2) ...ttATGAGGCtc... ATGCGTC =Mx(5) ...ctATAAGTCgc...x(8) ...tcATGTGACac... (7,2) motif
  25. 25. k-Projections Choose k positions in string of length l. Concatenate nucleotides at chosen k positions to form k-tuple. In l-dimensional Hamming space, projection onto k dimensional subspace. l = 15 k=7 P ATGGCATTCAGATTC TGCTGAT P = (2, 4, 5, 7, 11, 12, 13)
  26. 26. Random Projection Algorithm Choose a projection by Input sequence x(i): selecting k positions …TCAATGCACCTAT... uniformly at random. For each l-tuple in input sequences, hash into bucket based on letters at k selected positions. Recover motif from bucket containing TGCACCT multiple l-tuples. Bucket TGCT
  27. 27. Example  l = 7 (motif size) , k = 4 (projection size)  Choose projection (1,2,5,7)Input Sequence ...TAGACATCCGACTTGCCTTACTAC... Buckets ATCCGAC GCCTTAC ATGC GCTC
  28. 28. Hashing and Buckets Hash function h(x) obtained from k positions of projection. Buckets are labeled by values of h(x). Enriched buckets: contain at least s l-tuples, for some parameter s. ATGC GCTC CATC ATTC
  29. 29. Frequency Matrix Model From Bucket A1 0 .25 .5 0 .5 0ATCCGAC   C 0 0 .25 .25 0 0 1 G 0 0ATGAGGCATAAGTC 0 .5 0 1 .25  ATGTGAC T 0  1 0 .25 0 .25 0  ATGC Frequency matrix W EM algorithm Refined matrix W*
  30. 30. Motif Refinement How do we recover the motif from the sequences in the enriched buckets? k nucleotides are known from hash value of bucket. Use information in other l-k positions as starting point for local refinement scheme, e.g. EM or Gibbs sampler ATCCGAC Local refinement algorithm ATGAGGC ATGCGTC ATAAGTC Candidate motif ATGTGAC ATGC
  31. 31. Expectation Maximization (EM) S = { x(1), …, x(N)} : set of input sequences Given:  W = An initial probabilistic motif model  P0 = background probability distribution. Find value Wmax that maximizes likelihood ratio: Pr( S | Wmax ) Pr( S | P0 ) EM is local optimization scheme. Requires starting value W
  32. 32. EM Motif Refinement For each bucket h containing more than s sequences, form weight matrix Wh Use EM algorithm with starting point Wh to obtain refined weight matrix model Wh* For each input sequence x(i), return l tuple y(i) which maximizes likelihood ratio: Pr(y(i) | Wh* )/ Pr(y(i) | P0). T = {y(1), y(2), …, y(N)} C(T ) = consensus string
  33. 33. What Is the Best Motif? Compute score S for each motif:  Generate W, an initial PSSM from the returned l-mers {y(1), y(2), …, y(N)} P( y (i ) | W ) Score = ∑ log i P( y (i ) | P0 ) Return motif with maximal score
  34. 34. Iterations Single iteration.  Choose a random k-projection.  Hash each l-mer x in input sequence into bucket labelled by h(x).  From each bucket B with at least s sequences, form weight matrix model, and perform EM/Gibbs sampler refinement.  Candidate motif is the best one found from refinement of all enriched buckets. Multiple iterations.  Repeat process for multiple projections.
  35. 35. Parameter Selection Projection size k Choose k small so several motif instances hash to same bucket. (k < l - d) Choose k large to avoid contamination by spurious l-mers. E > (N (n - l + 1))/ 4k Bucket threshold s: (s = 3, s = 4)
  36. 36. How Many Iterations? Planted bucket : bucket with hash value h(M), where M is motif. Choose m = number of iterations, such that Pr(planted bucket contains ≥ s sequences in at least one of m iterations) ≥ 0.95. Probability is readily computable since iterations form a sequence of independent trials.
  37. 37. Composite motifs detection Question Monad detection Mitra
  39. 39. Introduction However, many of the actual regulatory signals are composite patterns.  Groups of monad patterns  Occur relatively near each other An example of a composite pattern is a dyad signal.
  41. 41. Introduction A possible approach is to find each part of the pattern separately and reconstruct the composite pattern. However, they often fail to output composite regulatory patterns consisting of weak monad parts.
  42. 42. Introduction A better approach would be to detect both parts of a composite pattern at the same time. Two steps in the proposed algorithm:  Preprocessing the sample creates a set of ‘virtual’ monads.  Apply an exhaustive monad discovery algorithm to the ’virtual’ monad problem. By preprocessing, original problem can be transformed into a larger monad discovery problem.
  43. 43. Monad Pattern Discovery Canonical pattern lmer 3mer: A C A  A continuous string of length l (l, d)-neighbourhood of an lmer P  all possible lmers with up to d mismatches as compared to P  The number of such lmers is : d l  i ∑  i 3   i =0   (l,d)-k patterns  Given a sequence S, find all lmers that occur with up to d mismatches at least k times in the sample  A variant : the sample is split into several sequence, to find all lmers, d mismatches, in at least k sequences
  44. 44. Pattern Driven Approach(PDA) (Prvzner, 2000)  Examine all 4 l patterns of fixed length l in lexical order, compares each pattern to every lmer in the sample, and return all (l, d)-k pattern (Waterman et al., 1984 and Galas et al.,1985)  Bypass excessive time requirement  Most of all 4 l examines not worth since neither these patterns nor their neighbours appear in the sample  SDA was therefore designed only explores the lmer appearing in the sample and their neighbours.
  45. 45. Sample Driven Approach(SDA) First initializes a table of size 4l  Each table entry corresponds to a pattern SDA generate the (l, d)-neighbourhood of lmer  Incremented by a certain amount  After all lmers processed, SDA return all pattern whose table entries have scores exceed the threshold AAAAA 3 4l AAAAC 1 AAACC 2 … ..
  46. 46. Sample Driven Approach(SDA) Faster but requires a large 4l table still  not practical for long pattern in mid 1980  Not mainstream and no tool  (Today gigabytes of RAM memory available thus l increased without a memory-efficient algorithm)
  47. 47. SDA Iterations First, explore all neighbour of the first lmer from the sample. Second, explore all neighbour of the second lmer If an lmer P belongs to the neighbour of the lmers appearing at positions i1 ,…ik in the sample  info about P collected at iteration i1 ,…ik . So the Waterman approach update info about P k times  memory slot for P is occupied during the course time even if P is not “interesting” lmer Most of lmers explored are not interesting—waste memory slot
  48. 48. To improve SDA Better solution:  Collect info about all P at the same time  to remove the need to keep the info in memory  but require a new approach to navigate the space of all lmers MITRA runs faster than PDA and SDA, and uses only a fraction of the memory of the SDA
  49. 49. Pattern-finding vs. profile-based Profile-based is more biologically relevant for finding motifs in biological samples?  Probably the reason Waterman algorithm not popular in the last decade Sagot and colleagues were the first to rebut this opinion  Develop an efficient version of Waterman’s
  50. 50. Pattern-based vs. profile-based Similarities  Pattern-based generate the profile  Every profile of length l corresponds to a pattern of length l formed by the most frequent nucleotides in every position.  Pattern-driven at least as good as profile-based Even better on simulated samples with implanted patterns  Though profile-implantation model is somehow limited  Today little evidence profile-based perform any better on either biological or simulated samples
  51. 51. MitraMismatch Tree Algorithm
  52. 52. Mismatch Tree Algorithm (MITRA) MITRA uses a mismatch tree data structure to split the space of all possible patterns into disjoint subspaces that start with a given prefix.  For reducing the pattern discovery into smaller sub-problems.  MITRA also takes advantage of pair-wise similarity between instances.
  53. 53. Splitting Pattern Space A pattern is called weak if it has less than k ( l ,d )-neighbours in the sample. A subspace is called weak if all patterns in this subspace are weak.
  54. 54. Splitting pattern space  A pattern is called weak if it has less than k ( l ,d )-neighbours in the sample.Sequence = AGTATCAGTTP= GTC Not weakl = 3 …. sample = { AGT, GTA, TAT, ATC, TCA, CAG, AGT, GTT }d =1 ; k =2( l ,d )-neighbours in the sample = { GTA, ATC, GTT }
  55. 55. Splitting pattern space  A pattern is called weak if it has less than k ( l ,d )-neighbours in the sample.Sequence = AGTATCAGTTP= CAG weakl = 3 …. sample = { AGT, GTA, TAT, ATC, TCA, CAG, AGT, GTT }d =1 ; k =2( l ,d )-neighbours in the sample = { CAG }
  56. 56. Splitting pattern space  A subspace is called weak if all patterns in this subspace are weak.Sequence = AGTATCAGTT•subspaceA = { AAA, AAT, AAC, AAG ………..AGG }•subspaceT = { TAA, TAT, TAC, TAG ………..TGG }•subspaceC = { CAA, CAT, CAC, CAG ………..CGG }•subspaceGG = { GGA, GGT, GGC, GGG}
  57. 57. Question Input:  S, l, d, k Output:  All l mers that occur with up to d mismatches at least k times in the sample.
  58. 58. Solution Naïve :  Test all l mer in the space  If occur with up to d mismatches at least k times in the sample than output this l = { AAA, AAT, AAC, AAG ………..AGG TAA, TAT, TAC, TAG ………..TGG CAA, CAT, CAC, CAG ………..CGG GAA, GAT, GAC, GAG ………..GGG }sample = { AGT, GTA, TAT, ATC, TCA, CAG, AGT, GTT }
  59. 59. Splitting pattern space if we are looking for patterns of length l we would first split the space of all l mers into 4 disjoint subspaces.  Subspace of all l mers starting with A,  Subspace of all l mers starting with T,  Subspace of all l mers starting with C,  Subspace of all l mers starting with G,
  60. 60. Splitting pattern space if we are looking for patterns of length l we would first split the space of all l mers into 4 disjoint subspaces.Space: A* T* C* G* SubspaceA
  61. 61. Splitting pattern space we further determine whether the subspace contains a ( l ,d )-k pattern.Space: A* Can’t rule out
  62. 62. Splitting pattern space we further determine whether the subspace contains a ( l ,d )-k pattern.Space: AA* AC* AT* AG* Can rule out
  63. 63. Splitting pattern space we further determine whether the subspace contains a ( l ,d )-k pattern.Space: Can’t rule out
  64. 64. Splitting pattern space we further determine whether the subspace contains a ( l ,d )-k pattern.  If we can rule out this subspace contains such a pattern  we stop searching in this subspace;  release the memory slot;  If we can’t rule out this subspace contains such a pattern  we split this subspace again on the next symbol;  and repeat;
  65. 65. Mismatch tree data structure A mismatch tree is a rooted tree where each internal node has 4 branches labeled with a symbol in {A,C,T,G} The maximum depth of the tree is l. Each node in the mismatch tree corresponds to the subspace of patterns P with a fixed prefix. Each node contains pointers to all l mers instances from the sample that are within d mismatches from a pattern p.
  66. 66. Mismatch tree data structure MITRA start with examining the root node of the mismatch tree that corresponds to the space of all patterns.  When examining a node, MITRA tries to prove that it corresponds to a weak subspace.  If (we can’t prove it)  we expand the node’s children and examine each of them.  Whenever we reach a node corresponding to a weak subspace, we backtrack. The intuition is that many of the nodes correspond to weak subspaces and can be rule out. This allows us to avoid searching much of the pattern space.
  67. 67. Mismatch tree data structure If we reach depth l and the number of instances is not less than k.  the l mer corresponding to the path from the root to the leaf .  the pointers from this node correspond to the instances of this pattern.
  68. 68. Example Consider a very simple example of finding the pattern of length 4 with up to 1 mismatch and at least 2 times in the sample S = Not for exam “AGTATCAGTT”. The substrings (4mers) in S are { AGTA, GTAT, TATC, ATCA, TCAG, CAGT, AGTT }
  69. 69. 0 1 1 0 1 1 0 A G T A T C A 0 0 0 0 0 0 0 G T A T C A G A G T A T C A T A T C A G T A G T A T C A G A T C A G T T T A T C A G T k =7 A T C A G T T1 2 1 1 2 1 1 AA G T A T C A k=5 1 1 2 2 1 A T A C AG T A T C A G A T G A T A GT A T C A G T 2 2 2 2 2 C G 2 2 T2 T 1 C2 G TA T C A G T T k = 1T= 3 2C Ak A 2A 1 2 2 A T AA CC AA T T G A T A TG A A C A G A T A G k=0 k=1A T T C GG AT T T G A T T C G T 1 2 2 A C A TT C TT G C G T A C A T T 22 2 2 2 1 A T A 2 1 2 A C A T T A T AA T A G A G A T A 0k =A1 G A GG A Tk = G k=1 T k=1 T G G T T TT T T A C T T T T A C AT C T A C T
  70. 70. 0 1 1 0 1 1 0 A G T A T C A 0 0 0 0 0 0 0 G T A T C A G A G T A T C A T A T C A G T A G T A T C A G A T C A G T T T A T C A G T k =7 A T C A G T T T 0 2 2 1 2 2 0 G k=3 A G T A T C A 0 2 0 G T A T C A G A A A T A T C A G T T G T G A T C A G T T k=2 T C T A A T A T 0 1Output: AGTA CA G 1 1 A 1 0 1 1 A A AGTC G G A A A A G G AGTG k=2 T Tk = 2k = 2 G G k = 2T A G G T T T T AGTT T T A T A T A T
  71. 71. Overall complexity 0 0 0 0 0 0 0  Space = A G T A T C A  Time = O(l2 × |S|) A G T A T C A G l T A T C A G T O(4l × |S|) A T C A G T T G O(|S|) O(|S|) T O(l)l 0 1 1 0 1 1 0 . . . A G T A T C A . . . G T A T C A G . . . T A T C A G T T A T C A G T T  Number of nodes = O(4l) – Number of comparisons in each node = O(|S|)
  72. 72. Take a Closer Look In mismatch tree algorithm, we can not start ruling out a node until traverse to depth . d +1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 A G T A T C A A G T A T C A G T A T C A G A G T A T C A G T A T C A G T T A T C A G T A T C A G T T k =7 A T C A G T T 1 2 1 1 2 1 1 A A G T A T C A k=5 G T A T C A G T A T C A G T A T C A G T T
  73. 73. MITRA Graph Information about pairwise similarities between instances of the pattern can significantly the sample-driven approach. speed up The graph that is constructed to model this pairwise similarity is called MITRA-Graph
  74. 74. MITRA Graph Given a pattern P and sample S we can construct a graph G(P, S) where each vertex is an lmer in the sample and there is an edge connecting two lmers if P is within d mismatches from both lmers. S = TAACA P = TAC AAC (d=1) TAA ACA (d=1) (d=3)
  75. 75. MITRA Graph For an (l,d) – k pattern P the corresponding graph contains a clique of size k. S = TAACA P = AAA AAC (d=1) TAA ACA (d=1) (d=3)
  76. 76. MITRA Graph Given a set of patterns P and a sample S, define a graph G(P , S) whose edge set is a union of edge sets of graphs G(P, S) for P∈P . Each vertex of G(P , S) is an lmer in the sample and there is an edge connecting two lmers if there is a pattern P∈P that is within d mismatches from both lmers. If for a subspace of patterns we can rule out an existence of a clique of size k, then the subspace has no (l,d)-k
  77. 77. The WINNOWER Algorithm The WINNOWER algorithm by Pevzner and Sze (2000) constructs the following graph: Each lmer in the sample is a vertex, and an edge connects two vertices if the corresponding lmers have less than d mismatches. Instances of a (l,d)-k pattern form a clique of size k in this graph.
  78. 78. The WINNOWER Algorithm (con’t) Since clique are difficult to find, WINNOWER takes the approach of trying to remove edges that do not corresponding to a clique. k=4
  79. 79. Improvements by MITRA-Graph1. Construct a graph at each node in the mismatch tree. 0 1 1 0 1 1 0 A G T A T C A A G T A T C A G T A T C A G T A T C A G T T
  80. 80. Improvements by MITRA-Graph2. Remove edges which are not part of a clique. A
  81. 81. Improvements by MITRA-Graph3. If no potential clique remains, rule out the subspace corresponding to the node and backtrack. A A
  82. 82. Improvements by MITRA-Graph4. If we cannot rule out a clique, split the subspace of patterns and examine the child nodes A
  83. 83. MISMATCH TREE ALGORITHM — Improvements over WINNOWER At each node of the tree, we remove edges by computing the degree of each vertex. If the degree of the vertex is less than k-1, we can remove all edges incident to it since we know it is not part of a clique. We repeat this procedure until we cannot remove any more edges. If the number of edges remaining is less than the minimum number of edges in a clique, we can rule out the existence of a clique and backtrack.
  84. 84. MISMATCH TREE ALGORITHM — Improvements over WINNOWER The problem with this approach is how to efficiently construct the graph at each node in the mismatch tree. Instead of constructing the graph from scratch, we construct it based on the graph at the parent node  an edge connecting two l mers  the first l mer matches the prefix of the pattern subspace with d1 mismatches  the second l mer matches with d2 mismatches
  85. 85. MISMATCH TREE ALGORITHM — Improvements over WINNOWER  the number of mismatches between the tail of the first and the second l mers as m.  The edge between these two l mers exists in the pattern subspace if and only if d1 <= d, d2 <= d and d1+d2+m <= 2d.The prefix of thepattern subspacethe first lmerthe second lmer
  86. 86. MISMATCH TREE ALGORITHM —Improvements over WINNOWER (cont’d) In the root node since d1 = d2 = 0, an edge exists only if m <= 2d which is the equivalent graph to WINNOWER. With moving down the tree, the condition becomes much stronger than the WINNOWER. We can compute the edges of a node based on the edges of the node’s parents by keeping track of the quantities d1, d2, and m for each edge.
  87. 87. MISMATCH TREE ALGORITHM — Improvements over WINNOWER To summarize, the MITRA-Graph algorithm works as follows  We first compute the set of edges at the root node by performing pairwise comparisons between all l mers due to d1 = d2 = 0.  We traverse the tree in a depth first order, passing on the valid edges and keeping track of the quantities d1, d2, and m for each of them.  At each node, we prune the graph by eliminating any edges incident to vertices that have degrees of less than k-1.  If there are less than the minimum number of edges for a clique, we backtrack.  If we reach a leaf of the tree (depth l), then we output the corresponding pattern.
  88. 88. Discovering dyad signals
  89. 89. DISCOVERING DYNAD SIGNALS For dyad signals, we are interested in discovering two monads that occur a certain length apart  We use the notation (l1-(s1,s2)-l2,d)-k pattern to denote a dyad signal l1 s l2 l1 s l2 l1 s l2
  90. 90. DISCOVERING DYNAD SIGNALS The MITRA-Dyad algorithm casts the dyad discovery problem into a monad discovery problem by preprocessing the input and creating a “virtual” sample to solve the (l1+l2,d)-k monad pattern discovery problem in this sample  For each l1mer in the sample and for each s in [s1,s2], we create an l1+l2 mer which is the l1mer concatenated with the l2 mer upstream s nucleotides of the l1mer.
  91. 91. DISCOVERING DYNAD SIGNALS  The number of elements in the “virtual” sample will be approximately (s1-s2+1) times larger.  An (l1+l2,d)-k pattern in the “virtual” sample will correspond to a (l1-(s1,s2)-l2,d)-k pattern in the original sample, and we can easily map the solution from the monad problem to the dyad one. An important feature of MITRA-Dyad is an ability to search for long patterns.
  92. 92. DISCOVERING DYNAD SIGNALS If the range s1-s2+1 of acceptable distances between monad parts in a composite pattern is large, the MITRA-Dyad algorithm becomes inefficient  A simple approach to detect these patterns is to generate a long ranked list of candidate monad patterns using MITRA.  Then check each occurrence of each pair from the list to see if they occur within the acceptable distance.