|
1 | 1 | import os
|
2 |
| -import pdb |
3 | 2 | import shutil
|
4 | 3 | import unittest
|
5 | 4 |
|
6 | 5 | import numpy as np
|
| 6 | + |
7 | 7 | import wfdb
|
8 | 8 |
|
9 | 9 |
|
@@ -339,110 +339,6 @@ def test_2e(self):
|
339 | 339 | sig_target = sig_target.reshape([977, 1])
|
340 | 340 | assert np.array_equal(sig, sig_target)
|
341 | 341 |
|
342 |
| - def test_2f(self): |
343 |
| - """ |
344 |
| - EDF format conversion to MIT for uniform sample rates. |
345 |
| -
|
346 |
| - """ |
347 |
| - # Uniform sample rates |
348 |
| - record_MIT = wfdb.rdrecord("sample-data/n16").__dict__ |
349 |
| - record_EDF = wfdb.edf2mit("sample-data/n16.edf").__dict__ |
350 |
| - |
351 |
| - fields = list(record_MIT.keys()) |
352 |
| - # Original MIT format method of checksum is outdated, sometimes |
353 |
| - # the same value though |
354 |
| - fields.remove("checksum") |
355 |
| - # Original MIT format units are less comprehensive since they |
356 |
| - # default to mV if unknown.. therefore added more default labels |
357 |
| - fields.remove("units") |
358 |
| - |
359 |
| - test_results = [] |
360 |
| - for field in fields: |
361 |
| - # Signal value will be slightly off due to C to Python type conversion |
362 |
| - if field == "p_signal": |
363 |
| - true_array = np.array(record_MIT[field]).flatten() |
364 |
| - pred_array = np.array(record_EDF[field]).flatten() |
365 |
| - # Prevent divide by zero warning |
366 |
| - for i, v in enumerate(true_array): |
367 |
| - if v == 0: |
368 |
| - true_array[i] = 1 |
369 |
| - pred_array[i] = 1 |
370 |
| - sig_diff = np.abs((pred_array - true_array) / true_array) |
371 |
| - sig_diff[sig_diff == -np.inf] = 0 |
372 |
| - sig_diff[sig_diff == np.inf] = 0 |
373 |
| - sig_diff = np.nanmean(sig_diff, 0) |
374 |
| - # 5% tolerance |
375 |
| - if np.max(sig_diff) <= 5: |
376 |
| - test_results.append(True) |
377 |
| - else: |
378 |
| - test_results.append(False) |
379 |
| - elif field == "init_value": |
380 |
| - signal_diff = [ |
381 |
| - abs(record_MIT[field][i] - record_EDF[field][i]) |
382 |
| - for i in range(len(record_MIT[field])) |
383 |
| - ] |
384 |
| - if abs(max(min(signal_diff), max(signal_diff), key=abs)) <= 2: |
385 |
| - test_results.append(True) |
386 |
| - else: |
387 |
| - test_results.append(False) |
388 |
| - else: |
389 |
| - test_results.append(record_MIT[field] == record_MIT[field]) |
390 |
| - |
391 |
| - target_results = len(fields) * [True] |
392 |
| - assert np.array_equal(test_results, target_results) |
393 |
| - |
394 |
| - def test_2g(self): |
395 |
| - """ |
396 |
| - EDF format conversion to MIT for non-uniform sample rates. |
397 |
| -
|
398 |
| - """ |
399 |
| - # Non-uniform sample rates |
400 |
| - record_MIT = wfdb.rdrecord("sample-data/wave_4").__dict__ |
401 |
| - record_EDF = wfdb.edf2mit("sample-data/wave_4.edf").__dict__ |
402 |
| - |
403 |
| - fields = list(record_MIT.keys()) |
404 |
| - # Original MIT format method of checksum is outdated, sometimes |
405 |
| - # the same value though |
406 |
| - fields.remove("checksum") |
407 |
| - # Original MIT format units are less comprehensive since they |
408 |
| - # default to mV if unknown.. therefore added more default labels |
409 |
| - fields.remove("units") |
410 |
| - |
411 |
| - test_results = [] |
412 |
| - for field in fields: |
413 |
| - # Signal value will be slightly off due to C to Python type conversion |
414 |
| - if field == "p_signal": |
415 |
| - true_array = np.array(record_MIT[field]).flatten() |
416 |
| - pred_array = np.array(record_EDF[field]).flatten() |
417 |
| - # Prevent divide by zero warning |
418 |
| - for i, v in enumerate(true_array): |
419 |
| - if v == 0: |
420 |
| - true_array[i] = 1 |
421 |
| - pred_array[i] = 1 |
422 |
| - sig_diff = np.abs((pred_array - true_array) / true_array) |
423 |
| - sig_diff[sig_diff == -np.inf] = 0 |
424 |
| - sig_diff[sig_diff == np.inf] = 0 |
425 |
| - sig_diff = np.nanmean(sig_diff, 0) |
426 |
| - # 5% tolerance |
427 |
| - if np.max(sig_diff) <= 5: |
428 |
| - test_results.append(True) |
429 |
| - else: |
430 |
| - test_results.append(False) |
431 |
| - elif field == "init_value": |
432 |
| - signal_diff = [ |
433 |
| - abs(record_MIT[field][i] - record_EDF[field][i]) |
434 |
| - for i in range(len(record_MIT[field])) |
435 |
| - ] |
436 |
| - if abs(max(min(signal_diff), max(signal_diff), key=abs)) <= 2: |
437 |
| - test_results.append(True) |
438 |
| - else: |
439 |
| - test_results.append(False) |
440 |
| - else: |
441 |
| - test_results.append(record_MIT[field] == record_MIT[field]) |
442 |
| - |
443 |
| - target_results = len(fields) * [True] |
444 |
| - assert np.array_equal(test_results, target_results) |
445 |
| - |
446 | 342 | # --------------------- 3. Multi-dat records --------------------- #
|
447 | 343 |
|
448 | 344 | def test_3a(self):
|
|
0 commit comments