Пример #1
0
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
Пример #2
0
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
Пример #3
0
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)")
Пример #4
0
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)"
Пример #5
0
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)
Пример #6
0
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)")
Пример #7
0
 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
Пример #8
0
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)"
Пример #9
0
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='-')")
Пример #10
0
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='-')")
Пример #11
0
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-"
Пример #12
0
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='-')"
    )
Пример #13
0
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-")
Пример #14
0
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)")
Пример #15
0
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
Пример #16
0
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] == "-"
Пример #17
0
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 == "-"
Пример #18
0
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], "-")
Пример #19
0
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, "-")
Пример #20
0
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']")
Пример #21
0
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='-')")
Пример #22
0
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"))
Пример #23
0
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)
Пример #24
0
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()
Пример #25
0
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')"
    )
Пример #26
0
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
Пример #27
0
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"
Пример #28
0
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",))
Пример #29
0
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-")
Пример #30
0
def test_bedrecord__constructor__empty_string():
    record = BEDRecord("")
    assert_equal(len(record), 0)
    assert_equal(str(record), "")
    assert_equal(repr(record), "BEDRecord()")
Пример #31
0
def test_bedrecord__constructor__defaults():
    record = BEDRecord()
    assert_equal(len(record), 0)
    assert_equal(str(record), "")
    assert_equal(repr(record), "BEDRecord()")
Пример #32
0
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")
Пример #33
0
def test_bedrecord__constructor__empty_string():
    record = BEDRecord("")
    assert len(record) == 0
    assert str(record) == ""
    assert repr(record) == "BEDRecord()"
Пример #34
0
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-")