Mercurial > repos > padge > clipkit
comparison 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 | 
   comparison
  equal
  deleted
  inserted
  replaced
| -1:000000000000 | 0:49b058e85902 | 
|---|---|
| 1 import pytest | |
| 2 from pathlib import Path | |
| 3 | |
| 4 import numpy as np | |
| 5 from Bio import AlignIO | |
| 6 from clipkit.modes import TrimmingMode, trim, shouldKeep | |
| 7 | |
| 8 here = Path(__file__) | |
| 9 | |
| 10 | |
| 11 class TestModes(object): | |
| 12 def test_shouldKeep_kpi_gappy_keep(self): | |
| 13 ## setup | |
| 14 mode = TrimmingMode.kpi_gappy | |
| 15 gappyness = 0.00 | |
| 16 gaps = 0.9 | |
| 17 parsimony_informative = True | |
| 18 constant_site = False | |
| 19 | |
| 20 assert True == shouldKeep( | |
| 21 mode, parsimony_informative, constant_site, gappyness, gaps | |
| 22 ) | |
| 23 | |
| 24 def test_shouldKeep_kpi_gappy_trim(self): | |
| 25 ## setup | |
| 26 mode = TrimmingMode.kpi_gappy | |
| 27 gappyness = 0.00 | |
| 28 gaps = 0.9 | |
| 29 parsimony_informative = False | |
| 30 constant_site = False | |
| 31 | |
| 32 assert False == shouldKeep( | |
| 33 mode, parsimony_informative, constant_site, gappyness, gaps | |
| 34 ) | |
| 35 | |
| 36 def test_shouldKeep_gappy_keep(self): | |
| 37 ## setup | |
| 38 mode = TrimmingMode.gappy | |
| 39 gappyness = 0.00 | |
| 40 gaps = 0.9 | |
| 41 parsimony_informative = True | |
| 42 constant_site = False | |
| 43 | |
| 44 assert True == shouldKeep( | |
| 45 mode, parsimony_informative, constant_site, gappyness, gaps | |
| 46 ) | |
| 47 | |
| 48 def test_shouldKeep_gappy_trim(self): | |
| 49 ## setup | |
| 50 mode = TrimmingMode.gappy | |
| 51 gappyness = 0.95 | |
| 52 gaps = 0.9 | |
| 53 parsimony_informative = True | |
| 54 constant_site = False | |
| 55 | |
| 56 assert False == shouldKeep( | |
| 57 mode, parsimony_informative, constant_site, gappyness, gaps | |
| 58 ) | |
| 59 | |
| 60 def test_shouldKeep_kpi_keep(self): | |
| 61 ## setup | |
| 62 mode = TrimmingMode.kpi | |
| 63 gappyness = 0.00 | |
| 64 gaps = 0.9 | |
| 65 parsimony_informative = True | |
| 66 constant_site = False | |
| 67 | |
| 68 assert True == shouldKeep( | |
| 69 mode, parsimony_informative, constant_site, gappyness, gaps | |
| 70 ) | |
| 71 | |
| 72 def test_shouldKeep_kpi_trim(self): | |
| 73 ## setup | |
| 74 mode = TrimmingMode.kpi | |
| 75 gappyness = 0.95 | |
| 76 gaps = 0.9 | |
| 77 parsimony_informative = False | |
| 78 constant_site = False | |
| 79 | |
| 80 assert False == shouldKeep( | |
| 81 mode, parsimony_informative, constant_site, gappyness, gaps | |
| 82 ) | |
| 83 | |
| 84 def test_shouldKeep_kpic_keep(self): | |
| 85 ## setup | |
| 86 mode = TrimmingMode.kpic | |
| 87 gappyness = 0.95 | |
| 88 gaps = 0.9 | |
| 89 parsimony_informative = False | |
| 90 constant_site = True | |
| 91 | |
| 92 assert True == shouldKeep( | |
| 93 mode, parsimony_informative, constant_site, gappyness, gaps | |
| 94 ) | |
| 95 | |
| 96 def test_shouldKeep_kpic_trim(self): | |
| 97 ## setup | |
| 98 mode = TrimmingMode.kpic | |
| 99 gappyness = 0.95 | |
| 100 gaps = 0.9 | |
| 101 parsimony_informative = False | |
| 102 constant_site = False | |
| 103 | |
| 104 assert False == shouldKeep( | |
| 105 mode, parsimony_informative, constant_site, gappyness, gaps | |
| 106 ) | |
| 107 | |
| 108 def test_shouldKeep_kpic_gappy_keep(self): | |
| 109 ## setup | |
| 110 mode = TrimmingMode.kpic_gappy | |
| 111 gappyness = 0.70 | |
| 112 gaps = 0.9 | |
| 113 parsimony_informative = False | |
| 114 constant_site = True | |
| 115 | |
| 116 assert True == shouldKeep( | |
| 117 mode, parsimony_informative, constant_site, gappyness, gaps | |
| 118 ) | |
| 119 | |
| 120 def test_shouldKeep_kpic_gappy_trim(self): | |
| 121 ## setup | |
| 122 mode = TrimmingMode.kpic_gappy | |
| 123 gappyness = 0.95 | |
| 124 gaps = 0.9 | |
| 125 parsimony_informative = False | |
| 126 constant_site = True | |
| 127 | |
| 128 assert False == shouldKeep( | |
| 129 mode, parsimony_informative, constant_site, gappyness, gaps | |
| 130 ) | |
| 131 | |
| 132 def test_gappy_mode(self): | |
| 133 ## setup | |
| 134 gappyness = 0.00 | |
| 135 parsimony_informative = True | |
| 136 keepD = {} | |
| 137 trimD = {} | |
| 138 i = 2 | |
| 139 gaps = 0.9 | |
| 140 alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") | |
| 141 use_log = False | |
| 142 constant_site = False | |
| 143 | |
| 144 for entry in alignment: | |
| 145 keepD[entry.description] = np.empty([6], dtype=str) | |
| 146 trimD = {} | |
| 147 for entry in alignment: | |
| 148 trimD[entry.description] = np.empty([6], dtype=str) | |
| 149 | |
| 150 ## execution | |
| 151 keepD, trimD = trim( | |
| 152 gappyness, | |
| 153 parsimony_informative, | |
| 154 constant_site, | |
| 155 keepD, | |
| 156 trimD, | |
| 157 i, | |
| 158 gaps, | |
| 159 alignment, | |
| 160 TrimmingMode.gappy, | |
| 161 use_log, | |
| 162 ) | |
| 163 | |
| 164 ## check results | |
| 165 expected_keepD = { | |
| 166 "1": np.array(["", "", "G", "", "", ""]), | |
| 167 "2": np.array(["", "", "G", "", "", ""]), | |
| 168 "3": np.array(["", "", "G", "", "", ""]), | |
| 169 "4": np.array(["", "", "A", "", "", ""]), | |
| 170 "5": np.array(["", "", "a", "", "", ""]), | |
| 171 } | |
| 172 expected_trimD = { | |
| 173 "1": np.array(["", "", "", "", "", ""]), | |
| 174 "2": np.array(["", "", "", "", "", ""]), | |
| 175 "3": np.array(["", "", "", "", "", ""]), | |
| 176 "4": np.array(["", "", "", "", "", ""]), | |
| 177 "5": np.array(["", "", "", "", "", ""]), | |
| 178 } | |
| 179 | |
| 180 assert expected_keepD.keys() == keepD.keys() | |
| 181 assert all( | |
| 182 np.array_equal(expected_keepD[key], keepD[key]) for key in expected_keepD | |
| 183 ) | |
| 184 assert expected_trimD.keys() == trimD.keys() | |
| 185 assert all( | |
| 186 np.array_equal(expected_trimD[key], trimD[key]) for key in expected_trimD | |
| 187 ) | |
| 188 | |
| 189 def test_kpi_gappy_mode(self): | |
| 190 ## setup | |
| 191 gappyness = 0.6 | |
| 192 parsimony_informative = False | |
| 193 constant_site = True | |
| 194 keepD = {} | |
| 195 trimD = {} | |
| 196 i = 1 | |
| 197 gaps = 0.9 | |
| 198 alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") | |
| 199 use_log = False | |
| 200 | |
| 201 for entry in alignment: | |
| 202 keepD[entry.description] = np.empty([6], dtype=str) | |
| 203 trimD = {} | |
| 204 for entry in alignment: | |
| 205 trimD[entry.description] = np.empty([6], dtype=str) | |
| 206 | |
| 207 ## execution | |
| 208 keepD, trimD = trim( | |
| 209 gappyness, | |
| 210 parsimony_informative, | |
| 211 constant_site, | |
| 212 keepD, | |
| 213 trimD, | |
| 214 i, | |
| 215 gaps, | |
| 216 alignment, | |
| 217 TrimmingMode.kpi_gappy, | |
| 218 use_log, | |
| 219 ) | |
| 220 | |
| 221 ## check results | |
| 222 expected_keepD = { | |
| 223 "1": np.array(["", "", "", "", "", ""]), | |
| 224 "2": np.array(["", "", "", "", "", ""]), | |
| 225 "3": np.array(["", "", "", "", "", ""]), | |
| 226 "4": np.array(["", "", "", "", "", ""]), | |
| 227 "5": np.array(["", "", "", "", "", ""]), | |
| 228 } | |
| 229 expected_trimD = { | |
| 230 "1": np.array(["", "-", "", "", "", ""]), | |
| 231 "2": np.array(["", "-", "", "", "", ""]), | |
| 232 "3": np.array(["", "-", "", "", "", ""]), | |
| 233 "4": np.array(["", "G", "", "", "", ""]), | |
| 234 "5": np.array(["", "C", "", "", "", ""]), | |
| 235 } | |
| 236 | |
| 237 assert expected_keepD.keys() == keepD.keys() | |
| 238 assert all( | |
| 239 np.array_equal(expected_keepD[key], keepD[key]) for key in expected_keepD | |
| 240 ) | |
| 241 assert expected_trimD.keys() == trimD.keys() | |
| 242 assert all( | |
| 243 np.array_equal(expected_trimD[key], trimD[key]) for key in expected_trimD | |
| 244 ) | |
| 245 | |
| 246 def test_kpi_mode(self): | |
| 247 ## setup | |
| 248 gappyness = 0.2 | |
| 249 parsimony_informative = True | |
| 250 constant_site = False | |
| 251 keepD = {} | |
| 252 trimD = {} | |
| 253 i = 5 | |
| 254 gaps = 0.9 | |
| 255 alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") | |
| 256 use_log = False | |
| 257 | |
| 258 for entry in alignment: | |
| 259 keepD[entry.description] = np.empty([6], dtype=str) | |
| 260 trimD = {} | |
| 261 for entry in alignment: | |
| 262 trimD[entry.description] = np.empty([6], dtype=str) | |
| 263 | |
| 264 ## execution | |
| 265 keepD, trimD = trim( | |
| 266 gappyness, | |
| 267 parsimony_informative, | |
| 268 constant_site, | |
| 269 keepD, | |
| 270 trimD, | |
| 271 i, | |
| 272 gaps, | |
| 273 alignment, | |
| 274 TrimmingMode.kpi, | |
| 275 use_log, | |
| 276 ) | |
| 277 | |
| 278 ## check results | |
| 279 expected_keepD = { | |
| 280 "1": np.array(["", "", "", "", "", "T"]), | |
| 281 "2": np.array(["", "", "", "", "", "T"]), | |
| 282 "3": np.array(["", "", "", "", "", "A"]), | |
| 283 "4": np.array(["", "", "", "", "", "A"]), | |
| 284 "5": np.array(["", "", "", "", "", "-"]), | |
| 285 } | |
| 286 expected_trimD = { | |
| 287 "1": np.array(["", "", "", "", "", ""]), | |
| 288 "2": np.array(["", "", "", "", "", ""]), | |
| 289 "3": np.array(["", "", "", "", "", ""]), | |
| 290 "4": np.array(["", "", "", "", "", ""]), | |
| 291 "5": np.array(["", "", "", "", "", ""]), | |
| 292 } | |
| 293 | |
| 294 assert expected_keepD.keys() == keepD.keys() | |
| 295 assert all( | |
| 296 np.array_equal(expected_keepD[key], keepD[key]) for key in expected_keepD | |
| 297 ) | |
| 298 assert expected_trimD.keys() == trimD.keys() | |
| 299 assert all( | |
| 300 np.array_equal(expected_trimD[key], trimD[key]) for key in expected_trimD | |
| 301 ) | |
| 302 | |
| 303 def test_kpic_mode(self): | |
| 304 ## setup | |
| 305 gappyness = 0.2 | |
| 306 parsimony_informative = False | |
| 307 constant_site = True | |
| 308 keepD = {} | |
| 309 trimD = {} | |
| 310 i = 0 | |
| 311 gaps = 0.9 | |
| 312 alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") | |
| 313 use_log = False | |
| 314 | |
| 315 for entry in alignment: | |
| 316 keepD[entry.description] = np.empty([6], dtype=str) | |
| 317 trimD = {} | |
| 318 for entry in alignment: | |
| 319 trimD[entry.description] = np.empty([6], dtype=str) | |
| 320 | |
| 321 ## execution | |
| 322 keepD, trimD = trim( | |
| 323 gappyness, | |
| 324 parsimony_informative, | |
| 325 constant_site, | |
| 326 keepD, | |
| 327 trimD, | |
| 328 i, | |
| 329 gaps, | |
| 330 alignment, | |
| 331 TrimmingMode.kpic, | |
| 332 use_log, | |
| 333 ) | |
| 334 | |
| 335 ## check results | |
| 336 expected_keepD = { | |
| 337 "1": np.array(["A", "", "", "", "", ""]), | |
| 338 "2": np.array(["A", "", "", "", "", ""]), | |
| 339 "3": np.array(["A", "", "", "", "", ""]), | |
| 340 "4": np.array(["A", "", "", "", "", ""]), | |
| 341 "5": np.array(["A", "", "", "", "", ""]), | |
| 342 } | |
| 343 expected_trimD = { | |
| 344 "1": np.array(["", "", "", "", "", ""]), | |
| 345 "2": np.array(["", "", "", "", "", ""]), | |
| 346 "3": np.array(["", "", "", "", "", ""]), | |
| 347 "4": np.array(["", "", "", "", "", ""]), | |
| 348 "5": np.array(["", "", "", "", "", ""]), | |
| 349 } | |
| 350 | |
| 351 assert expected_keepD.keys() == keepD.keys() | |
| 352 assert all( | |
| 353 np.array_equal(expected_keepD[key], keepD[key]) for key in expected_keepD | |
| 354 ) | |
| 355 assert expected_trimD.keys() == trimD.keys() | |
| 356 assert all( | |
| 357 np.array_equal(expected_trimD[key], trimD[key]) for key in expected_trimD | |
| 358 ) | |
| 359 | |
| 360 def test_kpic_gappy_mode(self): | |
| 361 ## setup | |
| 362 gappyness = 0.2 | |
| 363 parsimony_informative = False | |
| 364 constant_site = False | |
| 365 keepD = {} | |
| 366 trimD = {} | |
| 367 i = 3 | |
| 368 gaps = 0.9 | |
| 369 alignment = AlignIO.read(f"{here.parent}/examples/simple.fa", "fasta") | |
| 370 use_log = False | |
| 371 | |
| 372 for entry in alignment: | |
| 373 keepD[entry.description] = np.empty([6], dtype=str) | |
| 374 trimD = {} | |
| 375 for entry in alignment: | |
| 376 trimD[entry.description] = np.empty([6], dtype=str) | |
| 377 | |
| 378 ## execution | |
| 379 keepD, trimD = trim( | |
| 380 gappyness, | |
| 381 parsimony_informative, | |
| 382 constant_site, | |
| 383 keepD, | |
| 384 trimD, | |
| 385 i, | |
| 386 gaps, | |
| 387 alignment, | |
| 388 TrimmingMode.kpic_gappy, | |
| 389 use_log, | |
| 390 ) | |
| 391 | |
| 392 ## check results | |
| 393 expected_keepD = { | |
| 394 "1": np.array(["", "", "", "", "", ""]), | |
| 395 "2": np.array(["", "", "", "", "", ""]), | |
| 396 "3": np.array(["", "", "", "", "", ""]), | |
| 397 "4": np.array(["", "", "", "", "", ""]), | |
| 398 "5": np.array(["", "", "", "", "", ""]), | |
| 399 } | |
| 400 expected_trimD = { | |
| 401 "1": np.array(["", "", "", "T", "", ""]), | |
| 402 "2": np.array(["", "", "", "-", "", ""]), | |
| 403 "3": np.array(["", "", "", "-", "", ""]), | |
| 404 "4": np.array(["", "", "", "-", "", ""]), | |
| 405 "5": np.array(["", "", "", "-", "", ""]), | |
| 406 } | |
| 407 | |
| 408 assert expected_keepD.keys() == keepD.keys() | |
| 409 assert all( | |
| 410 np.array_equal(expected_keepD[key], keepD[key]) for key in expected_keepD | |
| 411 ) | |
| 412 assert expected_trimD.keys() == trimD.keys() | |
| 413 assert all( | |
| 414 np.array_equal(expected_trimD[key], trimD[key]) for key in expected_trimD | |
| 415 ) | 
