Skip to content

Commit

Permalink
add some tests for plugins
Browse files Browse the repository at this point in the history
  • Loading branch information
nickzoic committed Nov 6, 2023
1 parent 43f3c79 commit acc5ca2
Show file tree
Hide file tree
Showing 5 changed files with 172 additions and 2 deletions.
2 changes: 1 addition & 1 deletion countess/plugins/mutagenize.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def mutagenize(
yield sequence[0:n] + b2 + sequence[n:], n + 1, None, b2
if delete:
yield sequence[0:n] + sequence[n + 1 :], n + 1, b1, None
if del3:
if del3 and n+3 <= len(sequence):
yield sequence[0:n] + sequence[n + 3 :], n + 1, sequence[n : n + 3], None
if ins3:
for ins in product("ACGT", "ACGT", "ACGT"):
Expand Down
1 change: 0 additions & 1 deletion countess/plugins/variant.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ class VariantPlugin(PandasTransformDictToSinglePlugin):
"column": ColumnChoiceParam("Input Column", "sequence"),
"reference": ColumnOrNoneChoiceParam("Reference Column"),
"sequence": StringParam("*OR* Reference Sequence"),
"auto": BooleanParam("Automatic Reference Sequence?", False),
"output": StringParam("Output Column", "variant"),
"max_mutations": IntegerParam("Max Mutations", 10),
"drop": BooleanParam("Drop unidentified variants", False),
Expand Down
20 changes: 20 additions & 0 deletions tests/plugins/test_csv.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import pytest

import pandas as pd

from countess.plugins.csv import LoadCsvPlugin
from countess.core.logger import MultiprocessLogger

logger = MultiprocessLogger()

def test_load_csv():

plugin = LoadCsvPlugin()

plugin.set_parameter('files.0.filename', 'tests/input1.csv')


output_df = next(plugin.load_file(0, logger))

assert list(output_df.columns) == ['thing', 'count']
assert len(output_df) == 4
122 changes: 122 additions & 0 deletions tests/plugins/test_mutagenize.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
import pytest

import pandas as pd

from countess.plugins.mutagenize import MutagenizePlugin
from countess.core.logger import MultiprocessLogger

logger = MultiprocessLogger()

def test_mutagenize_mutate():

plugin = MutagenizePlugin()
plugin.set_parameter('sequence', 'GATTACA')
plugin.set_parameter('mutate', True)

output_df = next(plugin.load_file(0, logger))
output = list(output_df['sequence'])

assert len(output) == 21


def test_mutagenize_insert():

plugin = MutagenizePlugin()
plugin.set_parameter('sequence', 'GATTACA')
plugin.set_parameter('mutate', False)
plugin.set_parameter('insert', True)

output_df = next(plugin.load_file(0, logger))
output = list(output_df['sequence'])

assert len(output) == 32


def test_mutagenize_insert3():

plugin = MutagenizePlugin()
plugin.set_parameter('sequence', 'GATTACA')
plugin.set_parameter('mutate', False)
plugin.set_parameter('ins3', True)

output_df = next(plugin.load_file(0, logger))
output = list(output_df['sequence'])

assert len(output) == 512

def test_mutagenize_insert_dedup():

plugin = MutagenizePlugin()
plugin.set_parameter('sequence', 'GATTACA')
plugin.set_parameter('mutate', False)
plugin.set_parameter('insert', True)
plugin.set_parameter('remove', True)

output_df = next(plugin.load_file(0, logger))

assert len(output_df) == 25


def test_mutagenize_insert3_dedup():

plugin = MutagenizePlugin()
plugin.set_parameter('sequence', 'GATTACA')
plugin.set_parameter('mutate', False)
plugin.set_parameter('ins3', True)
plugin.set_parameter('remove', True)

output_df = next(plugin.load_file(0, logger))

assert len(output_df) == 400

def test_mutagenize_delete():

plugin = MutagenizePlugin()
plugin.set_parameter('sequence', 'GATTACA')
plugin.set_parameter('mutate', False)
plugin.set_parameter('delete', True)

output_df = next(plugin.load_file(0, logger))
output = list(output_df['sequence'])

assert len(output) == 7


def test_mutagenize_del3():

plugin = MutagenizePlugin()
plugin.set_parameter('sequence', 'GATTACA')
plugin.set_parameter('mutate', False)
plugin.set_parameter('del3', True)

output_df = next(plugin.load_file(0, logger))
output = list(output_df['sequence'])

assert len(output) == 5

def test_mutagenize_delete_dedup():

plugin = MutagenizePlugin()
plugin.set_parameter('sequence', 'GATTACA')
plugin.set_parameter('mutate', False)
plugin.set_parameter('delete', True)
plugin.set_parameter('remove', True)

output_df = next(plugin.load_file(0, logger))

assert len(output_df) == 6


def test_mutagenize_del3_dedup():

plugin = MutagenizePlugin()
plugin.set_parameter('sequence', 'GATTACA')
plugin.set_parameter('mutate', False)
plugin.set_parameter('del3', True)
plugin.set_parameter('remove', True)

output_df = next(plugin.load_file(0, logger))

assert len(output_df) == 4


29 changes: 29 additions & 0 deletions tests/plugins/test_variant.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import pytest

import pandas as pd

from countess.plugins.variant import VariantPlugin
from countess.core.logger import MultiprocessLogger

logger = MultiprocessLogger()

def test_variant_ref_column():

input_df = pd.DataFrame([
{ 'ref': 'TACACACAG', 'seq': 'TACAGACAG' },
{ 'ref': 'ATGGTTGGTTC', 'seq': "ATGGTTGGTGGTTCG" }
])

plugin = VariantPlugin()
plugin.set_parameter('column', 'seq')
plugin.set_parameter('reference', 'ref')
plugin.set_parameter('output', 'out')

plugin.prepare(['test'], None)

output_df = plugin.process_dataframe(input_df, logger)

output = output_df.to_records()

assert output[0]['out'] == 'g.5C>G'
assert output[1]['out'] == 'g.[7_9dup;11_12insG]'

0 comments on commit acc5ca2

Please sign in to comment.