Source code for pytadbit.parsers.tad_parser

"""
02 Dec 2012


"""

from os.path import isfile


[docs]def parse_tads(handler): """ Parse a tab separated value file that contains the list of TADs of a given experiment. This file might have been generated whith the :func:`pytadbit.tadbit.print_result_R` or with the R binding for tadbit :param handler: path to file :param 1 bin_size: resolution of the experiment :returns: list of TADs and list of weights, each TAD being a dict of type: :: {TAD_num: {'start': start, 'end' : end, 'brk' : end, 'score': score}} """ tads = {} weights = None if isinstance(handler, tuple): handler, weights = handler if isinstance(handler, dict): try: for pos in range(len(handler['end'])): start = float(handler['start'][pos]) end = float(handler['end'][pos]) try: score = float(handler['score'][pos]) except KeyError: # missing score = 10.0 except TypeError: # last one score = 10.0 tads[pos + 1] = {'start': start, 'end' : end, 'brk' : end, 'score': score} except KeyError: # the other dict format for pos in handler: if not ('start' in handler[pos] or not 'end' in handler[pos] or not 'brk' in handler[pos] or not 'score' in handler[pos]): raise Exception('ERROR: bad format\n') tads = handler elif isfile(handler): for line in open(handler): if line.startswith('#'): continue try: pos, start, end, score = line.split() dens = float('nan') except ValueError: pos, start, end, score, dens = line.split() dens = float(dens) start = float(start) - 1 end = float(end) - 1 pos = int(pos) try: score = float(score) except ValueError: # last one score = 10.0 tads[pos] = {'start' : start, 'end' : end, 'brk' : end, 'score' : score, 'height': dens} else: raise Exception('File %s not found\n' % (handler)) return tads, weights