public void GenBankFeatureClone() { ISequenceParser parser = new GenBankParser(); ISequence seq = parser.ParseOne(@"testdata\GenBank\NC_001284.gbk"); GenBankMetadata metadata = seq.Metadata["GenBank"] as GenBankMetadata; Assert.AreEqual(metadata.Features.All.Count, 743); Assert.AreEqual(metadata.Features.CodingSequences.Count, 117); Assert.AreEqual(metadata.Features.Exons.Count, 32); Assert.AreEqual(metadata.Features.Introns.Count, 22); Assert.AreEqual(metadata.Features.Genes.Count, 60); Assert.AreEqual(metadata.Features.MiscFeatures.Count, 455); Assert.AreEqual(metadata.Features.Promoters.Count, 17); Assert.AreEqual(metadata.Features.TransferRNAs.Count, 21); Assert.AreEqual(metadata.Features.All.FindAll(F => F.Key.Equals(StandardFeatureKeys.CodingSequence)).Count, 117); Assert.AreEqual(metadata.Features.CodingSequences[0].Translation.Trim('"'), metadata.Features.CodingSequences[0].GetTranslation().ToString()); Assert.AreEqual(metadata.GetFeatures(11918, 12241).Count, 2); GenBankMetadata clonedMetadata = metadata.Clone(); Assert.AreEqual(clonedMetadata.Features.All.Count, 743); Assert.AreEqual(clonedMetadata.Features.CodingSequences.Count, 117); Assert.AreEqual(clonedMetadata.Features.Exons.Count, 32); Assert.AreEqual(clonedMetadata.Features.Introns.Count, 22); Assert.AreEqual(clonedMetadata.Features.Genes.Count, 60); Assert.AreEqual(clonedMetadata.Features.MiscFeatures.Count, 455); Assert.AreEqual(clonedMetadata.Features.Promoters.Count, 17); Assert.AreEqual(clonedMetadata.Features.TransferRNAs.Count, 21); Assert.AreEqual(clonedMetadata.Features.All.FindAll(F => F.Key.Equals(StandardFeatureKeys.CodingSequence)).Count, 117); Assert.AreEqual(clonedMetadata.Features.CodingSequences[0].Translation.Trim('"'), clonedMetadata.Features.CodingSequences[0].GetTranslation().ToString()); Assert.AreEqual(clonedMetadata.GetFeatures(11918, 12241).Count, 2); }
public void GenBankMetadataClone() { LocationBuilder locBuilder = new LocationBuilder(); GenBankMetadata metadata = new GenBankMetadata(); metadata.Accession = new GenBankAccession(); metadata.Accession.Primary = "PAccession"; metadata.Accession.Secondary.Add("SAccession1"); metadata.Accession.Secondary.Add("SAccession2"); metadata.BaseCount = "a 1 c 2"; metadata.Comments.Add("Comment1"); metadata.Comments.Add("Comment2"); metadata.Contig = "Contig Info"; metadata.DBLink = new CrossReferenceLink(); metadata.DBLink.Type = CrossReferenceType.Project; metadata.DBLink.Numbers.Add("100"); metadata.DBLink.Numbers.Add("200"); metadata.DBSource = "DbSourceInfo"; metadata.Definition = "Defination info"; metadata.Features = new SequenceFeatures(); FeatureItem feature = new FeatureItem("feature1", "1"); List <string> qualifierValues = new List <string>(); qualifierValues.Add("qualifier1value1"); qualifierValues.Add("qualifier1value2"); feature.Qualifiers.Add("qualifier1", qualifierValues); metadata.Features.All.Add(feature); feature = new FeatureItem("feature2", "2"); qualifierValues = new List <string>(); qualifierValues.Add("qualifier2value1"); qualifierValues.Add("qualifier2value2"); feature.Qualifiers.Add("qualifier2", qualifierValues); metadata.Features.All.Add(feature); feature = new FeatureItem("feature2", "2"); qualifierValues = new List <string>(); qualifierValues.Add("qualifier2value1"); qualifierValues.Add("qualifier2value2"); feature.Qualifiers.Add("qualifier2", qualifierValues); metadata.Features.All.Add(feature); metadata.Keywords = "keywords data"; metadata.Locus = new GenBankLocusInfo(); metadata.Locus.Date = DateTime.Now; metadata.Locus.DivisionCode = SequenceDivisionCode.CON; metadata.Locus.MoleculeType = MoleculeType.DNA; metadata.Locus.Name = "LocusName"; metadata.Locus.SequenceLength = 100; metadata.Locus.SequenceType = "bp"; metadata.Locus.Strand = SequenceStrandType.Double; metadata.Locus.StrandTopology = SequenceStrandTopology.Linear; metadata.Origin = "origin info"; metadata.Primary = "Primary info"; metadata.Project = new ProjectIdentifier(); metadata.Project.Name = "Project1"; metadata.Project.Numbers.Add("101"); metadata.Project.Numbers.Add("201"); CitationReference reference = new CitationReference(); reference.Authors = "Authors"; reference.Consortiums = "Consortiums"; reference.Journal = "Journal"; reference.Location = "3"; reference.Medline = "Medline info"; reference.Number = 1; reference.PubMed = "pubmid"; reference.Remarks = "remarks"; reference.Title = "Title of the book"; metadata.References.Add(reference); reference = new CitationReference(); reference.Authors = "Authors"; reference.Consortiums = "Consortiums"; reference.Journal = "Journal"; reference.Location = "4"; reference.Medline = "Medline info"; reference.Number = 2; reference.PubMed = "pubmid"; reference.Remarks = "remarks"; reference.Title = "Title of the book"; metadata.References.Add(reference); metadata.Segment = new SequenceSegment(); metadata.Segment.Count = 2; metadata.Segment.Current = 1; metadata.Source = new SequenceSource(); metadata.Source.CommonName = "ABC Xyz"; metadata.Source.Organism.Genus = "ABC"; metadata.Source.Organism.Species = "Xyz"; metadata.Source.Organism.ClassLevels = "123 123"; metadata.Version = new GenBankVersion(); metadata.Version.Accession = "PAccession"; metadata.Version.Version = "1"; metadata.Version.GINumber = "12345"; GenBankMetadata clonemetadta = metadata.Clone(); Assert.AreEqual(clonemetadta.Accession.Primary, metadata.Accession.Primary); for (int i = 0; i < clonemetadta.Accession.Secondary.Count; i++) { Assert.AreEqual(clonemetadta.Accession.Secondary[i], metadata.Accession.Secondary[i]); } Assert.AreEqual(clonemetadta.BaseCount, metadata.BaseCount); for (int i = 0; i < clonemetadta.Comments.Count; i++) { Assert.AreEqual(clonemetadta.Comments[i], metadata.Comments[i]); } Assert.AreEqual(clonemetadta.Contig, metadata.Contig); Assert.AreEqual(clonemetadta.DBLink.Type, metadata.DBLink.Type); for (int i = 0; i < clonemetadta.DBLink.Numbers.Count; i++) { Assert.AreEqual(clonemetadta.DBLink.Numbers[i], metadata.DBLink.Numbers[i]); } Assert.AreEqual(clonemetadta.DBSource, metadata.DBSource); Assert.AreEqual(clonemetadta.Definition, metadata.Definition); for (int i = 0; i < clonemetadta.Features.All.Count; i++) { Assert.AreEqual(clonemetadta.Features.All[i].Key, metadata.Features.All[i].Key); Assert.AreEqual(locBuilder.GetLocationString(clonemetadta.Features.All[i].Location), locBuilder.GetLocationString(metadata.Features.All[i].Location)); foreach (KeyValuePair <string, List <string> > kvp in clonemetadta.Features.All[i].Qualifiers) { if (metadata.Features.All[i].Qualifiers.ContainsKey(kvp.Key)) { if (kvp.Value == null) { Assert.IsNull(metadata.Features.All[i].Qualifiers[kvp.Key]); } else { for (int j = 0; j < kvp.Value.Count; j++) { Assert.AreEqual(kvp.Value[j], metadata.Features.All[i].Qualifiers[kvp.Key][j]); } } } else { Assert.Fail(); } } } Assert.AreEqual(clonemetadta.Keywords, metadata.Keywords); Assert.AreEqual(clonemetadta.Locus.Date, metadata.Locus.Date); Assert.AreEqual(clonemetadta.Locus.DivisionCode, metadata.Locus.DivisionCode); Assert.AreEqual(clonemetadta.Locus.MoleculeType, metadata.Locus.MoleculeType); Assert.AreEqual(clonemetadta.Locus.Name, metadata.Locus.Name); Assert.AreEqual(clonemetadta.Locus.SequenceLength, metadata.Locus.SequenceLength); Assert.AreEqual(clonemetadta.Locus.SequenceType, metadata.Locus.SequenceType); Assert.AreEqual(clonemetadta.Locus.Strand, metadata.Locus.Strand); Assert.AreEqual(clonemetadta.Locus.StrandTopology, metadata.Locus.StrandTopology); Assert.AreEqual(clonemetadta.Origin, clonemetadta.Origin); Assert.AreEqual(clonemetadta.Primary, metadata.Primary); Assert.AreEqual(clonemetadta.Project.Name, metadata.Project.Name); for (int i = 0; i < clonemetadta.Project.Numbers.Count; i++) { Assert.AreEqual(clonemetadta.Project.Numbers[i], metadata.Project.Numbers[i]); } for (int i = 0; i < clonemetadta.References.Count; i++) { Assert.AreEqual(clonemetadta.References[i].Authors, metadata.References[i].Authors); Assert.AreEqual(clonemetadta.References[i].Consortiums, metadata.References[i].Consortiums); Assert.AreEqual(clonemetadta.References[i].Journal, metadata.References[i].Journal); Assert.AreEqual(clonemetadta.References[i].Location, metadata.References[i].Location); Assert.AreEqual(clonemetadta.References[i].Medline, metadata.References[i].Medline); Assert.AreEqual(clonemetadta.References[i].Number, metadata.References[i].Number); Assert.AreEqual(clonemetadta.References[i].PubMed, metadata.References[i].PubMed); Assert.AreEqual(clonemetadta.References[i].Remarks, metadata.References[i].Remarks); Assert.AreEqual(clonemetadta.References[i].Title, metadata.References[i].Title); } Assert.AreEqual(clonemetadta.Segment.Current, metadata.Segment.Current); Assert.AreEqual(clonemetadta.Segment.Count, metadata.Segment.Count); Assert.AreEqual(clonemetadta.Source.CommonName, metadata.Source.CommonName); Assert.AreEqual(clonemetadta.Source.Organism.ClassLevels, metadata.Source.Organism.ClassLevels); Assert.AreEqual(clonemetadta.Source.Organism.Genus, metadata.Source.Organism.Genus); Assert.AreEqual(clonemetadta.Source.Organism.Species, metadata.Source.Organism.Species); Assert.AreEqual(clonemetadta.Version.Accession, metadata.Version.Accession); Assert.AreEqual(clonemetadta.Version.CompoundAccession, metadata.Version.CompoundAccession); Assert.AreEqual(clonemetadta.Version.GINumber, metadata.Version.GINumber); Assert.AreEqual(clonemetadta.Version.Version, metadata.Version.Version); }