Drop __next__

This commit is contained in:
mvdbeek
2020-02-12 09:47:36 +01:00
parent eac0ff9d7f
commit af4fdf7e1f
+26 -34
View File
@@ -13,51 +13,43 @@ UNKNOWN_NUCLEOTIDE = '*'
class PopulationVCFParser(Iterator):
def __init__(self, reader, name):
self.reader = reader
self.reader = iter(reader)
self.name = name
self.counter = 0
def __next__(self):
rval = []
vc = next(self.reader)
for i, allele in enumerate(vc.alt):
rval.append(('%s_%i.%i' % (self.name, i + 1, self.counter + 1), allele))
self.counter += 1
return (vc, rval)
def __iter__(self):
while True:
yield next(self)
for vc in self.reader:
rval = []
for i, allele in enumerate(vc.alt):
rval.append(('%s_%i.%i' % (self.name, i + 1, self.counter + 1), allele))
self.counter += 1
yield (vc, rval)
class SampleVCFParser(Iterator):
def __init__(self, reader):
self.reader = reader
self.reader = iter(reader)
self.counter = 0
def __next__(self):
rval = []
vc = next(self.reader)
alleles = [vc.ref] + vc.alt
if 'GT' in vc.format:
gt_index = vc.format.index('GT')
for sample_name, sample_value in zip(vc.sample_names, vc.sample_values):
gt_indexes = []
for i in sample_value[gt_index].replace('|', '/').replace('\\', '/').split('/'): # Do we need to consider phase here?
try:
gt_indexes.append(int(i))
except Exception:
gt_indexes.append(None)
for i, allele_i in enumerate(gt_indexes):
if allele_i is not None:
rval.append(('%s_%i.%i' % (sample_name, i + 1, self.counter + 1), alleles[allele_i]))
self.counter += 1
return (vc, rval)
def __iter__(self):
while True:
yield next(self)
for vc in self.reader:
rval = []
alleles = [vc.ref] + vc.alt
if 'GT' in vc.format:
gt_index = vc.format.index('GT')
for sample_name, sample_value in zip(vc.sample_names, vc.sample_values):
gt_indexes = []
for i in sample_value[gt_index].replace('|', '/').replace('\\', '/').split('/'): # Do we need to consider phase here?
try:
gt_indexes.append(int(i))
except Exception:
gt_indexes.append(None)
for i, allele_i in enumerate(gt_indexes):
if allele_i is not None:
rval.append(('%s_%i.%i' % (sample_name, i + 1, self.counter + 1), alleles[allele_i]))
self.counter += 1
yield (vc, rval)
def main():