/// <summary> /// Construct a progressive aligner /// </summary> /// <param name="profileAlignerName">ProfileAlignerNames member</param> /// <param name="similarityMatrix">similarity matrix</param> /// <param name="gapOpenPenalty">negative gapOpenPenalty</param> /// <param name="gapExtendPenalty">negative gapExtendPenalty</param> public ProgressiveAligner(ProfileAlignerNames profileAlignerName, SimilarityMatrix similarityMatrix, int gapOpenPenalty, int gapExtendPenalty) { // Get ProfileAligner ready switch (profileAlignerName) { case (ProfileAlignerNames.NeedlemanWunschProfileAligner): _profileAligner = new NeedlemanWunschProfileAlignerSerial(); break; case (ProfileAlignerNames.SmithWatermanProfileAligner): _profileAligner = new SmithWatermanProfileAlignerSerial(); break; default: throw new Exception("Invalid profile aligner name"); } _profileAligner.SimilarityMatrix = similarityMatrix; _profileAligner.GapOpenCost = gapOpenPenalty; _profileAligner.GapExtensionCost = gapExtendPenalty; _alignedSequences = new List<ISequence>(); }
/// <summary> /// Read from xml config and initialize all member variables /// </summary> /// <param name="nodeName">xml node name</param> /// <param name="expectedScoreNode">Expected score node</param> private void Initialize(string nodeName, string expectedScoreNode) { // Read all the input sequences from xml config file IAlphabet alphabet = Utility.GetAlphabet(utilityObj.xmlUtil.GetTextValue(nodeName, Constants.AlphabetNameNode)); string sequenceString1 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.Sequence1); string sequenceString2 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.Sequence2); string sequenceString3 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.Sequence3); string sequenceString4 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.Sequence4); string sequenceString5 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.Sequence5); string sequenceString6 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.Sequence6); string sequenceString7 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.Sequence7); string sequenceString8 = null; string sequenceString9 = null; // Get all the input sequence object lstSequences = new List<ISequence>(); ISequence seq1 = new Sequence(alphabet, sequenceString1); ISequence seq2 = new Sequence(alphabet, sequenceString2); ISequence seq3 = new Sequence(alphabet, sequenceString3); ISequence seq4 = new Sequence(alphabet, sequenceString4); ISequence seq5 = new Sequence(alphabet, sequenceString5); ISequence seq6 = new Sequence(alphabet, sequenceString6); ISequence seq7 = new Sequence(alphabet, sequenceString7); ISequence seq8 = null; ISequence seq9 = null; // Add all sequences to list. lstSequences.Add(seq1); lstSequences.Add(seq2); lstSequences.Add(seq3); lstSequences.Add(seq4); lstSequences.Add(seq5); lstSequences.Add(seq6); lstSequences.Add(seq7); similarityMatrix = new SimilarityMatrix(SimilarityMatrix.StandardSimilarityMatrix.AmbiguousDna); profileAligner = new NeedlemanWunschProfileAlignerParallel(similarityMatrix, ProfileScoreFunctionNames.InnerProduct, gapOpenPenalty, gapExtendPenalty, Environment.ProcessorCount); // Read all expected Sequences sequenceString1 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequenceNode1); sequenceString2 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequenceNode2); sequenceString3 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequenceNode3); sequenceString4 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequenceNode4); sequenceString5 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequenceNode5); sequenceString6 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequenceNode6); sequenceString7 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequenceNode7); sequenceString8 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequenceNode8); sequenceString9 = utilityObj.xmlUtil.GetTextValue(nodeName, Constants.ExpectedSequenceNode9); seq1 = new Sequence(alphabet, sequenceString1); seq2 = new Sequence(alphabet, sequenceString2); seq3 = new Sequence(alphabet, sequenceString3); seq4 = new Sequence(alphabet, sequenceString4); seq5 = new Sequence(alphabet, sequenceString5); seq6 = new Sequence(alphabet, sequenceString6); seq7 = new Sequence(alphabet, sequenceString7); seq8 = new Sequence(alphabet, sequenceString8); seq9 = new Sequence(alphabet, sequenceString9); // Add all sequences to list. expectedSequences = new List<ISequence>(); expectedSequences.Add(seq1); expectedSequences.Add(seq2); expectedSequences.Add(seq3); expectedSequences.Add(seq4); expectedSequences.Add(seq5); expectedSequences.Add(seq6); expectedSequences.Add(seq7); expectedSequences.Add(seq8); expectedSequences.Add(seq9); expectedScore = utilityObj.xmlUtil.GetTextValue(nodeName, expectedScoreNode); // Parallel Option will only get set if the PAMSAMMultipleSequenceAligner is getting called // To test separately distance matrix, binary tree etc.. // Set the parallel option using below ctor. var msa = new PAMSAMMultipleSequenceAligner(lstSequences, kmerLength, DistanceFunctionTypes.EuclideanDistance, UpdateDistanceMethodsTypes.Average, ProfileAlignerNames.NeedlemanWunschProfileAligner, ProfileScoreFunctionNames.InnerProduct, similarityMatrix, gapOpenPenalty, gapExtendPenalty, 2, 2); ApplicationLog.WriteLine(String.Format(null, "Initialization of all variables successfully completed for xml node {0}", nodeName)); }
/// <summary> /// Construct a progressive aligner with a default profile aligner /// </summary> /// <param name="profileAligner">profile aligner interface that aligns two profiles</param> public ProgressiveAligner(IProfileAligner profileAligner) { // Get ProfileAligner ready _profileAligner = profileAligner; _alignedSequences = new List<ISequence>(); }