Coverage for emd/tests/test_imftools.py: 100%

21 statements  

« prev     ^ index     » next       coverage.py v7.6.10, created at 2025-01-09 10:07 +0000

1"""Tests for imftools.""" 

2 

3import unittest 

4 

5import numpy as np 

6import pandas as pd 

7 

8 

9class TestAssessHarmonicCriteria(unittest.TestCase): 

10 """Ensure that all sift variants actually run with default options.""" 

11 

12 @classmethod 

13 def setUpClass(cls): 

14 """Create some signals for testing.""" 

15 cls.sample_rate = 512 

16 cls.seconds = 10 

17 cls.time = np.linspace(0, cls.seconds, cls.seconds*cls.sample_rate) 

18 

19 cls.x = np.sin(2*np.pi*5*cls.time) 

20 cls.y = np.sin(2*np.pi*10*cls.time) 

21 cls.z = np.sin(2*np.pi*15*cls.time) 

22 

23 cls.imfs = np.vstack((cls.x, cls.y, cls.z)).T 

24 

25 from ..spectra import frequency_transform 

26 cls.IP, cls.IF, cls.IA = frequency_transform(cls.imfs, cls.sample_rate, 'hilbert') 

27 

28 def test_input_length(self): 

29 """Smoke test to make sure that it runs without error.""" 

30 from ..imftools import assess_harmonic_criteria 

31 

32 # Equal segment lengths 

33 df = assess_harmonic_criteria(self.IP, self.IF, self.IA, num_segments=10) 

34 assert(isinstance(df, pd.DataFrame)) 

35 

36 # Unequal segment lengths 

37 df = assess_harmonic_criteria(self.IP, self.IF, self.IA, num_segments=7) 

38 assert(isinstance(df, pd.DataFrame))