Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
    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])
Exemplo n.º 3
0
#!/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()