Exemple #1
0
        public Pragma Parse(string line)
        {
            string[] pragmaParts = line.Trim().Replace(Prefix, "").Split(new char[] { ' ' }, 2);
            Pragma pragma = new Pragma() {
                Name = pragmaParts[0]
            };

            // The sequence region pragma has values without keys, so we are going to
            // add them here to enrich the data (instead of storing it as a flat string).
            if (pragma.Name == "sequence-region")
            {
                var sequenceParts = pragmaParts[1].Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
                pragmaParts = new string[2]
                {
                    pragma.Name,
                    string.Format("Chromosome={0};Start position={1};End position={2}", sequenceParts[0], sequenceParts[1], sequenceParts[2])
                };
            }

            // Some pragmas are just a string value.  We can identify those by their lack of a delimiter
            // for a tag key-value pair.
            if (!pragmaParts[1].Contains(KeyValueParser.TagKeyValueDelimiter))
            {
                pragma.Value = pragmaParts[1];
                return pragma;
            }

            KeyValueParser kvParser = new KeyValueParser();
            pragma.Tags.AddRange(kvParser.Parse(pragmaParts[1]));
            return pragma;
        }
Exemple #2
0
        public static Feature ParseFeature(string data)
        {
            KeyValueParser kvParser = new KeyValueParser();
            string[] fields = data.Split(Delimiter);
            var feature = new Feature()
            {
                Chromosome = fields[0],
                Source = fields[1],
                Type = fields[2],
                StartPosition = int.Parse(fields[3]),
                EndPosition = int.Parse(fields[4]),
                Score = fields[5],
                Strand = fields[6],
                Phase = fields[7],
                Attributes = kvParser.Parse(fields[8])
            };

            return feature;
        }