test_rdp.py
import os
import sys
import tempfile
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
SCRIPTS_DIR = os.path.join(CURRENT_DIR, '..', 'scripts')
sys.path.append(SCRIPTS_DIR)
SAMPLE_DIR = os.path.join(CURRENT_DIR, 'sample')
from rdp import run_rdp_classifier, read_rpd_file, get_lineage, filter_rdp_file
from binary_utils import Binary
def test_run_rdp_classifier_ok():
fasta = os.path.join(SAMPLE_DIR, 'scaffolds.fa')
jar = Binary.which('classifier.jar')
if jar is not None:
java = Binary.assert_which('java')
rdp_exe = '{java} -Xmx1g -jar {jar}'.format(java=java, jar=jar)
else:
rdp_exe = Binary.assert_which('classifier')
result_file = tempfile.NamedTemporaryFile()
run_rdp_classifier(rdp_exe, fasta, result_file.name)
def test_read_rdp_results():
rdp_file = os.path.join(SAMPLE_DIR, 'rdp.txt')
lines = list(read_rpd_file(rdp_file))
assert len(lines) == 23 # 23 scaffolds
def test_filter_rdp_file():
rdp_file = os.path.join(SAMPLE_DIR, 'rdp.txt')
result_file = tempfile.NamedTemporaryFile()
filter_rdp_file(rdp_file, result_file.name)
for line in read_rpd_file(result_file.name):
assert len(line) == 19 # seqid + 6 taxonomic levels * 3
if line[0] == "87":
expected_lineage = 87
assert get_lineage(line) == ['Bacteria'] + ['unclassified'] * 5