Skip to content
Snippets Groups Projects
Commit b56763cc authored by Dieter Weber's avatar Dieter Weber
Browse files

WIP convert Pyramid tests to Empyre


Last working one is test_mask(), the rest is currently TODO

Co-authored-by: Alexander Clausen's avatarAlexander Clausen <a.clausen@fz-juelich.de>
Co-authored-by: default avatarJan Caron <j.caron@fz-juelich.de>
parent f3d44540
No related branches found
No related tags found
No related merge requests found
Pipeline #28093 failed
# -*- coding: utf-8 -*-
"""Testcase for the magdata module."""
import os
import unittest
import pytest
import numpy as np
from numpy.testing import assert_allclose
# from pyramid.fielddata import VectorData
# from pyramid import load_vectordata
from empyre.fields import Field
@pytest.fixture
def fielddata_path():
return os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_fielddata')
@pytest.fixture
def field_data():
magnitude = np.zeros((4, 4, 4, 3))
magnitude[1:-1, 1:-1, 1:-1] = 1
return Field(magnitude, 10.0, vector=True)
def test_copy(field_data):
field_data_copy = field_data.copy()
# Make sure it is a new object
assert field_data_copy != field_data, 'Unexpected behaviour in copy()!'
assert np.allclose(field_data_copy, field_data)
def test_bin(field_data):
binned_data = field_data.bin(2)
reference = 1 / 8. * np.ones((2, 2, 2, 3))
assert_allclose(binned_data, reference,
err_msg='Unexpected behavior in scale_down()!')
assert_allclose(binned_data.scale, (20, 20, 20),
err_msg='Unexpected behavior in scale_down()!')
def test_zoom(field_data):
zoomed_test = field_data.zoom(2, order=0)
reference = np.zeros((8, 8, 8, 3))
reference[2:6, 2:6, 2:6] = 1
assert_allclose(zoomed_test, reference,
err_msg='Unexpected behavior in zoom()!')
assert_allclose(zoomed_test.scale, (5, 5, 5),
err_msg='Unexpected behavior in zoom()!')
@pytest.mark.parametrize(
'mode', [
'constant',
'edge',
'wrap'
]
)
@pytest.mark.parametrize(
'pad_width,np_pad', [
(1, ((1, 1), (1, 1), (1, 1), (0, 0))),
((1, 2, 3), ((1, 1), (2, 2), (3, 3), (0, 0))),
(((1, 2), (3, 4), (5, 6)), ((1, 2), (3, 4), (5, 6), (0, 0)))
]
)
def test_pad(field_data, mode, pad_width, np_pad):
magdata_test = field_data.pad(pad_width, mode=mode)
reference = np.pad(field_data, np_pad, mode=mode)
assert_allclose(magdata_test, reference,
err_msg='Unexpected behavior in pad()!')
def test_mask(field_data):
mask = field_data.mask
reference = np.zeros((4, 4, 4))
reference[1:-1, 1:-1, 1:-1] = True
assert_allclose(mask, reference,
err_msg='Unexpected behavior in mask attribute!')
def test_get_vector(field_data):
mask = field_data.mask
vector = field_data.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():
mask = field_data.get_mask()
vector = 2 * np.ones(np.sum(mask) * 3)
field_data.set_vector(vector, mask)
reference = np.zeros((3, 4, 4, 4))
reference[:, 1:-1, 1:-1, 1:-1] = 2
assert_allclose(field_data.field, reference,
err_msg='Unexpected behavior in set_vector()!')
def test_flip():
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, field_data.field,
err_msg='Unexpected behavior in load_from_llg()!')
assert_allclose(magdata.a, field_data.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, field_data.field,
err_msg='Unexpected behavior in load_from_hdf5()!')
assert_allclose(magdata.a, field_data.a,
err_msg='Unexpected behavior in load_from_hdf5()!')
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):
magdata_test = self.magdata.scale_down()
reference = 1 / 8. * np.ones((3, 2, 2, 2))
assert_allclose(magdata_test.field, reference,
err_msg='Unexpected behavior in scale_down()!')
assert_allclose(magdata_test.a, 20,
err_msg='Unexpected behavior in scale_down()!')
def test_scale_up(self):
magdata_test = self.magdata.scale_up()
reference = np.zeros((3, 8, 8, 8))
reference[:, 2:6, 2:6, 2:6] = 1
assert_allclose(magdata_test.field, reference,
err_msg='Unexpected behavior in scale_up()!')
assert_allclose(magdata_test.a, 5,
err_msg='Unexpected behavior in scale_up()!')
def test_pad(self):
magdata_test = self.magdata.pad((1, 1, 1))
reference = self.magdata.field.copy()
reference = np.pad(reference, ((0, 0), (1, 1), (1, 1), (1, 1)), mode='constant')
assert_allclose(magdata_test.field, reference,
err_msg='Unexpected behavior in pad()!')
magdata_test = magdata_test.pad(((1, 1), (1, 1), (1, 1)))
reference = np.pad(reference, ((0, 0), (1, 1), (1, 1), (1, 1)), mode='constant')
assert_allclose(magdata_test.field, reference,
err_msg='Unexpected behavior in pad()!')
# TODO: Crop and several others are missing!
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()!')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment