59 lines
2.2 KiB
Python
59 lines
2.2 KiB
Python
"""Tests for graph characteristic"""
|
|
import pytest
|
|
import os
|
|
import networkx as nx
|
|
import hashlib
|
|
from .context import debruijn
|
|
#from .context import debruijn_comp
|
|
from debruijn import get_starting_nodes
|
|
from debruijn import get_sink_nodes
|
|
from debruijn import get_contigs
|
|
from debruijn import save_contigs
|
|
|
|
|
|
def test_get_starting_nodes():
|
|
graph = nx.DiGraph()
|
|
graph.add_edges_from([(1, 2), (3, 2), (2, 4), (4, 5), (5, 6), (5, 7)])
|
|
nodes = get_starting_nodes(graph)
|
|
assert len(nodes) == 2
|
|
assert 1 in nodes
|
|
assert 3 in nodes
|
|
|
|
def test_get_sink_nodes():
|
|
graph = nx.DiGraph()
|
|
graph.add_edges_from([(1, 2), (3, 2), (2, 4), (4, 5), (5, 6), (5, 7)])
|
|
nodes = get_sink_nodes(graph)
|
|
assert len(nodes) == 2
|
|
assert 6 in nodes
|
|
assert 7 in nodes
|
|
|
|
def test_get_contigs():
|
|
graph = nx.DiGraph()
|
|
graph.add_edges_from([("TC", "CA"), ("AC", "CA"), ("CA", "AG"), ("AG", "GC"), ("GC", "CG"), ("CG", "GA"), ("GA", "AT"), ("GA", "AA")])
|
|
contig_list = get_contigs(graph, ["TC", "AC"], ["AT" , "AA"])
|
|
results = ["TCAGCGAT", "TCAGCGAA", "ACAGCGAT", "ACAGCGAA"]
|
|
assert len(contig_list) == 4
|
|
for contig in contig_list:
|
|
assert contig[0] in results
|
|
assert contig[1] == 8
|
|
|
|
|
|
# def test_get_contigs_comp():
|
|
# graph = nx.DiGraph()
|
|
# graph.add_edges_from([(("AG", "TC"), ("CA", "GT")), (("AC", "TG"), ("CA", "GT")), (("CA", "GT"), ("AG", "TC")),
|
|
# (("AG", "TC"), ("CG", "GC")), (("CG", "GC"), ("CG", "GC")), (("CG", "GC"), ("CT", "GA")), (("CT", "GA"), ("AT", "TC")),
|
|
# (("CT", "GA"), ("AA", "TT"))])
|
|
# contig_list = get_contigs(graph, ["TC", "AC"], ["AT" , "AA"])
|
|
# results = ["TCAGCGAT", "TCAGCGAA", "ACAGCGAT", "ACAGCGAA"]
|
|
# assert len(contig_list) == 4
|
|
# for contig in contig_list:
|
|
# assert contig[0] in results
|
|
# assert contig[1] == 8
|
|
|
|
|
|
def test_save_contigs():
|
|
test_file = os.path.abspath(os.path.join(os.path.dirname(__file__), "test.fna"))
|
|
contig = [("TCAGCGAT", 8), ("TCAGCGAA",8), ("ACAGCGAT", 8), ("ACAGCGAA", 8)]
|
|
save_contigs(contig, test_file)
|
|
with open(test_file, 'rb') as contig_test:
|
|
assert hashlib.md5(contig_test.read()).hexdigest() == "ca84dfeb5d58eca107e34de09b3cc997" |