def test_run_pre_post_optimizations(self): "Tests execution of run. Other tests should check correctness." t = np.arange(0, 1, 0.01) S = np.random.random(t.size) oscN, nH = 2, 1 paramN = 3 + nH * (oscN - 1) opt_maxiter = 10 options = { "niter": 10, "nwalkers": 20, "PREOPTIMIZE": True, "POSTOPTIMIZE": True, "opt_maxiter": opt_maxiter } kursl = KurslMethod(nH=nH, max_osc=oscN, **options) self.assertTrue(kursl.PREOPTIMIZE, "With preoptmize") self.assertTrue(kursl.POSTOPTIMIZE, "With postoptmize") self.assertEqual(kursl.opt_maxiter, opt_maxiter) theta = kursl.run(t, S) self.assertEqual(theta.shape, (oscN, paramN)) self.assertTrue(kursl.oscN, oscN) self.assertTrue(kursl.nH, nH) self.assertTrue( np.all(theta == kursl.theta_init), "After computing make sure it is assigned.\n" "Received\n{}\nGot\n{}".format(theta, kursl.theta_init))
def test_run_custom_theta(self): t = np.arange(0, 1, 0.01) S = np.random.random(t.size) oscN, nH = 2, 2 theta_init = np.random.random((oscN, 3 + nH * (oscN - 1))) theta_init = np.array([ [10, 0, 2, 0, 0], [20, 0, 5, 0, 1], ]) options = {"niter": 10, "nwalkers": 20} kursl = KurslMethod(nH=nH, **options) theta = kursl.run(t, S, theta_init=theta_init) self.assertEqual(theta.shape, theta_init.shape, "Shape shouldn't change") self.assertEqual(kursl.nH, nH) self.assertEqual(kursl.oscN, theta_init.shape[0]) self.assertEqual(kursl.paramN, theta_init.shape[1])
#!/usr/bin/python # encoding: UTF-8 import logging import numpy as np import pylab as plt import sys from kursl import KurslMethod # Import signal S = np.loadtxt("examples/epilepsy_signal.txt") fs = 173.61 # Hz t = np.linspace(0, S.size / fs, S.size) # Set verbose logging logger = logging.getLogger(__file__) logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) # Define KurslMethod kursl = KurslMethod(nH=2, max_osc=4, nwalkers=60, niter=100, energy_ratio=0.4) theta = kursl.run(t, S) _, _, s_rec = kursl.model(t, theta) signal = np.sum(s_rec, axis=0) plt.plot(t, S) plt.plot(t[:-1], signal) plt.show()