/// <summary> /// Validates the NUCmer align method for several test cases for the parameters passed. /// </summary> /// <param name="nodeName">Node name to be read from xml</param> private void ValidateNUCmerAlignSimpleGeneralTestCases(string nodeName) { // Gets the reference & search sequences from the configuration file string[] referenceSequences = this.utilityObj.xmlUtil.GetTextValues(nodeName, Constants.ReferenceSequencesNode); string[] searchSequences = this.utilityObj.xmlUtil.GetTextValues(nodeName, Constants.SearchSequencesNode); IAlphabet seqAlphabet = Utility.GetAlphabet(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.AlphabetNameNode)); var refSeqList = referenceSequences.Select(t => new Sequence(seqAlphabet, Encoding.ASCII.GetBytes(t))).Cast<ISequence>().ToList(); var searchSeqList = searchSequences.Select(t => new Sequence(seqAlphabet, Encoding.ASCII.GetBytes(t))).Cast<ISequence>().ToList(); // Gets the mum length from the xml string mumLength = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode); var nucmerObj = new NucmerPairwiseAligner { MaximumSeparation = int.Parse(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), null), MinimumScore = int.Parse(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), null), SeparationFactor = int.Parse(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), null), BreakLength = int.Parse(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), null), LengthOfMUM = long.Parse(mumLength, null) }; IList<ISequence> seqList = refSeqList.ToList(); foreach (ISequence seq in searchSeqList) { seqList.Add(seq); } IList<ISequenceAlignment> alignSimple = nucmerObj.AlignSimple(seqList); string expectedSequences = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequencesNode); string[] expSeqArray = expectedSequences.Split(','); int j = 0; // Gets all the aligned sequences in comma separated format foreach (PairwiseAlignedSequence alignedSeq in alignSimple.Cast<IPairwiseSequenceAlignment>().SelectMany(seqAlignment => seqAlignment)) { Assert.AreEqual(expSeqArray[j], alignedSeq.FirstSequence.ConvertToString()); ++j; Assert.AreEqual(expSeqArray[j], alignedSeq.SecondSequence.ConvertToString()); j++; } ApplicationLog.WriteLine("NUCmer P2 : Successfully validated all the aligned sequences."); }
private void ValidateNUCmerAlignSimpleGeneralTestCases(string nodeName, bool isFilePath, bool isAlignList) { IList<ISequence> refSeqList = new List<ISequence>(); IList<ISequence> searchSeqList = new List<ISequence>(); if (isFilePath) { // Gets the reference sequence from the FastA file string filePath = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.FilePathNode); Assert.IsNotNull(filePath); ApplicationLog.WriteLine(string.Format(null, "NUCmer P1 : Successfully validated the File Path '{0}'.", filePath)); var fastaparserobj = new FastAParser(); IEnumerable<ISequence> referenceSeqList = fastaparserobj.Parse(filePath); foreach (ISequence seq in referenceSeqList) { refSeqList.Add(seq); } // Gets the query sequence from the FastA file string queryFilePath = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.SearchSequenceFilePathNode); Assert.IsNotNull(queryFilePath); ApplicationLog.WriteLine(string.Format(null,"NUCmer P1 : Successfully validated the File Path '{0}'.", queryFilePath)); var fastaParserobj = new FastAParser(); IEnumerable<ISequence> querySeqList = fastaParserobj.Parse(queryFilePath); foreach (ISequence seq in querySeqList) { searchSeqList.Add(seq); } } else { // Gets the reference & search sequences from the configuration file string[] referenceSequences = this.utilityObj.xmlUtil.GetTextValues(nodeName, Constants.ReferenceSequencesNode); string[] searchSequences = this.utilityObj.xmlUtil.GetTextValues(nodeName, Constants.SearchSequencesNode); IAlphabet seqAlphabet = Utility.GetAlphabet(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.AlphabetNameNode)); foreach (Sequence referSeq in referenceSequences.Select(t => new Sequence(seqAlphabet, Encoding.ASCII.GetBytes(t)))) { refSeqList.Add(referSeq); } foreach (Sequence searchSeq in searchSequences.Select(t => new Sequence(seqAlphabet, Encoding.ASCII.GetBytes(t)))) { searchSeqList.Add(searchSeq); } } // Gets the mum length from the xml string mumLength = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode); var nucmerObj = new NucmerPairwiseAligner { MaximumSeparation = int.Parse(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), null), MinimumScore = int.Parse(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), null), SeparationFactor = int.Parse(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), null), BreakLength = int.Parse(this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), null), LengthOfMUM = long.Parse(mumLength, null) }; IList<ISequenceAlignment> alignSimple = null; if (isAlignList) { var listOfSeq = new List<ISequence> {refSeqList[0], searchSeqList[0]}; alignSimple = nucmerObj.AlignSimple(listOfSeq); } string expectedSequences = isFilePath ? this.utilityObj.xmlUtil.GetFileTextValue(nodeName, Constants.ExpectedSequencesNode) : this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequencesNode); string[] expSeqArray = expectedSequences.Split(','); int j = 0; // Gets all the aligned sequences in comma separated format foreach (PairwiseAlignedSequence alignedSeq in alignSimple.Cast<IPairwiseSequenceAlignment>().SelectMany(seqAlignment => seqAlignment)) { Assert.AreEqual(expSeqArray[j], alignedSeq.FirstSequence.ConvertToString()); ++j; Assert.AreEqual(expSeqArray[j], alignedSeq.SecondSequence.ConvertToString()); j++; } ApplicationLog.WriteLine("NUCmer P1 : Successfully validated all the aligned sequences."); }
/// <summary> /// Validates the NUCmer align method for several test cases for the parameters passed. /// </summary> /// <param name="nodeName">Node name to be read from xml</param> /// <param name="isAlignList">Is align method to take list?</param> void ValidateNUCmerAlignSimpleGeneralTestCases(string nodeName, bool isAlignList) { string[] referenceSequences = null; string[] searchSequences = null; List<ISequence> refSeqList = new List<ISequence>(); List<ISequence> searchSeqList = new List<ISequence>(); // Gets the reference & search sequences from the configurtion file referenceSequences = this.utilityObj.xmlUtil.GetTextValues(nodeName, Constants.ReferenceSequencesNode); searchSequences = this.utilityObj.xmlUtil.GetTextValues(nodeName, Constants.SearchSequencesNode); IAlphabet seqAlphabet = Utility.GetAlphabet( this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.AlphabetNameNode)); for (int i = 0; i < referenceSequences.Length; i++) { ISequence referSeq = new Sequence(seqAlphabet, this.encodingObj.GetBytes(referenceSequences[i])); refSeqList.Add(referSeq); } for (int i = 0; i < searchSequences.Length; i++) { ISequence searchSeq = new Sequence(seqAlphabet, this.encodingObj.GetBytes(searchSequences[i])); searchSeqList.Add(searchSeq); } // Gets the mum length from the xml string mumLength = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode); NucmerPairwiseAligner nucmerObj = new NucmerPairwiseAligner(); // Update other values for NUCmer object nucmerObj.MaximumSeparation = int.Parse (this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), (IFormatProvider)null); nucmerObj.MinimumScore = int.Parse( this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), (IFormatProvider)null); nucmerObj.SeparationFactor = int.Parse( this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), (IFormatProvider)null); nucmerObj.BreakLength = int.Parse( this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.MUMAlignLengthNode), (IFormatProvider)null); nucmerObj.LengthOfMUM = long.Parse(mumLength, null); IList<ISequenceAlignment> alignSimple = null; if (isAlignList) { List<ISequence> listOfSeq = new List<ISequence>(); listOfSeq.Add(refSeqList[0]); listOfSeq.Add(searchSeqList[0]); alignSimple = nucmerObj.AlignSimple(listOfSeq); } string expectedSequences = string.Empty; expectedSequences = this.utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequencesNode); string[] expSeqArray = expectedSequences.Split(','); int j = 0; // Gets all the aligned sequences in comma seperated format foreach (IPairwiseSequenceAlignment seqAlignment in alignSimple) { foreach (PairwiseAlignedSequence alignedSeq in seqAlignment) { Assert.AreEqual(expSeqArray[j], new string(alignedSeq.FirstSequence.Select(a => (char)a).ToArray())); ++j; Assert.AreEqual(expSeqArray[j], new string(alignedSeq.SecondSequence.Select(a => (char)a).ToArray())); j++; } } ApplicationLog.WriteLine("NUCmer BVT : Successfully validated all the aligned sequences."); }