Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • empyre/empyre
  • weber/empyre
  • wessels/empyre
  • bryan/empyre
4 results
Show changes
Showing
with 0 additions and 527 deletions
File deleted
# -*- coding: utf-8 -*-
"""Testcase for the dataset module"""
import os
import unittest
import numpy as np
from numpy.testing import assert_allclose
from pyramid.dataset import DataSet, DataSetCharge
from pyramid.fielddata import VectorData, ScalarData
from pyramid.phasemap import PhaseMap
from pyramid.projector import SimpleProjector
class TestCaseDataSet(unittest.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_dataset')
self.a = 10.
self.dim = (4, 5, 6)
self.mask = np.zeros(self.dim, dtype=bool)
self.mask[1:-1, 1:-1, 1:-1] = True
self.data = DataSet(self.a, self.dim, mask=self.mask)
self.projector = SimpleProjector(self.dim)
self.phasemap = PhaseMap(self.a, np.ones(self.dim[1:3]))
def tearDown(self):
self.path = None
self.a = None
self.dim = None
self.mask = None
self.data = None
self.projector = None
self.phasemap = None
def test_append(self):
self.data.append(self.phasemap, self.projector)
assert self.data.phasemaps[0] == self.phasemap, 'Phase map not correctly assigned!'
assert self.data.projectors[0] == self.projector, 'Projector not correctly assigned!'
def test_create_phasemaps(self):
self.data.append(PhaseMap(self.a, np.zeros(self.projector.dim_uv)), self.projector)
magdata = VectorData(self.a, np.ones((3,) + self.dim))
phasemaps = self.data.create_phasemaps(magdata)
phase_vec = phasemaps[0].phase_vec
phase_vec_ref = np.load(os.path.join(self.path, 'phase_vec_ref.npy'))
assert_allclose(phase_vec, phase_vec_ref, atol=1E-6,
err_msg='Unexpected behaviour in create_phasemaps()!')
def test_set_Se_inv_block_diag(self):
self.data.append(self.phasemap, self.projector)
self.data.append(self.phasemap, self.projector)
cov = np.diag(np.ones(np.prod(self.phasemap.dim_uv)))
self.data.set_Se_inv_block_diag([cov, cov])
assert self.data.Se_inv.shape == (self.data.m, self.data.m), \
'Unexpected behaviour in set_Se_inv_block_diag()!'
assert self.data.Se_inv.diagonal().sum() == self.data.m, \
'Unexpected behaviour in set_Se_inv_block_diag()!'
def test_set_Se_inv_diag_with_conf(self):
self.data.append(self.phasemap, self.projector)
self.data.append(self.phasemap, self.projector)
confidence = self.mask[1, ...]
self.data.set_Se_inv_diag_with_conf([confidence, confidence])
assert self.data.Se_inv.shape == (self.data.m, self.data.m), \
'Unexpected behaviour in set_Se_inv_diag_with_masks()!'
assert self.data.Se_inv.diagonal().sum() == 2 * confidence.sum(), \
'Unexpected behaviour in set_Se_inv_diag_with_masks()!'
def test_set_3d_mask(self):
projector_z = SimpleProjector(self.dim, axis='z')
projector_y = SimpleProjector(self.dim, axis='y')
projector_x = SimpleProjector(self.dim, axis='x')
mask_z = np.zeros(projector_z.dim_uv, dtype=bool)
mask_y = np.zeros(projector_y.dim_uv, dtype=bool)
mask_x = np.zeros(projector_x.dim_uv, dtype=bool)
mask_z[1:-1, 1:-1] = True
mask_y[1:-1, 1:-1] = True
mask_x[1:-1, 1:-1] = True
phasemap_z = PhaseMap(self.a, np.zeros(projector_z.dim_uv), mask_z)
phasemap_y = PhaseMap(self.a, np.zeros(projector_y.dim_uv), mask_y)
phasemap_x = PhaseMap(self.a, np.zeros(projector_x.dim_uv), mask_x)
self.data.append(phasemap_z, projector_z)
self.data.append(phasemap_y, projector_y)
self.data.append(phasemap_x, projector_x)
self.data.set_3d_mask()
mask_ref = np.zeros(self.dim, dtype=bool)
mask_ref[1:-1, 1:-1, 1:-1] = True
np.testing.assert_equal(self.data.mask, mask_ref,
err_msg='Unexpected behaviour in set_3d_mask')
class TestCaseDataSetCharge(unittest.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_dataset')
self.a = 10.
self.dim = (4, 5, 6)
self.electrode_vec = (1E6, 1E6)
self.mask = np.zeros(self.dim, dtype=bool)
self.mask[1:-1, 1:-1, 1:-1] = True
self.data = DataSetCharge(self.a, self.dim, self.electrode_vec, mask=self.mask)
self.projector = SimpleProjector(self.dim)
self.phasemap = PhaseMap(self.a, np.ones(self.dim[1:]))
def tearDown(self):
self.path = None
self.a = None
self.dim = None
self.mask = None
self.data = None
self.projector = None
self.phasemap = None
def test_append(self):
self.data.append(self.phasemap, self.projector)
assert self.data.phasemaps[0] == self.phasemap, 'Phase map not correctly assigned!'
assert self.data.projectors[0] == self.projector, 'Projector not correctly assigned!'
def test_create_phasemaps(self):
self.data.append(PhaseMap(self.a, np.zeros(self.projector.dim_uv)), self.projector)
elecdata = ScalarData(self.a, np.ones(self.dim))
phasemaps = self.data.create_phasemaps(elecdata)
phase_vec = phasemaps[0].phase_vec
phase_vec_ref = np.load(os.path.join(self.path, 'charge_phase_vec_ref.npy'))
assert_allclose(phase_vec, phase_vec_ref, atol=1E-6,
err_msg='Unexpected behaviour in create_phasemaps()!')
def test_set_Se_inv_block_diag(self):
self.data.append(self.phasemap, self.projector)
self.data.append(self.phasemap, self.projector)
cov = np.diag(np.ones(np.prod(self.phasemap.dim_uv)))
self.data.set_Se_inv_block_diag([cov, cov])
assert self.data.Se_inv.shape == (self.data.m, self.data.m), \
'Unexpected behaviour in set_Se_inv_block_diag()!'
assert self.data.Se_inv.diagonal().sum() == self.data.m, \
'Unexpected behaviour in set_Se_inv_block_diag()!'
def test_set_Se_inv_diag_with_conf(self):
self.data.append(self.phasemap, self.projector)
self.data.append(self.phasemap, self.projector)
confidence = self.mask[1, ...]
self.data.set_Se_inv_diag_with_conf([confidence, confidence])
assert self.data.Se_inv.shape == (self.data.m, self.data.m), \
'Unexpected behaviour in set_Se_inv_diag_with_masks()!'
assert self.data.Se_inv.diagonal().sum() == 2 * confidence.sum(), \
'Unexpected behaviour in set_Se_inv_diag_with_masks()!'
def test_set_3d_mask(self):
projector_z = SimpleProjector(self.dim, axis='z')
projector_y = SimpleProjector(self.dim, axis='y')
projector_x = SimpleProjector(self.dim, axis='x')
mask_z = np.zeros(projector_z.dim_uv, dtype=bool)
mask_y = np.zeros(projector_y.dim_uv, dtype=bool)
mask_x = np.zeros(projector_x.dim_uv, dtype=bool)
mask_z[1:-1, 1:-1] = True
mask_y[1:-1, 1:-1] = True
mask_x[1:-1, 1:-1] = True
phasemap_z = PhaseMap(self.a, np.zeros(projector_z.dim_uv), mask_z)
phasemap_y = PhaseMap(self.a, np.zeros(projector_y.dim_uv), mask_y)
phasemap_x = PhaseMap(self.a, np.zeros(projector_x.dim_uv), mask_x)
self.data.append(phasemap_z, projector_z)
self.data.append(phasemap_y, projector_y)
self.data.append(phasemap_x, projector_x)
self.data.set_3d_mask()
mask_ref = np.zeros(self.dim, dtype=bool)
mask_ref[1:-1, 1:-1, 1:-1] = True
np.testing.assert_equal(self.data.mask, mask_ref,
err_msg='Unexpected behaviour in set_3d_mask')
\ No newline at end of file
File deleted
File deleted
# -*- coding: utf-8 -*-
"""Testcase for the magdata module."""
import os
import unittest
import numpy as np
from numpy.testing import assert_allclose
from pyramid.fielddata import VectorData
from pyramid import load_vectordata
class TestCaseVectorData(unittest.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_fielddata')
magnitude = np.zeros((3, 4, 4, 4))
magnitude[:, 1:-1, 1:-1, 1:-1] = 1
self.magdata = VectorData(10.0, magnitude)
def tearDown(self):
self.path = None
self.magdata = None
def test_copy(self):
magdata = self.magdata
magdata_copy = self.magdata.copy()
assert magdata == self.magdata, 'Unexpected behaviour in copy()!'
assert magdata_copy != self.magdata, 'Unexpected behaviour in copy()!'
def test_scale_down(self):
self.magdata.scale_down()
reference = 1 / 8. * np.ones((3, 2, 2, 2))
assert_allclose(self.magdata.field, reference,
err_msg='Unexpected behavior in scale_down()!')
assert_allclose(self.magdata.a, 20,
err_msg='Unexpected behavior in scale_down()!')
def test_scale_up(self):
self.magdata.scale_up()
reference = np.zeros((3, 8, 8, 8))
reference[:, 2:6, 2:6, 2:6] = 1
assert_allclose(self.magdata.field, reference,
err_msg='Unexpected behavior in scale_down()!')
assert_allclose(self.magdata.a, 5,
err_msg='Unexpected behavior in scale_down()!')
def test_pad(self):
reference = self.magdata.field.copy()
self.magdata.pad((1, 1, 1))
reference = np.pad(reference, ((0, 0), (1, 1), (1, 1), (1, 1)), mode='constant')
assert_allclose(self.magdata.field, reference,
err_msg='Unexpected behavior in scale_down()!')
self.magdata.pad(((1, 1), (1, 1), (1, 1)))
reference = np.pad(reference, ((0, 0), (1, 1), (1, 1), (1, 1)), mode='constant')
assert_allclose(self.magdata.field, reference,
err_msg='Unexpected behavior in scale_down()!')
def test_get_mask(self):
mask = self.magdata.get_mask()
reference = np.zeros((4, 4, 4))
reference[1:-1, 1:-1, 1:-1] = True
assert_allclose(mask, reference,
err_msg='Unexpected behavior in get_mask()!')
def test_get_vector(self):
mask = self.magdata.get_mask()
vector = self.magdata.get_vector(mask)
reference = np.ones(np.sum(mask) * 3)
assert_allclose(vector, reference,
err_msg='Unexpected behavior in get_vector()!')
def test_set_vector(self):
mask = self.magdata.get_mask()
vector = 2 * np.ones(np.sum(mask) * 3)
self.magdata.set_vector(vector, mask)
reference = np.zeros((3, 4, 4, 4))
reference[:, 1:-1, 1:-1, 1:-1] = 2
assert_allclose(self.magdata.field, reference,
err_msg='Unexpected behavior in set_vector()!')
def test_flip(self):
magdata = load_vectordata(os.path.join(self.path, 'magdata_orig.hdf5'))
magdata_flipx = load_vectordata(os.path.join(self.path, 'magdata_flipx.hdf5'))
magdata_flipy = load_vectordata(os.path.join(self.path, 'magdata_flipy.hdf5'))
magdata_flipz = load_vectordata(os.path.join(self.path, 'magdata_flipz.hdf5'))
assert_allclose(magdata.flip('x').field, magdata_flipx.field,
err_msg='Unexpected behavior in flip()! (x)')
assert_allclose(magdata.flip('y').field, magdata_flipy.field,
err_msg='Unexpected behavior in flip()! (y)')
assert_allclose(magdata.flip('z').field, magdata_flipz.field,
err_msg='Unexpected behavior in flip()! (z)')
def test_rot(self):
magdata = load_vectordata(os.path.join(self.path, 'magdata_orig.hdf5'))
magdata_rotx = load_vectordata(os.path.join(self.path, 'magdata_rotx.hdf5'))
magdata_roty = load_vectordata(os.path.join(self.path, 'magdata_roty.hdf5'))
magdata_rotz = load_vectordata(os.path.join(self.path, 'magdata_rotz.hdf5'))
assert_allclose(magdata.rot90('x').field, magdata_rotx.field,
err_msg='Unexpected behavior in rot()! (x)')
assert_allclose(magdata.rot90('y').field, magdata_roty.field,
err_msg='Unexpected behavior in rot()! (y)')
assert_allclose(magdata.rot90('z').field, magdata_rotz.field,
err_msg='Unexpected behavior in rot()! (z)')
def test_load_from_llg(self):
magdata = load_vectordata(os.path.join(self.path, 'magdata_ref_load.txt'))
assert_allclose(magdata.field, self.magdata.field,
err_msg='Unexpected behavior in load_from_llg()!')
assert_allclose(magdata.a, self.magdata.a,
err_msg='Unexpected behavior in load_from_llg()!')
def test_load_from_hdf5(self):
magdata = load_vectordata(os.path.join(self.path, 'magdata_ref_load.hdf5'))
assert_allclose(magdata.field, self.magdata.field,
err_msg='Unexpected behavior in load_from_hdf5()!')
assert_allclose(magdata.a, self.magdata.a,
err_msg='Unexpected behavior in load_from_hdf5()!')
File deleted
File deleted
File deleted
File deleted
File deleted
LLGFileCreator: test_magdata/ref_mag_data
4 4 4
5.000000e-07 5.000000e-07 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 5.000000e-07 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 5.000000e-07 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 5.000000e-07 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 1.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 1.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 1.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 1.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 2.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 2.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 2.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 2.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 3.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 3.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 3.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 3.500000e-06 5.000000e-07 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 5.000000e-07 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 5.000000e-07 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 5.000000e-07 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 5.000000e-07 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 1.500000e-06 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 1.500000e-06 1.500000e-06 1.000000e+00 1.000000e+00 1.000000e+00
2.500000e-06 1.500000e-06 1.500000e-06 1.000000e+00 1.000000e+00 1.000000e+00
3.500000e-06 1.500000e-06 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 2.500000e-06 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 2.500000e-06 1.500000e-06 1.000000e+00 1.000000e+00 1.000000e+00
2.500000e-06 2.500000e-06 1.500000e-06 1.000000e+00 1.000000e+00 1.000000e+00
3.500000e-06 2.500000e-06 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 3.500000e-06 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 3.500000e-06 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 3.500000e-06 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 3.500000e-06 1.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 5.000000e-07 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 5.000000e-07 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 5.000000e-07 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 5.000000e-07 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 1.500000e-06 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 1.500000e-06 2.500000e-06 1.000000e+00 1.000000e+00 1.000000e+00
2.500000e-06 1.500000e-06 2.500000e-06 1.000000e+00 1.000000e+00 1.000000e+00
3.500000e-06 1.500000e-06 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 2.500000e-06 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 2.500000e-06 2.500000e-06 1.000000e+00 1.000000e+00 1.000000e+00
2.500000e-06 2.500000e-06 2.500000e-06 1.000000e+00 1.000000e+00 1.000000e+00
3.500000e-06 2.500000e-06 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 3.500000e-06 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 3.500000e-06 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 3.500000e-06 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 3.500000e-06 2.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 5.000000e-07 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 5.000000e-07 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 5.000000e-07 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 5.000000e-07 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 1.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 1.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 1.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 1.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 2.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 2.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 2.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 2.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
5.000000e-07 3.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
1.500000e-06 3.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
2.500000e-06 3.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
3.500000e-06 3.500000e-06 3.500000e-06 0.000000e+00 0.000000e+00 0.000000e+00
\ No newline at end of file
File deleted
File deleted
File deleted
# -*- coding: utf-8 -*-
"""Testcase for the forwardmodel module"""
import os
import unittest
import numpy as np
from numpy.testing import assert_allclose
from pyramid.dataset import DataSet, DataSetCharge
from pyramid.forwardmodel import ForwardModel, ForwardModelCharge
from pyramid.projector import SimpleProjector
from pyramid import load_phasemap
class TestCaseForwardModel(unittest.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_forwardmodel')
self.a = 10.
self.dim = (4, 5, 6)
self.mask = np.zeros(self.dim, dtype=bool)
self.mask[1:-1, 1:-1, 1:-1] = True
self.data = DataSet(self.a, self.dim, mask=self.mask)
self.projector = SimpleProjector(self.dim)
self.phasemap = load_phasemap(os.path.join(self.path, 'phasemap_ref.hdf5'))
self.data.append(self.phasemap, self.projector)
self.data.append(self.phasemap, self.projector)
self.fwd_model = ForwardModel(self.data)
def tearDown(self):
self.path = None
self.a = None
self.dim = None
self.mask = None
self.data = None
self.projector = None
self.phasemap = None
self.fwdmodel = None
def test_call(self):
n = self.fwd_model.n
result = self.fwd_model(np.ones(n))
hp = self.data.hook_points
assert_allclose(result[hp[0]:hp[1]], self.phasemap.phase.ravel(), atol=1E-7,
err_msg='Unexpected behavior in __call__()!')
assert_allclose(result[hp[1]:hp[2]], self.phasemap.phase.ravel(), atol=1E-7,
err_msg='Unexpected behavior in __call__()!')
def test_jac_dot(self):
n = self.fwd_model.n
vector = np.ones(n)
result = self.fwd_model(vector)
result_jac = self.fwd_model.jac_dot(None, vector)
assert_allclose(result, result_jac, atol=1E-7,
err_msg='Inconsistency between __call__() and jac_dot()!')
jac = np.array([self.fwd_model.jac_dot(None, np.eye(n)[:, i]) for i in range(n)]).T
hp = self.data.hook_points
assert_allclose(jac[hp[0]:hp[1], :], jac[hp[1]:hp[2], :], atol=1E-7,
err_msg='Unexpected behaviour in the jacobi matrix!')
jac_ref = np.load(os.path.join(self.path, 'jac.npy'))
assert_allclose(jac, jac_ref, atol=1E-7,
err_msg='Unexpected behaviour in the the jacobi matrix!')
def test_jac_T_dot(self):
m = self.fwd_model.m
jac_T = np.array([self.fwd_model.jac_T_dot(None, np.eye(m)[:, i]) for i in range(m)]).T
jac_T_ref = np.load(os.path.join(self.path, 'jac.npy')).T
assert_allclose(jac_T, jac_T_ref, atol=1E-7,
err_msg='Unexpected behaviour in the the transposed jacobi matrix!')
class TestCaseForwardModelCharge(unittest.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_forwardmodel')
self.a = 10.
self.dim = (4, 5, 6)
self.electrode_vec =(1E6, 1E6)
self.mask = np.zeros(self.dim, dtype=bool)
self.mask[1:-1, 1:-1, 1:-1] = True
self.data = DataSetCharge(self.a, self.dim, self.electrode_vec, mask=self.mask)
self.projector = SimpleProjector(self.dim)
self.phasemap = load_phasemap(os.path.join(self.path, 'charge_phase_ref.hdf5'))
self.data.append(self.phasemap, self.projector)
self.data.append(self.phasemap, self.projector)
self.fwd_model = ForwardModelCharge(self.data)
def tearDown(self):
self.path = None
self.a = None
self.dim = None
self.mask = None
self.data = None
self.projector = None
self.phasemap = None
self.fwd_model = None
def test_call(self):
n = self.fwd_model.n
result = self.fwd_model(np.ones(n))
hp = self.data.hook_points
assert_allclose(result[hp[0]:hp[1]], self.phasemap.phase.ravel(), atol=1E-6,
err_msg='Unexpected behavior in __call__()!')
assert_allclose(result[hp[1]:hp[2]], self.phasemap.phase.ravel(), atol=1E-6,
err_msg='Unexpected behavior in __call__()!')
def test_jac_dot(self):
n = self.fwd_model.n
vector = np.ones(n)
result = self.fwd_model(vector)
result_jac = self.fwd_model.jac_dot(None, vector)
assert_allclose(result, result_jac, atol=1E-7,
err_msg='Inconsistency between __call__() and jac_dot()!')
jac = np.array([self.fwd_model.jac_dot(None, np.eye(n)[:, i]) for i in range(n)]).T
hp = self.data.hook_points
assert_allclose(jac[hp[0]:hp[1], :], jac[hp[1]:hp[2], :], atol=1E-7,
err_msg='Unexpected behaviour in the the jacobi matrix!')
jac_ref = np.load(os.path.join(self.path, 'jac_charge.npy'))
assert_allclose(jac, jac_ref, atol=1E-7,
err_msg='Unexpected behaviour in the the jacobi matrix!')
def test_jac_T_dot(self):
m = self.fwd_model.m
jac_T = np.array([self.fwd_model.jac_T_dot(None, np.eye(m)[:, i]) for i in range(m)]).T
jac_T_ref = np.load(os.path.join(self.path, 'jac_charge.npy')).T
assert_allclose(jac_T, jac_T_ref, atol=1E-7,
err_msg='Unexpected behaviour in the the transposed jacobi matrix!')
\ No newline at end of file
File deleted
File deleted
File deleted
File deleted
# -*- coding: utf-8 -*-
"""Testcase for the magdata module."""
import os
import unittest
import numpy as np
from numpy.testing import assert_allclose
from pyramid.kernel import Kernel, KernelCharge
class TestCaseKernel(unittest.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_kernel')
self.kernel = Kernel(1., dim_uv=(4, 4), b_0=1., geometry='disc')
def tearDown(self):
self.path = None
self.kernel = None
def test_kernel(self):
ref_u = np.load(os.path.join(self.path, 'ref_u.npy'))
ref_v = np.load(os.path.join(self.path, 'ref_v.npy'))
ref_u_fft = np.load(os.path.join(self.path, 'ref_u_fft.npy'))
ref_v_fft = np.load(os.path.join(self.path, 'ref_v_fft.npy'))
assert_allclose(self.kernel.u, ref_u, err_msg='Unexpected behavior in u')
assert_allclose(self.kernel.v, ref_v, err_msg='Unexpected behavior in v')
assert_allclose(self.kernel.u_fft, ref_u_fft, atol=1E-7,
err_msg='Unexpected behavior in u_fft')
assert_allclose(self.kernel.v_fft, ref_v_fft, atol=1E-7,
err_msg='Unexpected behavior in v_fft')
class TestCaseKernelCharge(unittest.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_kernel')
self.kernel = KernelCharge(1., dim_uv=(8, 8), electrode_vec=(3, 3))
def tearDown(self):
self.path = None
self.kernel = None
def test_kernelcharge(self):
ref_kc = np.load(os.path.join(self.path, 'ref_kc.npy'))
ref_kc_fft = np.load(os.path.join(self.path, 'ref_kc_fft.npy'))
assert_allclose(self.kernel.kc, ref_kc, err_msg='Unexpected behavior in kc')
assert_allclose(self.kernel.kc_fft, ref_kc_fft, atol=1E-7,
err_msg='Unexpected behavior in kc_fft')