debruijn-tp/tests/test_characteristics.py

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"