From 8ba826a0c3a5716f5bdd50e2b46e60604716c6e5 Mon Sep 17 00:00:00 2001
From: Fengshan Zheng <f.zheng@fz-juelich.de>
Date: Fri, 28 Jul 2017 15:58:02 +0200
Subject: [PATCH] pull

---
 .gitlab-ci.yml                                | 104 +++++++++++++-----
 environment.yml                               |  13 +--
 pyramid/analytic.py                           |   3 +-
 pyramid/file_io/io_vectordata.py              |  14 ++-
 pyramid/kernel.py                             |   4 +
 pyramid/plottools.py                          |   3 +-
 requirements.txt                              | Bin 3462 -> 3406 bytes
 setup.cfg                                     |   2 +-
 setup.py                                      |   8 +-
 {pyramid/tests => tests}/test_analytic.py     |   0
 .../test_analytic/ref_phase_disc.npy          | Bin
 .../test_analytic/ref_phase_slab.npy          | Bin
 .../test_analytic/ref_phase_sphere.npy        | Bin
 .../test_analytic/ref_phase_vort.npy          | Bin
 {pyramid/tests => tests}/test_costfunction.py |   0
 .../test_costfunction/hess_ref.npy            | Bin
 .../test_costfunction/jac_ref.npy             | Bin
 .../test_costfunction/jac_vec_ref.npy         | Bin
 .../test_costfunction/phasemap_ref.hdf5       | Bin
 .../test_costfunction/zero_vec_cost.npy       | Bin
 {pyramid/tests => tests}/test_dataset.py      |   0
 .../test_dataset/phase_vec_ref.npy            | Bin
 {pyramid/tests => tests}/test_fielddata.py    |   0
 .../test_fielddata/magdata_flipx.hdf5         | Bin
 .../test_fielddata/magdata_flipy.hdf5         | Bin
 .../test_fielddata/magdata_flipz.hdf5         | Bin
 .../test_fielddata/magdata_orig.hdf5          | Bin
 .../test_fielddata/magdata_ref_load.hdf5      | Bin
 .../test_fielddata/magdata_ref_load.txt       |   0
 .../test_fielddata/magdata_rotx.hdf5          | Bin
 .../test_fielddata/magdata_roty.hdf5          | Bin
 .../test_fielddata/magdata_rotz.hdf5          | Bin
 {pyramid/tests => tests}/test_forwardmodel.py |   0
 .../tests => tests}/test_forwardmodel/jac.npy | Bin
 .../test_forwardmodel/phasemap_ref.hdf5       | Bin
 {pyramid/tests => tests}/test_kernel.py       |   0
 .../tests => tests}/test_kernel/ref_u.npy     | Bin
 .../tests => tests}/test_kernel/ref_u_fft.npy | Bin
 .../tests => tests}/test_kernel/ref_v.npy     | Bin
 .../tests => tests}/test_kernel/ref_v_fft.npy | Bin
 {pyramid/tests => tests}/test_magcreator.py   |   0
 .../test_magcreator/ref_disc_x.npy            | Bin
 .../test_magcreator/ref_disc_y.npy            | Bin
 .../test_magcreator/ref_disc_z.npy            | Bin
 .../test_magcreator/ref_ellipse_x.npy         | Bin
 .../test_magcreator/ref_ellipse_y.npy         | Bin
 .../test_magcreator/ref_ellipse_z.npy         | Bin
 .../test_magcreator/ref_ellipsoid.npy         | Bin
 .../test_magcreator/ref_fil_x.npy             | Bin
 .../test_magcreator/ref_fil_y.npy             | Bin
 .../test_magcreator/ref_fil_z.npy             | Bin
 .../test_magcreator/ref_mag_disc.npy          | Bin
 .../test_magcreator/ref_mag_vort.npy          | Bin
 .../test_magcreator/ref_pixel.npy             | Bin
 .../test_magcreator/ref_slab.npy              | Bin
 .../test_magcreator/ref_sphere.npy            | Bin
 {pyramid/tests => tests}/test_phasemap.py     |   0
 .../test_phasemap/ref_phasemap.hdf5           | Bin
 .../test_phasemap/ref_phasemap.txt            |   0
 {pyramid/tests => tests}/test_phasemapper.py  |   0
 .../test_phasemapper/charge_phase_ref.hdf5    | Bin
 .../test_phasemapper/charge_proj.hdf5         | Bin
 .../test_phasemapper/elec_proj.hdf5           | Bin
 .../tests => tests}/test_phasemapper/jac.npy  | Bin
 .../test_phasemapper/jac_fc.npy               | Bin
 .../test_phasemapper/jac_fc_pad1.npy          | Bin
 .../test_phasemapper/jac_fc_pad10.npy         | Bin
 .../test_phasemapper/mag_proj.hdf5            | Bin
 .../test_phasemapper/phasemap.hdf5            | Bin
 .../test_phasemapper/phasemap_elec.hdf5       | Bin
 .../test_phasemapper/phasemap_fc.hdf5         | Bin
 .../test_phasemapper/phasemap_fc_pad1.hdf5    | Bin
 .../test_phasemapper/phasemap_fc_pad10.hdf5   | Bin
 {pyramid/tests => tests}/test_pm.py           |   0
 {pyramid/tests => tests}/test_projector.py    |   0
 .../tests => tests}/test_projector/jac_x.npy  | Bin
 .../test_projector/jac_x00.npy                | Bin
 .../test_projector/jac_x45.npy                | Bin
 .../test_projector/jac_x90.npy                | Bin
 .../tests => tests}/test_projector/jac_y.npy  | Bin
 .../test_projector/jac_y00.npy                | Bin
 .../test_projector/jac_y45.npy                | Bin
 .../test_projector/jac_y90.npy                | Bin
 .../tests => tests}/test_projector/jac_z.npy  | Bin
 .../test_projector/ref_mag_proj_x.hdf5        | Bin
 .../test_projector/ref_mag_proj_x00.hdf5      | Bin
 .../test_projector/ref_mag_proj_x45.hdf5      | Bin
 .../test_projector/ref_mag_proj_x90.hdf5      | Bin
 .../test_projector/ref_mag_proj_y.hdf5        | Bin
 .../test_projector/ref_mag_proj_y00.hdf5      | Bin
 .../test_projector/ref_mag_proj_y45.hdf5      | Bin
 .../test_projector/ref_mag_proj_y90.hdf5      | Bin
 .../test_projector/ref_mag_proj_z.hdf5        | Bin
 .../test_projector/ref_magdata.hdf5           | Bin
 .../tests => tests}/test_regularisator.py     |   0
 .../first_order_cost_ref.npy                  | Bin
 .../first_order_jac_ref.npy                   | Bin
 .../first_order_jac_vec_ref.npy               | Bin
 98 files changed, 103 insertions(+), 48 deletions(-)
 rename {pyramid/tests => tests}/test_analytic.py (100%)
 rename {pyramid/tests => tests}/test_analytic/ref_phase_disc.npy (100%)
 rename {pyramid/tests => tests}/test_analytic/ref_phase_slab.npy (100%)
 rename {pyramid/tests => tests}/test_analytic/ref_phase_sphere.npy (100%)
 rename {pyramid/tests => tests}/test_analytic/ref_phase_vort.npy (100%)
 rename {pyramid/tests => tests}/test_costfunction.py (100%)
 rename {pyramid/tests => tests}/test_costfunction/hess_ref.npy (100%)
 rename {pyramid/tests => tests}/test_costfunction/jac_ref.npy (100%)
 rename {pyramid/tests => tests}/test_costfunction/jac_vec_ref.npy (100%)
 rename {pyramid/tests => tests}/test_costfunction/phasemap_ref.hdf5 (100%)
 rename {pyramid/tests => tests}/test_costfunction/zero_vec_cost.npy (100%)
 rename {pyramid/tests => tests}/test_dataset.py (100%)
 rename {pyramid/tests => tests}/test_dataset/phase_vec_ref.npy (100%)
 rename {pyramid/tests => tests}/test_fielddata.py (100%)
 rename {pyramid/tests => tests}/test_fielddata/magdata_flipx.hdf5 (100%)
 rename {pyramid/tests => tests}/test_fielddata/magdata_flipy.hdf5 (100%)
 rename {pyramid/tests => tests}/test_fielddata/magdata_flipz.hdf5 (100%)
 rename {pyramid/tests => tests}/test_fielddata/magdata_orig.hdf5 (100%)
 rename {pyramid/tests => tests}/test_fielddata/magdata_ref_load.hdf5 (100%)
 rename {pyramid/tests => tests}/test_fielddata/magdata_ref_load.txt (100%)
 rename {pyramid/tests => tests}/test_fielddata/magdata_rotx.hdf5 (100%)
 rename {pyramid/tests => tests}/test_fielddata/magdata_roty.hdf5 (100%)
 rename {pyramid/tests => tests}/test_fielddata/magdata_rotz.hdf5 (100%)
 rename {pyramid/tests => tests}/test_forwardmodel.py (100%)
 rename {pyramid/tests => tests}/test_forwardmodel/jac.npy (100%)
 rename {pyramid/tests => tests}/test_forwardmodel/phasemap_ref.hdf5 (100%)
 rename {pyramid/tests => tests}/test_kernel.py (100%)
 rename {pyramid/tests => tests}/test_kernel/ref_u.npy (100%)
 rename {pyramid/tests => tests}/test_kernel/ref_u_fft.npy (100%)
 rename {pyramid/tests => tests}/test_kernel/ref_v.npy (100%)
 rename {pyramid/tests => tests}/test_kernel/ref_v_fft.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator.py (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_disc_x.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_disc_y.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_disc_z.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_ellipse_x.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_ellipse_y.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_ellipse_z.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_ellipsoid.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_fil_x.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_fil_y.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_fil_z.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_mag_disc.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_mag_vort.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_pixel.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_slab.npy (100%)
 rename {pyramid/tests => tests}/test_magcreator/ref_sphere.npy (100%)
 rename {pyramid/tests => tests}/test_phasemap.py (100%)
 rename {pyramid/tests => tests}/test_phasemap/ref_phasemap.hdf5 (100%)
 rename {pyramid/tests => tests}/test_phasemap/ref_phasemap.txt (100%)
 rename {pyramid/tests => tests}/test_phasemapper.py (100%)
 rename {pyramid/tests => tests}/test_phasemapper/charge_phase_ref.hdf5 (100%)
 rename {pyramid/tests => tests}/test_phasemapper/charge_proj.hdf5 (100%)
 rename {pyramid/tests => tests}/test_phasemapper/elec_proj.hdf5 (100%)
 rename {pyramid/tests => tests}/test_phasemapper/jac.npy (100%)
 rename {pyramid/tests => tests}/test_phasemapper/jac_fc.npy (100%)
 rename {pyramid/tests => tests}/test_phasemapper/jac_fc_pad1.npy (100%)
 rename {pyramid/tests => tests}/test_phasemapper/jac_fc_pad10.npy (100%)
 rename {pyramid/tests => tests}/test_phasemapper/mag_proj.hdf5 (100%)
 rename {pyramid/tests => tests}/test_phasemapper/phasemap.hdf5 (100%)
 rename {pyramid/tests => tests}/test_phasemapper/phasemap_elec.hdf5 (100%)
 rename {pyramid/tests => tests}/test_phasemapper/phasemap_fc.hdf5 (100%)
 rename {pyramid/tests => tests}/test_phasemapper/phasemap_fc_pad1.hdf5 (100%)
 rename {pyramid/tests => tests}/test_phasemapper/phasemap_fc_pad10.hdf5 (100%)
 rename {pyramid/tests => tests}/test_pm.py (100%)
 rename {pyramid/tests => tests}/test_projector.py (100%)
 rename {pyramid/tests => tests}/test_projector/jac_x.npy (100%)
 rename {pyramid/tests => tests}/test_projector/jac_x00.npy (100%)
 rename {pyramid/tests => tests}/test_projector/jac_x45.npy (100%)
 rename {pyramid/tests => tests}/test_projector/jac_x90.npy (100%)
 rename {pyramid/tests => tests}/test_projector/jac_y.npy (100%)
 rename {pyramid/tests => tests}/test_projector/jac_y00.npy (100%)
 rename {pyramid/tests => tests}/test_projector/jac_y45.npy (100%)
 rename {pyramid/tests => tests}/test_projector/jac_y90.npy (100%)
 rename {pyramid/tests => tests}/test_projector/jac_z.npy (100%)
 rename {pyramid/tests => tests}/test_projector/ref_mag_proj_x.hdf5 (100%)
 rename {pyramid/tests => tests}/test_projector/ref_mag_proj_x00.hdf5 (100%)
 rename {pyramid/tests => tests}/test_projector/ref_mag_proj_x45.hdf5 (100%)
 rename {pyramid/tests => tests}/test_projector/ref_mag_proj_x90.hdf5 (100%)
 rename {pyramid/tests => tests}/test_projector/ref_mag_proj_y.hdf5 (100%)
 rename {pyramid/tests => tests}/test_projector/ref_mag_proj_y00.hdf5 (100%)
 rename {pyramid/tests => tests}/test_projector/ref_mag_proj_y45.hdf5 (100%)
 rename {pyramid/tests => tests}/test_projector/ref_mag_proj_y90.hdf5 (100%)
 rename {pyramid/tests => tests}/test_projector/ref_mag_proj_z.hdf5 (100%)
 rename {pyramid/tests => tests}/test_projector/ref_magdata.hdf5 (100%)
 rename {pyramid/tests => tests}/test_regularisator.py (100%)
 rename {pyramid/tests => tests}/test_regularisator/first_order_cost_ref.npy (100%)
 rename {pyramid/tests => tests}/test_regularisator/first_order_jac_ref.npy (100%)
 rename {pyramid/tests => tests}/test_regularisator/first_order_jac_vec_ref.npy (100%)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 124b46d..18c3d36 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,36 +1,88 @@
-image: "python:3.5"
-
-before_script:
-  # Check and print Python version
-  - python --version
-  # Create SSH configuration directory if necessary (also parents with -p, mode: read/write/exec):
-  - mkdir -p --mode=700 ~/.ssh/
-  # Add SSH key for jutil:
-  - echo "$ID_RSA_JUTIL_PRIVATE" > ~/.ssh/id_rsa_jutil
-  # Provide read access to owner (octal value code: 400) to jutil key and known_hosts with chmod:
-  - chmod 400 ~/.ssh/id_rsa_jutil
-  # Configure SSH to use ~/.ssh/jutil_key for iffgit.fz-juelich.de (-e allows \n):
-  - echo -e "Host iffgit.fz-juelich.de\n\tIdentityFile ~/.ssh/id_rsa_jutil\n" > ~/.ssh/config
-  # Add iffgit.fz-juelich.de to known_hosts (not the same key as Jutil!):
-  - echo iffgit.fz-juelich.de,134.94.161.83 "$ID_RSA_IFFGIT_PUBLIC" > ~/.ssh/known_hosts
-  # Provide read access to owner (octal value code: 400) to known_hosts with chmod:
-  - chmod 400 ~/.ssh/known_hosts
-  # Install jutil via secure ssh connection:
-  - pip install git+ssh://gitlab@iffgit.fz-juelich.de/unger/jutil.git
-
 stages:
   - test
 
-test:
+before_script:
+    # Create SSH configuration directory if necessary (also parents with -p, mode: read/write/exec):
+    - mkdir -p --mode=700 ~/.ssh/
+    # Add SSH key for jutil:
+    - echo "$ID_RSA_JUTIL_PRIVATE" > ~/.ssh/id_rsa_jutil
+    # Provide read access to owner (octal value code: 400) to jutil key and known_hosts with chmod:
+    - chmod 400 ~/.ssh/id_rsa_jutil
+    # Configure SSH to use ~/.ssh/jutil_key for iffgit.fz-juelich.de (-e allows \n):
+    - echo -e "Host iffgit.fz-juelich.de\n\tIdentityFile ~/.ssh/id_rsa_jutil\n" > ~/.ssh/config
+    # Add iffgit.fz-juelich.de to known_hosts (not the same key as Jutil!):
+    - echo iffgit.fz-juelich.de,134.94.161.83 "$ID_RSA_IFFGIT_PUBLIC" > ~/.ssh/known_hosts
+    # Provide read access to owner (octal value code: 400) to known_hosts with chmod:
+    - chmod 400 ~/.ssh/known_hosts
+    # Install necessary apps like git and mesa-utils (needed for GL):
+    # TODO: Check if this is still needed after removing mayavi!?
+    - apt-get update
+    - apt-get install -y curl bzip2 git mesa-utils
+
+test_miniconda:
   stage: test
+  image: continuumio/miniconda3
   script:
-    # TODO: Different jobs with custom develop arguments? extra_requires (hyperspy, plotting)?
-    # TODO: Use pip install -e .[hyperspy], etc.
-    # Install requirements:
-    # - pip install -r requirements.txt  # TODO: DOES NOT WORK (because mayavi and stuff...)
-    - pip install -e .['tests']
+    # Install requirements for pyramid:
+    - conda info --envs
+    - conda env create -q # -q: quiet/ no progressbar, because it spams the log!
+    - source activate pyramid
+    - conda info --envs
+    - conda uninstall mayavi vtk -y  # TODO: necessary, because mayavi does not play nice with qt5!
+    - conda install pyqt=5  # TODO: This is needed for tests to run, but breaks mayavi (not used)!
+    # Install jutil via secure ssh connection:
+    - pip install git+ssh://gitlab@iffgit.fz-juelich.de/unger/jutil.git
+    # Execute tests:
     - python setup.py test
+    # Create coverage report:
     - coverage html
   artifacts:
     paths:
       - htmlcov/
+
+test_conda_ubuntu:
+  stage: test
+  image: ubuntu:16.04
+  script:
+    # Install miniconda:
+    - curl -O -L https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
+    - chmod +x Miniconda3-latest-Linux-x86_64.sh
+    - ./Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3
+    - export PATH="/opt/miniconda3/bin:${PATH}"
+    # Install requirements for pyramid:
+    - conda info --envs
+    - conda env create -q # -q: quiet/ no progressbar, because it spams the log!
+    - source activate pyramid
+    - conda info --envs
+    - conda uninstall mayavi vtk -y  # TODO: necessary, because mayavi does not play nice with qt5!
+    - conda install pyqt=5  # TODO: This is needed for tests to run, but breaks mayavi (not used)!
+    # Install jutil via secure ssh connection:
+    - pip install git+ssh://gitlab@iffgit.fz-juelich.de/unger/jutil.git
+    # Execute tests:
+    - python setup.py test
+
+test_pip_minimal:
+  stage: test
+  image: python:3.5
+  script:
+    # TODO: Different jobs with custom develop arguments? extra_requires (hyperspy, plotting)?
+    # TODO: Use pip install -e .[hyperspy], etc.
+    # Install requirements:
+    - pip install -e .['tests']  # TODO: other case with ['all']? After getting rid of mayavi...
+    # Install jutil via secure ssh connection:
+    - pip install git+ssh://gitlab@iffgit.fz-juelich.de/unger/jutil.git
+    # Execute tests:
+    - python setup.py test
+
+test_pip_requirements:
+  stage: test
+  image: python:3.5
+  script:
+    # Install requirements:
+    - pip install -r requirements.txt  # TODO: mayavi/pyfftw commented out by hand to make work!
+    # Install jutil via secure ssh connection:
+    - pip install git+ssh://gitlab@iffgit.fz-juelich.de/unger/jutil.git
+    # Execute tests:
+    - python setup.py test
+
+# TODO: What about windows? Better have one test (miniconda?) for windows/max/linux, each!
diff --git a/environment.yml b/environment.yml
index 481a532..da82e3d 100644
--- a/environment.yml
+++ b/environment.yml
@@ -2,6 +2,7 @@
 # This file contains the top level dependencies of the pyramid project!
 # requirements.txt also contains sub-dependencies, generated by "pip freeze > requirements.txt"!
 # Add new dependencies here, then "conda env update", then "pip freeze > requirements.txt"!
+# To see if compatible upgrades are available for the current packages, use "conda upgrade --all"!
 # When packages are deprecated/deleted, it may be best to recreate the environment from scratch!
 
 name: pyramid
@@ -23,13 +24,13 @@ dependencies:
   # File IO:
   - hyperspy=1.3
   - hyperspy-gui-ipywidgets=1.0
-  - hyperspy-gui-traitsui=1.0  # TODO: Optional! Delete when mayavi is gone!
+  # - hyperspy-gui-traitsui=1.0  # TODO: Optional! Delete when mayavi is gone!
   - h5py=2.7
   # Plotting and colors:  # TODO: Shift to plotting package?
-  - matplotlib=2.0  # Only works with qt4 from conda-forge channel!
+  - matplotlib=2.0  # Only conda-forge channel has working version for qt4!
   - Pillow=4.1
   - cmocean=1.1
-  - qt=4.8  # Necessary because of traits in mayavi...
+  - qt=4.8  # Necessary because of traits in mayavi... On server, pyqt=5.6 is needed!
   - mayavi=4.5  # TODO: Get rid of!
   #- colorspacious  # TODO: NOT USED?
   #- visvis  # TODO: NOT USED?
@@ -50,9 +51,3 @@ dependencies:
 #  - pip:
 #    # ALSO NEEDS JUTIL!
 #    - "git+ssh://gitlab@iffgit.fz-juelich.de/unger/jutil.git"
-#
-#    # FOLLOWING NOT USED ANYMORE, CONDA WORKS, TOO (with appropriate channels):
-#    # Install pyFFTW=0.10 from wheel:
-#    - http://www.lfd.uci.edu/~gohlke/pythonlibs/pyFFTW‑0.10.4‑cp35‑cp35m‑win_amd64.whl
-#    # Install mayavi=4.5 and VTK from wheel:
-#    - http://www.lfd.uci.edu/~gohlke/pythonlibs/mayavi‑4.5.0+vtk71‑cp35‑cp35m‑win_amd64.whl
diff --git a/pyramid/analytic.py b/pyramid/analytic.py
index 28b8abd..8cfde7e 100644
--- a/pyramid/analytic.py
+++ b/pyramid/analytic.py
@@ -164,8 +164,7 @@ def phase_mag_sphere(dim, a, phi, center, radius, b_0=1):
         r = np.hypot(x - x0, y - y0)
         result = coeff * R ** 3 / (r + 1E-30) ** 2 * (
             (y - y0) * np.cos(phi) - (x - x0) * np.sin(phi))
-        # TODO: During testing: "RuntimeWarning: invalid value encountered in power":
-        result *= np.where(r > R, 1, (1 - (1 - (r / R) ** 2) ** (3. / 2.)))
+        result *= 1 - np.clip(1 - (r / R) ** 2, 0, 1) ** (3. / 2.)
         return result
 
     # Process input parameters:
diff --git a/pyramid/file_io/io_vectordata.py b/pyramid/file_io/io_vectordata.py
index 9fec4da..f128fc9 100644
--- a/pyramid/file_io/io_vectordata.py
+++ b/pyramid/file_io/io_vectordata.py
@@ -155,11 +155,15 @@ def _load_from_ovf(filename, a):
         field = np.asarray((x_mag, y_mag, z_mag)) * float(header.get('valuemultiplier', 1))
         if a is None:
             # TODO: If transferred to HyperSpy, this has to stay in Pyramid reader!
-            if not header.get('xstepsize') == header.get('ystepsize') == header.get('zstepsize'):
-                _log.warning('Grid spacing is not equal in x, y and z (x will be used)!')
-            a = float(header.get('xstepsize', 1.))
-            meshunit = header.get('meshunit', 'nm')
-            a *= {'m': 1e9, 'mm': 1e6, 'µm': 1e3, 'nm': 1}[meshunit]  # Conversion to nm
+            xstep = float(header.get('xstepsize'))
+            ystep = float(header.get('ystepsize'))
+            zstep = float(header.get('zstepsize'))
+            if not np.allclose(xstep, ystep) and np.allclose(xstep, zstep):
+                _log.warning('Grid spacing is not equal in x, y and z (x will be used)!\n'
+                             'Found step sizes are x:{}, y:{}, z:{} (all in {})!'.format(
+                                xstep, ystep, zstep, header.get('meshunit')))
+            # Extract grid spacing from xstepsize and convert according to meshunit:
+            a = xstep * {'m': 1e9, 'mm': 1e6, 'µm': 1e3, 'nm': 1}[header.get('meshunit', 'nm')]
         return VectorData(a, field)
 
 
diff --git a/pyramid/kernel.py b/pyramid/kernel.py
index 08c844b..7bb7241 100644
--- a/pyramid/kernel.py
+++ b/pyramid/kernel.py
@@ -101,15 +101,18 @@ class Kernel(object):
         u = np.linspace(-(u_dim - 1), u_dim - 1, num=2 * u_dim - 1)
         v = np.linspace(-(v_dim - 1), v_dim - 1, num=2 * v_dim - 1)
         uu, vv = np.meshgrid(u, v)
+        # TODO: u, v are coordinates, rename self.u/v to self.kern_u/v!
         self.u = np.empty(self.dim_kern, dtype=dtype)
         self.v = np.empty(self.dim_kern, dtype=dtype)
         self.u[...] = coeff * self._get_elementary_phase(geometry, uu, vv, a)
+        # TODO: The minus sign belongs into the phasemapper (debatable)!
         self.v[...] = coeff * -self._get_elementary_phase(geometry, vv, uu, a)
         # Include perturbed reference wave:
         if prw_vec is not None:
             uu += prw_vec[1]
             vv += prw_vec[0]
             self.u[...] -= coeff * self._get_elementary_phase(geometry, uu, vv, a)
+            # TODO: The minus sign belongs into the phasemapper (debatable)!
             self.v[...] -= coeff * -self._get_elementary_phase(geometry, vv, uu, a)
         # Calculate Fourier trafo of kernel components:
         self.u_fft = fft.rfftn(self.u, self.dim_pad)
@@ -128,6 +131,7 @@ class Kernel(object):
 
     def _get_elementary_phase(self, geometry, n, m, a):
         self._log.debug('Calling _get_elementary_phase')
+        # TODO: Rename n m to p q ?
         if geometry == 'disc':
             in_or_out = ~ np.logical_and(n == 0, m == 0)
             return m / (n ** 2 + m ** 2 + 1E-30) * in_or_out
diff --git a/pyramid/plottools.py b/pyramid/plottools.py
index 896feb6..e76ad26 100644
--- a/pyramid/plottools.py
+++ b/pyramid/plottools.py
@@ -28,13 +28,14 @@ FIGSIZE_DEFAULT = (6.7, 5)  # TODO: Apparently does not fit as well as before...
 FONTSIZE_DEFAULT = 20
 STROKE_DEFAULT = None
 
-
+# TODO: Replace by matplotlib styles!
 def pretty_plots(figsize=None, fontsize=None, stroke=None):
     """Set IPython formats (for interactive and PDF output) and set pretty matplotlib font."""
     from IPython.display import set_matplotlib_formats
     set_matplotlib_formats('png', 'pdf')  # png for interactive, pdf, for PDF output!
     mpl.rcParams['mathtext.fontset'] = 'stix'  # Mathtext in $...$!
     mpl.rcParams['font.family'] = 'STIXGeneral'  # Set normal text to look the same!
+    # TODO: set 'font.size' = FONTSIZE! Does this change everything relative to this value???
     mpl.rcParams['figure.max_open_warning'] = 0  # Disable Max Open Figure warning!
     if figsize is not None:
         global FIGSIZE_DEFAULT
diff --git a/requirements.txt b/requirements.txt
index f563088ee85d902dc1e559ea43e36cf71445fd93..a7a140da6af72fc9e99e85dcc965b1b48411abb4 100644
GIT binary patch
delta 36
scmZpZJ}0%|1k+{~<~k-u<;{((n#_#KlUH&aW;CAskW+Yb11B2`0NC{k`~Uy|

delta 68
zcmX>n)h4~+1e0V2LnT82Ln=cNLotx9WYA?uXDDUJWYC?wkVll$kU@{Z0Emq@A7*N1
V+U&uq!92N$;}E0KW>Zc{764rh5XJxi

diff --git a/setup.cfg b/setup.cfg
index 800d7c2..9d1fde4 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -32,7 +32,7 @@ test=pytest
 branch = True
 source = pyramid
 omit =
- pyramid/tests/*
+    tests/*
 
 [tool:pytest]
 addopts = --cov --flake8
diff --git a/setup.py b/setup.py
index d255b81..9215f64 100644
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ import re
 import subprocess
 import sys
 import itertools
-from distutils.command.build import build
+#from distutils.command.build import build
 
 #import numpy
 from setuptools import setup, find_packages
@@ -150,8 +150,8 @@ extras_require["all"] = list(itertools.chain(*list(extras_require.values())))
 
 
 print('\n-------------------------------------------------------------------------------')
-print('checking requirements')
-check_requirements()
+# print('checking requirements')  # TODO: Get rid of!
+# check_requirements()
 print('write version.py')
 write_version_py()
 setup(name=DISTNAME,
@@ -168,6 +168,6 @@ setup(name=DISTNAME,
       #tests_require=['pytest', 'pytest-cov', 'pytest-flake8'],
       install_requires=install_requires,
       extras_require=extras_require,
-      cmdclass={'build': build}  # TODO: necessary?
+      #cmdclass={'build': build}  # TODO: necessary?
     )
 print('-------------------------------------------------------------------------------\n')
diff --git a/pyramid/tests/test_analytic.py b/tests/test_analytic.py
similarity index 100%
rename from pyramid/tests/test_analytic.py
rename to tests/test_analytic.py
diff --git a/pyramid/tests/test_analytic/ref_phase_disc.npy b/tests/test_analytic/ref_phase_disc.npy
similarity index 100%
rename from pyramid/tests/test_analytic/ref_phase_disc.npy
rename to tests/test_analytic/ref_phase_disc.npy
diff --git a/pyramid/tests/test_analytic/ref_phase_slab.npy b/tests/test_analytic/ref_phase_slab.npy
similarity index 100%
rename from pyramid/tests/test_analytic/ref_phase_slab.npy
rename to tests/test_analytic/ref_phase_slab.npy
diff --git a/pyramid/tests/test_analytic/ref_phase_sphere.npy b/tests/test_analytic/ref_phase_sphere.npy
similarity index 100%
rename from pyramid/tests/test_analytic/ref_phase_sphere.npy
rename to tests/test_analytic/ref_phase_sphere.npy
diff --git a/pyramid/tests/test_analytic/ref_phase_vort.npy b/tests/test_analytic/ref_phase_vort.npy
similarity index 100%
rename from pyramid/tests/test_analytic/ref_phase_vort.npy
rename to tests/test_analytic/ref_phase_vort.npy
diff --git a/pyramid/tests/test_costfunction.py b/tests/test_costfunction.py
similarity index 100%
rename from pyramid/tests/test_costfunction.py
rename to tests/test_costfunction.py
diff --git a/pyramid/tests/test_costfunction/hess_ref.npy b/tests/test_costfunction/hess_ref.npy
similarity index 100%
rename from pyramid/tests/test_costfunction/hess_ref.npy
rename to tests/test_costfunction/hess_ref.npy
diff --git a/pyramid/tests/test_costfunction/jac_ref.npy b/tests/test_costfunction/jac_ref.npy
similarity index 100%
rename from pyramid/tests/test_costfunction/jac_ref.npy
rename to tests/test_costfunction/jac_ref.npy
diff --git a/pyramid/tests/test_costfunction/jac_vec_ref.npy b/tests/test_costfunction/jac_vec_ref.npy
similarity index 100%
rename from pyramid/tests/test_costfunction/jac_vec_ref.npy
rename to tests/test_costfunction/jac_vec_ref.npy
diff --git a/pyramid/tests/test_costfunction/phasemap_ref.hdf5 b/tests/test_costfunction/phasemap_ref.hdf5
similarity index 100%
rename from pyramid/tests/test_costfunction/phasemap_ref.hdf5
rename to tests/test_costfunction/phasemap_ref.hdf5
diff --git a/pyramid/tests/test_costfunction/zero_vec_cost.npy b/tests/test_costfunction/zero_vec_cost.npy
similarity index 100%
rename from pyramid/tests/test_costfunction/zero_vec_cost.npy
rename to tests/test_costfunction/zero_vec_cost.npy
diff --git a/pyramid/tests/test_dataset.py b/tests/test_dataset.py
similarity index 100%
rename from pyramid/tests/test_dataset.py
rename to tests/test_dataset.py
diff --git a/pyramid/tests/test_dataset/phase_vec_ref.npy b/tests/test_dataset/phase_vec_ref.npy
similarity index 100%
rename from pyramid/tests/test_dataset/phase_vec_ref.npy
rename to tests/test_dataset/phase_vec_ref.npy
diff --git a/pyramid/tests/test_fielddata.py b/tests/test_fielddata.py
similarity index 100%
rename from pyramid/tests/test_fielddata.py
rename to tests/test_fielddata.py
diff --git a/pyramid/tests/test_fielddata/magdata_flipx.hdf5 b/tests/test_fielddata/magdata_flipx.hdf5
similarity index 100%
rename from pyramid/tests/test_fielddata/magdata_flipx.hdf5
rename to tests/test_fielddata/magdata_flipx.hdf5
diff --git a/pyramid/tests/test_fielddata/magdata_flipy.hdf5 b/tests/test_fielddata/magdata_flipy.hdf5
similarity index 100%
rename from pyramid/tests/test_fielddata/magdata_flipy.hdf5
rename to tests/test_fielddata/magdata_flipy.hdf5
diff --git a/pyramid/tests/test_fielddata/magdata_flipz.hdf5 b/tests/test_fielddata/magdata_flipz.hdf5
similarity index 100%
rename from pyramid/tests/test_fielddata/magdata_flipz.hdf5
rename to tests/test_fielddata/magdata_flipz.hdf5
diff --git a/pyramid/tests/test_fielddata/magdata_orig.hdf5 b/tests/test_fielddata/magdata_orig.hdf5
similarity index 100%
rename from pyramid/tests/test_fielddata/magdata_orig.hdf5
rename to tests/test_fielddata/magdata_orig.hdf5
diff --git a/pyramid/tests/test_fielddata/magdata_ref_load.hdf5 b/tests/test_fielddata/magdata_ref_load.hdf5
similarity index 100%
rename from pyramid/tests/test_fielddata/magdata_ref_load.hdf5
rename to tests/test_fielddata/magdata_ref_load.hdf5
diff --git a/pyramid/tests/test_fielddata/magdata_ref_load.txt b/tests/test_fielddata/magdata_ref_load.txt
similarity index 100%
rename from pyramid/tests/test_fielddata/magdata_ref_load.txt
rename to tests/test_fielddata/magdata_ref_load.txt
diff --git a/pyramid/tests/test_fielddata/magdata_rotx.hdf5 b/tests/test_fielddata/magdata_rotx.hdf5
similarity index 100%
rename from pyramid/tests/test_fielddata/magdata_rotx.hdf5
rename to tests/test_fielddata/magdata_rotx.hdf5
diff --git a/pyramid/tests/test_fielddata/magdata_roty.hdf5 b/tests/test_fielddata/magdata_roty.hdf5
similarity index 100%
rename from pyramid/tests/test_fielddata/magdata_roty.hdf5
rename to tests/test_fielddata/magdata_roty.hdf5
diff --git a/pyramid/tests/test_fielddata/magdata_rotz.hdf5 b/tests/test_fielddata/magdata_rotz.hdf5
similarity index 100%
rename from pyramid/tests/test_fielddata/magdata_rotz.hdf5
rename to tests/test_fielddata/magdata_rotz.hdf5
diff --git a/pyramid/tests/test_forwardmodel.py b/tests/test_forwardmodel.py
similarity index 100%
rename from pyramid/tests/test_forwardmodel.py
rename to tests/test_forwardmodel.py
diff --git a/pyramid/tests/test_forwardmodel/jac.npy b/tests/test_forwardmodel/jac.npy
similarity index 100%
rename from pyramid/tests/test_forwardmodel/jac.npy
rename to tests/test_forwardmodel/jac.npy
diff --git a/pyramid/tests/test_forwardmodel/phasemap_ref.hdf5 b/tests/test_forwardmodel/phasemap_ref.hdf5
similarity index 100%
rename from pyramid/tests/test_forwardmodel/phasemap_ref.hdf5
rename to tests/test_forwardmodel/phasemap_ref.hdf5
diff --git a/pyramid/tests/test_kernel.py b/tests/test_kernel.py
similarity index 100%
rename from pyramid/tests/test_kernel.py
rename to tests/test_kernel.py
diff --git a/pyramid/tests/test_kernel/ref_u.npy b/tests/test_kernel/ref_u.npy
similarity index 100%
rename from pyramid/tests/test_kernel/ref_u.npy
rename to tests/test_kernel/ref_u.npy
diff --git a/pyramid/tests/test_kernel/ref_u_fft.npy b/tests/test_kernel/ref_u_fft.npy
similarity index 100%
rename from pyramid/tests/test_kernel/ref_u_fft.npy
rename to tests/test_kernel/ref_u_fft.npy
diff --git a/pyramid/tests/test_kernel/ref_v.npy b/tests/test_kernel/ref_v.npy
similarity index 100%
rename from pyramid/tests/test_kernel/ref_v.npy
rename to tests/test_kernel/ref_v.npy
diff --git a/pyramid/tests/test_kernel/ref_v_fft.npy b/tests/test_kernel/ref_v_fft.npy
similarity index 100%
rename from pyramid/tests/test_kernel/ref_v_fft.npy
rename to tests/test_kernel/ref_v_fft.npy
diff --git a/pyramid/tests/test_magcreator.py b/tests/test_magcreator.py
similarity index 100%
rename from pyramid/tests/test_magcreator.py
rename to tests/test_magcreator.py
diff --git a/pyramid/tests/test_magcreator/ref_disc_x.npy b/tests/test_magcreator/ref_disc_x.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_disc_x.npy
rename to tests/test_magcreator/ref_disc_x.npy
diff --git a/pyramid/tests/test_magcreator/ref_disc_y.npy b/tests/test_magcreator/ref_disc_y.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_disc_y.npy
rename to tests/test_magcreator/ref_disc_y.npy
diff --git a/pyramid/tests/test_magcreator/ref_disc_z.npy b/tests/test_magcreator/ref_disc_z.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_disc_z.npy
rename to tests/test_magcreator/ref_disc_z.npy
diff --git a/pyramid/tests/test_magcreator/ref_ellipse_x.npy b/tests/test_magcreator/ref_ellipse_x.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_ellipse_x.npy
rename to tests/test_magcreator/ref_ellipse_x.npy
diff --git a/pyramid/tests/test_magcreator/ref_ellipse_y.npy b/tests/test_magcreator/ref_ellipse_y.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_ellipse_y.npy
rename to tests/test_magcreator/ref_ellipse_y.npy
diff --git a/pyramid/tests/test_magcreator/ref_ellipse_z.npy b/tests/test_magcreator/ref_ellipse_z.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_ellipse_z.npy
rename to tests/test_magcreator/ref_ellipse_z.npy
diff --git a/pyramid/tests/test_magcreator/ref_ellipsoid.npy b/tests/test_magcreator/ref_ellipsoid.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_ellipsoid.npy
rename to tests/test_magcreator/ref_ellipsoid.npy
diff --git a/pyramid/tests/test_magcreator/ref_fil_x.npy b/tests/test_magcreator/ref_fil_x.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_fil_x.npy
rename to tests/test_magcreator/ref_fil_x.npy
diff --git a/pyramid/tests/test_magcreator/ref_fil_y.npy b/tests/test_magcreator/ref_fil_y.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_fil_y.npy
rename to tests/test_magcreator/ref_fil_y.npy
diff --git a/pyramid/tests/test_magcreator/ref_fil_z.npy b/tests/test_magcreator/ref_fil_z.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_fil_z.npy
rename to tests/test_magcreator/ref_fil_z.npy
diff --git a/pyramid/tests/test_magcreator/ref_mag_disc.npy b/tests/test_magcreator/ref_mag_disc.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_mag_disc.npy
rename to tests/test_magcreator/ref_mag_disc.npy
diff --git a/pyramid/tests/test_magcreator/ref_mag_vort.npy b/tests/test_magcreator/ref_mag_vort.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_mag_vort.npy
rename to tests/test_magcreator/ref_mag_vort.npy
diff --git a/pyramid/tests/test_magcreator/ref_pixel.npy b/tests/test_magcreator/ref_pixel.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_pixel.npy
rename to tests/test_magcreator/ref_pixel.npy
diff --git a/pyramid/tests/test_magcreator/ref_slab.npy b/tests/test_magcreator/ref_slab.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_slab.npy
rename to tests/test_magcreator/ref_slab.npy
diff --git a/pyramid/tests/test_magcreator/ref_sphere.npy b/tests/test_magcreator/ref_sphere.npy
similarity index 100%
rename from pyramid/tests/test_magcreator/ref_sphere.npy
rename to tests/test_magcreator/ref_sphere.npy
diff --git a/pyramid/tests/test_phasemap.py b/tests/test_phasemap.py
similarity index 100%
rename from pyramid/tests/test_phasemap.py
rename to tests/test_phasemap.py
diff --git a/pyramid/tests/test_phasemap/ref_phasemap.hdf5 b/tests/test_phasemap/ref_phasemap.hdf5
similarity index 100%
rename from pyramid/tests/test_phasemap/ref_phasemap.hdf5
rename to tests/test_phasemap/ref_phasemap.hdf5
diff --git a/pyramid/tests/test_phasemap/ref_phasemap.txt b/tests/test_phasemap/ref_phasemap.txt
similarity index 100%
rename from pyramid/tests/test_phasemap/ref_phasemap.txt
rename to tests/test_phasemap/ref_phasemap.txt
diff --git a/pyramid/tests/test_phasemapper.py b/tests/test_phasemapper.py
similarity index 100%
rename from pyramid/tests/test_phasemapper.py
rename to tests/test_phasemapper.py
diff --git a/pyramid/tests/test_phasemapper/charge_phase_ref.hdf5 b/tests/test_phasemapper/charge_phase_ref.hdf5
similarity index 100%
rename from pyramid/tests/test_phasemapper/charge_phase_ref.hdf5
rename to tests/test_phasemapper/charge_phase_ref.hdf5
diff --git a/pyramid/tests/test_phasemapper/charge_proj.hdf5 b/tests/test_phasemapper/charge_proj.hdf5
similarity index 100%
rename from pyramid/tests/test_phasemapper/charge_proj.hdf5
rename to tests/test_phasemapper/charge_proj.hdf5
diff --git a/pyramid/tests/test_phasemapper/elec_proj.hdf5 b/tests/test_phasemapper/elec_proj.hdf5
similarity index 100%
rename from pyramid/tests/test_phasemapper/elec_proj.hdf5
rename to tests/test_phasemapper/elec_proj.hdf5
diff --git a/pyramid/tests/test_phasemapper/jac.npy b/tests/test_phasemapper/jac.npy
similarity index 100%
rename from pyramid/tests/test_phasemapper/jac.npy
rename to tests/test_phasemapper/jac.npy
diff --git a/pyramid/tests/test_phasemapper/jac_fc.npy b/tests/test_phasemapper/jac_fc.npy
similarity index 100%
rename from pyramid/tests/test_phasemapper/jac_fc.npy
rename to tests/test_phasemapper/jac_fc.npy
diff --git a/pyramid/tests/test_phasemapper/jac_fc_pad1.npy b/tests/test_phasemapper/jac_fc_pad1.npy
similarity index 100%
rename from pyramid/tests/test_phasemapper/jac_fc_pad1.npy
rename to tests/test_phasemapper/jac_fc_pad1.npy
diff --git a/pyramid/tests/test_phasemapper/jac_fc_pad10.npy b/tests/test_phasemapper/jac_fc_pad10.npy
similarity index 100%
rename from pyramid/tests/test_phasemapper/jac_fc_pad10.npy
rename to tests/test_phasemapper/jac_fc_pad10.npy
diff --git a/pyramid/tests/test_phasemapper/mag_proj.hdf5 b/tests/test_phasemapper/mag_proj.hdf5
similarity index 100%
rename from pyramid/tests/test_phasemapper/mag_proj.hdf5
rename to tests/test_phasemapper/mag_proj.hdf5
diff --git a/pyramid/tests/test_phasemapper/phasemap.hdf5 b/tests/test_phasemapper/phasemap.hdf5
similarity index 100%
rename from pyramid/tests/test_phasemapper/phasemap.hdf5
rename to tests/test_phasemapper/phasemap.hdf5
diff --git a/pyramid/tests/test_phasemapper/phasemap_elec.hdf5 b/tests/test_phasemapper/phasemap_elec.hdf5
similarity index 100%
rename from pyramid/tests/test_phasemapper/phasemap_elec.hdf5
rename to tests/test_phasemapper/phasemap_elec.hdf5
diff --git a/pyramid/tests/test_phasemapper/phasemap_fc.hdf5 b/tests/test_phasemapper/phasemap_fc.hdf5
similarity index 100%
rename from pyramid/tests/test_phasemapper/phasemap_fc.hdf5
rename to tests/test_phasemapper/phasemap_fc.hdf5
diff --git a/pyramid/tests/test_phasemapper/phasemap_fc_pad1.hdf5 b/tests/test_phasemapper/phasemap_fc_pad1.hdf5
similarity index 100%
rename from pyramid/tests/test_phasemapper/phasemap_fc_pad1.hdf5
rename to tests/test_phasemapper/phasemap_fc_pad1.hdf5
diff --git a/pyramid/tests/test_phasemapper/phasemap_fc_pad10.hdf5 b/tests/test_phasemapper/phasemap_fc_pad10.hdf5
similarity index 100%
rename from pyramid/tests/test_phasemapper/phasemap_fc_pad10.hdf5
rename to tests/test_phasemapper/phasemap_fc_pad10.hdf5
diff --git a/pyramid/tests/test_pm.py b/tests/test_pm.py
similarity index 100%
rename from pyramid/tests/test_pm.py
rename to tests/test_pm.py
diff --git a/pyramid/tests/test_projector.py b/tests/test_projector.py
similarity index 100%
rename from pyramid/tests/test_projector.py
rename to tests/test_projector.py
diff --git a/pyramid/tests/test_projector/jac_x.npy b/tests/test_projector/jac_x.npy
similarity index 100%
rename from pyramid/tests/test_projector/jac_x.npy
rename to tests/test_projector/jac_x.npy
diff --git a/pyramid/tests/test_projector/jac_x00.npy b/tests/test_projector/jac_x00.npy
similarity index 100%
rename from pyramid/tests/test_projector/jac_x00.npy
rename to tests/test_projector/jac_x00.npy
diff --git a/pyramid/tests/test_projector/jac_x45.npy b/tests/test_projector/jac_x45.npy
similarity index 100%
rename from pyramid/tests/test_projector/jac_x45.npy
rename to tests/test_projector/jac_x45.npy
diff --git a/pyramid/tests/test_projector/jac_x90.npy b/tests/test_projector/jac_x90.npy
similarity index 100%
rename from pyramid/tests/test_projector/jac_x90.npy
rename to tests/test_projector/jac_x90.npy
diff --git a/pyramid/tests/test_projector/jac_y.npy b/tests/test_projector/jac_y.npy
similarity index 100%
rename from pyramid/tests/test_projector/jac_y.npy
rename to tests/test_projector/jac_y.npy
diff --git a/pyramid/tests/test_projector/jac_y00.npy b/tests/test_projector/jac_y00.npy
similarity index 100%
rename from pyramid/tests/test_projector/jac_y00.npy
rename to tests/test_projector/jac_y00.npy
diff --git a/pyramid/tests/test_projector/jac_y45.npy b/tests/test_projector/jac_y45.npy
similarity index 100%
rename from pyramid/tests/test_projector/jac_y45.npy
rename to tests/test_projector/jac_y45.npy
diff --git a/pyramid/tests/test_projector/jac_y90.npy b/tests/test_projector/jac_y90.npy
similarity index 100%
rename from pyramid/tests/test_projector/jac_y90.npy
rename to tests/test_projector/jac_y90.npy
diff --git a/pyramid/tests/test_projector/jac_z.npy b/tests/test_projector/jac_z.npy
similarity index 100%
rename from pyramid/tests/test_projector/jac_z.npy
rename to tests/test_projector/jac_z.npy
diff --git a/pyramid/tests/test_projector/ref_mag_proj_x.hdf5 b/tests/test_projector/ref_mag_proj_x.hdf5
similarity index 100%
rename from pyramid/tests/test_projector/ref_mag_proj_x.hdf5
rename to tests/test_projector/ref_mag_proj_x.hdf5
diff --git a/pyramid/tests/test_projector/ref_mag_proj_x00.hdf5 b/tests/test_projector/ref_mag_proj_x00.hdf5
similarity index 100%
rename from pyramid/tests/test_projector/ref_mag_proj_x00.hdf5
rename to tests/test_projector/ref_mag_proj_x00.hdf5
diff --git a/pyramid/tests/test_projector/ref_mag_proj_x45.hdf5 b/tests/test_projector/ref_mag_proj_x45.hdf5
similarity index 100%
rename from pyramid/tests/test_projector/ref_mag_proj_x45.hdf5
rename to tests/test_projector/ref_mag_proj_x45.hdf5
diff --git a/pyramid/tests/test_projector/ref_mag_proj_x90.hdf5 b/tests/test_projector/ref_mag_proj_x90.hdf5
similarity index 100%
rename from pyramid/tests/test_projector/ref_mag_proj_x90.hdf5
rename to tests/test_projector/ref_mag_proj_x90.hdf5
diff --git a/pyramid/tests/test_projector/ref_mag_proj_y.hdf5 b/tests/test_projector/ref_mag_proj_y.hdf5
similarity index 100%
rename from pyramid/tests/test_projector/ref_mag_proj_y.hdf5
rename to tests/test_projector/ref_mag_proj_y.hdf5
diff --git a/pyramid/tests/test_projector/ref_mag_proj_y00.hdf5 b/tests/test_projector/ref_mag_proj_y00.hdf5
similarity index 100%
rename from pyramid/tests/test_projector/ref_mag_proj_y00.hdf5
rename to tests/test_projector/ref_mag_proj_y00.hdf5
diff --git a/pyramid/tests/test_projector/ref_mag_proj_y45.hdf5 b/tests/test_projector/ref_mag_proj_y45.hdf5
similarity index 100%
rename from pyramid/tests/test_projector/ref_mag_proj_y45.hdf5
rename to tests/test_projector/ref_mag_proj_y45.hdf5
diff --git a/pyramid/tests/test_projector/ref_mag_proj_y90.hdf5 b/tests/test_projector/ref_mag_proj_y90.hdf5
similarity index 100%
rename from pyramid/tests/test_projector/ref_mag_proj_y90.hdf5
rename to tests/test_projector/ref_mag_proj_y90.hdf5
diff --git a/pyramid/tests/test_projector/ref_mag_proj_z.hdf5 b/tests/test_projector/ref_mag_proj_z.hdf5
similarity index 100%
rename from pyramid/tests/test_projector/ref_mag_proj_z.hdf5
rename to tests/test_projector/ref_mag_proj_z.hdf5
diff --git a/pyramid/tests/test_projector/ref_magdata.hdf5 b/tests/test_projector/ref_magdata.hdf5
similarity index 100%
rename from pyramid/tests/test_projector/ref_magdata.hdf5
rename to tests/test_projector/ref_magdata.hdf5
diff --git a/pyramid/tests/test_regularisator.py b/tests/test_regularisator.py
similarity index 100%
rename from pyramid/tests/test_regularisator.py
rename to tests/test_regularisator.py
diff --git a/pyramid/tests/test_regularisator/first_order_cost_ref.npy b/tests/test_regularisator/first_order_cost_ref.npy
similarity index 100%
rename from pyramid/tests/test_regularisator/first_order_cost_ref.npy
rename to tests/test_regularisator/first_order_cost_ref.npy
diff --git a/pyramid/tests/test_regularisator/first_order_jac_ref.npy b/tests/test_regularisator/first_order_jac_ref.npy
similarity index 100%
rename from pyramid/tests/test_regularisator/first_order_jac_ref.npy
rename to tests/test_regularisator/first_order_jac_ref.npy
diff --git a/pyramid/tests/test_regularisator/first_order_jac_vec_ref.npy b/tests/test_regularisator/first_order_jac_vec_ref.npy
similarity index 100%
rename from pyramid/tests/test_regularisator/first_order_jac_vec_ref.npy
rename to tests/test_regularisator/first_order_jac_vec_ref.npy
-- 
GitLab