def test_identity(self): i1, i2, i3, i4 = P.closed(0, 1), P.openclosed(0, 1), P.closedopen(0, 1), P.open(0, 1) assert P.from_string(P.to_string(i1), int) == i1 assert P.from_string(P.to_string(i2), int) == i2 assert P.from_string(P.to_string(i3), int) == i3 assert P.from_string(P.to_string(i4), int) == i4
def test_parameters(self): i1, i2, i3, i4 = P.closed(0, 1), P.openclosed(0, 1), P.closedopen(0, 1), P.open(0, 1) params = { 'disj': ' or ', 'sep': '-', 'left_open': '<!', 'left_closed': '<', 'right_open': '!>', 'right_closed': '>', 'conv': lambda s: '"{}"'.format(s), 'pinf': '+oo', 'ninf': '-oo', } assert P.to_string(i1, **params) == '<"0"-"1">' assert P.to_string(i2, **params) == '<!"0"-"1">' assert P.to_string(i3, **params) == '<"0"-"1"!>' assert P.to_string(i4, **params) == '<!"0"-"1"!>' assert P.to_string(P.empty(), **params) == '<!!>' assert P.to_string(P.singleton(1), **params) == '<"1">' assert P.to_string(P.openclosed(-P.inf, 1), **params) == '<!-oo-"1">' assert P.to_string(P.closedopen(1, P.inf), **params) == '<"1"-+oo!>' assert P.to_string(P.closed(0, 1) | P.closed(2, 3), **params) == '<"0"-"1"> or <"2"-"3">'
gtffile = args.gtf dbfile = args.db jsonfile = args.json threads = int(args.threads) print('Creating gtf database, this will take some time...') db = gffutils.create_db(gtffile, dbfile) isoform_interval_dict = {} for gene in db.features_of_type('gene'): g_id = gene['gene_id'][0] isoform_interval_dict[g_id] = {} for transcript in db.children(gene, featuretype='transcript'): t_id = transcript['transcript_id'][0] isoform_interval_dict[g_id][t_id] = P.empty() for exon in db.children(transcript, featuretype='exon'): isoform_interval_dict[g_id][ t_id] = isoform_interval_dict[g_id][t_id] | P.closed( exon.start, exon.end) print('Extracting unque isoform intervals') res = Parallel(n_jobs=threads, verbose=3, backend='loky')( delayed(create_interval_dict_linear_time)(gene, transcript_intervals) for gene, transcript_intervals in isoform_interval_dict.items()) isoform_unique_intervals = {k: v for k, v in res} isoform_unique_intervals_for_json_dump = { gene: {P.to_string(k): ','.join(v) for k, v in d.items()} for gene, d in isoform_unique_intervals.items() } print('Writing unique isoform intervals to json file {}'.format(jsonfile)) with open(jsonfile, 'w') as fp: json.dump(isoform_unique_intervals_for_json_dump, fp)
def test_bounds(self): assert P.to_string(P.closed(0, 1)) == '[0,1]' assert P.to_string(P.openclosed(0, 1)) == '(0,1]' assert P.to_string(P.closedopen(0, 1)) == '[0,1)' assert P.to_string(P.open(0, 1)) == '(0,1)'
def test_bound_types(self): assert P.to_string(P.closed('a', 'b')) == "['a','b']" assert P.to_string(P.closed(tuple([0]), tuple([1]))) == '[(0,),(1,)]'
def test_unions(self): assert P.to_string(P.closed(0, 1) | P.closed(2, 3)) == '[0,1] | [2,3]'
def test_infinities(self): assert P.to_string(P.openclosed(-P.inf, 1)) == '(-inf,1]' assert P.to_string(P.closedopen(1, P.inf)) == '[1,+inf)'
def test_empty(self): assert P.to_string(P.empty()) == '()'
def test_singleton(self): assert P.to_string(P.singleton(0)) == '[0]'
def time_interval_to_str(interval): converter = lambda t: t.strftime(time_format) temp_interval = interval.apply(lambda i: (P.CLOSED, i.lower, i.upper, P.CLOSED)) return P.to_string(temp_interval, conv=converter)