def __init__(self, bam:str, reference:str, columns:int=20000, cache:int=None, minor_gaps:bool=False):
"""Interface to samtools tview functionality.
:param bam: path to bam file of reads aligned to a common
reference.
:param reference: path to fasta file of reference to which reads
are aligned.
:param columns: default number of tview columns to read in one go.
:param cache: Currently not implemented.
:param minor_gaps: encoded gaps in non-reference positions distinctly.
"""
self.logger = logging.getLogger('TView')
self._bam = bam
self._reference = reference
self._columns = columns
self._cache = cache
self._minor_gaps = minor_gaps
if self._minor_gaps:
raise NotImplementedError
self._columns_per_base = 3 # reasonable estimate
self._column_pad = 1.1 # multiplier when _columns_per_base is updated
# crosscheck the inputs
with pysam.AlignmentFile(bam, 'rb') as b:
brefs = b.references
blens = b.lengths
rrefs = set(pysam.FastaFile(reference).references)
sbrefs = set(brefs)
if not sbrefs.issuperset(rrefs):
raise ValueError("input bam and reference do not appear consistent: {} vs {}.".format(sbrefs, rrefs))
self._refs = set(brefs)
self._reflens = dict(zip(brefs, blens))
self._pileup = None # buffered `Pileup` object
评论列表
文章目录