def tab_loader(inputfn, trackfn, genome, parsecols, expectedrows): buffersize = int(expectedrows / 100) # element seqid_col = [col for (col, name, _, _) in parsecols if name == "seqid"][0] left_col = [col for (col, name, _, _) in parsecols if name == "left"][0] right_col = [col for (col, name, _, _) in parsecols if name == "right"][0] # data(s) for (col, name, _, typ) in parsecols: dtype = [] data_cols = [] if name not in ("seqid", "left", "right"): dtype.append(typ) data_cols.append(col) # title = trackfn.split(".")[0] track = gtrackcore.empty_track(trackfn, genome, expectedrows, title) # track.unseal() arr = track.add_node_values(name, ",".join(dtype)) with open(inputfn) as rh: nodes = [] datas = [] for i, fields in enumerate(tab_parser_converter(rh, parsecols, genome)): node = (fields[seqid_col], fields[left_col], fields[right_col]) nodes.append(node) data = tuple([fields[data_col] for data_col in data_cols]) datas.append(data[0] if len(data) == 1 else data) if ((i + 1) % buffersize) == 0: track.add_nodes(nodes) arr.append(datas) track.flush() nodes, datas = [], [] if nodes: track.add_nodes(nodes) arr.append(datas) track.flush() track.seal() return track
def tab_loader(inputfn, trackfn, genome, parsecols, expectedrows): buffersize = int(expectedrows / 100) # element seqid_col = [col for (col, name, _, _) in parsecols if name == "seqid"][0] left_col = [col for (col, name, _, _) in parsecols if name == "left"][0] right_col = [col for (col, name, _, _) in parsecols if name == "right"][0] # data(s) for (col, name, _, typ) in parsecols: dtype = [] data_cols = [] if name not in ("seqid", "left", "right"): dtype.append(typ) data_cols.append(col) # title = trackfn.split(".")[0] track = gtrackcore.empty_track(trackfn, genome, expectedrows, title) # track.unseal() arr = track.add_node_values(name, ",".join(dtype)) with open(inputfn) as rh: nodes = [] datas = [] for i, fields in enumerate(tab_parser_converter(rh, parsecols, genome)): node = (fields[seqid_col], fields[left_col], fields[right_col]) nodes.append(node) data = tuple([fields[data_col] for data_col in data_cols]) datas.append(data[0] if len (data) == 1 else data) if ((i + 1) % buffersize) == 0: track.add_nodes(nodes) arr.append(datas) track.flush() nodes, datas = [], [] if nodes: track.add_nodes(nodes) arr.append(datas) track.flush() track.seal() return track
def get_track(self): fn = self.get_fn() track = gtrackcore.empty_track(fn, GENOMES["HG19"]) return track