示例#1
0
def test_messy_graph():
    reference = "GCATATTTT"
    variants = VcfVariants([
        VcfVariant(1, 2, "CAT", "C", type="DELETION"),
        VcfVariant(1, 3, "A", "G", type="SNP"),
        VcfVariant(1, 4, "TA", "T", type="DELETION"),
        VcfVariant(1, 5, "A", "AT", type="INSERTION"),
    ])

    constructor = GraphConstructor(reference, variants)
    graph = constructor.get_graph()
    print(graph)
    print(constructor.get_graph_with_dummy_nodes())

    ref, var = graph.get_variant_nodes(variants[2])
    assert ref == 5
    assert var == 10

    ref, var = graph.get_variant_nodes(variants[0])
    assert ref == 3
    assert var == 9

    ref, var = graph.get_variant_nodes(variants[1])
    assert ref == 3
    assert var == 2

    ref, var = graph.get_variant_nodes(variants[3])
    assert ref == 11
    assert var == 6

    assert list(graph.get_edges(10)) == [6, 11]
    assert list(graph.get_edges(11)) == [7]
    assert list(graph.get_edges(9)) == [5, 10]
示例#2
0
def test_deletion_with_snp_at_end():
    reference = "TCTGTCTAGG"
    variants = VcfVariants([
        VcfVariant(1, 4, "GTCTA", "G", type="DELETION"),
        VcfVariant(1, 8, "A", "T", type="SNP")
    ])
    constructor = GraphConstructor(reference, variants)
    graph = constructor.get_graph()

    print(graph)
示例#3
0
def test_insertion_with_snp_right_before_and_right_after():
    reference = "AAAAAA"
    variants = VcfVariants([
        VcfVariant(1, 2, "A", "T", type="SNP"),
        VcfVariant(1, 2, "A", "AC", type="INSERTION"),
        VcfVariant(1, 3, "A", "C", type="SNP")
    ])
    constructor = GraphConstructor(reference, variants)
    graph = constructor.get_graph()
    print(graph)
示例#4
0
def test_single_insertion():
    reference = "AATTGG"

    variants = VcfVariants([VcfVariant(1, 2, "A", "AAA", type="INSERTION")])

    constructor = GraphConstructor(reference, variants)
    graph = constructor.get_graph_with_dummy_nodes()
    print(graph)

    assert list(graph.get_edges(1)) == [2, 5]
    assert list(graph.get_edges(5)) == [3]
    assert list(graph.get_edges(3)) == []
示例#5
0
def test_deletion_with_snp_right_before_and_right_after():
    reference = "AAAAAA"
    variants = VcfVariants([
        VcfVariant(1, 2, "A", "T", type="SNP"),
        VcfVariant(1, 2, "AA", "A", type="DELETION"),
        VcfVariant(1, 3, "A", "C", type="SNP")
    ])
    constructor = GraphConstructor(reference, variants)
    graph = constructor.get_graph()
    graph_with_dummy_nodes = constructor.get_graph_with_dummy_nodes()
    print(graph)
    print(graph_with_dummy_nodes)
示例#6
0
def test_double_deletion_with_snp_inside_first_deletion():

    reference = "ACTGATAAAG"
    variants = VcfVariants([
        VcfVariant(1, 4, "GAT", "G", type="DELETION"),
        VcfVariant(1, 6, "T", "C", type="SNP"),
        VcfVariant(1, 6, "TAAA", "T", type="DELETION")
    ])
    constructor = GraphConstructor(reference, variants)
    graph = constructor.get_graph()
    print(graph.get_node_at_ref_offset(0))
    print(graph.get_node_at_ref_offset(1))
    graph_with_dummy_nodes = constructor.get_graph_with_dummy_nodes()
    print(graph_with_dummy_nodes)
示例#7
0
def test_single_deletion():
    logging.info("\n\nTest single deletion")
    reference = "AATTGG"

    variants = VcfVariants([VcfVariant(1, 2, "ATT", "A", type="DELETION")])

    constructor = GraphConstructor(reference, variants)
    graph = constructor.get_graph()
    print(graph)

    assert list(graph.get_edges(1)) == [2, 5]
    assert list(graph.get_edges(2)) == [3]

    assert graph.get_node_sequence(5) == ""
    assert graph.get_node_sequence(2) == "TT"
    assert graph.get_node_sequence(1) == "AA"
    assert graph.get_node_sequence(3) == "GG"

    assert graph.linear_ref_nodes() == set([1, 2, 3])
示例#8
0
def test_insertion_with_snp_right_before():
    reference = "AAAAAA"
    variants = VcfVariants([
        VcfVariant(1, 2, "A", "T", type="SNP"),
        VcfVariant(1, 2, "A", "AC", type="INSERTION")
    ])
    constructor = GraphConstructor(reference, variants)
    graph = constructor.get_graph_with_dummy_nodes()

    assert list(graph.get_edges(1)) == [2, 3]
    assert list(graph.get_edges(2)) == [4, 7]
    assert list(graph.get_edges(3)) == [4, 7]
    assert list(graph.get_edges(4)) == [5]
    assert list(graph.get_edges(5)) == []
    assert list(graph.get_edges(7)) == [5]
    assert graph.get_node_sequence(5) == "AAAA"
    assert graph.get_node_sequence(7) == ""
    assert graph.get_node_sequence(4) == "C"
    assert graph.get_node_sequence(2) == "T"
    assert graph.linear_ref_nodes() == set([1, 3, 5])
示例#9
0
def test_single_snp():
    reference = "ACTGGG"

    variants = VcfVariants([VcfVariant(1, 2, "C", "T", type="SNP")])

    constructor = GraphConstructor(reference, variants)
    graph = constructor.get_graph()

    assert list(graph.get_edges(1)) == [2, 3], graph.get_edges(1)
    assert list(graph.get_edges(2)) == [4], graph.get_edges(2)
    assert list(graph.get_edges(3)) == [4], graph.get_edges(3)
    assert list(graph.get_edges(4)) == [], graph.get_edges(4)

    assert graph.get_node_size(1) == 1
    assert graph.get_node_size(2) == 1
    assert graph.get_node_size(3) == 1
    assert graph.get_node_size(4) == 4

    assert graph.get_node_sequence(1) == "A"
    assert graph.get_node_sequence(2) == "T"
    assert graph.get_node_sequence(3) == "C"
    assert graph.get_node_sequence(4) == "TGGG"

    assert graph.linear_ref_nodes() == set([1, 3, 4])