Ejemplo n.º 1
0
        /// <summary>
        /// Returns list of reference sequences present in this header.
        /// </summary>
        public IList <string> GetReferenceSequences()
        {
            List <string>         refSequences = new List <string>();
            List <SAMRecordField> fields       = RecordFields.Where(R => String.Compare(R.Typecode, "SQ", StringComparison.OrdinalIgnoreCase) == 0).ToList();

            foreach (SAMRecordField field in fields)
            {
                SAMRecordFieldTag tag = field.Tags.FirstOrDefault(F => String.Compare(F.Tag, "SN", StringComparison.OrdinalIgnoreCase) == 0);
                if (tag != null)
                {
                    refSequences.Add(tag.Value);
                }
            }

            return(refSequences);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Returns list of reference sequences name and length present in SQ header.
        /// </summary>
        public IList <ReferenceSequenceInfo> GetReferenceSequencesInfoFromSQHeader()
        {
            List <ReferenceSequenceInfo> refSequencesInfo = new List <ReferenceSequenceInfo>();
            List <SAMRecordField>        fields           = RecordFields.Where(R => String.Compare(R.Typecode, "SQ", StringComparison.OrdinalIgnoreCase) == 0).ToList();

            foreach (SAMRecordField field in fields)
            {
                SAMRecordFieldTag tag = field.Tags.FirstOrDefault(F => String.Compare(F.Tag, "SN", StringComparison.OrdinalIgnoreCase) == 0);
                if (tag != null)
                {
                    string refName = tag.Value;
                    long   length;
                    tag = field.Tags.FirstOrDefault(F => String.Compare(F.Tag, "LN", StringComparison.OrdinalIgnoreCase) == 0);
                    if (tag != null && long.TryParse(tag.Value, out length))
                    {
                        refSequencesInfo.Add(new ReferenceSequenceInfo(refName, length));
                    }
                }
            }

            return(refSequencesInfo);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Returns list of SequenceRanges objects which represents reference sequences present in this header.
        /// </summary>
        public IList <SequenceRange> GetReferenceSequenceRanges()
        {
            List <SequenceRange>  ranges = new List <SequenceRange>();
            List <SAMRecordField> fields = RecordFields.Where(R => String.Compare(R.Typecode, "SQ", StringComparison.OrdinalIgnoreCase) == 0).ToList();

            foreach (SAMRecordField field in fields)
            {
                SAMRecordFieldTag tag = field.Tags.FirstOrDefault(F => String.Compare(F.Tag, "SN", StringComparison.OrdinalIgnoreCase) == 0);
                if (tag != null)
                {
                    string refName = tag.Value;
                    long   length;
                    tag = field.Tags.FirstOrDefault(F => String.Compare(F.Tag, "LN", StringComparison.OrdinalIgnoreCase) == 0);
                    if (tag != null && long.TryParse(tag.Value, out length))
                    {
                        SequenceRange range = new SequenceRange(refName, 0, length);
                        ranges.Add(range);
                    }
                }
            }

            return(ranges);
        }