|
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