private static Ab1Metadata GetAb1Metadata(IParserContext context)
 {
     var metadata = new Ab1Metadata();
     LoadPeakLocations(metadata, context);
     LoadSequenceConfidence(metadata, context);
     LoadColorWheelData(metadata, context);
     return metadata;
 }
 private static void LoadPeakLocations(Ab1Metadata metadata, IParserContext context)
 {
     metadata.PeakLocations =
         ((ShortDataItem)context
                             .DataItems
                             .First(item =>
                                    item.Entry.TagName == Constants.PeakLocationTagName)).Value;
 }
 private static void LoadPeakLocations(Ab1Metadata metadata, IParserContext context)
 {
     metadata.PeakLocations =
         ((ShortDataItem)context
          .DataItems
          .First(item =>
                 item.Entry.TagName == Constants.PeakLocationTagName)).Value;
 }
        /// <summary>
        /// Converts the parsed ab1 raw data file into a sequence, with the associated ab1 metadata setup.  I use
        /// this method because only a subset of the data is needed so there is no point in persisting a large amount
        /// of unused metadata.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static ISequence Convert(IParserContext context)
        {
            ISequence   sequence = GetSequence(context);
            Ab1Metadata metadata = GetAb1Metadata(context);

            Ab1Metadata.SetAb1Data(sequence, metadata);
            return(sequence);
        }
        private static Ab1Metadata GetAb1Metadata(IParserContext context)
        {
            var metadata = new Ab1Metadata();

            LoadPeakLocations(metadata, context);
            LoadSequenceConfidence(metadata, context);
            LoadColorWheelData(metadata, context);
            return(metadata);
        }
Esempio n. 6
0
 private static void LoadSequenceConfidence(Ab1Metadata metadata, IParserContext context)
 {
     metadata.ConfidenceData =
         (from c in ((CharDataItem)context
                     .DataItems
                     .First(item =>
                            item.Entry.TagName == Constants.SequenceConfidanceTagName)).Value
          select(short) c).ToArray();
 }
 private static void LoadColorWheelData(Ab1Metadata metadata, IParserContext context)
 {
     List<KeyValuePair<byte, int>> nucleotideIndices = GetNucleotideDataIndex(context);
     IEnumerable<ShortDataItem> dataItems = context.DataItems.OfType<ShortDataItem>();
     nucleotideIndices.ForEach(
         pair =>
             {
                 ShortDataItem item =
                     dataItems.First(i => i.Entry.TagNumber == pair.Value && i.Entry.TagName == Constants.DataTagName);
                 metadata.SetColorData(
                     pair.Key,
                     new Ab1ColorData(metadata.PeakLocations, item.Value));
             });
 }
Esempio n. 8
0
 /// <summary>
 /// Sets ab1 metadata on a sequence.
 /// </summary>
 /// <param name="sequence"></param>
 /// <param name="metadata"></param>
 public static void SetAb1Data(ISequence sequence, Ab1Metadata metadata)
 {
     if (sequence == null)
     {
         throw new ArgumentNullException("sequence");
     }
     if (sequence.Metadata.ContainsKey(MetadataKey))
     {
         sequence.Metadata[MetadataKey] = metadata;
     }
     else
     {
         sequence.Metadata.Add(MetadataKey, metadata);
     }
 }
        private static void LoadColorWheelData(Ab1Metadata metadata, IParserContext context)
        {
            List <KeyValuePair <byte, int> > nucleotideIndices = GetNucleotideDataIndex(context);
            IEnumerable <ShortDataItem>      dataItems         = context.DataItems.OfType <ShortDataItem>();

            nucleotideIndices.ForEach(
                pair =>
            {
                ShortDataItem item =
                    dataItems.First(i => i.Entry.TagNumber == pair.Value && i.Entry.TagName == Constants.DataTagName);
                metadata.SetColorData(
                    pair.Key,
                    new Ab1ColorData(metadata.PeakLocations, item.Value));
            });
        }
Esempio n. 10
0
        public void TestColorDataTrim()
        {
            const int dataCount = 40;

            // 10 points
            var confidence = new short[] {22, 31, 50, 1, 61, 22, 10, 19, 23, 10};
            var peakLocations = new short[] {2, 5, 9, 12, 15, 22, 26, 32, 35, 38};
            short[] aData = GetTestData(dataCount).ToArray();
            short[] cData = GetTestData(dataCount).ToArray();
            short[] tData = GetTestData(dataCount).ToArray();
            short[] gData = GetTestData(dataCount).ToArray();

            var data = new Ab1Metadata {ConfidenceData = confidence.ToArray(), PeakLocations = peakLocations.ToArray()};
            data.SetColorData(Alphabets.DNA.A, new Ab1ColorData(peakLocations, aData));
            data.SetColorData(Alphabets.DNA.T, new Ab1ColorData(peakLocations, tData));
            data.SetColorData(Alphabets.DNA.C, new Ab1ColorData(peakLocations, cData));
            data.SetColorData(Alphabets.DNA.G, new Ab1ColorData(peakLocations, gData));

            const int segmentStartIndex = 3;
            const int segmentLength = 5;

            data.Trim(segmentStartIndex, segmentLength);

            var newPeakLocations = new List<short> {1, 4, 11, 15, 21};
            Assert.AreEqual(segmentLength, data.ConfidenceData.Length);
            Assert.AreEqual(segmentLength, data.PeakLocations.Length);

            AssertAreEqual(confidence.GetRange(segmentStartIndex, segmentLength), data.ConfidenceData.ToList());
            AssertAreEqual(newPeakLocations, data.PeakLocations.ToList());

            data.AllColorData()
                .ToList().ForEach(colorData =>
                                      {
                                          Assert.AreEqual(segmentLength, colorData.DataByResidue.Count);
                                          int offset = 0;
                                          for (int i = 0; i < colorData.DataByResidue.Count; i++)
                                          {
                                              Assert.AreEqual(newPeakLocations[i],
                                                              colorData.DataByResidue[i].PeakIndex + offset);
                                              offset += colorData.DataByResidue[i].Data.Length;
                                          }
                                      });
        }
 private static void LoadSequenceConfidence(Ab1Metadata metadata, IParserContext context)
 {
     metadata.ConfidenceData =
         ((CharDataItem)context.DataItems.First(item => item.Entry.TagName == Constants.SequenceConfidanceTagName)).Value.Select(c => (short)c).ToArray();
 }
Esempio n. 12
0
 /// <summary>
 /// Sets ab1 metadata on a sequence.
 /// </summary>
 /// <param name="sequence"></param>
 /// <param name="metadata"></param>
 public static void SetAb1Data(ISequence sequence, Ab1Metadata metadata)
 {
     if (sequence == null) throw new ArgumentNullException("sequence");
     if (sequence.Metadata.ContainsKey(MetadataKey))
         sequence.Metadata[MetadataKey] = metadata;
     else
         sequence.Metadata.Add(MetadataKey, metadata);
 }