/// <summary> /// The execution method for the activity. /// </summary> /// <param name="executionContext">The execution context.</param> /// <returns>The execution status.</returns> protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { GenBankFormatter formatter = new GenBankFormatter(); formatter.Open(OutputFile); if ((Sequence == null) && (SequenceList != null)) { foreach (ISequence sequence in SequenceList) { formatter.Write(sequence); } } else if ((Sequence != null) && (SequenceList == null)) { formatter.Write(Sequence); } else if ((Sequence != null) && (SequenceList != null)) { foreach (ISequence sequence in SequenceList) { formatter.Write(sequence); } formatter.Write(Sequence); } formatter.Close(); return(ActivityExecutionStatus.Closed); }
public void GenBankFormatterValidateWriteUsingStream() { InitializeXmlVariables(); // Create a Sequence with all attributes. // Parse and update the properties instead of parsing entire file. using (ISequenceParser parser1 = new GenBankParser(FilePath)) { IEnumerable <ISequence> seqList1 = parser1.Parse(); string tempFileName = System.IO.Path.GetTempFileName(); GenBankMetadata metadata = null; ISequence seq = null; string expectedUpdatedSequence = ExpectedSequence.Replace("\r", "").Replace("\n", "").Replace(" ", ""); Sequence orgSeq = new Sequence(Utility.GetAlphabet(AlphabetName), expectedUpdatedSequence); orgSeq.Metadata.Add("GenBank", (GenBankMetadata)seqList1.ElementAt(0).Metadata["GenBank"]); orgSeq.ID = seqList1.ElementAt(0).ID; using (ISequenceFormatter formatter = new GenBankFormatter()) { using (StreamWriter writer = new StreamWriter(tempFileName)) { formatter.Open(writer); formatter.Write(orgSeq); } } using (GenBankParser parserObj = new GenBankParser(tempFileName)) { IEnumerable <ISequence> seqList = parserObj.Parse(); seq = seqList.ElementAt(0); Assert.AreEqual(Utility.GetAlphabet(AlphabetName), seq.Alphabet); Assert.AreEqual(SeqId, seq.ID); ApplicationLog.WriteLine( "GenBank Formatter BVT: Successfully validated the Alphabet, Molecular type, Sequence ID and Display ID"); // test the metadata that is tricky to parse, and will not be tested implicitly by // testing the formatting metadata = (GenBankMetadata)seq.Metadata["GenBank"]; if (metadata.Locus.Strand != SequenceStrandType.None) { Assert.AreEqual(StrandType, metadata.Locus.Strand.ToString()); } } Assert.AreEqual(StrandTopology.ToUpper(CultureInfo.CurrentCulture), metadata.Locus.StrandTopology.ToString().ToUpper(CultureInfo.CurrentCulture)); Assert.AreEqual(Div, metadata.Locus.DivisionCode.ToString()); Assert.AreEqual(DateTime.Parse(SequenceDate, null), metadata.Locus.Date); Assert.AreEqual(Version, metadata.Version.Version.ToString((IFormatProvider)null)); Assert.AreEqual(PrimaryId, metadata.Version.GiNumber); ApplicationLog.WriteLine( "GenBank Formatter BVT: Successfully validated the StrandType, StrandTopology, Division, Date, Version, PrimaryID Properties"); // test the sequence string Assert.AreEqual(ExpectedSequence, new string(seq.Select(a => (char)a).ToArray())); ApplicationLog.WriteLine("GenBank Formatter BVT: Successfully validated the Sequence"); Console.WriteLine(string.Format((IFormatProvider)null, "GenBank Formatter BVT: Successfully validated the Sequence '{0}'", ExpectedSequence)); File.Delete(tempFileName); } }
public void GenBankFormatterWithParseValidateWriteFilePath() { InitializeXmlVariables(); // parse using (ISequenceParser parserObj = new GenBankParser(FilePath)) { IEnumerable <ISequence> seqList = parserObj.Parse(); ISequence seq = seqList.ElementAt(0); string tempFileName = System.IO.Path.GetTempFileName(); using (ISequenceFormatter formatter = new GenBankFormatter(tempFileName)) { formatter.Write(seq); formatter.Close(); // parse ISequenceParser parserObjFromFile = new GenBankParser(tempFileName); seqList = parserObjFromFile.Parse(); seq = seqList.ElementAt(0); Assert.AreEqual(Utility.GetAlphabet(AlphabetName), seq.Alphabet); Assert.AreEqual(SeqId, seq.ID); ApplicationLog.WriteLine( "GenBank Formatter BVT: Successfully validated the Alphabet, Molecular type, Sequence ID and Display ID"); // test the metadata that is tricky to parse, and will not be tested implicitly by // testing the formatting GenBankMetadata metadata = (GenBankMetadata)seq.Metadata["GenBank"]; if (metadata.Locus.Strand != SequenceStrandType.None) { Assert.AreEqual(StrandType, metadata.Locus.Strand.ToString()); } Assert.AreEqual(StrandTopology.ToUpper(CultureInfo.CurrentCulture), metadata.Locus.StrandTopology.ToString().ToUpper(CultureInfo.CurrentCulture)); Assert.AreEqual(Div, metadata.Locus.DivisionCode.ToString()); Assert.AreEqual(DateTime.Parse(SequenceDate, null), metadata.Locus.Date); Assert.AreEqual(Version, metadata.Version.Version.ToString((IFormatProvider)null)); Assert.AreEqual(PrimaryId, metadata.Version.GiNumber); ApplicationLog.WriteLine( "GenBank Formatter BVT: Successfully validated the StrandType, StrandTopology, Division, Date, Version, PrimaryID Properties"); // test the sequence string Assert.AreEqual(ExpectedSequence, new string(seq.Select(a => (char)a).ToArray())); ApplicationLog.WriteLine( "GenBank Formatter BVT: Successfully validated the Sequence"); Console.WriteLine(string.Format((IFormatProvider)null, "GenBank Formatter BVT: Successfully validated the Sequence '{0}'", ExpectedSequence)); parserObjFromFile.Close(); parserObjFromFile.Dispose(); File.Delete(tempFileName); } } }