Mercurial > repos > padge > clipkit
diff clipkit_repo/tests/unit/test_modes.py @ 0:49b058e85902 draft
"planemo upload for repository https://github.com/jlsteenwyk/clipkit commit cbe1e8577ecb1a46709034a40dff36052e876e7a-dirty"
author | padge |
---|---|
date | Fri, 25 Mar 2022 13:04:31 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clipkit_repo/tests/unit/test_modes.py Fri Mar 25 13:04:31 2022 +0000 @@ -0,0 +1,415 @@ +import pytest +from pathlib import Path + +import numpy as np +from Bio import AlignIO +from clipkit.modes import TrimmingMode, trim, shouldKeep + +here = Path(__file__) + + +class TestModes(object): + def test_shouldKeep_kpi_gappy_keep(self): + ## setup + mode = TrimmingMode.kpi_gappy + gappyness = 0.00 + gaps = 0.9 + parsimony_informative = True + constant_site = False + + assert True == shouldKeep( + mode, parsimony_informative, constant_site, gappyness, gaps + ) + + def test_shouldKeep_kpi_gappy_trim(self): + ## setup + mode = TrimmingMode.kpi_gappy + gappyness = 0.00 + gaps = 0.9 + parsimony_informative = False + constant_site = False + + assert False == shouldKeep( + mode, parsimony_informative, constant_site, gappyness, gaps + ) + + def test_shouldKeep_gappy_keep(self): + ## setup + mode = TrimmingMode.gappy + gappyness = 0.00 + gaps = 0.9 + parsimony_informative = True + constant_site = False + + assert True == shouldKeep( + mode, parsimony_informative, constant_site, gappyness, gaps + ) + + def test_shouldKeep_gappy_trim(self): + ## setup + mode = TrimmingMode.gappy + gappyness = 0.95 + gaps = 0.9 + parsimony_informative = True + constant_site = False + + assert False == shouldKeep( + mode, parsimony_informative, constant_site, gappyness, gaps + ) + + def test_shouldKeep_kpi_keep(self): + ## setup + mode = TrimmingMode.kpi + gappyness = 0.00 + gaps = 0.9 + parsimony_informative = True + constant_site = False + + assert True == shouldKeep( + mode, parsimony_informative, constant_site, gappyness, gaps + ) + + def test_shouldKeep_kpi_trim(self): + ## setup + mode = TrimmingMode.kpi + gappyness = 0.95 + gaps = 0.9 + parsimony_informative = False + constant_site = False + + assert False == shouldKeep( + mode, parsimony_informative, constant_site, gappyness, gaps + ) + + def test_shouldKeep_kpic_keep(self): + ## setup + mode = TrimmingMode.kpic + gappyness = 0.95 + gaps = 0.9 + parsimony_informative = False + constant_site = True + + assert True == shouldKeep( + mode, parsimony_informative, constant_site, gappyness, gaps + ) + + def test_shouldKeep_kpic_trim(self): + ## setup + mode = TrimmingMode.kpic + gappyness = 0.95 + gaps = 0.9 + parsimony_informative = False + constant_site = False + + assert False == shouldKeep( + mode, parsimony_informative, constant_site, gappyness, gaps + ) + + def test_shouldKeep_kpic_gappy_keep(self): + ## setup + mode = TrimmingMode.kpic_gappy + gappyness = 0.70 + gaps = 0.9 + parsimony_informative = False + constant_site = True + + assert True == shouldKeep( + mode, parsimony_informative, constant_site, gappyness, gaps + ) + + def test_shouldKeep_kpic_gappy_trim(self): + ## setup + mode = TrimmingMode.kpic_gappy + gappyness = 0.95 + gaps = 0.9 + parsimony_informative = False + constant_site = True + + assert False == shouldKeep( + mode, parsimony_informative, constant_site, gappyness, gaps + ) + + def test_gappy_mode(self): + ## setup + gappyness = 0.00 + parsimony_informative = True + keepD = {} + trimD = {} + i = 2 + gaps = 0.9 + alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") + use_log = False + constant_site = False + + for entry in alignment: + keepD[entry.description] = np.empty([6], dtype=str) + trimD = {} + for entry in alignment: + trimD[entry.description] = np.empty([6], dtype=str) + + ## execution + keepD, trimD = trim( + gappyness, + parsimony_informative, + constant_site, + keepD, + trimD, + i, + gaps, + alignment, + TrimmingMode.gappy, + use_log, + ) + + ## check results + expected_keepD = { + "1": np.array(["", "", "G", "", "", ""]), + "2": np.array(["", "", "G", "", "", ""]), + "3": np.array(["", "", "G", "", "", ""]), + "4": np.array(["", "", "A", "", "", ""]), + "5": np.array(["", "", "a", "", "", ""]), + } + expected_trimD = { + "1": np.array(["", "", "", "", "", ""]), + "2": np.array(["", "", "", "", "", ""]), + "3": np.array(["", "", "", "", "", ""]), + "4": np.array(["", "", "", "", "", ""]), + "5": np.array(["", "", "", "", "", ""]), + } + + assert expected_keepD.keys() == keepD.keys() + assert all( + np.array_equal(expected_keepD[key], keepD[key]) for key in expected_keepD + ) + assert expected_trimD.keys() == trimD.keys() + assert all( + np.array_equal(expected_trimD[key], trimD[key]) for key in expected_trimD + ) + + def test_kpi_gappy_mode(self): + ## setup + gappyness = 0.6 + parsimony_informative = False + constant_site = True + keepD = {} + trimD = {} + i = 1 + gaps = 0.9 + alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") + use_log = False + + for entry in alignment: + keepD[entry.description] = np.empty([6], dtype=str) + trimD = {} + for entry in alignment: + trimD[entry.description] = np.empty([6], dtype=str) + + ## execution + keepD, trimD = trim( + gappyness, + parsimony_informative, + constant_site, + keepD, + trimD, + i, + gaps, + alignment, + TrimmingMode.kpi_gappy, + use_log, + ) + + ## check results + expected_keepD = { + "1": np.array(["", "", "", "", "", ""]), + "2": np.array(["", "", "", "", "", ""]), + "3": np.array(["", "", "", "", "", ""]), + "4": np.array(["", "", "", "", "", ""]), + "5": np.array(["", "", "", "", "", ""]), + } + expected_trimD = { + "1": np.array(["", "-", "", "", "", ""]), + "2": np.array(["", "-", "", "", "", ""]), + "3": np.array(["", "-", "", "", "", ""]), + "4": np.array(["", "G", "", "", "", ""]), + "5": np.array(["", "C", "", "", "", ""]), + } + + assert expected_keepD.keys() == keepD.keys() + assert all( + np.array_equal(expected_keepD[key], keepD[key]) for key in expected_keepD + ) + assert expected_trimD.keys() == trimD.keys() + assert all( + np.array_equal(expected_trimD[key], trimD[key]) for key in expected_trimD + ) + + def test_kpi_mode(self): + ## setup + gappyness = 0.2 + parsimony_informative = True + constant_site = False + keepD = {} + trimD = {} + i = 5 + gaps = 0.9 + alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") + use_log = False + + for entry in alignment: + keepD[entry.description] = np.empty([6], dtype=str) + trimD = {} + for entry in alignment: + trimD[entry.description] = np.empty([6], dtype=str) + + ## execution + keepD, trimD = trim( + gappyness, + parsimony_informative, + constant_site, + keepD, + trimD, + i, + gaps, + alignment, + TrimmingMode.kpi, + use_log, + ) + + ## check results + expected_keepD = { + "1": np.array(["", "", "", "", "", "T"]), + "2": np.array(["", "", "", "", "", "T"]), + "3": np.array(["", "", "", "", "", "A"]), + "4": np.array(["", "", "", "", "", "A"]), + "5": np.array(["", "", "", "", "", "-"]), + } + expected_trimD = { + "1": np.array(["", "", "", "", "", ""]), + "2": np.array(["", "", "", "", "", ""]), + "3": np.array(["", "", "", "", "", ""]), + "4": np.array(["", "", "", "", "", ""]), + "5": np.array(["", "", "", "", "", ""]), + } + + assert expected_keepD.keys() == keepD.keys() + assert all( + np.array_equal(expected_keepD[key], keepD[key]) for key in expected_keepD + ) + assert expected_trimD.keys() == trimD.keys() + assert all( + np.array_equal(expected_trimD[key], trimD[key]) for key in expected_trimD + ) + + def test_kpic_mode(self): + ## setup + gappyness = 0.2 + parsimony_informative = False + constant_site = True + keepD = {} + trimD = {} + i = 0 + gaps = 0.9 + alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") + use_log = False + + for entry in alignment: + keepD[entry.description] = np.empty([6], dtype=str) + trimD = {} + for entry in alignment: + trimD[entry.description] = np.empty([6], dtype=str) + + ## execution + keepD, trimD = trim( + gappyness, + parsimony_informative, + constant_site, + keepD, + trimD, + i, + gaps, + alignment, + TrimmingMode.kpic, + use_log, + ) + + ## check results + expected_keepD = { + "1": np.array(["A", "", "", "", "", ""]), + "2": np.array(["A", "", "", "", "", ""]), + "3": np.array(["A", "", "", "", "", ""]), + "4": np.array(["A", "", "", "", "", ""]), + "5": np.array(["A", "", "", "", "", ""]), + } + expected_trimD = { + "1": np.array(["", "", "", "", "", ""]), + "2": np.array(["", "", "", "", "", ""]), + "3": np.array(["", "", "", "", "", ""]), + "4": np.array(["", "", "", "", "", ""]), + "5": np.array(["", "", "", "", "", ""]), + } + + assert expected_keepD.keys() == keepD.keys() + assert all( + np.array_equal(expected_keepD[key], keepD[key]) for key in expected_keepD + ) + assert expected_trimD.keys() == trimD.keys() + assert all( + np.array_equal(expected_trimD[key], trimD[key]) for key in expected_trimD + ) + + def test_kpic_gappy_mode(self): + ## setup + gappyness = 0.2 + parsimony_informative = False + constant_site = False + keepD = {} + trimD = {} + i = 3 + gaps = 0.9 + alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") + use_log = False + + for entry in alignment: + keepD[entry.description] = np.empty([6], dtype=str) + trimD = {} + for entry in alignment: + trimD[entry.description] = np.empty([6], dtype=str) + + ## execution + keepD, trimD = trim( + gappyness, + parsimony_informative, + constant_site, + keepD, + trimD, + i, + gaps, + alignment, + TrimmingMode.kpic_gappy, + use_log, + ) + + ## check results + expected_keepD = { + "1": np.array(["", "", "", "", "", ""]), + "2": np.array(["", "", "", "", "", ""]), + "3": np.array(["", "", "", "", "", ""]), + "4": np.array(["", "", "", "", "", ""]), + "5": np.array(["", "", "", "", "", ""]), + } + expected_trimD = { + "1": np.array(["", "", "", "T", "", ""]), + "2": np.array(["", "", "", "-", "", ""]), + "3": np.array(["", "", "", "-", "", ""]), + "4": np.array(["", "", "", "-", "", ""]), + "5": np.array(["", "", "", "-", "", ""]), + } + + assert expected_keepD.keys() == keepD.keys() + assert all( + np.array_equal(expected_keepD[key], keepD[key]) for key in expected_keepD + ) + assert expected_trimD.keys() == trimD.keys() + assert all( + np.array_equal(expected_trimD[key], trimD[key]) for key in expected_trimD + )