def get_mode(self, paths):
"""Return ``SINGLE_END`` or ``PAIRED_END`` from list of file paths
Raise InputDataException if non-existing.
"""
seen = {0: 0, 1: 0} # counters
for path in paths:
filename = os.path.basename(path)
for i, patterns in enumerate([PATTERNS_R1, PATTERNS_R2]):
for pattern in patterns:
if fnmatch.fnmatch(filename, pattern):
seen[i] += 1
break
if not seen[0] and seen[1]:
raise InvalidDataException('Have seen only R2 in {}!'.format(
','.join(paths)))
if seen[1] and seen[0] != seen[1]:
raise InvalidDataException(
'Have seen different number of R1 and R2 reads in {}'.format(
','.join(paths)))
return (PAIRED_END if seen[1] else SINGLE_END)
评论列表
文章目录