/** Tests the a match for an inverted repeat pattern */ public void TestMatchInverted() { Sequence seq = new Sequence(AlphabetType.DNA, "ttaccgtttgcaattt"); Repeat repeat = new Repeat("repeat", motif, Repeat.RepeatType.INVERTED, 0.5); series.Add(repeat); Match match = series.Match(seq, 3); Assert.AreEqual(0.875, match.Similarity); Assert.AreEqual("accgtttgcaa", match.Letters()); Assert.AreEqual("gcaa", match.SubMatches[2].Letters()); Assert.AreEqual(0.75, match.SubMatches[2].Similarity); Assert.AreEqual(10, match.SubMatches[2].Start); Assert.AreEqual(4, match.SubMatches[2].Length); Assert.AreEqual(1, match.SubMatches[2].Strand); match = seq.SearchBest(0, 0, series); Assert.AreEqual("accgtttgcaa", match.Letters()); }
/// <summary> /// The base constructor /// </summary> /// <param name="repeat">Reference of the repeat element</param> public MatcherRepeat(Repeat repeat) { this.repeat = repeat; }
/// <summary> /// /// Reads a pattern from a starting specified node. This method /// recursivly calls the reading methods of the different patterns. /// </summary> /// <param name="node">Node of the pattern the reading starts with.</param> /// <param name="definition">Pattern definition which pattern list will be extended /// with the pattern and all its sub-patterns read. /// </param> /// <returns>The read pattern or null if there is no pattern to read.</returns> /// <exception cref="System.SystemException">Thrown when unknown pattern was found</exception> public static IPattern ReadPattern (XmlNode node, Definition definition) { while (node != null && node.NodeType != XmlNodeType.Element) node = node.NextSibling; //Iterate thru the list of nodes until it is an element IPattern pattern = null; String mode = XMLHelper.GetAttrValueString(node, "mode"); switch (node.Name) { case "Any": pattern = new Any(); break; case "Alignment": pattern = new Alignment(); break; case "Composition" : pattern = new Composition(); break; case "Constraint": pattern = new Constraint(); break; case "Iteration": pattern = new Iteration(); break; case "Logic": pattern = new Logic(); break; case "Motif": pattern = new Motif(); break; case "PWM": pattern = new PWM(); break; case "Regex": pattern = new RegularExp(); break; case "Prosite": pattern = new Prosite(); break; case "Block": pattern = new Block(); break; case "Gap": pattern = new Gap(); break; case "Repeat": pattern = new Repeat(); break; case "Series": pattern = mode.Equals("ALL") ? pattern = new SeriesAll() : pattern = new SeriesBest(); break; case "Set": pattern = mode.Equals("ALL") ? pattern = new SetAll() : pattern = new SetBest(); break; case "Void": pattern = new VoidPattern(); break; case "Use": pattern = new Use(); break; throw new SystemException ("Unknown pattern found: " + node.Name); } pattern.ReadNode(node, definition); // read the node data and initialize the pattern definition.Patterns.Add (0, pattern); //Always adding the element to last index return pattern; }
/** Tests a weighted repeat */ public void TestMatchWeighted() { Sequence seq = new Sequence(AlphabetType.DNA, "ttaccgtttaacgttt"); Repeat repeat = new Repeat("repeat", motif, Repeat.RepeatType.DIRECT, 0.1); series.Add(repeat); repeat.Weight('a', 'a', 0.3); repeat.Weight('c', 'a', 1.0); repeat.Weight('g', 'g', 0.7); Match match = series.Match(seq, 3); Assert.AreEqual(0.75, match.Similarity); Assert.AreEqual("accgtttaacg", match.Letters()); Assert.AreEqual("aacg", match.SubMatches[2].Letters()); Assert.AreEqual(0.5, match.SubMatches[2].Similarity, 1e-3); match = seq.SearchBest(0, 0, series); Assert.AreEqual("accgtttaacg", match.Letters()); }
/// <summary> /// The default constructor that pass the Repeat element to its abstract /// class. /// </summary> /// <param name="repeat"></param> public MatcherInverted(Repeat repeat) : base(repeat) { }
/// <summary> /// Default constructor /// </summary> /// <param name="repeat"></param> public MatcherDirect(Repeat repeat) : base(repeat) { }