Mercurial > repos > padge > clipkit
diff clipkit_repo/tests/unit/test_smart_gap_helper.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_smart_gap_helper.py Fri Mar 25 13:04:31 2022 +0000 @@ -0,0 +1,158 @@ +import pytest +import pytest_mock +from pathlib import Path + + +import numpy as np +from Bio import AlignIO +from Bio import SeqIO +from Bio.Seq import Seq +from Bio.SeqRecord import SeqRecord +from Bio.Align import MultipleSeqAlignment + +from clipkit.smart_gap_helper import ( + smart_gap_threshold_determination, + greatest_diff_in_slopes, + gap_to_gap_slope, + get_gaps_distribution, + count_and_sort_gaps +) +from clipkit.files import FileFormat + +here = Path(__file__) + +class TestSmartGapsHelper(object): + def test_smart_gap_threshold_simple_case(self): + ## set up + alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") + expected_gaps = 0.8 + + ## execution + gaps = smart_gap_threshold_determination(alignment) + + ## check results + assert expected_gaps == gaps + + def test_smart_gap_threshold_standard_case(self): + ## set up + alignment = AlignIO.read(f"{here.parent}/examples/EOG091N44M8_aa.fa", "fasta") + + ## execution + gaps = smart_gap_threshold_determination(alignment) + expected_gaps = 0.8803 + + ## check results + assert expected_gaps == gaps + + def test_greatest_diff_in_slopes_simple_case(self): + ## set up + slopes = [0.833333333333333] + gaps_arr = [[0.8, 1.0], [0.6, 1.0], [0.2, 1.0], [0.0, 3.0]] + expected_return = 0.8 + + ## execution + greatest_diff = greatest_diff_in_slopes(slopes, gaps_arr) + + ## check results + assert greatest_diff == expected_return + + def test_greatest_diff_in_slopes_standard_case(self): + ## set up + slopes = [ + 0.453329706695677, + 0.1903630604288502, + 2.153316106804466, + 0.11466574934067258, + 2.4933133868262236, + 0.6879944960440355, + 0.037924469626292194, + 2.1786492374727793, + 2.4933133868262236, + 4.12796697626421, + 1.6999864001087854, + 1.0319917440660464, + 0.7933269867174482, + 0.11399518940300717, + 0.8026602453847114 + ] + gaps_arr = [ + [0.9915, 136.0], + [0.9829, 4.0], + [0.9573, 5.0], + [0.9487, 19.0], + [0.9402, 1.0], + [0.9316, 22.0], + [0.9231, 6.0], + [0.8974, 1.0], + [0.8889, 19.0], + [0.8803, 22.0], + [0.8718, 36.0], + [0.8632, 15.0], + [0.8462, 18.0], + [0.8376, 7.0], + [0.8205, 2.0], + [0.812, 7.0], + [0.8034, 19.0], + [0.7949, 1.0], + [0.7692, 288.0], + [0.7607, 279.0], + [0.7521, 6.0], + [0.6667, 5.0], + [0.1197, 1.0], + [0.1026, 2.0], + [0.0855, 1.0], + [0.0769, 1.0], + [0.0598, 2.0], + [0.0342, 1.0], + [0.0256, 3.0], + [0.0171, 1.0], + [0.0085, 1.0], + [0.0, 95.0] + ] + expected_return = 0.8803 + + ## execution + greatest_diff = greatest_diff_in_slopes(slopes, gaps_arr) + + ## check results + assert greatest_diff == expected_return + + def test_gap_to_gap_slope_simple_case(self): + ## set up + gaps_arr = [[0.8, 1.0], [0.6, 1.0], [0.2, 1.0], [0.0, 3.0]] + alignment_length = 6 + + ## execution + slopes = gap_to_gap_slope(gaps_arr, alignment_length) + expected_slopes = [0.833333333333333] + + ## check results + assert expected_slopes == slopes + + def test_get_gaps_distribution(self): + ## set up + alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") + alignment_length = 6 + + ## execution + gaps_arr = get_gaps_distribution(alignment, alignment_length) + expected_gaps_arr = [0.0, 0.6, 0.0, 0.8, 0.0, 0.2] + + ## check results + assert expected_gaps_arr == gaps_arr + + def test_count_and_sort_gaps(self): + ## set up + gaps_dist = [0.0, 0.6, 0.0, 0.8, 0.0, 0.2] + + ## execution + gaps_arr = count_and_sort_gaps(gaps_dist) + expected_gaps_arr = [[0.8, 1.0], [0.6, 1.0], [0.2, 1.0], [0.0, 3.0]] + + ## check results + assert expected_gaps_arr == gaps_arr + + + + +