def test_bedrecord__freeze__add_new_value(): record_str = "my_contig\t12\t345\tmy_name" record = BEDRecord(record_str) frozen_record = record.freeze() with pytest.raises(AttributeError): frozen_record.score = 1 assert str(frozen_record) == record_str
def test_bedrecord__freeze__modify_existing_value(): record_str = "my_contig\t12\t345\tmy_name" record = BEDRecord(record_str) frozen_record = record.freeze() with pytest.raises(TypeError): frozen_record.start = 1 assert str(frozen_record) == record_str
def test_bedrecord__setters__3_fields(): record = BEDRecord("my_contig\t12\t345") record.contig = "chrZ" assert_equal(record.contig, "chrZ") record.end += 20 assert_equal(record.end, 365) assert_equal(str(record), "chrZ\t12\t365") assert_equal(repr(record), "BEDRecord(contig='chrZ', start=12, end=365)")
def test_bedrecord__setters__3_fields(): record = BEDRecord("my_contig\t12\t345") record.contig = "chrZ" assert record.contig == "chrZ" record.end += 20 assert record.end == 365 assert str(record) == "chrZ\t12\t365" assert repr(record) == "BEDRecord(contig='chrZ', start=12, end=365)"
def test_bedrecord__cmp(): record_1_txt = "my_contig\t12\t345\tmy_name\t-3\t-\tfoo" record_1 = BEDRecord(record_1_txt) record_2 = BEDRecord("chrZ\t132\t4345\tchrZ_region\t0\t+\tbar") for idx in xrange(len(record_2)): record_tmp = BEDRecord(record_1_txt) assert_equal(record_1, record_tmp) record_tmp[idx] = record_2[idx] assert_not_equal(record_1, record_tmp) record_tmp[idx] = record_1[idx] assert_equal(record_1, record_tmp)
def test_bedrecord__setters__3_fields(): record = BEDRecord("my_contig\t12\t345") record.contig = "chrZ" assert_equal(record.contig, "chrZ") record.end += 20 assert_equal(record.end, 365) assert_equal(str(record), "chrZ\t12\t365") assert_equal(repr(record), "BEDRecord(contig='chrZ', start=12, end=365)")
def _stat_areas_of_interest(cls, prefixes): """Returns (size, number of named intervals, total number of intervals) for a set of areas of interest.""" areas_of_interest = {} for (prefix_name, prefix) in prefixes.iteritems(): prefix_label = prefix.get("Label", prefix_name) for (roi_name, roi_filename) in prefix.get("RegionsOfInterest", {}).iteritems(): count, names, size = 0, set(), 0 with open(roi_filename) as handle: for line in handle: bed = BEDRecord(line) names.add(bed.name if len(bed) >= 4 else (bed.contig + "*")) size += (bed.end - bed.start) count += 1 areas_of_interest[(prefix_name, roi_name)] = { "Size": size, "NFeatures": len(names), "NIntervals": count, "Genome": prefix["Name"], "Name": roi_name, "Label": "%s:%s" % (prefix_label, roi_name), "Path": roi_filename } return areas_of_interest
def test_bedrecord__constructor__3_fields(): text = "my_contig\t12\t345" record = BEDRecord(text) assert len(record) == 3 assert str(record) == text assert repr(record) == "BEDRecord(contig='my_contig', start=12, end=345)"
def test_bedrecord__setters__unset_fields__at_end(): record = BEDRecord("my_contig\t12\t345") record.name = "my_region" assert_equal(record.name, "my_region") record.score = -13 assert_equal(record.score, -13) record.strand = '-' assert_equal(record.strand, '-') assert_equal(str(record), "my_contig\t12\t345\tmy_region\t-13\t-") assert_equal( repr(record), "BEDRecord(contig='my_contig', start=12, end=345, " "name='my_region', score=-13, strand='-')")
def test_bedrecord__setters__unset_fields__at_end(): record = BEDRecord("my_contig\t12\t345") record.name = "my_region" assert_equal(record.name, "my_region") record.score = -13 assert_equal(record.score, -13) record.strand = '-' assert_equal(record.strand, '-') assert_equal(str(record), "my_contig\t12\t345\tmy_region\t-13\t-") assert_equal(repr(record), "BEDRecord(contig='my_contig', start=12, end=345, " "name='my_region', score=-13, strand='-')")
def test_bedrecord__copy(): record_1_txt = "my_contig\t12\t345\tmy_name\t-3\t-" record_1 = BEDRecord(record_1_txt) record_2 = copy.copy(record_1) record_2.name = "my_clone" assert str(record_1) == record_1_txt assert str(record_2) == "my_contig\t12\t345\tmy_clone\t-3\t-"
def test_bedrecord__setters__unset_fields__at_end(): record = BEDRecord("my_contig\t12\t345") record.name = "my_region" assert record.name == "my_region" record.score = -13 assert record.score == -13 record.strand = "-" assert record.strand == "-" assert str(record) == "my_contig\t12\t345\tmy_region\t-13\t-" assert ( repr(record) == "BEDRecord(contig='my_contig', start=12, end=345, " "name='my_region', score=-13, strand='-')" )
def test_bedrecord__copy(): record_1_txt = "my_contig\t12\t345\tmy_name\t-3\t-" record_1 = BEDRecord(record_1_txt) record_2 = copy.copy(record_1) record_2.name = "my_clone" assert_equal(str(record_1), record_1_txt) assert_equal(str(record_2), "my_contig\t12\t345\tmy_clone\t-3\t-")
def test_bedrecord__constructor__3_fields(): text = "my_contig\t12\t345" record = BEDRecord(text) assert_equal(len(record), 3) assert_equal(str(record), text) assert_equal(repr(record), "BEDRecord(contig='my_contig', start=12, end=345)")
def parse_intervals(genotype): records = {} for line in genotype.header: match = _VCF_DICT.match(line) if not match: continue key, values = match.groups() if key == "contig": values = dict(pair.split("=", 1) for pair in values.split(",")) record = BEDRecord() record.contig = values["ID"] record.start = 0 record.end = int(values["length"]) record.name = record.contig record.strand = "+" records[record.contig] = [record] if not records: sys.stderr.write("ERROR: List of contigs not found in VCF header; " "specifying --intervals is required!\n") return None return records
def test_bedrecord__accessors__6_fields__getitem(): record = BEDRecord("my_contig\t12\t345\tmy_name\t-3\t-") assert record[0] == "my_contig" assert record[1] == 12 assert record[2] == 345 assert record[3] == "my_name" assert record[4] == -3 assert record[5] == "-"
def test_bedrecord__accessors__6_fields(): record = BEDRecord("my_contig\t12\t345\tmy_name\t-3\t-") assert record.contig == "my_contig" assert record.start == 12 assert record.end == 345 assert record.name == "my_name" assert record.score == -3 assert record.strand == "-"
def test_bedrecord__accessors__6_fields__getitem(): record = BEDRecord("my_contig\t12\t345\tmy_name\t-3\t-") assert_equal(record[0], "my_contig") assert_equal(record[1], 12) assert_equal(record[2], 345) assert_equal(record[3], "my_name") assert_equal(record[4], -3) assert_equal(record[5], "-")
def test_bedrecord__accessors__6_fields(): record = BEDRecord("my_contig\t12\t345\tmy_name\t-3\t-") assert_equal(record.contig, "my_contig") assert_equal(record.start, 12) assert_equal(record.end, 345) assert_equal(record.name, "my_name") assert_equal(record.score, -3) assert_equal(record.strand, "-")
def test_bedrecord__deepcopy(): record_1_txt = "my_contig\t12\t345\tmy_name\t-3\t-" record_1 = BEDRecord(record_1_txt) record_1[6] = ["foo"] record_2 = copy.deepcopy(record_1) record_2[6][0] = "bar" assert_equal(str(record_1), record_1_txt + "\t['foo']") assert_equal(str(record_2), record_1_txt + "\t['bar']")
def test_bedrecord__constructor__6_fields(): text = "my_contig\t12\t345\tmy_name\t-3\t-" record = BEDRecord(text) assert_equal(len(record), 6) assert_equal(str(record), text) assert_equal( repr(record), "BEDRecord(contig='my_contig', start=12, " "end=345, name='my_name', score=-3, strand='-')")
def test_bedrecord__setters__type_errors(): record = BEDRecord("my_contig\t12\t345\tname\t0\t+") assert_raises(ValueError, lambda: setattr(record, "contig", 17)) assert_raises(ValueError, lambda: setattr(record, "start", "foo")) assert_raises(ValueError, lambda: setattr(record, "end", "foo")) assert_raises(ValueError, lambda: setattr(record, "name", 17.3)) assert_raises(ValueError, lambda: setattr(record, "score", "foo")) assert_raises(ValueError, lambda: setattr(record, "strand", "foo"))
def test_bedrecord__accessors__3_fields(): record = BEDRecord("my_contig\t12\t345") assert_equal(record.contig, "my_contig") assert_equal(record.start, 12) assert_equal(record.end, 345) assert_raises(IndexError, lambda: record.name) assert_raises(IndexError, lambda: record.score) assert_raises(IndexError, lambda: record.strand)
def test_bedrecord__accessors__3_fields(): record = BEDRecord("my_contig\t12\t345") assert record.contig == "my_contig" assert record.start == 12 assert record.end == 345 with pytest.raises(IndexError): record.name() with pytest.raises(IndexError): record.score() with pytest.raises(IndexError): record.strand()
def test_bedrecord__constructor__extra_fields(): text = "my_contig\t12\t345\tmy_name\t-3\t-\tfoo\tbar" record = BEDRecord(text) assert len(record) == 8 assert str(record) == text assert ( repr(record) == "BEDRecord(contig='my_contig', start=12, " "end=345, name='my_name', score=-3, strand='-', " "'foo', 'bar')" )
def parse_intervals(genotype): records = {} for line in genotype.header: match = _VCF_DICT.match(line) if not match: continue key, values = match.groups() if key == "contig": values = dict(pair.split("=", 1) for pair in values.split(",")) record = BEDRecord() record.contig = values["ID"] record.start = 0 record.end = int(values["length"]) record.name = record.contig record.strand = "+" records[record.contig] = [record] if not records: sys.stderr.write("ERROR: List of contigs not found in VCF header; " "specifying --intervals is required!\n") return None return records
def test_bedrecord__setters__type_errors(): record = BEDRecord("my_contig\t12\t345\tname\t0\t+") with pytest.raises(ValueError): record.contig = 17 with pytest.raises(ValueError): record.start = "foo" with pytest.raises(ValueError): record.end = "foo" with pytest.raises(ValueError): record.name = 17.3 with pytest.raises(ValueError): record.score = "foo" with pytest.raises(ValueError): record.strand = "foo"
def test_bedrecord__constructor__invalid_values(): tmpl = "\t1\t%s\t\t0\t-" BEDRecord(tmpl % (1,)) # check template with pytest.raises(BEDError): BEDRecord(tmpl % ("not a number",))
def test_bedrecord__setters__unset_fields__after_end(): record = BEDRecord("") record.strand = "-" assert_equal(str(record), "\t0\t0\t\t0\t-") record = BEDRecord("my_name") record.strand = "-" assert_equal(str(record), "my_name\t0\t0\t\t0\t-") record = BEDRecord("my_name\t17") record.strand = "-" assert_equal(str(record), "my_name\t17\t0\t\t0\t-") record = BEDRecord("my_name\t17\t258") record.strand = "-" assert_equal(str(record), "my_name\t17\t258\t\t0\t-") record = BEDRecord("my_name\t17\t258\tregion") record.strand = "-" assert_equal(str(record), "my_name\t17\t258\tregion\t0\t-") record = BEDRecord("my_name\t17\t258\tregion\t33") record.strand = "-" assert_equal(str(record), "my_name\t17\t258\tregion\t33\t-") record = BEDRecord("my_name\t17\t258\tregion\t33\t+") record.strand = "-" assert_equal(str(record), "my_name\t17\t258\tregion\t33\t-")
def test_bedrecord__constructor__empty_string(): record = BEDRecord("") assert_equal(len(record), 0) assert_equal(str(record), "") assert_equal(repr(record), "BEDRecord()")
def test_bedrecord__constructor__defaults(): record = BEDRecord() assert_equal(len(record), 0) assert_equal(str(record), "") assert_equal(repr(record), "BEDRecord()")
def test_bedrecord__accessors__extra_fields(): text = "my_contig\t12\t345\tmy_name\t-3\t-\tfoo\tbar" record = BEDRecord(text) assert_equal(record[6], "foo") assert_equal(record[7], "bar")
def test_bedrecord__constructor__empty_string(): record = BEDRecord("") assert len(record) == 0 assert str(record) == "" assert repr(record) == "BEDRecord()"
def test_bedrecord__setters__unset_fields__after_end(): record = BEDRecord("") record.strand = "-" assert_equal(str(record), "\t0\t0\t\t0\t-") record = BEDRecord("my_name") record.strand = "-" assert_equal(str(record), "my_name\t0\t0\t\t0\t-") record = BEDRecord("my_name\t17") record.strand = "-" assert_equal(str(record), "my_name\t17\t0\t\t0\t-") record = BEDRecord("my_name\t17\t258") record.strand = "-" assert_equal(str(record), "my_name\t17\t258\t\t0\t-") record = BEDRecord("my_name\t17\t258\tregion") record.strand = "-" assert_equal(str(record), "my_name\t17\t258\tregion\t0\t-") record = BEDRecord("my_name\t17\t258\tregion\t33") record.strand = "-" assert_equal(str(record), "my_name\t17\t258\tregion\t33\t-") record = BEDRecord("my_name\t17\t258\tregion\t33\t+") record.strand = "-" assert_equal(str(record), "my_name\t17\t258\tregion\t33\t-")