'Returns a dict with the following attributes::
data - a list of variants with the format
.. raw:: text
[<guid>, <start>, <end>, <name>, cigar, seq]
message - error/informative message'

def process_data(self, iterator, start_val=0, max_vals=None, **kwargs):

    data = []
    message = None
    def get_mapping(ref, alt):
        '\n                                                Returns    (    offset,    new_seq,    cigar    )    tuple    that    defines    mapping    of\n                                                alt    to    ref.    Cigar    format    is    an    array    of    [    op_index,    length    ]    pairs\n                                                where    op_index    is    the    0-based    index    into    the    string    "MIDNSHP=X"\n                                                '
        cig_ops = 'MIDNSHP=X'
        ref_len = len(ref)
        alt_len = len(alt)
        if (ref_len == alt_len):
            return (0, alt, [[cig_ops.find('M'), ref_len]])
        alt_in_ref_index = ref.find(alt)
        if (alt_in_ref_index != (-1)):
            return (alt_in_ref_index, ref[(alt_in_ref_index + 1):], [[cig_ops.find('D'), (ref_len - alt_len)]])
        ref_in_alt_index = alt.find(ref)
        if (ref_in_alt_index != (-1)):
            return (ref_in_alt_index, alt[(ref_in_alt_index + 1):], [[cig_ops.find('I'), (alt_len - ref_len)]])
    genotype_re = re.compile('/|\\|')
    for (count, line) in enumerate(iterator):
        if (count < start_val):
            continue
        if (max_vals and ((count - start_val) >= max_vals)):
            message = (self.error_max_vals % (max_vals, 'features'))
            break
        feature = line.split()
        (pos, c_id, ref, alt, qual, c_filter, info) = feature[1:8]
        samples_data = []
        if (len(feature) > 8):
            samples_data = feature[9:]
        pos = (int(pos) - 1)
        if (alt == '.'):
            count -= 1
            continue
        allele_counts = [0 for i in range((alt.count(',') + 1))]
        sample_gts = []
        if samples_data:
            alleles_seen = {}
            has_alleles = False
            for (i, sample) in enumerate(samples_data):
                genotype = sample.split(':')[0]
                has_alleles = False
                alleles_seen.clear()
                for allele in genotype_re.split(genotype):
                    try:
                        allele = int(allele)
                        if ((allele != 0) and (allele not in alleles_seen)):
                            allele_counts[(allele - 1)] += 1
                            alleles_seen[allele] = True
                            has_alleles = True
                    except ValueError:
                        pass
                if (not has_alleles):
                    genotype = ''
                sample_gts.append(genotype)
        else:
            allele_counts = [1]
            sample_gts = ['1/1']
        locus_data = [(-1), pos, c_id, ref, alt, qual, c_filter, ','.join(sample_gts)]
        locus_data.extend(allele_counts)
        data.append(locus_data)
    return {'data': data, 'message': message}
