def __call__(self, bam, reference, honH5):
"""
Takes a pysam.Samfile
"""
logging.info("Starting %s" % (self.name))
size = self.end - self.start
regName = "%s:%d-%d" % (self.chrom, self.start, self.end)
logging.debug("Making container for %s (%s %d bp)" % (self.groupName, regName, size))
logging.debug("Parsing bam" )
st = max(0, self.start)
readCount = bam.count(self.chrom, st, self.end)
reads = bam.fetch(self.chrom, st, self.end)
if readCount == 0:
logging.warning("No reads found in %s" % self.groupName)
self.failed = True
self.errMessage = "No reads found in %s" % self.groupName
return
else:
logging.info("%d reads to parse in %s" % (readCount, self.groupName))
myData = self.countErrors(reads, self.start, size, self.args)
#request loc on honH5 and flush results
with honH5.acquireH5('a') as h5dat:
out = h5dat.create_group(self.groupName)
out.attrs["reference"] = self.chrom
out.attrs["start"] = self.start
out.attrs["end"] = self.end
if size < CHUNKSHAPE[1]:
chunk = (CHUNKSHAPE[0], size-1)
else:
chunk = CHUNKSHAPE
container = out.create_dataset("data", data = myData, \
chunks=chunk, compression="gzip")
h5dat.flush()
评论列表
文章目录