55from coolbox .utilities import (
66 get_logger , GenomeRange , split_genome_range
77)
8- from coolbox .utilities .bam import process_bam , query_bam
8+ from coolbox .utilities .reader . tab import get_indexed_tab_reader
99from .base import Track
1010
1111log = get_logger (__name__ )
@@ -39,7 +39,7 @@ def __init__(self, file, **kwargs):
3939 })
4040 properties .update (kwargs )
4141 super ().__init__ (properties )
42- self .indexed_bam = process_bam (file )
42+ self .reader = get_indexed_tab_reader (file )
4343
4444 def fetch_data (self , gr : GenomeRange , ** kwargs ) -> pd .DataFrame :
4545 """
@@ -53,7 +53,7 @@ def fetch_data(self, gr: GenomeRange, **kwargs) -> pd.DataFrame:
5353 columns = ["qname", "flag", "rname", "pos", "mapq", "cigar",
5454 "rnext", "pnext", "tlen", "seq", "qual", "options"]
5555 """
56- return self .fetch_intervals (gr )
56+ return self .reader . query_var_chr (gr )
5757
5858 def plot (self , ax , gr : GenomeRange , ** kwargs ):
5959 self .plot_align (ax , gr )
@@ -85,22 +85,3 @@ def plot_align(self, ax, gr: GenomeRange):
8585 with_ruler = False ,
8686 draw_line = False
8787 )
88-
89- def fetch_intervals (self , genome_range : GenomeRange ):
90- chrom , start , end = split_genome_range (genome_range )
91- rows = [
92- row_items
93- for row_items in query_bam (
94- self .indexed_bam , chrom , start , end , split = True
95- )
96- ]
97-
98- # https://samtools.github.io/hts-specs/SAMv1.pdf
99- fields = ["qname" , "flag" , "rname" , "pos" , "mapq" , "cigar" ,
100- "rnext" , "pnext" , "tlen" , "seq" , "qual" , "options" ]
101- df = pd .DataFrame (rows , columns = fields )
102- if df .shape [0 ] > 0 :
103- df ['flag' ] = df ['flag' ].astype (int )
104- df ['pos' ] = df ['pos' ].astype (int )
105- df ['mapq' ] = df ['mapq' ].astype (int )
106- return df
0 commit comments