From 51b39c56825610174ad930f041b2a46863aef203 Mon Sep 17 00:00:00 2001
From: Jan Caron <j.caron@fz-juelich.de>
Date: Fri, 22 Apr 2016 00:18:23 +0200
Subject: [PATCH] Updated to work with Python 3! GUIs now import .ui-files
 directly.

---
 .hgignore                                     |    1 +
 .idea/.name                                   |    1 -
 .idea/Pyramid.iml                             |   22 -
 .idea/codeStyleSettings.xml                   |   13 -
 .idea/dictionaries/Jan.xml                    |    3 -
 .idea/encodings.xml                           |    6 -
 .idea/inspectionProfiles/Project_Default.xml  |   90 -
 .../inspectionProfiles/profiles_settings.xml  |    7 -
 .idea/misc.xml                                |   14 -
 .idea/modules.xml                             |   12 -
 .idea/scopes/__c.xml                          |    3 -
 .idea/scopes/__init__.xml                     |    3 -
 .idea/vcs.xml                                 |    9 -
 .idea/workspace.xml                           | 1500 -----------------
 pyramid/__init__.py                           |    9 +-
 pyramid/colormap.py                           |    4 +-
 pyramid/fft.py                                |   25 +-
 pyramid/fielddata.py                          |   48 +-
 pyramid/forwardmodel.py                       |    4 +-
 pyramid/kernel.py                             |    8 +-
 pyramid/magcreator.py                         |   45 +-
 pyramid/phasemap.py                           |    6 +-
 pyramid/phasemapper.py                        |    7 +-
 pyramid/projector.py                          |   11 +-
 pyramid/reconstruction.py                     |    4 +-
 pyramid/regularisator.py                      |   21 +-
 pyramid/tests/test_analytic.py                |   13 +-
 pyramid/tests/test_dataset.py                 |    2 -
 pyramid/version.py                            |    6 +-
 scripts/gui/mag_slicer.py                     |  240 +--
 scripts/gui/mag_slicer.ui                     |  457 ++---
 scripts/gui/phasemap_creator.py               |  205 +--
 scripts/gui/phasemap_creator.ui               |  403 ++---
 scripts/magdata/magdata_from_vtk.py           |    7 +-
 scripts/phasemap/phasemap_from_dm3.py         |   23 +-
 scripts/phasemap/phasemap_from_raw.py         |    3 +-
 .../reconstruction_2d_from_phasemap.py        |   11 +-
 setup.py                                      |   22 +-
 38 files changed, 683 insertions(+), 2585 deletions(-)
 delete mode 100644 .idea/.name
 delete mode 100644 .idea/Pyramid.iml
 delete mode 100644 .idea/codeStyleSettings.xml
 delete mode 100644 .idea/dictionaries/Jan.xml
 delete mode 100644 .idea/encodings.xml
 delete mode 100644 .idea/inspectionProfiles/Project_Default.xml
 delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml
 delete mode 100644 .idea/misc.xml
 delete mode 100644 .idea/modules.xml
 delete mode 100644 .idea/scopes/__c.xml
 delete mode 100644 .idea/scopes/__init__.xml
 delete mode 100644 .idea/vcs.xml
 delete mode 100644 .idea/workspace.xml

diff --git a/.hgignore b/.hgignore
index 38bb72d..52b3b62 100644
--- a/.hgignore
+++ b/.hgignore
@@ -13,3 +13,4 @@ files*
 build*
 Pyramid.egg-info*
 logfile.log
+.idea*
diff --git a/.idea/.name b/.idea/.name
deleted file mode 100644
index ad51e80..0000000
--- a/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-Pyramid
\ No newline at end of file
diff --git a/.idea/Pyramid.iml b/.idea/Pyramid.iml
deleted file mode 100644
index 5eca370..0000000
--- a/.idea/Pyramid.iml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="PYTHON_MODULE" version="4">
-  <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/pyramid" isTestSource="false" />
-    </content>
-    <orderEntry type="jdk" jdkName="Python 2.7.11 (C:\Anaconda2\python.exe)" jdkType="Python SDK" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="HyperSpy" />
-    <orderEntry type="module" module-name="Jutil" />
-    <orderEntry type="module" module-name="Publications" />
-    <orderEntry type="module" module-name="Script-Vault" />
-  </component>
-  <component name="ReSTService">
-    <option name="workdir" value="$MODULE_DIR$" />
-    <option name="DOC_DIR" value="$MODULE_DIR$" />
-  </component>
-  <component name="TestRunnerService">
-    <option name="projectConfiguration" value="Nosetests" />
-    <option name="PROJECT_TEST_RUNNER" value="Nosetests" />
-  </component>
-</module>
\ No newline at end of file
diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml
deleted file mode 100644
index 7fb8ed0..0000000
--- a/.idea/codeStyleSettings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectCodeStyleSettingsManager">
-    <option name="PER_PROJECT_SETTINGS">
-      <value>
-        <XML>
-          <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
-        </XML>
-      </value>
-    </option>
-    <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default (1)" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/dictionaries/Jan.xml b/.idea/dictionaries/Jan.xml
deleted file mode 100644
index 9a9d8f9..0000000
--- a/.idea/dictionaries/Jan.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<component name="ProjectDictionaryState">
-  <dictionary name="Jan" />
-</component>
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
deleted file mode 100644
index 97626ba..0000000
--- a/.idea/encodings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="Encoding">
-    <file url="PROJECT" charset="UTF-8" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
deleted file mode 100644
index 94c0305..0000000
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<component name="InspectionProjectProfileManager">
-  <profile version="1.0">
-    <option name="myName" value="Project Default" />
-    <inspection_tool class="LongLine" enabled="true" level="WARNING" enabled_by_default="true">
-      <scope name="*.c" level="WARNING" enabled="false" />
-    </inspection_tool>
-    <inspection_tool class="PyArgumentListInspection" enabled="true" level="WARNING" enabled_by_default="true">
-      <scope name="gui" level="WARNING" enabled="false" />
-    </inspection_tool>
-    <inspection_tool class="PyAttributeOutsideInitInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
-    <inspection_tool class="PyBroadExceptionInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
-    <inspection_tool class="PyCallByClassInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
-      <scope name="gui" level="WEAK WARNING" enabled="false" />
-    </inspection_tool>
-    <inspection_tool class="PyClassicStyleClassInspection" enabled="true" level="WARNING" enabled_by_default="true">
-      <scope name="gui" level="WARNING" enabled="false" />
-    </inspection_tool>
-    <inspection_tool class="PyCompatibilityInspection" enabled="true" level="WARNING" enabled_by_default="true">
-      <option name="ourVersions">
-        <value>
-          <list size="1">
-            <item index="0" class="java.lang.String" itemvalue="3.5" />
-          </list>
-        </value>
-      </option>
-    </inspection_tool>
-    <inspection_tool class="PyMandatoryEncodingInspection" enabled="true" level="WARNING" enabled_by_default="true" />
-    <inspection_tool class="PyMissingOrEmptyDocstringInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
-      <scope name="gui" level="WEAK WARNING" enabled="false" />
-    </inspection_tool>
-    <inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
-      <scope name="gui" level="WARNING" enabled="false">
-        <option name="ignoredPackages">
-          <value>
-            <list size="0" />
-          </value>
-        </option>
-      </scope>
-      <scope name="scripts" level="WARNING" enabled="true">
-        <option name="ignoredPackages">
-          <value>
-            <list size="2">
-              <item index="0" class="java.lang.String" itemvalue="pylab" />
-              <item index="1" class="java.lang.String" itemvalue="tqdm" />
-            </list>
-          </value>
-        </option>
-      </scope>
-      <option name="ignoredPackages">
-        <value>
-          <list size="1">
-            <item index="0" class="java.lang.String" itemvalue="hyperspy" />
-          </list>
-        </value>
-      </option>
-    </inspection_tool>
-    <inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
-      <scope name="__init__" level="WEAK WARNING" enabled="true">
-        <option name="ignoredErrors">
-          <list>
-            <option value="E402" />
-          </list>
-        </option>
-      </scope>
-      <option name="ignoredErrors">
-        <list>
-          <option value="W503" />
-        </list>
-      </option>
-    </inspection_tool>
-    <inspection_tool class="PyPep8NamingInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
-    <inspection_tool class="PyShadowingNamesInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
-    <inspection_tool class="PyTypeCheckerInspection" enabled="false" level="WARNING" enabled_by_default="false" />
-    <inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
-      <scope name="__init__" level="WARNING" enabled="false" />
-      <option name="ignoredIdentifiers">
-        <list>
-          <option value="multiprocessing" />
-          <option value="hyperspy.api" />
-        </list>
-      </option>
-    </inspection_tool>
-    <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
-      <option name="processCode" value="true" />
-      <option name="processLiterals" value="true" />
-      <option name="processComments" value="true" />
-    </inspection_tool>
-    <inspection_tool class="TodoComment" enabled="false" level="INFO" enabled_by_default="false" />
-  </profile>
-</component>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
deleted file mode 100644
index 6933c1e..0000000
--- a/.idea/inspectionProfiles/profiles_settings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<component name="InspectionProjectProfileManager">
-  <settings>
-    <option name="PROJECT_PROFILE" value="Project Default" />
-    <option name="USE_PROJECT_PROFILE" value="true" />
-    <version value="1.0" />
-  </settings>
-</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 2cc28d3..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
-    <OptionsSetting value="true" id="Add" />
-    <OptionsSetting value="true" id="Remove" />
-    <OptionsSetting value="true" id="Checkout" />
-    <OptionsSetting value="true" id="Update" />
-    <OptionsSetting value="true" id="Status" />
-    <OptionsSetting value="true" id="Edit" />
-    <ConfirmationsSetting value="0" id="Add" />
-    <ConfirmationsSetting value="0" id="Remove" />
-  </component>
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.11 (C:\Anaconda2\python.exe)" project-jdk-type="Python SDK" />
-</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 77d9492..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/../HyperSpy/.idea/HyperSpy.iml" filepath="$PROJECT_DIR$/../HyperSpy/.idea/HyperSpy.iml" />
-      <module fileurl="file://$PROJECT_DIR$/../Jutil/.idea/Jutil.iml" filepath="$PROJECT_DIR$/../Jutil/.idea/Jutil.iml" />
-      <module fileurl="file://$PROJECT_DIR$/../Publications/.idea/Publications.iml" filepath="$PROJECT_DIR$/../Publications/.idea/Publications.iml" />
-      <module fileurl="file://$PROJECT_DIR$/.idea/Pyramid.iml" filepath="$PROJECT_DIR$/.idea/Pyramid.iml" />
-      <module fileurl="file://$PROJECT_DIR$/../Script-Vault/.idea/Script-Vault.iml" filepath="$PROJECT_DIR$/../Script-Vault/.idea/Script-Vault.iml" />
-    </modules>
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/scopes/__c.xml b/.idea/scopes/__c.xml
deleted file mode 100644
index 29b9103..0000000
--- a/.idea/scopes/__c.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<component name="DependencyValidationManager">
-  <scope name="*.c" pattern="file[Pyramid]:pyramid/numcore/*.c" />
-</component>
\ No newline at end of file
diff --git a/.idea/scopes/__init__.xml b/.idea/scopes/__init__.xml
deleted file mode 100644
index 067b2ec..0000000
--- a/.idea/scopes/__init__.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<component name="DependencyValidationManager">
-  <scope name="__init__" pattern="file[Pyramid]:pyramid/__init__.py" />
-</component>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 206c387..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="" vcs="hg4idea" />
-    <mapping directory="$PROJECT_DIR$/../Jutil" vcs="hg4idea" />
-    <mapping directory="$PROJECT_DIR$/../Publications" vcs="hg4idea" />
-    <mapping directory="$PROJECT_DIR$/../Script-Vault" vcs="hg4idea" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
deleted file mode 100644
index 50f66b1..0000000
--- a/.idea/workspace.xml
+++ /dev/null
@@ -1,1500 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="AnalysisUIOptions">
-    <option name="SCOPE_TYPE" value="3" />
-    <option name="ANALYSIS_IN_BACKGROUND" value="true" />
-  </component>
-  <component name="ChangeListManager">
-    <list default="true" id="990252ab-aff5-4ac2-a857-b193d2c46b18" name="Default" comment="Updated long overdue scripts to work with new layout and refactoring!">
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/kernel.py" afterPath="$PROJECT_DIR$/pyramid/kernel.py" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/../Script-Vault/scripts - Alt/test methods/compare_pixel_fields.py" afterPath="$PROJECT_DIR$/../Script-Vault/scripts - Alt/test methods/compare_pixel_fields.py" />
-    </list>
-    <ignored path="Pyramid.iws" />
-    <ignored path=".idea/workspace.xml" />
-    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
-    <option name="TRACKING_ENABLED" value="true" />
-    <option name="SHOW_DIALOG" value="false" />
-    <option name="HIGHLIGHT_CONFLICTS" value="true" />
-    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
-    <option name="LAST_RESOLUTION" value="IGNORE" />
-  </component>
-  <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
-  <component name="CreatePatchCommitExecutor">
-    <option name="PATCH_PATH" value="" />
-  </component>
-  <component name="ErrorTreeViewConfiguration">
-    <option name="autoscrollToSource" value="true" />
-    <option name="IS_AUTOSCROLL_TO_SOURCE" value="true" />
-  </component>
-  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
-  <component name="FavoritesManager">
-    <favorites_list name="Pyramid" />
-  </component>
-  <component name="FileEditorManager">
-    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="example_joern.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/example_joern.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="patrick_nanowire_reconstruction.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/patrick_nanowire_reconstruction.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="patrick_nanowire_reconstruction_simulation.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/patrick_nanowire_reconstruction_simulation.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="result.pickle" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/result.pickle">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="rueffner_file.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/rueffner_file.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="vtk_conversion_nanowire_full.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/vtk_conversion_nanowire_full.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="reconstruct_random_pixels.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/reconstruction/reconstruct_random_pixels.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="reconstruction_linear_test.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/reconstruction/reconstruction_linear_test.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="reconstruction_linear_test_batch.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/reconstruction/reconstruction_linear_test_batch.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="reconstruction_sparse_cg_singular_values.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/reconstruction/reconstruction_sparse_cg_singular_values.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="compare_kernels.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/test methods/compare_kernels.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="compare_methods.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/test methods/compare_methods.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="compare_pixel_fields.py" pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/test methods/compare_pixel_fields.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.37866354">
-              <caret line="79" column="31" selection-start-line="79" selection-start-column="31" selection-end-line="79" selection-end-column="31" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="kernel.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/pyramid/kernel.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="112" column="43" selection-start-line="112" selection-start-column="43" selection-end-line="112" selection-end-column="43" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="phasemap.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/pyramid/phasemap.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="154" column="16" selection-start-line="154" selection-start-column="16" selection-end-line="154" selection-end-column="16" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="pydev_run_in_console.py" pinned="false" current-in-tab="false">
-        <entry file="file://$APPLICATION_HOME_DIR$/helpers/pydev/pydev_run_in_console.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0">
-              <caret line="28" column="0" selection-start-line="28" selection-start-column="0" selection-end-line="28" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-    </leaf>
-  </component>
-  <component name="FileTemplateManagerImpl">
-    <option name="RECENT_TEMPLATES">
-      <list>
-        <option value="Python Script" />
-      </list>
-    </option>
-  </component>
-  <component name="HgUpdateConfigurationSettings">
-    <option name="updateType" value="MERGE" />
-    <option name="shouldCommitAfterMerge" value="true" />
-  </component>
-  <component name="IdeDocumentHistory">
-    <option name="CHANGED_PATHS">
-      <list>
-        <option value="$PROJECT_DIR$/../HyperSpy/hyperspy/tests/io/test_emd.py" />
-        <option value="$PROJECT_DIR$/pyramid/__init__.py" />
-        <option value="C:/Anaconda2/Lib/site-packages/nbformat/__init__.py" />
-        <option value="C:/Anaconda2/Lib/site-packages/jsonschema/validators.py" />
-        <option value="$PROJECT_DIR$/../HyperSpy/hyperspy/__init__.py" />
-        <option value="$APPLICATION_HOME_DIR$/helpers/pydev/pydev_ipython/qt_loaders.py" />
-        <option value="C:/Anaconda2/Lib/pkgutil.py" />
-        <option value="C:/Anaconda2/Lib/site-packages/nbconvert/exporters/pdf.py" />
-        <option value="C:/Anaconda2/Lib/subprocess.py" />
-        <option value="$PROJECT_DIR$/scripts/reconstruction/reconstruction_3d_from_magdata.py" />
-        <option value="$PROJECT_DIR$/scripts/reconstruction/reconstruction_2d_from_phasemap.py" />
-        <option value="$PROJECT_DIR$/scripts/phasemap/phasemap_tilt_series.py" />
-        <option value="$PROJECT_DIR$/scripts/phasemap/phasemap_from_raw.py" />
-        <option value="$PROJECT_DIR$/scripts/phasemap/phasemap_from_image.py" />
-        <option value="$PROJECT_DIR$/scripts/phasemap/phasemap_projection_arbitrary.py" />
-        <option value="$PROJECT_DIR$/scripts/phasemap/phasemap_from_dm3.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magdata_from_vtk.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magdata_from_txtfortran.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magdata_from_dat.py" />
-        <option value="$PROJECT_DIR$/pyramid/fielddata.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_core_shell_sphere.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_array_sphere_disc_slab.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_horseshoe.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_core_shell_disc.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_paper2_vortex_slab.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_vortex_slab.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_random_slabs.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_random_pixels.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_alternating_filaments.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_singularity.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_homog_filament.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_vortex_sphere.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_flat_homog_slab.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_pyramid_logo.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_flat_vortex_slab.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_vortex_disc.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_homog_disc.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_homog_pixel.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_homog_slab.py" />
-        <option value="$PROJECT_DIR$/scripts/magdata/magcreator/create_homog_sphere.py" />
-        <option value="$PROJECT_DIR$/setup.py" />
-        <option value="$PROJECT_DIR$/scripts/gui/phasemap_creator.py" />
-        <option value="$PROJECT_DIR$/pyramid/reconstruction.py" />
-        <option value="$PROJECT_DIR$/pyramid/projector.py" />
-        <option value="$PROJECT_DIR$/pyramid/phasemapper.py" />
-        <option value="$PROJECT_DIR$/pyramid/phasemap.py" />
-        <option value="$PROJECT_DIR$/pyramid/diagnostics.py" />
-        <option value="$PROJECT_DIR$/pyramid/dataset.py" />
-        <option value="$PROJECT_DIR$/scripts/gui/mag_slicer.py" />
-        <option value="$PROJECT_DIR$/pyramid/kernel.py" />
-        <option value="$PROJECT_DIR$/../Script-Vault/scripts - Alt/test methods/compare_pixel_fields.py" />
-      </list>
-    </option>
-  </component>
-  <component name="NamedScopeManager">
-    <scope name="scripts" pattern="file[Pyramid]:scripts/*" />
-    <scope name="gui" pattern="file[Pyramid]:scripts/gui/*" />
-    <order>
-      <scope name="__init__" />
-      <scope name="*.c" />
-    </order>
-  </component>
-  <component name="ProjectFrameBounds">
-    <option name="x" value="-8" />
-    <option name="y" value="-8" />
-    <option name="width" value="1936" />
-    <option name="height" value="1056" />
-  </component>
-  <component name="ProjectInspectionProfilesVisibleTreeState">
-    <entry key="Project Default">
-      <profile-state>
-        <expanded-state>
-          <State>
-            <id />
-          </State>
-          <State>
-            <id>General</id>
-          </State>
-          <State>
-            <id>Python</id>
-          </State>
-          <State>
-            <id>Spelling</id>
-          </State>
-        </expanded-state>
-        <selected-state>
-          <State>
-            <id>PyArgumentListInspection</id>
-          </State>
-        </selected-state>
-      </profile-state>
-    </entry>
-  </component>
-  <component name="ProjectLevelVcsManager" settingsEditedManually="true">
-    <OptionsSetting value="true" id="Add" />
-    <OptionsSetting value="true" id="Remove" />
-    <OptionsSetting value="true" id="Checkout" />
-    <OptionsSetting value="true" id="Update" />
-    <OptionsSetting value="true" id="Status" />
-    <OptionsSetting value="true" id="Edit" />
-    <ConfirmationsSetting value="0" id="Add" />
-    <ConfirmationsSetting value="0" id="Remove" />
-  </component>
-  <component name="ProjectView">
-    <navigator currentView="ProjectPane" proportions="" version="1">
-      <flattenPackages />
-      <showMembers />
-      <showModules />
-      <showLibraryContents />
-      <hideEmptyPackages />
-      <abbreviatePackageNames />
-      <autoscrollToSource />
-      <autoscrollFromSource />
-      <sortByType />
-      <manualOrder />
-      <foldersAlwaysOnTop value="true" />
-    </navigator>
-    <panes>
-      <pane id="Scratches" />
-      <pane id="ProjectPane">
-        <subPane>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Script-Vault" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Script-Vault" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="scripts - Alt" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="test methods" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Script-Vault" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="scripts - Alt" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="reconstruction" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Script-Vault" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="scripts - Alt" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="collaborations" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-        </subPane>
-      </pane>
-      <pane id="Scope" />
-      <pane id="ColorIdeProjectViewPane">
-        <subPane>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="Pyramid" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-        </subPane>
-      </pane>
-    </panes>
-  </component>
-  <component name="PropertiesComponent">
-    <property name="settings.editor.selected.configurable" value="project.scopes" />
-    <property name="settings.editor.splitter.proportion" value="0.2" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$/files/vecdata" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_flatWidth0" value="44" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_flatOrder0" value="0" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_flatWidth1" value="64" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_flatOrder1" value="1" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_flatWidth2" value="65" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_flatOrder2" value="2" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_flatWidth3" value="625" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_flatOrder3" value="3" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_treeWidth0" value="164" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_treeOrder0" value="0" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_treeWidth1" value="163" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_treeOrder1" value="1" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_treeWidth2" value="165" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_treeOrder2" value="2" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_treeWidth3" value="306" />
-    <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_treeOrder3" value="3" />
-    <property name="last.edited.regexp" value="asdf&#10;aasfasf.version_info&#10;" />
-    <property name="restartRequiresConfirmation" value="false" />
-    <property name="SearchEverywhereHistoryKey" value="nbconvert&#9;null&#9;null&#10;boto.vendored.six._SixMetaPathImporter&#9;null&#9;null&#10;pkg_resources.extern.VendorImporter&#9;null&#9;null&#10;colorwheel&#9;null&#9;null" />
-  </component>
-  <component name="Push.Settings">
-    <excluded-roots>
-      <path value="$PROJECT_DIR$/../HyperSpy" />
-    </excluded-roots>
-  </component>
-  <component name="PyConsoleOptionsProvider">
-    <option name="myPythonConsoleState">
-      <console-settings custom-start-script="# coding: utf-8&#10;&quot;&quot;&quot;Startup!&quot;&quot;&quot;&#10;from __future__ import division&#10;import sys&#10;import os&#10;import pdb&#10;import hyperspy.api as hs&#10;import pyramid&#10;from pyramid import *&#10;import pyramid.analytic as an&#10;import pyramid.magcreator as mc&#10;import pyramid.reconstruction as rc&#10;import jutil&#10;import numpy as np&#10;import scipy as sp&#10;import matplotlib as mpl&#10;import matplotlib.pyplot as plt&#10;from pylab import *&#10;import logging.config&#10;logging.config.fileConfig(LOGGING_CONFIG, disable_existing_loggers=False)&#10;ion()  # Enable Matplotlib's interactive mode&#10;sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;" module-name="Pyramid" is-module-sdk="true" working-directory="$PROJECT_DIR$/files/vecdata">
-        <option name="myCustomStartScript" value="# coding: utf-8&#10;&quot;&quot;&quot;Startup!&quot;&quot;&quot;&#10;from __future__ import division&#10;import sys&#10;import os&#10;import pdb&#10;import hyperspy.api as hs&#10;import pyramid&#10;from pyramid import *&#10;import pyramid.analytic as an&#10;import pyramid.magcreator as mc&#10;import pyramid.reconstruction as rc&#10;import jutil&#10;import numpy as np&#10;import scipy as sp&#10;import matplotlib as mpl&#10;import matplotlib.pyplot as plt&#10;from pylab import *&#10;import logging.config&#10;logging.config.fileConfig(LOGGING_CONFIG, disable_existing_loggers=False)&#10;ion()  # Enable Matplotlib's interactive mode&#10;sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;" />
-        <option name="myUseModuleSdk" value="true" />
-        <option name="myModuleName" value="Pyramid" />
-        <option name="myWorkingDirectory" value="$PROJECT_DIR$/files/vecdata" />
-        <option name="myAddSourceRoots" value="true" />
-      </console-settings>
-    </option>
-  </component>
-  <component name="PyDebuggerOptionsProvider">
-    <option name="mySaveCallSignatures" value="true" />
-  </component>
-  <component name="RecentsManager">
-    <key name="MoveFile.RECENT_KEYS">
-      <recent name="C:\Users\Jan\Home\PhD Thesis\Projects\Script-Vault" />
-    </key>
-  </component>
-  <component name="RunManager" selected="Python.compare_pixel_fields">
-    <configuration default="false" name="config" type="PythonConfigurationType" factoryName="Python" temporary="true">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs>
-        <env name="PYTHONUNBUFFERED" value="1" />
-      </envs>
-      <option name="SDK_HOME" value="C:\Anaconda2\python.exe" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/pyramid" />
-      <option name="IS_MODULE_SDK" value="true" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/pyramid/config.py" />
-      <option name="PARAMETERS" value="" />
-      <option name="SHOW_COMMAND_LINE" value="true" />
-      <method />
-    </configuration>
-    <configuration default="false" name="colormap" type="PythonConfigurationType" factoryName="Python" temporary="true">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs>
-        <env name="PYTHONUNBUFFERED" value="1" />
-      </envs>
-      <option name="SDK_HOME" value="C:\Anaconda2\python.exe" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/pyramid" />
-      <option name="IS_MODULE_SDK" value="true" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/pyramid/colormap.py" />
-      <option name="PARAMETERS" value="" />
-      <option name="SHOW_COMMAND_LINE" value="true" />
-      <method />
-    </configuration>
-    <configuration default="false" name="analytic" type="PythonConfigurationType" factoryName="Python" temporary="true">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs>
-        <env name="PYTHONUNBUFFERED" value="1" />
-      </envs>
-      <option name="SDK_HOME" value="C:\Anaconda2\python.exe" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/pyramid" />
-      <option name="IS_MODULE_SDK" value="true" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/pyramid/analytic.py" />
-      <option name="PARAMETERS" value="" />
-      <option name="SHOW_COMMAND_LINE" value="true" />
-      <method />
-    </configuration>
-    <configuration default="false" name="__init__" type="PythonConfigurationType" factoryName="Python" temporary="true">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs>
-        <env name="PYTHONUNBUFFERED" value="1" />
-      </envs>
-      <option name="SDK_HOME" value="C:\Anaconda2\python.exe" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/pyramid" />
-      <option name="IS_MODULE_SDK" value="true" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/pyramid/__init__.py" />
-      <option name="PARAMETERS" value="" />
-      <option name="SHOW_COMMAND_LINE" value="true" />
-      <method />
-    </configuration>
-    <configuration default="false" name="compare_pixel_fields" type="PythonConfigurationType" factoryName="Python" temporary="true">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs>
-        <env name="PYTHONUNBUFFERED" value="1" />
-      </envs>
-      <option name="SDK_HOME" value="C:\Anaconda2\python.exe" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../Script-Vault/scripts - Alt/test methods" />
-      <option name="IS_MODULE_SDK" value="true" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Script-Vault" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/../Script-Vault/scripts - Alt/test methods/compare_pixel_fields.py" />
-      <option name="PARAMETERS" value="" />
-      <option name="SHOW_COMMAND_LINE" value="true" />
-      <method />
-    </configuration>
-    <configuration default="true" type="CompoundRunConfigurationType" factoryName="Compound Run Configuration">
-      <method />
-    </configuration>
-    <configuration default="true" type="PythonConfigurationType" factoryName="Python">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs>
-        <env name="PYTHONUNBUFFERED" value="1" />
-      </envs>
-      <option name="SDK_HOME" value="C:\Anaconda2\python.exe" />
-      <option name="WORKING_DIRECTORY" value="" />
-      <option name="IS_MODULE_SDK" value="false" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="" />
-      <option name="PARAMETERS" value="" />
-      <option name="SHOW_COMMAND_LINE" value="true" />
-      <method />
-    </configuration>
-    <configuration default="true" type="docs" factoryName="Sphinx task">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs />
-      <option name="SDK_HOME" value="" />
-      <option name="WORKING_DIRECTORY" value="" />
-      <option name="IS_MODULE_SDK" value="false" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="docutils_input_file" value="" />
-      <option name="docutils_output_file" value="" />
-      <option name="docutils_params" value="" />
-      <option name="docutils_task" value="" />
-      <option name="docutils_open_in_browser" value="false" />
-      <method />
-    </configuration>
-    <configuration default="true" type="tests" factoryName="Attests">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs />
-      <option name="SDK_HOME" value="" />
-      <option name="WORKING_DIRECTORY" value="" />
-      <option name="IS_MODULE_SDK" value="false" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="" />
-      <option name="CLASS_NAME" value="" />
-      <option name="METHOD_NAME" value="" />
-      <option name="FOLDER_NAME" value="" />
-      <option name="TEST_TYPE" value="TEST_SCRIPT" />
-      <option name="PATTERN" value="" />
-      <option name="USE_PATTERN" value="false" />
-      <method />
-    </configuration>
-    <configuration default="true" type="tests" factoryName="Doctests">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs />
-      <option name="SDK_HOME" value="" />
-      <option name="WORKING_DIRECTORY" value="" />
-      <option name="IS_MODULE_SDK" value="false" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="" />
-      <option name="CLASS_NAME" value="" />
-      <option name="METHOD_NAME" value="" />
-      <option name="FOLDER_NAME" value="" />
-      <option name="TEST_TYPE" value="TEST_SCRIPT" />
-      <option name="PATTERN" value="" />
-      <option name="USE_PATTERN" value="false" />
-      <method />
-    </configuration>
-    <configuration default="true" type="tests" factoryName="Nosetests">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs />
-      <option name="SDK_HOME" value="" />
-      <option name="WORKING_DIRECTORY" value="" />
-      <option name="IS_MODULE_SDK" value="false" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="" />
-      <option name="CLASS_NAME" value="" />
-      <option name="METHOD_NAME" value="" />
-      <option name="FOLDER_NAME" value="" />
-      <option name="TEST_TYPE" value="TEST_SCRIPT" />
-      <option name="PATTERN" value="" />
-      <option name="USE_PATTERN" value="false" />
-      <option name="PARAMS" value="" />
-      <option name="USE_PARAM" value="false" />
-      <method />
-    </configuration>
-    <configuration default="true" type="tests" factoryName="Unittests">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs />
-      <option name="SDK_HOME" value="C:\Anaconda2\python.exe" />
-      <option name="WORKING_DIRECTORY" value="" />
-      <option name="IS_MODULE_SDK" value="false" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="" />
-      <option name="CLASS_NAME" value="" />
-      <option name="METHOD_NAME" value="" />
-      <option name="FOLDER_NAME" value="" />
-      <option name="TEST_TYPE" value="TEST_FOLDER" />
-      <option name="PATTERN" value="" />
-      <option name="USE_PATTERN" value="false" />
-      <option name="PUREUNITTEST" value="true" />
-      <option name="PARAMS" value="" />
-      <option name="USE_PARAM" value="false" />
-      <method />
-    </configuration>
-    <configuration default="true" type="tests" factoryName="py.test">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs />
-      <option name="SDK_HOME" value="" />
-      <option name="WORKING_DIRECTORY" value="" />
-      <option name="IS_MODULE_SDK" value="false" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="" />
-      <option name="CLASS_NAME" value="" />
-      <option name="METHOD_NAME" value="" />
-      <option name="FOLDER_NAME" value="" />
-      <option name="TEST_TYPE" value="TEST_SCRIPT" />
-      <option name="PATTERN" value="" />
-      <option name="USE_PATTERN" value="false" />
-      <option name="testToRun" value="" />
-      <option name="keywords" value="" />
-      <option name="params" value="" />
-      <option name="USE_PARAM" value="false" />
-      <option name="USE_KEYWORD" value="false" />
-      <method />
-    </configuration>
-    <configuration default="false" name="mag_slicer" type="PythonConfigurationType" factoryName="Python">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs>
-        <env name="PYTHONUNBUFFERED" value="1" />
-      </envs>
-      <option name="SDK_HOME" value="C:\Anaconda2\python.exe" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/scripts/gui" />
-      <option name="IS_MODULE_SDK" value="true" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Script-Vault" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/scripts/gui/mag_slicer.py" />
-      <option name="PARAMETERS" value="" />
-      <option name="SHOW_COMMAND_LINE" value="true" />
-      <method />
-    </configuration>
-    <configuration default="false" name="fieldconverter" type="PythonConfigurationType" factoryName="Python" singleton="true">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs>
-        <env name="PYTHONUNBUFFERED" value="1" />
-      </envs>
-      <option name="SDK_HOME" value="" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/pyramid" />
-      <option name="IS_MODULE_SDK" value="true" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/pyramid/fieldconverter.py" />
-      <option name="PARAMETERS" value="" />
-      <option name="SHOW_COMMAND_LINE" value="true" />
-      <method />
-    </configuration>
-    <configuration default="false" name="Pyramid Sphinx" type="docs" factoryName="Sphinx task" singleton="true">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs />
-      <option name="SDK_HOME" value="C:\Anaconda2\python.exe" />
-      <option name="WORKING_DIRECTORY" value="" />
-      <option name="IS_MODULE_SDK" value="false" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="docutils_input_file" value="C:\Users\Jan\Home\PhD Thesis\Projects\Pyramid\docs" />
-      <option name="docutils_output_file" value="C:\Users\Jan\Home\PhD Thesis\Projects\Pyramid\docs\_build" />
-      <option name="docutils_params" value="" />
-      <option name="docutils_task" value="html" />
-      <option name="docutils_open_in_browser" value="false" />
-      <method />
-    </configuration>
-    <configuration default="false" name="Pyramid Tests" type="tests" factoryName="Nosetests" singleton="true">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs />
-      <option name="SDK_HOME" value="C:\Anaconda2\python.exe" />
-      <option name="WORKING_DIRECTORY" value="" />
-      <option name="IS_MODULE_SDK" value="false" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="Pyramid" />
-      <option name="SCRIPT_NAME" value="" />
-      <option name="CLASS_NAME" value="" />
-      <option name="METHOD_NAME" value="" />
-      <option name="FOLDER_NAME" value="$PROJECT_DIR$/pyramid/tests" />
-      <option name="TEST_TYPE" value="TEST_FOLDER" />
-      <option name="PATTERN" value="" />
-      <option name="USE_PATTERN" value="false" />
-      <option name="PARAMS" value="" />
-      <option name="USE_PARAM" value="false" />
-      <method />
-    </configuration>
-    <list size="9">
-      <item index="0" class="java.lang.String" itemvalue="Python.mag_slicer" />
-      <item index="1" class="java.lang.String" itemvalue="Python.fieldconverter" />
-      <item index="2" class="java.lang.String" itemvalue="Python docs.Pyramid Sphinx" />
-      <item index="3" class="java.lang.String" itemvalue="Python tests.Pyramid Tests" />
-      <item index="4" class="java.lang.String" itemvalue="Python.config" />
-      <item index="5" class="java.lang.String" itemvalue="Python.colormap" />
-      <item index="6" class="java.lang.String" itemvalue="Python.analytic" />
-      <item index="7" class="java.lang.String" itemvalue="Python.__init__" />
-      <item index="8" class="java.lang.String" itemvalue="Python.compare_pixel_fields" />
-    </list>
-    <recent_temporary>
-      <list size="5">
-        <item index="0" class="java.lang.String" itemvalue="Python.compare_pixel_fields" />
-        <item index="1" class="java.lang.String" itemvalue="Python.__init__" />
-        <item index="2" class="java.lang.String" itemvalue="Python.analytic" />
-        <item index="3" class="java.lang.String" itemvalue="Python.colormap" />
-        <item index="4" class="java.lang.String" itemvalue="Python.config" />
-      </list>
-    </recent_temporary>
-  </component>
-  <component name="ShelveChangesManager" show_recycled="false" />
-  <component name="StructureViewFactory">
-    <option name="AUTOSCROLL_FROM_SOURCE" value="true" />
-    <option name="ACTIVE_ACTIONS" value=",SHOW_INHERITED,SHOW_FIELDS" />
-  </component>
-  <component name="SvnConfiguration">
-    <configuration>C:\Users\Jan\AppData\Roaming\Subversion</configuration>
-  </component>
-  <component name="TaskManager">
-    <task active="true" id="Default" summary="Default task">
-      <changelist id="990252ab-aff5-4ac2-a857-b193d2c46b18" name="Default" comment="" />
-      <created>1455975387282</created>
-      <option name="number" value="Default" />
-      <updated>1455975387282</updated>
-    </task>
-    <task id="LOCAL-00001" summary="First use of PyCharms!&#10;Added .idea folder with PyCharms settings.&#10;Changed icon.ico (now round).&#10;PhaseMap and MagData: Now use h5py to load/save data (via HyperSpy).&#10;Deprecated loading routines (x3d) are gone now!&#10;tests: All tests now reflect this change.&#10;scripts: Streamlined some scripts. Many are now in separate project:&#10;Script-Vault&#10;">
-      <created>1456134329804</created>
-      <option name="number" value="00001" />
-      <option name="project" value="LOCAL" />
-      <updated>1456134329804</updated>
-    </task>
-    <task id="LOCAL-00002" summary="Added icon and PyCharm files!&#10;">
-      <created>1456180505764</created>
-      <option name="number" value="00002" />
-      <option name="project" value="LOCAL" />
-      <updated>1456180505764</updated>
-    </task>
-    <task id="LOCAL-00003" summary="First Publications commit!&#10;">
-      <created>1456181242955</created>
-      <option name="number" value="00003" />
-      <option name="project" value="LOCAL" />
-      <updated>1456181242955</updated>
-    </task>
-    <task id="LOCAL-00004" summary="Added old backup copies (sort out in future)!&#10;">
-      <created>1456181370435</created>
-      <option name="number" value="00004" />
-      <option name="project" value="LOCAL" />
-      <updated>1456181370435</updated>
-    </task>
-    <task id="LOCAL-00005" summary="Hopefully made hyperspy import (now at beginning of pyramid package) work!&#10;Added PyCharm files!&#10;Commit before Reformatting with PyCharms!">
-      <created>1456182073457</created>
-      <option name="number" value="00005" />
-      <option name="project" value="LOCAL" />
-      <updated>1456182073457</updated>
-    </task>
-    <task id="LOCAL-00006" summary="Hopefully made hyperspy import (now at beginning of pyramid package) work!&#10;Added PyCharm files!&#10;Commit before Reformatting with PyCharms!">
-      <created>1456182098486</created>
-      <option name="number" value="00006" />
-      <option name="project" value="LOCAL" />
-      <updated>1456182098486</updated>
-    </task>
-    <task id="LOCAL-00007" summary="New branch: new signals for holographic analysis!">
-      <created>1456209518394</created>
-      <option name="number" value="00007" />
-      <option name="project" value="LOCAL" />
-      <updated>1456209518394</updated>
-    </task>
-    <task id="LOCAL-00008" summary="Commit after Reformatting with PyCharms!">
-      <created>1456703900364</created>
-      <option name="number" value="00008" />
-      <option name="project" value="LOCAL" />
-      <updated>1456703900364</updated>
-    </task>
-    <task id="LOCAL-00009" summary="Added fieldconverter module!&#10;fieldconverter: methods to convert M to A to B&#10;magdata: a bit more parameters for quiver_plot3d(), added contour_plot3d()&#10;phasemapper: pm() extended for different projections (not just simple)&#10;kernel: u and v switched (now named after the unit magnetization direction, which makes much more sense)">
-      <created>1457095777824</created>
-      <option name="number" value="00009" />
-      <option name="project" value="LOCAL" />
-      <updated>1457095777824</updated>
-    </task>
-    <task id="LOCAL-00010" summary="Refactoring: Replaced MagData with VectorData and added ScalarData class (and common superclass FieldData).&#10;magnitude is now called field (which is more appropriate)&#10;projector now uses FieldData to process both vector and scalar data (foundation was in place before)">
-      <created>1457519303095</created>
-      <option name="number" value="00010" />
-      <option name="project" value="LOCAL" />
-      <updated>1457519303095</updated>
-    </task>
-    <task id="LOCAL-00011" summary="Refactoring: Replaced MagData with VectorData and added ScalarData class (and common superclass FieldData).&#10;magnitude is now called field (which is more appropriate)&#10;projector now uses FieldData to process both vector and scalar data (foundation was in place before)">
-      <created>1457523017286</created>
-      <option name="number" value="00011" />
-      <option name="project" value="LOCAL" />
-      <updated>1457523017286</updated>
-    </task>
-    <task id="LOCAL-00012" summary="Refactoring: Replaced MagData with VectorData and added ScalarData class (and common superclass FieldData).&#10;magnitude is now called field (which is more appropriate)&#10;projector now uses FieldData to process both vector and scalar data (foundation was in place before)">
-      <created>1457523121814</created>
-      <option name="number" value="00012" />
-      <option name="project" value="LOCAL" />
-      <updated>1457523121814</updated>
-    </task>
-    <task id="LOCAL-00013" summary="Updated long overdue scripts to work with new layout and refactoring!">
-      <created>1458723675103</created>
-      <option name="number" value="00013" />
-      <option name="project" value="LOCAL" />
-      <updated>1458723675103</updated>
-    </task>
-    <option name="localTasksCounter" value="14" />
-    <servers />
-  </component>
-  <component name="TestHistory">
-    <history-entry file="Nosetests_in_test_emd - 2016.03.11 at 09h 20m 49s.xml">
-      <configuration name="Nosetests in test_emd" configurationId="tests" />
-    </history-entry>
-    <history-entry file="Nosetests_in_test_emd - 2016.03.11 at 09h 30m 44s.xml">
-      <configuration name="Nosetests in test_emd" configurationId="tests" />
-    </history-entry>
-    <history-entry file="Pyramid_Tests - 2016.03.08 at 21h 37m 05s.xml">
-      <configuration name="Pyramid Tests" configurationId="tests" />
-    </history-entry>
-    <history-entry file="Pyramid_Tests - 2016.03.09 at 00h 21m 59s.xml">
-      <configuration name="Pyramid Tests" configurationId="tests" />
-    </history-entry>
-    <history-entry file="Pyramid_Tests - 2016.03.09 at 00h 33m 38s.xml">
-      <configuration name="Pyramid Tests" configurationId="tests" />
-    </history-entry>
-    <history-entry file="Pyramid_Tests - 2016.03.09 at 00h 47m 08s.xml">
-      <configuration name="Pyramid Tests" configurationId="tests" />
-    </history-entry>
-    <history-entry file="Pyramid_Tests - 2016.03.09 at 09h 43m 39s.xml">
-      <configuration name="Pyramid Tests" configurationId="tests" />
-    </history-entry>
-    <history-entry file="Pyramid_Tests - 2016.03.09 at 11h 07m 10s.xml">
-      <configuration name="Pyramid Tests" configurationId="tests" />
-    </history-entry>
-    <history-entry file="Pyramid_Tests - 2016.03.11 at 15h 02m 03s.xml">
-      <configuration name="Pyramid Tests" configurationId="tests" />
-    </history-entry>
-    <history-entry file="Pyramid_Tests - 2016.03.22 at 16h 50m 06s.xml">
-      <configuration name="Pyramid Tests" configurationId="tests" />
-    </history-entry>
-  </component>
-  <component name="TodoView" selected-index="3">
-    <todo-panel id="selected-file">
-      <is-autoscroll-to-source value="true" />
-    </todo-panel>
-    <todo-panel id="all">
-      <are-packages-shown value="true" />
-      <is-autoscroll-to-source value="true" />
-    </todo-panel>
-  </component>
-  <component name="ToolWindowManager">
-    <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
-    <editor active="true" />
-    <layout>
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.16897655" sideWeight="0.49186993" order="0" side_tool="false" content_ui="combo" />
-      <window_info id="TODO" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3219616" sideWeight="0.49746513" order="9" side_tool="false" content_ui="tabs" x="-33" y="355" width="1594" height="283" />
-      <window_info id="Messages" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3326226" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" />
-      <window_info id="Event Log" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.42802057" sideWeight="0.50253487" order="8" side_tool="false" content_ui="tabs" />
-      <window_info id="Python Console" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.35927504" sideWeight="0.49746513" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Version Control" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.45095947" sideWeight="0.49746513" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.35980812" sideWeight="0.49746513" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.09808102" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Terminal" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.43316194" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="Favorites" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.4224" sideWeight="0.5081301" order="11" side_tool="false" content_ui="tabs" />
-      <window_info id="Debug" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.35714287" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
-      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Inspection" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.37596402" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
-      <window_info id="Thumbnails" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="WINDOWED" visible="false" show_stripe_button="false" weight="0.3708108" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" x="6" y="307" width="1908" height="381" />
-      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
-      <window_info id="Find" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.34168443" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-    </layout>
-    <layout-to-restore>
-      <window_info id="TODO" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3219616" sideWeight="0.49746513" order="9" side_tool="false" content_ui="tabs" x="-33" y="355" width="1594" height="283" />
-      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Messages" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3326226" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" />
-      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Event Log" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.42857143" sideWeight="0.50253487" order="8" side_tool="false" content_ui="tabs" />
-      <window_info id="Inspection" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.37596402" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
-      <window_info id="Python Console" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3611825" sideWeight="0.49746513" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Version Control" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.44136462" sideWeight="0.49746513" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32334962" sideWeight="0.49746513" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Thumbnails" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="WINDOWED" visible="false" show_stripe_button="false" weight="0.3708108" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" x="6" y="307" width="1908" height="381" />
-      <window_info id="Terminal" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.43316194" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.11311054" sideWeight="0.49186993" order="0" side_tool="false" content_ui="combo" />
-      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
-      <window_info id="Find" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.34168443" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
-      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.09808102" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Favorites" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.4224" sideWeight="0.5081301" order="11" side_tool="false" content_ui="tabs" />
-      <window_info id="Debug" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32455012" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
-    </layout-to-restore>
-  </component>
-  <component name="Vcs.Log.UiProperties">
-    <option name="SHOW_ROOT_NAMES" value="true" />
-    <option name="RECENTLY_FILTERED_USER_GROUPS">
-      <collection />
-    </option>
-    <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
-      <collection />
-    </option>
-  </component>
-  <component name="VcsContentAnnotationSettings">
-    <option name="myLimit" value="2678400000" />
-  </component>
-  <component name="VcsManagerConfiguration">
-    <option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="false" />
-    <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
-    <option name="CHECK_CODE_CLEANUP_BEFORE_PROJECT_COMMIT" value="true" />
-    <confirmMoveToFailedCommit value="1" />
-    <option name="SHOW_DIRTY_RECURSIVELY" value="true" />
-    <MESSAGE value="First use of PyCharms!&#10;Added .idea folder with PyCharms settings.&#10;Changed icon.ico (now round).&#10;PhaseMap and MagData: Now use h5py to load/save data (via HyperSpy).&#10;Deprecated loading routines (x3d) are gone now!&#10;tests: All tests now reflect this change.&#10;scripts: Streamlined some scripts. Many are now in separate project:&#10;Script-Vault&#10;" />
-    <MESSAGE value="Added more signals for holographic imaging!&#10;" />
-    <MESSAGE value="Added icon and PyCharm files!&#10;" />
-    <MESSAGE value="First Publications commit!&#10;" />
-    <MESSAGE value="Added old backup copies (sort out in future)!&#10;" />
-    <MESSAGE value="Hopefully made hyperspy import (now at beginning of pyramid package) work!&#10;Added PyCharm files!&#10;Commit before Reformatting with PyCharms!" />
-    <MESSAGE value="New branch: new signals for holographic analysis!" />
-    <MESSAGE value="Commit after Reformatting with PyCharms!" />
-    <MESSAGE value="Added fieldconverter module!&#10;fieldconverter: methods to convert M to A to B&#10;magdata: a bit more parameters for quiver_plot3d(), added contour_plot3d()&#10;phasemapper: pm() extended for different projections (not just simple)&#10;kernel: u and v switched (now named after the unit magnetization direction, which makes much more sense)" />
-    <MESSAGE value="Refactoring: Replaced MagData with VectorData and added ScalarData class (and common superclass FieldData).&#10;magnitude is now called field (which is more appropriate)&#10;projector now uses FieldData to process both vector and scalar data (foundation was in place before)" />
-    <MESSAGE value="Updated long overdue scripts to work with new layout and refactoring!" />
-    <option name="LAST_COMMIT_MESSAGE" value="Updated long overdue scripts to work with new layout and refactoring!" />
-    <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" />
-    <option name="REARRANGE_BEFORE_PROJECT_COMMIT" value="true" />
-    <option name="CHANGE_BROWSER_SETTINGS">
-      <map>
-        <entry key="hg4idea">
-          <value>
-            <ChangeBrowserSettings>
-              <option name="DATE_BEFORE" />
-              <option name="DATE_AFTER" />
-            </ChangeBrowserSettings>
-          </value>
-        </entry>
-      </map>
-    </option>
-  </component>
-  <component name="XDebuggerManager">
-    <breakpoint-manager>
-      <breakpoints>
-        <line-breakpoint enabled="true" type="python-line">
-          <url>file://$PROJECT_DIR$/pyramid/phasemap.py</url>
-          <line>157</line>
-          <option name="timeStamp" value="69" />
-        </line-breakpoint>
-      </breakpoints>
-      <breakpoints-dialog>
-        <breakpoints-dialog />
-      </breakpoints-dialog>
-      <default-breakpoints>
-        <breakpoint type="python-exception">
-          <properties notifyOnTerminate="true" exception="BaseException">
-            <option name="notifyOnTerminate" value="true" />
-          </properties>
-        </breakpoint>
-      </default-breakpoints>
-      <option name="time" value="72" />
-    </breakpoint-manager>
-    <watches-manager />
-  </component>
-  <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/scripts/magdata/magcreator/create_core_shell_disc.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.567297">
-          <caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/magdata/magcreator/create_flat_vortex_slab.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.4916574">
-          <caret line="26" column="0" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/magdata/magcreator/create_core_shell_sphere.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.4538376">
-          <caret line="24" column="58" selection-start-line="24" selection-start-column="58" selection-end-line="24" selection-end-column="58" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/magdata/magcreator/create_vortex_disc.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.3214683">
-          <caret line="17" column="17" selection-start-line="17" selection-start-column="17" selection-end-line="17" selection-end-column="17" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/magdata/magcreator/create_horseshoe.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.55314535">
-          <caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/magdata/magcreator/create_homog_disc.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.46095446">
-          <caret line="25" column="0" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/magdata/magcreator/create_homog_pixel.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.29501083">
-          <caret line="16" column="27" selection-start-line="16" selection-start-column="27" selection-end-line="16" selection-end-column="27" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/magdata/magcreator/create_homog_slab.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.31344903">
-          <caret line="17" column="6" selection-start-line="17" selection-start-column="6" selection-end-line="17" selection-end-column="6" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/magdata/magcreator/create_homog_sphere.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.51626897">
-          <caret line="28" column="0" selection-start-line="28" selection-start-column="0" selection-end-line="28" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../HyperSpy/setup.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/setup.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.63123643">
-          <caret line="149" column="41" selection-start-line="149" selection-start-column="41" selection-end-line="149" selection-end-column="41" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://C:/Anaconda2/Lib/site-packages/PIL/Image.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="1301" column="0" selection-start-line="1301" selection-start-column="0" selection-end-line="1301" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/gui/phasemap_creator.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.71563345">
-          <caret line="264" column="0" selection-start-line="264" selection-start-column="0" selection-end-line="264" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/version.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.11258278">
-          <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/regularisator.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.36589405">
-          <caret line="13" column="26" selection-start-line="13" selection-start-column="26" selection-end-line="13" selection-end-column="26" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/reconstruction.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.1768202">
-          <caret line="7" column="72" selection-start-line="7" selection-start-column="72" selection-end-line="7" selection-end-column="72" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/ramp.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.43965518">
-          <caret line="18" column="73" selection-start-line="18" selection-start-column="73" selection-end-line="18" selection-end-column="73" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/quaternion.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.43965518">
-          <caret line="18" column="22" selection-start-line="18" selection-start-column="22" selection-end-line="18" selection-end-column="22" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/projector.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.418637">
-          <caret line="23" column="0" selection-start-line="23" selection-start-column="0" selection-end-line="23" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/phasemapper.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.3678161">
-          <caret line="264" column="57" selection-start-line="264" selection-start-column="57" selection-end-line="264" selection-end-column="57" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/magcreator.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.5354659">
-          <caret line="296" column="0" selection-start-line="296" selection-start-column="0" selection-end-line="296" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/logging.ini">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.26008344">
-          <caret line="11" column="25" selection-start-line="11" selection-start-column="25" selection-end-line="11" selection-end-column="25" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/forwardmodel.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.25173852">
-          <caret line="46" column="0" selection-start-line="46" selection-start-column="0" selection-end-line="46" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/fielddata.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.472879">
-          <caret line="983" column="79" selection-start-line="983" selection-start-column="79" selection-end-line="983" selection-end-column="79" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/fieldconverter.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.44923505">
-          <caret line="91" column="27" selection-start-line="91" selection-start-column="27" selection-end-line="91" selection-end-column="27" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/fft.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.40194714">
-          <caret line="17" column="14" selection-start-line="17" selection-start-column="14" selection-end-line="17" selection-end-column="14" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/dataset.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.16037735">
-          <caret line="7" column="14" selection-start-line="7" selection-start-column="14" selection-end-line="7" selection-end-column="14" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/costfunction.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.34366578">
-          <caret line="15" column="0" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/config.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.3207547">
-          <caret line="14" column="4" selection-start-line="14" selection-start-column="4" selection-end-line="14" selection-end-column="4" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/colormap.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.29784366">
-          <caret line="13" column="24" selection-start-line="13" selection-start-column="24" selection-end-line="13" selection-end-column="24" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/analytic.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.5269542">
-          <caret line="23" column="0" selection-start-line="23" selection-start-column="0" selection-end-line="23" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/__init__.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.56469005">
-          <caret line="60" column="17" selection-start-line="60" selection-start-column="17" selection-end-line="60" selection-end-column="17" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/diagnostics.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.20281996">
-          <caret line="11" column="37" selection-start-line="11" selection-start-column="37" selection-end-line="11" selection-end-column="37" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/gui/mag_slicer.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.2624729">
-          <caret line="213" column="42" selection-start-line="213" selection-start-column="42" selection-end-line="213" selection-end-column="42" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/example_joern.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/patrick_nanowire_reconstruction.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/patrick_nanowire_reconstruction_simulation.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/result.pickle">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/rueffner_file.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/collaborations/vtk_conversion_nanowire_full.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/reconstruction/reconstruct_random_pixels.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/reconstruction/reconstruction_linear_test.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/reconstruction/reconstruction_linear_test_batch.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/reconstruction/reconstruction_sparse_cg_singular_values.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/test methods/compare_kernels.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/test methods/compare_methods.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$APPLICATION_HOME_DIR$/helpers/pydev/pydev_run_in_console.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="28" column="0" selection-start-line="28" selection-start-column="0" selection-end-line="28" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../HyperSpy/hyperspy/io.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.33294255">
-          <caret line="343" column="0" selection-start-line="343" selection-start-column="0" selection-end-line="343" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/phasemap.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="154" column="16" selection-start-line="154" selection-start-column="16" selection-end-line="154" selection-end-column="16" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pyramid/kernel.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="112" column="43" selection-start-line="112" selection-start-column="43" selection-end-line="112" selection-end-column="43" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/../Script-Vault/scripts - Alt/test methods/compare_pixel_fields.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.37866354">
-          <caret line="79" column="31" selection-start-line="79" selection-start-column="31" selection-end-line="79" selection-end-column="31" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-  </component>
-  <component name="hg4idea.settings">
-    <option name="CHECK_INCOMING_OUTGOING" value="true" />
-    <option name="RECENT_HG_ROOT_PATH" value="$PROJECT_DIR$/../Script-Vault" />
-    <option name="ROOT_SYNC" value="DONT_SYNC" />
-  </component>
-  <component name="masterDetails">
-    <states>
-      <state key="ScopeChooserConfigurable.UI">
-        <settings>
-          <last-edited>gui</last-edited>
-          <splitter-proportions>
-            <option name="proportions">
-              <list>
-                <option value="0.2" />
-              </list>
-            </option>
-          </splitter-proportions>
-          <order>
-            <scope name="__init__" />
-            <scope name="*.c" />
-            <scope name="scripts" />
-            <scope name="gui" />
-          </order>
-        </settings>
-      </state>
-    </states>
-  </component>
-</project>
\ No newline at end of file
diff --git a/pyramid/__init__.py b/pyramid/__init__.py
index d75f904..48789f4 100644
--- a/pyramid/__init__.py
+++ b/pyramid/__init__.py
@@ -48,13 +48,6 @@ numcore
 
 """
 
-import logging
-_log = logging.getLogger(__name__)
-try:  # Try importing HyperSpy (here because otherwise API Errors might occur):
-    import hyperspy.api
-except ImportError:
-    _log.error('Could not load hyperspy package!')
-
 from . import analytic
 from . import magcreator
 from . import reconstruction
@@ -92,6 +85,8 @@ from .config import *
 from .version import version as __version__
 from .version import hg_revision as __hg_revision__
 
+import logging
+_log = logging.getLogger(__name__)
 _log.info("Starting Pyramid V{} HG{}".format(__version__, __hg_revision__))
 del logging
 
diff --git a/pyramid/colormap.py b/pyramid/colormap.py
index 55543fa..73147b7 100644
--- a/pyramid/colormap.py
+++ b/pyramid/colormap.py
@@ -83,7 +83,7 @@ class DirectionalColormap(colors.LinearSegmentedColormap):
     def __init__(self, inverted=False):
         self._log.debug('Calling __create_directional_colormap')
         cdict = self.CDICT_INV if inverted else self.CDICT
-        super(DirectionalColormap, self).__init__('directional_colormap', cdict, N=256)
+        super().__init__('directional_colormap', cdict, N=256)
         self._log.debug('Created ' + str(self))
 
     @classmethod
@@ -250,5 +250,5 @@ class TransparentColormap(colors.LinearSegmentedColormap):
         blue = [(0., 0., b), (1., b, 1.)]
         alpha = [(0., 0., alpha_range[0]), (1., alpha_range[1], 1.)]
         cdict = {'red': red, 'green': green, 'blue': blue, 'alpha': alpha}
-        super(TransparentColormap, self).__init__('transparent_colormap', cdict, N=256)
+        super().__init__('transparent_colormap', cdict, N=256)
         self._log.debug('Created ' + str(self))
diff --git a/pyramid/fft.py b/pyramid/fft.py
index f81d867..7ca01fc 100644
--- a/pyramid/fft.py
+++ b/pyramid/fft.py
@@ -11,10 +11,8 @@ FFT operations.
 
 """
 
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
+
+import pickle
 import logging
 import os
 
@@ -22,28 +20,19 @@ import numpy as np
 
 from pyramid.config import NTHREADS
 
-# pyFFTW depends on this
-# try:
-#     from collections import Counter
-# except ImportError:
-#     from collections_python27 import Counter
-#     import collections
-#
-#     collections.Counter = Counter
+_log = logging.getLogger(__name__)
 
 try:
     import pyfftw
-
     BACKEND = 'fftw'
 except ImportError:
     pyfftw = None
     BACKEND = 'numpy'
-    print("pyFFTW module not found. Using numpy implementation.")
+    _log.info('pyFFTW module not found. Using numpy implementation.')
 
 __all__ = ['PLANS', 'FLOAT', 'COMPLEX', 'dump_wisdom', 'load_wisdom',  # analysis:ignore
            'zeros', 'empty', 'configure_backend',
            'fftn', 'ifftn', 'rfftn', 'irfftn', 'rfftn_adj', 'irfftn_adj']
-_log = logging.getLogger(__name__)
 
 
 class FFTWCache(object):
@@ -384,6 +373,12 @@ def configure_backend(backend):
 
 
 # On import:
+ifftn = None
+fftn = None
+rfftn = None
+irfftn = None
+rfftn_adj = None
+irfftn_adj = None
 if pyfftw is not None:
     configure_backend('fftw')
 else:
diff --git a/pyramid/fielddata.py b/pyramid/fielddata.py
index af6881e..e08aa9f 100644
--- a/pyramid/fielddata.py
+++ b/pyramid/fielddata.py
@@ -6,19 +6,18 @@
 
 from __future__ import division
 
-from scipy.ndimage.interpolation import zoom
-
-from pyramid import fft
-from pyramid.colormap import DirectionalColormap
-
+import abc
 import logging
 import os
-from abc import ABCMeta, abstractmethod
 from numbers import Number
 
 import numpy as np
 from matplotlib import pyplot as plt
 from matplotlib.ticker import MaxNLocator
+from scipy.ndimage.interpolation import zoom
+
+from pyramid import fft
+from pyramid.colormap import DirectionalColormap
 
 _log = logging.getLogger(__name__)
 try:  # Try importing HyperSpy:
@@ -30,7 +29,7 @@ except ImportError:
 __all__ = ['VectorData', 'ScalarData']
 
 
-class FieldData(object):
+class FieldData(object, metaclass=abc.ABCMeta):
     """Class for storing field data.
 
     Abstract base class for the representatio of magnetic or electric fields (see subclasses).
@@ -50,7 +49,6 @@ class FieldData(object):
 
     """
 
-    __metaclass__ = ABCMeta
     _log = logging.getLogger(__name__ + '.FieldData')
 
     @property
@@ -231,7 +229,7 @@ class FieldData(object):
         mlab.orientation_axes()
         return plot
 
-    @abstractmethod
+    @abc.abstractmethod
     def scale_down(self, n):
         """Scale down the field distribution by averaging over two pixels along each axis.
 
@@ -252,7 +250,7 @@ class FieldData(object):
         """
         pass
 
-    @abstractmethod
+    @abc.abstractmethod
     def scale_up(self, n, order):
         """Scale up the field distribution using spline interpolation of the requested order.
 
@@ -275,7 +273,7 @@ class FieldData(object):
         """
         pass
 
-    @abstractmethod
+    @abc.abstractmethod
     def get_vector(self, mask):
         """Returns the field as a vector, specified by a mask.
 
@@ -292,7 +290,7 @@ class FieldData(object):
         """
         pass
 
-    @abstractmethod
+    @abc.abstractmethod
     def set_vector(self, vector, mask):
         """Set the field of the masked pixels to the values specified by `vector`.
 
@@ -310,7 +308,7 @@ class FieldData(object):
         """
         pass
 
-    @abstractmethod
+    @abc.abstractmethod
     def to_signal(self):
         """Convert :class:`~.FieldData` data into a HyperSpy signal.
 
@@ -326,7 +324,7 @@ class FieldData(object):
         """
         pass
 
-    @abstractmethod
+    @abc.abstractmethod
     def save_to_hdf5(self, filename, *args, **kwargs):
         """Save field data in a file with HyperSpys HDF5-format.
 
@@ -365,11 +363,6 @@ class VectorData(FieldData):
     """
     _log = logging.getLogger(__name__ + '.VectorData')
 
-    def __init__(self, a, field):
-        self._log.debug('Calling __init__')
-        super(VectorData, self).__init__(a, field)
-        self._log.debug('Created ' + str(self))
-
     def scale_down(self, n=1):
         """Scale down the field distribution by averaging over two pixels along each axis.
 
@@ -389,7 +382,7 @@ class VectorData(FieldData):
 
         """
         self._log.debug('Calling scale_down')
-        assert n > 0 and isinstance(n, (int, long)), 'n must be a positive integer!'
+        assert n > 0 and isinstance(n, int), 'n must be a positive integer!'
         self.a *= 2 ** n
         for t in range(n):
             # Pad if necessary:
@@ -422,8 +415,8 @@ class VectorData(FieldData):
         Acts in place and changes dimensions and grid spacing accordingly.
         """
         self._log.debug('Calling scale_up')
-        assert n > 0 and isinstance(n, (int, long)), 'n must be a positive integer!'
-        assert 5 > order >= 0 and isinstance(order, (int, long)), \
+        assert n > 0 and isinstance(n, int), 'n must be a positive integer!'
+        assert 5 > order >= 0 and isinstance(order, int), \
             'order must be a positive integer between 0 and 5!'
         self.a /= 2 ** n
         self.field = np.array((zoom(self.field[0], zoom=2 ** n, order=order),
@@ -1056,11 +1049,6 @@ class ScalarData(FieldData):
     """
     _log = logging.getLogger(__name__ + '.ScalarData')
 
-    def __init__(self, a, field):
-        self._log.debug('Calling __init__')
-        super(ScalarData, self).__init__(a, field)
-        self._log.debug('Created ' + str(self))
-
     def scale_down(self, n=1):
         """Scale down the field distribution by averaging over two pixels along each axis.
 
@@ -1080,7 +1068,7 @@ class ScalarData(FieldData):
 
         """
         self._log.debug('Calling scale_down')
-        assert n > 0 and isinstance(n, (int, long)), 'n must be a positive integer!'
+        assert n > 0 and isinstance(n, int), 'n must be a positive integer!'
         self.a *= 2 ** n
         for t in range(n):
             # Pad if necessary:
@@ -1112,8 +1100,8 @@ class ScalarData(FieldData):
         Acts in place and changes dimensions and grid spacing accordingly.
         """
         self._log.debug('Calling scale_up')
-        assert n > 0 and isinstance(n, (int, long)), 'n must be a positive integer!'
-        assert 5 > order >= 0 and isinstance(order, (int, long)), \
+        assert n > 0 and isinstance(n, int), 'n must be a positive integer!'
+        assert 5 > order >= 0 and isinstance(order, int), \
             'order must be a positive integer between 0 and 5!'
         self.a /= 2 ** n
         self.field = zoom(self.field, zoom=2 ** n, order=order)
diff --git a/pyramid/forwardmodel.py b/pyramid/forwardmodel.py
index eca8aca..e09d39a 100644
--- a/pyramid/forwardmodel.py
+++ b/pyramid/forwardmodel.py
@@ -5,7 +5,7 @@
 """This module provides the :class:`~.ForwardModel` class which represents a strategy to map a
 threedimensional magnetization distribution onto a two-dimensional phase map."""
 
-from __future__ import division, print_function
+from __future__ import division
 
 import logging
 import multiprocessing as mp
@@ -188,7 +188,7 @@ class DistributedForwardModel(ForwardModel):
 
     def __init__(self, data_set, ramp_order=None, nprocs=1):
         # Evoke super constructor to set up the normal ForwardModel:
-        super(DistributedForwardModel, self).__init__(data_set, ramp_order)
+        super().__init__(data_set, ramp_order)
         # Initialize multirocessing specific stuff:
         self.nprocs = nprocs
         img_per_proc = np.ceil(self.data_set.count / self.nprocs).astype(np.int)
diff --git a/pyramid/kernel.py b/pyramid/kernel.py
index 1d5a17f..6ff2ac2 100644
--- a/pyramid/kernel.py
+++ b/pyramid/kernel.py
@@ -5,8 +5,6 @@
 """This module provides the :class:`~.Kernel` class, representing the phase contribution of one
 single magnetized pixel."""
 
-from __future__ import print_function
-
 import logging
 
 import numpy as np
@@ -89,6 +87,10 @@ class Kernel(object):
         self.slice_mag = (slice(0, dim_uv[0]),  # Magnetization is padded on the far end!
                           slice(0, dim_uv[1]))  # (Phase cutout is shifted as listed above)
         # Calculate kernel (single pixel phase):
+        # [M_0] = [PHI_0 / µ_0] = Tm² / N/A² = N/Am * A²/N = A/m
+        #       --> This is the magnetization, not the magnetic moment (A/m * m³ = Am²)!
+        # [b_0] = [µ_0] * [M_0] = A/m * N/A² = N/Am = T
+        # [coeff] = [b_0 * a² / (2*PHI_0)] = T * m² / Tm² = 1  --> without unit (phase)!
         coeff = b_0 * a ** 2 / (2 * PHI_0)  # Minus is gone because of negative z-direction
         v_dim, u_dim = dim_uv
         u = np.linspace(-(u_dim - 1), u_dim - 1, num=2 * u_dim - 1)
@@ -141,7 +143,7 @@ class Kernel(object):
         None
 
         """
-        self._log.debug('Calling print_info')
+        self._log.debug('Calling log_info')
         print('Shape of the FOV   :', self.dim_uv)
         print('Shape of the Kernel:', self.dim_kern)
         print('Zero-padded shape  :', self.dim_pad)
diff --git a/pyramid/magcreator.py b/pyramid/magcreator.py
index 20d31d4..e31b44e 100644
--- a/pyramid/magcreator.py
+++ b/pyramid/magcreator.py
@@ -28,7 +28,7 @@ __all__ = ['Shapes', 'create_mag_dist_homog', 'create_mag_dist_vortex']
 _log = logging.getLogger(__name__)
 
 
-class Shapes(object):
+class Shapes(object, metaclass=abc.ABCMeta):
     """Abstract class containing functions for generating magnetic shapes.
 
     The :class:`~.Shapes` class is a collection of some methods that return a 3-dimensional
@@ -38,11 +38,10 @@ class Shapes(object):
 
     """
 
-    __metaclass__ = abc.ABCMeta
     _log = logging.getLogger(__name__ + '.Shapes')
 
-    @classmethod
-    def slab(cls, dim, center, width):
+    @staticmethod
+    def slab(dim, center, width):
         """Create the shape of a slab.
 
         Parameters
@@ -60,7 +59,7 @@ class Shapes(object):
             The magnetic shape as a 3D-array with values between 1 and 0.
 
         """
-        cls._log.debug('Calling slab')
+        _log.debug('Calling slab')
         assert np.shape(dim) == (3,), 'Parameter dim has to be a tuple of length 3!'
         assert np.shape(center) == (3,), 'Parameter center has to be a tuple of length 3!'
         assert np.shape(width) == (3,), 'Parameter width has to be a tuple of length 3!'
@@ -70,8 +69,8 @@ class Shapes(object):
         zz_shape = np.where(abs(zz - center[0]) <= width[0] / 2, True, False)
         return np.logical_and(np.logical_and(xx_shape, yy_shape), zz_shape)
 
-    @classmethod
-    def disc(cls, dim, center, radius, height, axis='z'):
+    @staticmethod
+    def disc(dim, center, radius, height, axis='z'):
         """Create the shape of a cylindrical disc in x-, y-, or z-direction.
 
         Parameters
@@ -93,7 +92,7 @@ class Shapes(object):
             The magnetic shape as a 3D-array with values between 1 and 0.
 
         """
-        cls._log.debug('Calling disc')
+        _log.debug('Calling disc')
         assert np.shape(dim) == (3,), 'Parameter dim has to be a a tuple of length 3!'
         assert np.shape(center) == (3,), 'Parameter center has to be a a tuple of length 3!'
         assert radius > 0 and np.shape(radius) == (), 'Radius has to be a positive scalar value!'
@@ -114,8 +113,8 @@ class Shapes(object):
         return np.logical_and(np.where(np.hypot(uu, vv) <= radius, True, False),
                               np.where(abs(ww) <= height / 2, True, False))
 
-    @classmethod
-    def ellipse(cls, dim, center, width, height, axis='z'):
+    @staticmethod
+    def ellipse(dim, center, width, height, axis='z'):
         """Create the shape of an elliptical cylinder in x-, y-, or z-direction.
 
         Parameters
@@ -137,7 +136,7 @@ class Shapes(object):
             The magnetic shape as a 3D-array with values between 1 and 0.
 
         """
-        cls._log.debug('Calling ellipse')
+        _log.debug('Calling ellipse')
         assert np.shape(dim) == (3,), 'Parameter dim has to be a a tuple of length 3!'
         assert np.shape(center) == (3,), 'Parameter center has to be a a tuple of length 3!'
         assert np.shape(width) == (2,), 'Parameter width has to be a a tuple of length 2!'
@@ -159,8 +158,8 @@ class Shapes(object):
         return np.logical_and(np.where(distance <= 1, True, False),
                               np.where(abs(ww) <= height / 2, True, False))
 
-    @classmethod
-    def sphere(cls, dim, center, radius):
+    @staticmethod
+    def sphere(dim, center, radius):
         """Create the shape of a sphere.
 
         Parameters
@@ -178,7 +177,7 @@ class Shapes(object):
             The magnetic shape as a 3D-array with values between 1 and 0.
 
         """
-        cls._log.debug('Calling sphere')
+        _log.debug('Calling sphere')
         assert np.shape(dim) == (3,), 'Parameter dim has to be a a tuple of length 3!'
         assert np.shape(center) == (3,), 'Parameter center has to be a a tuple of length 3!'
         assert radius > 0 and np.shape(radius) == (), 'Radius has to be a positive scalar value!'
@@ -186,8 +185,8 @@ class Shapes(object):
         distance = np.sqrt((xx - center[2]) ** 2 + (yy - center[1]) ** 2 + (zz - center[0]) ** 2)
         return np.where(distance <= radius, True, False)
 
-    @classmethod
-    def ellipsoid(cls, dim, center, width):
+    @staticmethod
+    def ellipsoid(dim, center, width):
         """Create the shape of an ellipsoid.
 
         Parameters
@@ -205,7 +204,7 @@ class Shapes(object):
             The magnetic shape as a 3D-array with values between 1 and 0.
 
         """
-        cls._log.debug('Calling ellipsoid')
+        _log.debug('Calling ellipsoid')
         assert np.shape(dim) == (3,), 'Parameter dim has to be a a tuple of length 3!'
         assert np.shape(center) == (3,), 'Parameter center has to be a a tuple of length 3!'
         assert np.shape(width) == (3,), 'Parameter width has to be a a tuple of length 3!'
@@ -215,8 +214,8 @@ class Shapes(object):
                            + ((zz - center[0]) / (width[0] / 2)) ** 2)
         return np.where(distance <= 1, True, False)
 
-    @classmethod
-    def filament(cls, dim, pos, axis='y'):
+    @staticmethod
+    def filament(dim, pos, axis='y'):
         """Create the shape of a filament.
 
         Parameters
@@ -236,7 +235,7 @@ class Shapes(object):
             The magnetic shape as a 3D-array with values between 1 and 0.
 
         """
-        cls._log.debug('Calling filament')
+        _log.debug('Calling filament')
         assert np.shape(dim) == (3,), 'Parameter dim has to be a tuple of length 3!'
         assert np.shape(pos) == (2,), 'Parameter pos has to be a tuple of length 2!'
         assert axis in {'z', 'y', 'x'}, 'Axis has to be x, y or z (as a string)!'
@@ -249,8 +248,8 @@ class Shapes(object):
             mag_shape[pos[0], pos[1], :] = 1
         return mag_shape
 
-    @classmethod
-    def pixel(cls, dim, pixel):
+    @staticmethod
+    def pixel(dim, pixel):
         """Create the shape of a single pixel.
 
         Parameters
@@ -266,7 +265,7 @@ class Shapes(object):
             The magnetic shape as a 3D-array with values between 1 and 0.
 
         """
-        cls._log.debug('Calling pixel')
+        _log.debug('Calling pixel')
         assert np.shape(dim) == (3,), 'Parameter dim has to be a tuple of length 3!'
         assert np.shape(pixel) == (3,), 'Parameter pixel has to be a tuple of length 3!'
         mag_shape = np.zeros(dim)
diff --git a/pyramid/phasemap.py b/pyramid/phasemap.py
index 5cd8759..7ba0d79 100644
--- a/pyramid/phasemap.py
+++ b/pyramid/phasemap.py
@@ -289,7 +289,7 @@ class PhaseMap(object):
 
         """
         self._log.debug('Calling scale_down')
-        assert n > 0 and isinstance(n, (int, long)), 'n must be a positive integer!'
+        assert n > 0 and isinstance(n, int), 'n must be a positive integer!'
         self.a *= 2 ** n
         for t in range(n):
             # Pad if necessary:
@@ -326,8 +326,8 @@ class PhaseMap(object):
 
         """
         self._log.debug('Calling scale_up')
-        assert n > 0 and isinstance(n, (int, long)), 'n must be a positive integer!'
-        assert 5 > order >= 0 and isinstance(order, (int, long)), \
+        assert n > 0 and isinstance(n, int), 'n must be a positive integer!'
+        assert 5 > order >= 0 and isinstance(order, int), \
             'order must be a positive integer between 0 and 5!'
         self.a /= 2 ** n
         self.phase = zoom(self.phase, zoom=2 ** n, order=order)
diff --git a/pyramid/phasemapper.py b/pyramid/phasemapper.py
index b07345a..a94fb3c 100644
--- a/pyramid/phasemapper.py
+++ b/pyramid/phasemapper.py
@@ -30,7 +30,7 @@ Q_E = 1.602E-19  # electron charge in C
 C = 2.998E8  # speed of light in m/s
 
 
-class PhaseMapper(object):
+class PhaseMapper(object, metaclass=abc.ABCMeta):
     """Abstract base class for the phase calculation from a 2-dimensional distribution.
 
     The :class:`~.PhaseMapper-` class represents a strategy for the phasemapping of a
@@ -42,7 +42,6 @@ class PhaseMapper(object):
 
     """
 
-    __metaclass__ = abc.ABCMeta
     _log = logging.getLogger(__name__ + '.PhaseMapper')
 
     @abc.abstractmethod
@@ -261,11 +260,11 @@ class PhaseMapperRDRC(PhaseMapper):
             for j in range(dim_uv[0]):
                 for i in range(dim_uv[1]):
                     v_phase = v_phi[dim_uv[0] - 1 - j:(2 * dim_uv[0] - 1) - j,
-                              dim_uv[1] - 1 - i:(2 * dim_uv[1] - 1) - i]
+                                    dim_uv[1] - 1 - i:(2 * dim_uv[1] - 1) - i]
                     if abs(v_mag[j, i]) > self.threshold:
                         phase += u_mag[j, i] * v_phase
                     u_phase = u_phi[dim_uv[0] - 1 - j:(2 * dim_uv[0] - 1) - j,
-                              dim_uv[1] - 1 - i:(2 * dim_uv[1] - 1) - i]
+                                    dim_uv[1] - 1 - i:(2 * dim_uv[1] - 1) - i]
                     if abs(u_mag[j, i]) > self.threshold:
                         phase -= v_mag[j, i] * u_phase
         # Return the phase:
diff --git a/pyramid/projector.py b/pyramid/projector.py
index 986c18f..30e2f5e 100644
--- a/pyramid/projector.py
+++ b/pyramid/projector.py
@@ -22,7 +22,7 @@ from pyramid.quaternion import Quaternion
 __all__ = ['RotTiltProjector', 'XTiltProjector', 'YTiltProjector', 'SimpleProjector']
 
 
-class Projector(object):
+class Projector(object, metaclass=abc.ABCMeta):
     """Abstract base class representing a projection function.
 
     The :class:`~.Projector` class represents a projection function for a 3-dimensional
@@ -56,7 +56,6 @@ class Projector(object):
 
     """
 
-    __metaclass__ = abc.ABCMeta
     _log = logging.getLogger(__name__ + '.Projector')
 
     @abc.abstractmethod
@@ -301,7 +300,7 @@ class RotTiltProjector(Projector):
         weights = csr_matrix(coo_matrix((data, (rows, columns)), shape=shape))
         # Calculate coefficients by rotating unity matrix (unit vectors, (x,y,z)):
         coeff = quat.matrix[:2, :].dot(np.eye(3))
-        super(RotTiltProjector, self).__init__(dim, dim_uv, weights, coeff)
+        super().__init__(dim, dim_uv, weights, coeff)
         self._log.debug('Created ' + str(self))
 
     @staticmethod
@@ -420,7 +419,7 @@ class XTiltProjector(Projector):
         self.sparsity = 1. - len(data) / np.prod(shape, dtype=np.float)
         weight = csr_matrix(coo_matrix((np.tile(data, dim_rot), (rows, columns)), shape=shape))
         coeff = [[1, 0, 0], [0, np.cos(tilt), np.sin(tilt)]]
-        super(XTiltProjector, self).__init__(dim, dim_uv, weight, coeff)
+        super().__init__(dim, dim_uv, weight, coeff)
         self._log.debug('Created ' + str(self))
 
     @staticmethod
@@ -537,7 +536,7 @@ class YTiltProjector(Projector):
         self.sparsity = 1. - len(data) / np.prod(shape, dtype=np.float)
         weight = csr_matrix(coo_matrix((np.tile(data, dim_rot), (rows, columns)), shape=shape))
         coeff = [[np.cos(tilt), 0, np.sin(tilt)], [0, 1, 0]]
-        super(YTiltProjector, self).__init__(dim, dim_uv, weight, coeff)
+        super().__init__(dim, dim_uv, weight, coeff)
         self._log.debug('Created ' + str(self))
 
     @staticmethod
@@ -664,7 +663,7 @@ class SimpleProjector(Projector):
         shape = (np.prod(dim_uv), np.prod(dim))
         self.sparsity = 1. - len(data) / np.prod(shape, dtype=np.float)
         weight = csr_matrix((data, indices, indptr), shape=shape)
-        super(SimpleProjector, self).__init__(dim, dim_uv, weight, coeff)
+        super().__init__(dim, dim_uv, weight, coeff)
         self._log.debug('Created ' + str(self))
 
     def get_info(self, verbose=False):
diff --git a/pyramid/reconstruction.py b/pyramid/reconstruction.py
index 8fe34f1..166242e 100644
--- a/pyramid/reconstruction.py
+++ b/pyramid/reconstruction.py
@@ -43,9 +43,9 @@ def optimize_linear(costfunction, max_iter=None):
     """
     import jutil.cg as jcg
     _log.debug('Calling optimize_linear')
-    _log.info('Cost before optimization: {}'.format(costfunction(np.zeros(costfunction.n))))
+    _log.info('Cost before optimization: {:.3e}'.format(costfunction(np.zeros(costfunction.n))))
     x_opt = jcg.conj_grad_minimize(costfunction, max_iter=max_iter).x
-    _log.info('Cost after optimization: {}'.format(costfunction(x_opt)))
+    _log.info('Cost after optimization: {:.3e}'.format(costfunction(x_opt)))
     # Cut ramp parameters if necessary (this also saves the final parameters in the ramp class!):
     x_opt = costfunction.fwd_model.ramp.extract_ramp_params(x_opt)
     # Create and return fitting VectorData object:
diff --git a/pyramid/regularisator.py b/pyramid/regularisator.py
index 0952cbf..335cd36 100644
--- a/pyramid/regularisator.py
+++ b/pyramid/regularisator.py
@@ -18,7 +18,7 @@ __all__ = ['NoneRegularisator', 'ZeroOrderRegularisator', 'FirstOrderRegularisat
            'ComboRegularisator']
 
 
-class Regularisator(object):
+class Regularisator(object, metaclass=abc.ABCMeta):
     """Class for providing a regularisation term which implements additional constraints.
 
     Represents a certain constraint for the 3D magnetization distribution whose cost is to minimize
@@ -40,7 +40,6 @@ class Regularisator(object):
 
     """
 
-    __metaclass__ = abc.ABCMeta
     _log = logging.getLogger(__name__ + '.Regularisator')
 
     @abc.abstractmethod
@@ -150,7 +149,7 @@ class ComboRegularisator(Regularisator):
     def __init__(self, reg_list):
         self._log.debug('Calling __init__')
         self.reg_list = reg_list
-        super(ComboRegularisator, self).__init__(norm=None, lam=None)
+        super().__init__(norm=None, lam=None)
         self._log.debug('Created ' + str(self))
 
     def __call__(self, x):
@@ -246,7 +245,7 @@ class NoneRegularisator(Regularisator):
         self.norm = None
         self.lam = 0
         self.add_params = None
-        super(NoneRegularisator, self).__init__(norm=None, lam=None)
+        super().__init__(norm=None, lam=None)
         self._log.debug('Created ' + str(self))
 
     def __call__(self, x):
@@ -324,19 +323,22 @@ class ZeroOrderRegularisator(Regularisator):
         Regularisation parameter determining the weighting between measurements and regularisation.
     p: int, optional
         Order of the norm (default: 2, which means a standard L2-norm).
+    add_params : int
+        Number of additional parameters which are not used in the regularisation. Used to cut
+        the input vector into the appropriate size.
 
     """
 
     _log = logging.getLogger(__name__ + '.ZeroOrderRegularisator')
 
-    def __init__(self, _=None, lam=1E-4, p=2, add_params=None):
+    def __init__(self, _=None, lam=1E-4, p=2, add_params=0):
         self._log.debug('Calling __init__')
         self.p = p
         if p == 2:
             norm = jnorm.L2Square()
         else:
             norm = jnorm.LPPow(p, 1e-12)
-        super(ZeroOrderRegularisator, self).__init__(norm, lam, add_params)
+        super().__init__(norm, lam, add_params)
         self._log.debug('Created ' + str(self))
 
 
@@ -356,10 +358,13 @@ class FirstOrderRegularisator(Regularisator):
         Regularisation parameter determining the weighting between measurements and regularisation.
     p: int, optional
         Order of the norm (default: 2, which means a standard L2-norm).
+    add_params : int
+        Number of additional parameters which are not used in the regularisation. Used to cut
+        the input vector into the appropriate size.
 
     """
 
-    def __init__(self, mask, lam=1E-4, p=2, add_params=None):
+    def __init__(self, mask, lam=1E-4, p=2, add_params=0):
         self.p = p
         D0 = jdiff.get_diff_operator(mask, 0, 3)
         D1 = jdiff.get_diff_operator(mask, 1, 3)
@@ -369,5 +374,5 @@ class FirstOrderRegularisator(Regularisator):
             norm = jnorm.WeightedL2Square(D)
         else:
             norm = jnorm.WeightedTV(jnorm.LPPow(p, 1e-12), D, [D0.shape[0], D.shape[0]])
-        super(FirstOrderRegularisator, self).__init__(norm, lam, add_params)
+        super().__init__(norm, lam, add_params)
         self._log.debug('Created ' + str(self))
diff --git a/pyramid/tests/test_analytic.py b/pyramid/tests/test_analytic.py
index 401a4f2..9fd4704 100644
--- a/pyramid/tests/test_analytic.py
+++ b/pyramid/tests/test_analytic.py
@@ -26,7 +26,8 @@ class TestCaseAnalytic(unittest.TestCase):
         width = (self.dim[0] / 2, self.dim[1] / 2, self.dim[2] / 2)
         phase = an.phase_mag_slab(self.dim, self.a, self.phi, self.center, width).phase
         reference = np.load(os.path.join(self.path, 'ref_phase_slab.npy'))
-        assert_allclose(phase, reference, err_msg='Unexpected behavior in phase_mag_slab()')
+        assert_allclose(phase, reference, atol=1E-10,
+                        err_msg='Unexpected behavior in phase_mag_slab()')
 
     def test_phase_mag_disc(self):
         """Test of the phase_mag_disc method."""
@@ -34,15 +35,16 @@ class TestCaseAnalytic(unittest.TestCase):
         height = self.dim[2] / 2
         phase = an.phase_mag_disc(self.dim, self.a, self.phi, self.center, radius, height).phase
         reference = np.load(os.path.join(self.path, 'ref_phase_disc.npy'))
-        assert_allclose(phase, reference, err_msg='Unexpected behavior in phase_mag_disc()')
+        assert_allclose(phase, reference, atol=1E-10,
+                        err_msg='Unexpected behavior in phase_mag_disc()')
 
     def test_phase_mag_sphere(self):
         """Test of the phase_mag_sphere method."""
         radius = self.dim[2] / 4
         phase = an.phase_mag_sphere(self.dim, self.a, self.phi, self.center, radius).phase
         reference = np.load(os.path.join(self.path, 'ref_phase_sphere.npy'))
-        assert_allclose(phase, reference, err_msg='Unexpected behavior in phase_mag_sphere()',
-                        atol=1E-10)
+        assert_allclose(phase, reference, atol=1E-10,
+                        err_msg='Unexpected behavior in phase_mag_sphere()')
 
     def test_phase_mag_vortex(self):
         """Test of the phase_mag_vortex method."""
@@ -50,7 +52,8 @@ class TestCaseAnalytic(unittest.TestCase):
         height = self.dim[2] / 2
         phase = an.phase_mag_vortex(self.dim, self.a, self.center, radius, height).phase
         reference = np.load(os.path.join(self.path, 'ref_phase_vort.npy'))
-        assert_allclose(phase, reference, err_msg='Unexpected behavior in phase_mag_vortex()')
+        assert_allclose(phase, reference, atol=1E-10,
+                        err_msg='Unexpected behavior in phase_mag_vortex()')
 
 
 if __name__ == '__main__':
diff --git a/pyramid/tests/test_dataset.py b/pyramid/tests/test_dataset.py
index 8cb02ab..115eb71 100644
--- a/pyramid/tests/test_dataset.py
+++ b/pyramid/tests/test_dataset.py
@@ -1,8 +1,6 @@
 # -*- coding: utf-8 -*-
 """Testcase for the dataset module"""
 
-from __future__ import print_function
-
 import os
 import unittest
 
diff --git a/pyramid/version.py b/pyramid/version.py
index e047f28..2595067 100644
--- a/pyramid/version.py
+++ b/pyramid/version.py
@@ -1,4 +1,4 @@
 # -*- coding: utf-8 -*-
-"""This file is generated automatically by the Pyramid `setup.pr`"""
-version = '0.1.0-dev'
-hg_revision = 'a7afcc233730+'
+""""This file is generated automatically by the Pyramid `setup.py`"""
+version = "0.1.0-dev"
+hg_revision = "b'111e1118104a+'"
diff --git a/scripts/gui/mag_slicer.py b/scripts/gui/mag_slicer.py
index e0a46f6..90e3476 100644
--- a/scripts/gui/mag_slicer.py
+++ b/scripts/gui/mag_slicer.py
@@ -10,181 +10,64 @@
 import os
 import sys
 
-import pyramid
-from pyramid.fielddata import VectorData
-from pyramid.kernel import Kernel
-from pyramid.phasemapper import PhaseMapperRDFC
-from pyramid.projector import SimpleProjector
+from PyQt4 import QtGui, QtCore
+from PyQt4.uic import loadUiType
 
-from PyQt4 import QtCore, QtGui
-from matplotlibwidget import MatplotlibWidget
+from matplotlib.figure import Figure
+from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
+from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
 
-try:
-    _fromUtf8 = QtCore.QString.fromUtf8
-except AttributeError:
-    def _fromUtf8(s):
-        return s
+import pyramid as pr
 
-try:
-    _encoding = QtGui.QApplication.UnicodeUTF8
 
+UI_MainWindow, QMainWindow = loadUiType('mag_slicer.ui')
 
-    def _translate(context, text, disambig):
-        return QtGui.QApplication.translate(context, text, disambig, _encoding)
 
-except AttributeError:
+class Main(QMainWindow, UI_MainWindow):
 
-    def _translate(context, text, disambig):
-        return QtGui.QApplication.translate(context, text, disambig)
-
-
-class UI_MagSlicerMain(QtGui.QWidget):
-    def __init__(self, parent=None):
-        QtGui.QWidget.__init__(self, parent)
-        Form = self
-        self.setGeometry(100, 100, 1405, 550)
-        self.setWindowTitle('Mag Slicer')
-        ###########################################################################################
-        self.verticalLayout = QtGui.QVBoxLayout(Form)
-        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
-        self.horizontalLayout = QtGui.QHBoxLayout()
-        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
-        self.pushButtonLoad = QtGui.QPushButton(Form)
-        self.pushButtonLoad.setObjectName(_fromUtf8("pushButtonLoad"))
-        self.horizontalLayout.addWidget(self.pushButtonLoad)
-        self.checkBoxScale = QtGui.QCheckBox(Form)
-        self.checkBoxScale.setChecked(True)
-        self.checkBoxScale.setTristate(False)
-        self.checkBoxScale.setObjectName(_fromUtf8("checkBoxScale"))
-        self.horizontalLayout.addWidget(self.checkBoxScale)
-        self.checkBoxLog = QtGui.QCheckBox(Form)
-        self.checkBoxLog.setObjectName(_fromUtf8("checkBoxLog"))
-        self.horizontalLayout.addWidget(self.checkBoxLog)
-        self.comboBoxSlice = QtGui.QComboBox(Form)
-        self.comboBoxSlice.setObjectName(_fromUtf8("comboBoxSlice"))
-        self.comboBoxSlice.addItem(_fromUtf8(""))
-        self.comboBoxSlice.addItem(_fromUtf8(""))
-        self.comboBoxSlice.addItem(_fromUtf8(""))
-        self.horizontalLayout.addWidget(self.comboBoxSlice)
-        self.labelSlice = QtGui.QLabel(Form)
-        self.labelSlice.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing |
-                                     QtCore.Qt.AlignVCenter)
-        self.labelSlice.setObjectName(_fromUtf8("labelSlice"))
-        self.horizontalLayout.addWidget(self.labelSlice)
-        self.spinBoxSlice = QtGui.QSpinBox(Form)
-        self.spinBoxSlice.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing |
-                                       QtCore.Qt.AlignVCenter)
-        self.spinBoxSlice.setMaximum(0)
-        self.spinBoxSlice.setProperty("value", 0)
-        self.spinBoxSlice.setObjectName(_fromUtf8("spinBoxSlice"))
-        self.horizontalLayout.addWidget(self.spinBoxSlice)
-        self.scrollBarSlice = QtGui.QScrollBar(Form)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.scrollBarSlice.sizePolicy().hasHeightForWidth())
-        self.scrollBarSlice.setSizePolicy(sizePolicy)
-        self.scrollBarSlice.setMinimumSize(QtCore.QSize(400, 0))
-        self.scrollBarSlice.setMaximum(0)
-        self.scrollBarSlice.setOrientation(QtCore.Qt.Horizontal)
-        self.scrollBarSlice.setObjectName(_fromUtf8("scrollBarSlice"))
-        self.horizontalLayout.addWidget(self.scrollBarSlice)
-        self.checkBoxSmooth = QtGui.QCheckBox(Form)
-        self.checkBoxSmooth.setChecked(True)
-        self.checkBoxSmooth.setObjectName(_fromUtf8("checkBoxSmooth"))
-        self.horizontalLayout.addWidget(self.checkBoxSmooth)
-        self.checkBoxAuto = QtGui.QCheckBox(Form)
-        self.checkBoxAuto.setChecked(True)
-        self.checkBoxAuto.setObjectName(_fromUtf8("checkBoxAuto"))
-        self.horizontalLayout.addWidget(self.checkBoxAuto)
-        self.labelGain = QtGui.QLabel(Form)
-        self.labelGain.setObjectName(_fromUtf8("labelGain"))
-        self.horizontalLayout.addWidget(self.labelGain)
-        self.spinBoxGain = QtGui.QDoubleSpinBox(Form)
-        self.spinBoxGain.setEnabled(False)
-        self.spinBoxGain.setMaximum(1000000.0)
-        self.spinBoxGain.setSingleStep(0.1)
-        self.spinBoxGain.setProperty("value", 1.0)
-        self.spinBoxGain.setObjectName(_fromUtf8("spinBoxGain"))
-        self.horizontalLayout.addWidget(self.spinBoxGain)
-        self.verticalLayout.addLayout(self.horizontalLayout)
-        self.horizontalLayoutPlots = QtGui.QHBoxLayout()
-        self.horizontalLayoutPlots.setSpacing(0)
-        self.horizontalLayoutPlots.setSizeConstraint(QtGui.QLayout.SetNoConstraint)
-        self.horizontalLayoutPlots.setObjectName(_fromUtf8("horizontalLayoutPlots"))
-        self.mplWidgetMag = MatplotlibWidget(Form)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Expanding)
-        sizePolicy.setHorizontalStretch(10)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.mplWidgetMag.sizePolicy().hasHeightForWidth())
-        self.mplWidgetMag.setSizePolicy(sizePolicy)
-        self.mplWidgetMag.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
-        self.mplWidgetMag.setLayoutDirection(QtCore.Qt.LeftToRight)
-        self.mplWidgetMag.setAutoFillBackground(False)
-        self.mplWidgetMag.setObjectName(_fromUtf8("mplWidgetMag"))
-        self.horizontalLayoutPlots.addWidget(self.mplWidgetMag)
-        self.mplWidgetHolo = MatplotlibWidget(Form)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Expanding)
-        sizePolicy.setHorizontalStretch(10)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.mplWidgetHolo.sizePolicy().hasHeightForWidth())
-        self.mplWidgetHolo.setSizePolicy(sizePolicy)
-        self.mplWidgetHolo.setObjectName(_fromUtf8("mplWidgetHolo"))
-        self.horizontalLayoutPlots.addWidget(self.mplWidgetHolo)
-        self.mplWidgetPhase = MatplotlibWidget(Form)
-        self.mplWidgetPhase.setEnabled(True)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Expanding)
-        sizePolicy.setHorizontalStretch(10)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.mplWidgetPhase.sizePolicy().hasHeightForWidth())
-        self.mplWidgetPhase.setSizePolicy(sizePolicy)
-        self.mplWidgetPhase.setObjectName(_fromUtf8("mplWidgetPhase"))
-        self.horizontalLayoutPlots.addWidget(self.mplWidgetPhase)
-        self.verticalLayout.addLayout(self.horizontalLayoutPlots)
-        ###########################################################################################
-        self.retranslateUi(Form)
-        self.connect(self.spinBoxSlice, QtCore.SIGNAL(_fromUtf8("editingFinished()")),
-                     self.scrollBarSlice.setValue)
-        self.connect(self.scrollBarSlice, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")),
-                     self.spinBoxSlice.setValue)
-        self.connect(self.checkBoxAuto, QtCore.SIGNAL(_fromUtf8("toggled(bool)")),
-                     self.spinBoxGain.setDisabled)
-        self.connect(self.checkBoxLog, QtCore.SIGNAL(_fromUtf8('clicked()')),
+    def __init__(self):
+        super().__init__()
+        self.setupUi(self)
+        self.connect(self.checkBoxLog, QtCore.SIGNAL('clicked()'),
                      self.update_slice)
-        self.connect(self.checkBoxScale, QtCore.SIGNAL(_fromUtf8('clicked()')),
+        self.connect(self.checkBoxScale, QtCore.SIGNAL('clicked()'),
                      self.update_slice)
-        self.connect(self.spinBoxSlice, QtCore.SIGNAL(_fromUtf8('valueChanged(int)')),
+        self.connect(self.spinBoxSlice, QtCore.SIGNAL('valueChanged(int)'),
                      self.update_slice)
-        self.connect(self.comboBoxSlice, QtCore.SIGNAL(_fromUtf8('currentIndexChanged(int)')),
+        self.connect(self.comboBoxSlice, QtCore.SIGNAL('currentIndexChanged(int)'),
                      self.update_phase)
-        self.connect(self.spinBoxGain, QtCore.SIGNAL(_fromUtf8('editingFinished()')),
+        self.connect(self.spinBoxGain, QtCore.SIGNAL('valueChanged(double)'),
                      self.update_phase)
-        self.connect(self.checkBoxAuto, QtCore.SIGNAL(_fromUtf8('toggled(bool)')),
+        self.connect(self.checkBoxAuto, QtCore.SIGNAL('toggled(bool)'),
                      self.update_phase)
-        self.connect(self.checkBoxSmooth, QtCore.SIGNAL(_fromUtf8('toggled(bool)')),
+        self.connect(self.checkBoxSmooth, QtCore.SIGNAL('toggled(bool)'),
                      self.update_phase)
-        self.connect(self.pushButtonLoad, QtCore.SIGNAL(_fromUtf8('clicked()')),
+        self.connect(self.pushButtonLoad, QtCore.SIGNAL('clicked()'),
                      self.load)
-        QtCore.QMetaObject.connectSlotsByName(Form)
-        self.mplWidgetMag.axes.set_visible(False)
-        self.mplWidgetHolo.axes.set_visible(False)
-        self.mplWidgetPhase.axes.set_visible(False)
         self.mag_data_loaded = False
 
-    def retranslateUi(self, Form):
-        ###########################################################################################
-        Form.setWindowTitle(_translate("Form", "Mag Slicer", None))
-        self.pushButtonLoad.setText(_translate("Form", "Laden", None))
-        self.checkBoxScale.setText(_translate("Form", "Scaled", None))
-        self.checkBoxLog.setText(_translate("Form", "Log", None))
-        self.comboBoxSlice.setItemText(0, _translate("Form", "xy-plane", None))
-        self.comboBoxSlice.setItemText(1, _translate("Form", "xz-plane", None))
-        self.comboBoxSlice.setItemText(2, _translate("Form", "zy-plane", None))
-        self.labelSlice.setText(_translate("Form", "Slice:", None))
-        self.checkBoxSmooth.setText(_translate("Form", "Smooth", None))
-        self.checkBoxAuto.setText(_translate("Form", "Auto", None))
-        self.labelGain.setText(_translate("Form", "Gain:", None))
-        ###########################################################################################
+    def addmpl(self):
+        fig = Figure()
+        fig.add_subplot(111, aspect='equal')
+        self.canvasMag = FigureCanvas(fig)
+        self.layoutMag.addWidget(self.canvasMag)
+        self.canvasMag.draw()
+        self.toolbarMag = NavigationToolbar(self.canvasMag, self, coordinates=True)
+        self.layoutMag.addWidget(self.toolbarMag)
+        fig = Figure()
+        fig.add_subplot(111, aspect='equal')
+        self.canvasPhase = FigureCanvas(fig)
+        self.layoutPhase.addWidget(self.canvasPhase)
+        self.canvasPhase.draw()
+        self.toolbarPhase = NavigationToolbar(self.canvasPhase, self, coordinates=True)
+        self.layoutPhase.addWidget(self.toolbarPhase)
+        fig = Figure()
+        fig.add_subplot(111, aspect='equal')
+        self.canvasHolo = FigureCanvas(fig)
+        self.layoutHolo.addWidget(self.canvasHolo)
+        self.canvasHolo.draw()
+        self.toolbarHolo = NavigationToolbar(self.canvasHolo, self, coordinates=True)
+        self.layoutHolo.addWidget(self.toolbarHolo)
 
     def update_phase(self):
         if self.mag_data_loaded:
@@ -202,46 +85,51 @@ class UI_MagSlicerMain(QtGui.QWidget):
                 gain = 'auto'
             else:
                 gain = self.spinBoxGain.value()
-            self.projector = SimpleProjector(self.mag_data.dim, axis=self.mode)
+            self.projector = pr.SimpleProjector(self.mag_data.dim, axis=self.mode)
             self.spinBoxSlice.setMaximum(length)
             self.scrollBarSlice.setMaximum(length)
             self.spinBoxSlice.setValue(int(length / 2.))
             self.update_slice()
-            self.phase_mapper = PhaseMapperRDFC(Kernel(self.mag_data.a, self.projector.dim_uv))
+            kernel = pr.Kernel(self.mag_data.a, self.projector.dim_uv)
+            self.phase_mapper = pr.PhaseMapperRDFC(kernel)
             self.phase_map = self.phase_mapper(self.projector(self.mag_data))
-            self.phase_map.display_phase(axis=self.mplWidgetPhase.axes, cbar=False)
+            self.canvasPhase.figure.axes[0].clear()
+            self.phase_map.display_phase(axis=self.canvasPhase.figure.axes[0], cbar=False)
             if self.checkBoxSmooth.isChecked():
                 interpolation = 'bilinear'
             else:
                 interpolation = 'none'
-            self.phase_map.display_holo(axis=self.mplWidgetHolo.axes, gain=gain,
+            self.canvasHolo.figure.axes[0].clear()
+            self.phase_map.display_holo(axis=self.canvasHolo.figure.axes[0], gain=gain,
                                         interpolation=interpolation)
-            self.mplWidgetPhase.draw()
-            self.mplWidgetHolo.draw()
+            self.canvasPhase.draw()
+            self.canvasHolo.draw()
 
     def update_slice(self):
         if self.mag_data_loaded:
-            self.mag_data.quiver_plot(axis=self.mplWidgetMag.axes, proj_axis=self.mode,
+            self.canvasMag.figure.axes[0].clear()
+            self.mag_data.quiver_plot(axis=self.canvasMag.figure.axes[0], proj_axis=self.mode,
                                       ax_slice=self.spinBoxSlice.value(),
                                       log=self.checkBoxLog.isChecked(),
                                       scaled=self.checkBoxScale.isChecked())
-            self.mplWidgetMag.draw()
+            self.canvasMag.draw()
 
     def load(self):
-        directory = os.path.join(pyramid.DIR_FILES, 'magdata')
-        mag_file = QtGui.QFileDialog.getOpenFileName(self, 'Open Data File', directory,
-                                                     'HDF5 files (*.hdf5)')
-        self.mag_data = VectorData.load_from_hdf5(mag_file)
+        try:
+            directory = os.path.join(pr.DIR_FILES, 'vecdata')
+            mag_file = QtGui.QFileDialog.getOpenFileName(self, 'Open Data File', directory,
+                                                         'HDF5 files (*.hdf5)')
+        except ValueError:
+            return  # Abort if no conf_path is selected!
+        self.mag_data = pr.VectorData.load_from_hdf5(mag_file)
+        if not self.mag_data_loaded:
+            self.addmpl()
         self.mag_data_loaded = True
-        self.mplWidgetMag.axes.set_visible(True)
-        self.mplWidgetHolo.axes.set_visible(True)
-        self.mplWidgetPhase.axes.set_visible(True)
         self.comboBoxSlice.setCurrentIndex(0)
         self.update_phase()
 
-
 if __name__ == '__main__':
     app = QtGui.QApplication(sys.argv)
-    widget = UI_MagSlicerMain()
-    widget.show()
+    main = Main()
+    main.show()
     sys.exit(app.exec_())
diff --git a/scripts/gui/mag_slicer.ui b/scripts/gui/mag_slicer.ui
index 453a95c..bd98387 100644
--- a/scripts/gui/mag_slicer.ui
+++ b/scripts/gui/mag_slicer.ui
@@ -1,224 +1,251 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
- <class>Form</class>
- <widget class="QWidget" name="Form">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>993</width>
-    <height>351</height>
+    <width>1222</width>
+    <height>480</height>
    </rect>
   </property>
-  <property name="sizePolicy">
-   <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-    <horstretch>0</horstretch>
-    <verstretch>0</verstretch>
-   </sizepolicy>
-  </property>
   <property name="windowTitle">
-   <string>Mag Slicer</string>
+   <string>MagSlicer</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QPushButton" name="pushButtonLoad">
-       <property name="text">
-        <string>Laden</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="checkBoxScale">
-       <property name="text">
-        <string>Scaled</string>
-       </property>
-       <property name="checked">
-        <bool>true</bool>
-       </property>
-       <property name="tristate">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="checkBoxLog">
-       <property name="text">
-        <string>Log</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QComboBox" name="comboBoxSlice">
-       <item>
+  <widget class="QWidget" name="centralwidget">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="windowTitle">
+    <string>Mag Slicer</string>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout">
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QPushButton" name="pushButtonLoad">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
         <property name="text">
-         <string>xy-plane</string>
+         <string>Laden</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="checkBoxScale">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
         </property>
-       </item>
-       <item>
         <property name="text">
-         <string>xz-plane</string>
+         <string>Scaled</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+        <property name="tristate">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="checkBoxLog">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Log</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QComboBox" name="comboBoxSlice">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <item>
+         <property name="text">
+          <string>xy-plane</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>xz-plane</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>zy-plane</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLabel" name="labelSlice">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Slice:</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QSpinBox" name="spinBoxSlice">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="maximum">
+         <number>0</number>
+        </property>
+        <property name="value">
+         <number>0</number>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QScrollBar" name="scrollBarSlice">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>400</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="maximum">
+         <number>0</number>
+        </property>
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="checkBoxSmooth">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Smooth</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="checkBoxAuto">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Auto</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLabel" name="labelGain">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
         </property>
-       </item>
-       <item>
         <property name="text">
-         <string>zy-plane</string>
+         <string>Gain:</string>
         </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QDoubleSpinBox" name="spinBoxGain">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="maximum">
+         <double>1000000.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.100000000000000</double>
+        </property>
+        <property name="value">
+         <double>1.000000000000000</double>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
+    <item>
+     <widget class="QWidget" name="layoutPlots" native="true">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <layout class="QHBoxLayout" name="horizontalLayoutPlots">
+       <item>
+        <layout class="QVBoxLayout" name="layoutMag"/>
        </item>
-      </widget>
-     </item>
-     <item>
-      <widget class="QLabel" name="labelSlice">
-       <property name="text">
-        <string>Slice:</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QSpinBox" name="spinBoxSlice">
-       <property name="alignment">
-        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-       </property>
-       <property name="maximum">
-        <number>0</number>
-       </property>
-       <property name="value">
-        <number>0</number>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QScrollBar" name="scrollBarSlice">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="minimumSize">
-        <size>
-         <width>400</width>
-         <height>0</height>
-        </size>
-       </property>
-       <property name="maximum">
-        <number>0</number>
-       </property>
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="checkBoxSmooth">
-       <property name="text">
-        <string>Smooth</string>
-       </property>
-       <property name="checked">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="checkBoxAuto">
-       <property name="text">
-        <string>Auto</string>
-       </property>
-       <property name="checked">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QLabel" name="labelGain">
-       <property name="text">
-        <string>Gain:</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QDoubleSpinBox" name="spinBoxGain">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="maximum">
-        <double>1000000.000000000000000</double>
-       </property>
-       <property name="singleStep">
-        <double>0.100000000000000</double>
-       </property>
-       <property name="value">
-        <double>1.000000000000000</double>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayoutPlots">
-     <property name="spacing">
-      <number>0</number>
-     </property>
-     <property name="sizeConstraint">
-      <enum>QLayout::SetNoConstraint</enum>
-     </property>
-     <item>
-      <widget class="MatplotlibWidget" name="mplWidgetMag">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Ignored" vsizetype="Expanding">
-         <horstretch>10</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="cursor">
-        <cursorShape>ArrowCursor</cursorShape>
-       </property>
-       <property name="layoutDirection">
-        <enum>Qt::LeftToRight</enum>
-       </property>
-       <property name="autoFillBackground">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="MatplotlibWidget" name="mplWidgetHolo">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Ignored" vsizetype="Expanding">
-         <horstretch>10</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="MatplotlibWidget" name="mplWidgetPhase">
-       <property name="enabled">
-        <bool>true</bool>
-       </property>
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Ignored" vsizetype="Expanding">
-         <horstretch>10</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-  </layout>
+       <item>
+        <layout class="QVBoxLayout" name="layoutPhase"/>
+       </item>
+       <item>
+        <layout class="QVBoxLayout" name="layoutHolo"/>
+       </item>
+      </layout>
+     </widget>
+    </item>
+   </layout>
+  </widget>
  </widget>
- <customwidgets>
-  <customwidget>
-   <class>MatplotlibWidget</class>
-   <extends>QWidget</extends>
-   <header>matplotlibwidget</header>
-  </customwidget>
- </customwidgets>
  <resources/>
  <connections>
   <connection>
@@ -228,28 +255,28 @@
    <slot>setValue(int)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>335</x>
-     <y>18</y>
+     <x>322</x>
+     <y>19</y>
     </hint>
     <hint type="destinationlabel">
-     <x>380</x>
-     <y>17</y>
+     <x>386</x>
+     <y>20</y>
     </hint>
    </hints>
   </connection>
   <connection>
    <sender>scrollBarSlice</sender>
-   <signal>valueChanged(int)</signal>
+   <signal>sliderMoved(int)</signal>
    <receiver>spinBoxSlice</receiver>
    <slot>setValue(int)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>364</x>
-     <y>27</y>
+     <x>431</x>
+     <y>24</y>
     </hint>
     <hint type="destinationlabel">
      <x>321</x>
-     <y>29</y>
+     <y>20</y>
     </hint>
    </hints>
   </connection>
@@ -260,12 +287,12 @@
    <slot>setDisabled(bool)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>761</x>
-     <y>18</y>
+     <x>1065</x>
+     <y>22</y>
     </hint>
     <hint type="destinationlabel">
-     <x>870</x>
-     <y>14</y>
+     <x>1166</x>
+     <y>21</y>
     </hint>
    </hints>
   </connection>
diff --git a/scripts/gui/phasemap_creator.py b/scripts/gui/phasemap_creator.py
index 9871cd6..3512897 100644
--- a/scripts/gui/phasemap_creator.py
+++ b/scripts/gui/phasemap_creator.py
@@ -11,192 +11,70 @@
 import os
 import sys
 
-import hyperspy.api as hs
+from PyQt4 import QtGui, QtCore
+from PyQt4.uic import loadUiType
 
-from pyramid import PhaseMap
+from matplotlib.figure import Figure
+from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
+from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
 
 import numpy as np
+import pyramid as pr
+import hyperspy.api as hs
 from PIL import Image
-from PyQt4 import QtCore, QtGui
-from matplotlibwidget import MatplotlibWidget
-
-try:
-    _fromUtf8 = QtCore.QString.fromUtf8
-except AttributeError:
-    def _fromUtf8(s):
-        return s
-
-try:
-    _encoding = QtGui.QApplication.UnicodeUTF8
 
 
-    def _translate(context, text, disambig):
-        return QtGui.QApplication.translate(context, text, disambig, _encoding)
-except AttributeError:
+UI_MainWindow, QMainWindow = loadUiType('phasemap_creator.ui')
 
-    def _translate(context, text, disambig):
-        return QtGui.QApplication.translate(context, text, disambig)
 
+class Main(QMainWindow, UI_MainWindow):
 
-class UI_PhaseMapCreatorMain(QtGui.QWidget):
-    def __init__(self, parent=None):
-        QtGui.QWidget.__init__(self, parent)
-        Form = self
-        self.setGeometry(100, 100, 900, 900)
-        self.setWindowTitle('PhaseMap Creator')
-        Form.setObjectName(_fromUtf8('PhaseMap Creator'))
-        ###########################################################################################
-        self.verticalLayout = QtGui.QVBoxLayout(Form)
-        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
-        self.mplwidget = MatplotlibWidget(Form)
-        self.mplwidget.setObjectName(_fromUtf8("mplwidget"))
-        self.verticalLayout.addWidget(self.mplwidget)
-        self.horizontalLayout = QtGui.QHBoxLayout()
-        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
-        self.pushButton_phase = QtGui.QPushButton(Form)
-        self.pushButton_phase.setObjectName(_fromUtf8("pushButton_phase"))
-        self.horizontalLayout.addWidget(self.pushButton_phase)
-        self.pushButton_mask = QtGui.QPushButton(Form)
-        self.pushButton_mask.setObjectName(_fromUtf8("pushButton_mask"))
-        self.horizontalLayout.addWidget(self.pushButton_mask)
-        self.pushButton_conf = QtGui.QPushButton(Form)
-        self.pushButton_conf.setObjectName(_fromUtf8("pushButton_conf"))
-        self.horizontalLayout.addWidget(self.pushButton_conf)
-        self.pushButton_export = QtGui.QPushButton(Form)
-        self.pushButton_export.setObjectName(_fromUtf8("pushButton_export"))
-        self.horizontalLayout.addWidget(self.pushButton_export)
-        self.verticalLayout.addLayout(self.horizontalLayout)
-        self.horizontalLayout_2 = QtGui.QHBoxLayout()
-        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
-        self.label_a = QtGui.QLabel(Form)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Preferred)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.label_a.sizePolicy().hasHeightForWidth())
-        self.label_a.setSizePolicy(sizePolicy)
-        self.label_a.setObjectName(_fromUtf8("label_a"))
-        self.horizontalLayout_2.addWidget(self.label_a)
-        self.doubleSpinBox_a = QtGui.QDoubleSpinBox(Form)
-        self.doubleSpinBox_a.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing |
-                                          QtCore.Qt.AlignVCenter)
-        self.doubleSpinBox_a.setMaximum(1000)
-        self.doubleSpinBox_a.setProperty("value", 1)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.doubleSpinBox_a.sizePolicy().hasHeightForWidth())
-        self.doubleSpinBox_a.setSizePolicy(sizePolicy)
-        self.doubleSpinBox_a.setObjectName(_fromUtf8("doubleSpinBox_a"))
-        self.horizontalLayout_2.addWidget(self.doubleSpinBox_a)
-        self.label_thres = QtGui.QLabel(Form)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Preferred)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.label_thres.sizePolicy().hasHeightForWidth())
-        self.label_thres.setSizePolicy(sizePolicy)
-        self.label_thres.setObjectName(_fromUtf8("label_thres"))
-        self.horizontalLayout_2.addWidget(self.label_thres)
-        self.doubleSpinBox_thres = QtGui.QDoubleSpinBox(Form)
-        self.doubleSpinBox_thres.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing |
-                                              QtCore.Qt.AlignVCenter)
-        self.doubleSpinBox_thres.setMaximum(0)
-        self.doubleSpinBox_thres.setProperty("value", 0)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.doubleSpinBox_thres.sizePolicy().hasHeightForWidth())
-        self.doubleSpinBox_thres.setSizePolicy(sizePolicy)
-        self.doubleSpinBox_thres.setObjectName(_fromUtf8("doubleSpinBox_thres"))
-        self.horizontalLayout_2.addWidget(self.doubleSpinBox_thres)
-        self.horizontalScrollBar = QtGui.QScrollBar(Form)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.horizontalScrollBar.sizePolicy().hasHeightForWidth())
-        self.horizontalScrollBar.setSizePolicy(sizePolicy)
-        self.horizontalScrollBar.setOrientation(QtCore.Qt.Horizontal)
-        self.horizontalScrollBar.setMaximum(0)
-        self.horizontalScrollBar.setObjectName(_fromUtf8("horizontalScrollBar"))
-        self.horizontalLayout_2.addWidget(self.horizontalScrollBar)
-        self.checkBox_mask = QtGui.QCheckBox(Form)
-        self.checkBox_mask.setChecked(True)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.checkBox_mask.sizePolicy().hasHeightForWidth())
-        self.checkBox_mask.setSizePolicy(sizePolicy)
-        self.checkBox_mask.setObjectName(_fromUtf8("checkBox_mask"))
-        self.horizontalLayout_2.addWidget(self.checkBox_mask)
-        self.checkBox_conf = QtGui.QCheckBox(Form)
-        self.checkBox_conf.setChecked(True)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.checkBox_conf.sizePolicy().hasHeightForWidth())
-        self.checkBox_conf.setSizePolicy(sizePolicy)
-        self.checkBox_conf.setObjectName(_fromUtf8("checkBox_conf"))
-        self.horizontalLayout_2.addWidget(self.checkBox_conf)
-        self.verticalLayout.addLayout(self.horizontalLayout_2)
-        ###########################################################################################
-        self.retranslateUi(Form)
-        # CONNECTS:
-        self.connect(self.pushButton_phase, QtCore.SIGNAL(_fromUtf8('clicked()')),
+    def __init__(self):
+        super().__init__()
+        self.setupUi(self)
+        self.connect(self.pushButton_phase, QtCore.SIGNAL('clicked()'),
                      self.load_phase)
-        self.connect(self.pushButton_mask, QtCore.SIGNAL(_fromUtf8('clicked()')),
+        self.connect(self.pushButton_mask, QtCore.SIGNAL('clicked()'),
                      self.load_mask)
-        self.connect(self.pushButton_conf, QtCore.SIGNAL(_fromUtf8('clicked()')),
+        self.connect(self.pushButton_conf, QtCore.SIGNAL('clicked()'),
                      self.load_conf)
-        self.connect(self.pushButton_export, QtCore.SIGNAL(_fromUtf8('clicked()')),
+        self.connect(self.pushButton_export, QtCore.SIGNAL('clicked()'),
                      self.export)
-        self.connect(self.horizontalScrollBar, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")),
+        self.connect(self.horizontalScrollBar, QtCore.SIGNAL('valueChanged(int)'),
                      self.doubleSpinBox_thres.setValue)
-        self.connect(self.doubleSpinBox_thres, QtCore.SIGNAL(_fromUtf8("valueChanged(double)")),
+        self.connect(self.doubleSpinBox_thres, QtCore.SIGNAL('valueChanged(double)'),
                      self.horizontalScrollBar.setValue)
-        self.connect(self.checkBox_mask, QtCore.SIGNAL(_fromUtf8('clicked()')),
+        self.connect(self.checkBox_mask, QtCore.SIGNAL('clicked()'),
                      self.update_phasemap)
-        self.connect(self.checkBox_conf, QtCore.SIGNAL(_fromUtf8('clicked()')),
+        self.connect(self.checkBox_conf, QtCore.SIGNAL('clicked()'),
                      self.update_phasemap)
-        self.connect(self.doubleSpinBox_a, QtCore.SIGNAL(_fromUtf8('editingFinished()')),
+        self.connect(self.doubleSpinBox_a, QtCore.SIGNAL('editingFinished()'),
                      self.update_phasemap)
-        self.connect(self.doubleSpinBox_thres, QtCore.SIGNAL(_fromUtf8('valueChanged(double)')),
+        self.connect(self.doubleSpinBox_thres, QtCore.SIGNAL('valueChanged(double)'),
                      self.update_mask)
-        QtCore.QMetaObject.connectSlotsByName(Form)
-        # OTHER STUFF:
-        self.mplwidget.axes.set_visible(False)
-        self.mplwidget.axes.set_visible(False)
-        self.mplwidget.axes.set_visible(False)
-        self.pushButton_mask.setEnabled(False)
-        self.pushButton_conf.setEnabled(False)
-        self.pushButton_export.setEnabled(False)
-        self.doubleSpinBox_thres.setEnabled(False)
-        self.horizontalScrollBar.setEnabled(False)
         self.phase_loaded = False
         self.mask_loaded = False
-        self.dir = ''
+        self.dir = os.path.join(pr.DIR_FILES)
 
-    def retranslateUi(self, Form):
-        ###########################################################################################
-        Form.setWindowTitle(_translate("Form", "PhaseMap Creator", None))
-        self.pushButton_phase.setText(_translate("Form", "Load Phase", None))
-        self.pushButton_mask.setText(_translate("Form", "Load Mask", None))
-        self.pushButton_conf.setText(_translate("Form", "Load Confidence", None))
-        self.pushButton_export.setText(_translate("Form", "Export PhaseMap", None))
-        self.label_a.setText(_translate("Form", "Grid Spacing [nm]:", None))
-        self.label_thres.setText(_translate("Form", "Mask Threshold:", None))
-        self.checkBox_mask.setText(_translate("Form", "show mask", None))
-        self.checkBox_conf.setText(_translate("Form", "show confidence", None))
-        ###########################################################################################
+    def addmpl(self):
+        fig = Figure()
+        fig.add_subplot(111, aspect='equal')
+        self.canvas = FigureCanvas(fig)
+        self.mplLayout.addWidget(self.canvas)
+        self.canvas.draw()
+        self.toolbar = NavigationToolbar(self.canvas, self, coordinates=True)
+        self.mplLayout.addWidget(self.toolbar)
 
     def update_phasemap(self):
         if self.phase_loaded:
             self.phase_map.a = self.doubleSpinBox_a.value()
             show_mask = self.checkBox_mask.isChecked()
             show_conf = self.checkBox_conf.isChecked()
-            self.mplwidget.axes.clear()
-            self.mplwidget.axes.hold(True)
-            self.phase_map.display_phase('PhaseMap', axis=self.mplwidget.axes,
+            self.canvas.figure.axes[0].clear()
+            self.canvas.figure.axes[0].hold(True)
+            self.phase_map.display_phase('PhaseMap', axis=self.canvas.figure.axes[0],
                                          show_mask=show_mask, show_conf=show_conf, cbar=False)
-            self.mplwidget.draw()
+            self.canvas.draw()
 
     def update_mask(self):
         if self.mask_loaded:
@@ -209,14 +87,13 @@ class UI_PhaseMapCreatorMain(QtGui.QWidget):
     def load_phase(self):
         try:
             self.phase_path = QtGui.QFileDialog.getOpenFileName(self, 'Load Phase', self.dir)
-            self.phase_map = PhaseMap.from_signal(hs.load(self.phase_path))
+            self.phase_map = pr.PhaseMap.from_signal(hs.load(self.phase_path))
         except ValueError:
             return  # Abort if no phase_path is selected!
         self.doubleSpinBox_a.setValue(self.phase_map.a)
         self.dir = os.path.join(os.path.dirname(self.phase_path))
-        self.mplwidget.axes.set_visible(True)
-        self.mplwidget.axes.set_visible(True)
-        self.mplwidget.axes.set_visible(True)
+        if not self.phase_loaded:
+            self.addmpl()
         self.pushButton_mask.setEnabled(True)
         self.pushButton_conf.setEnabled(True)
         self.pushButton_export.setEnabled(True)
@@ -258,7 +135,7 @@ class UI_PhaseMapCreatorMain(QtGui.QWidget):
         except ValueError:
             return  # Abort if no conf_path is selected!
         confidence = hs.load(conf_path).data
-        confidence /= confidence.max()
+        confidence = confidence / confidence.max()
         confidence = np.asarray(Image.fromarray(confidence).resize(self.phase_map.dim_uv))
         self.phase_map.confidence = confidence
         self.update_phasemap()
@@ -276,6 +153,6 @@ class UI_PhaseMapCreatorMain(QtGui.QWidget):
 
 if __name__ == '__main__':
     app = QtGui.QApplication(sys.argv)
-    widget = UI_PhaseMapCreatorMain()
-    widget.show()
+    main = Main()
+    main.show()
     sys.exit(app.exec_())
diff --git a/scripts/gui/phasemap_creator.ui b/scripts/gui/phasemap_creator.ui
index 80c7391..caa64fc 100644
--- a/scripts/gui/phasemap_creator.ui
+++ b/scripts/gui/phasemap_creator.ui
@@ -1,209 +1,222 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
- <class>Form</class>
- <widget class="QWidget" name="Form">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>789</width>
-    <height>775</height>
+    <width>726</width>
+    <height>632</height>
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Form</string>
+   <string>MainWindow</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <widget class="MatplotlibWidget" name="mplwidget"/>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QPushButton" name="pushButton_phase">
-       <property name="text">
-        <string>Load Phase</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="pushButton_mask">
-       <property name="text">
-        <string>Load Mask</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="pushButton_conf">
-       <property name="text">
-        <string>Load Confidence</string>
-       </property>
-       <property name="checkable">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="pushButton_export">
-       <property name="text">
-        <string>Export Phasemap</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
-     <item>
-      <widget class="QLabel" name="label_2">
-       <property name="text">
-        <string>Grid spacing [nm]:</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QDoubleSpinBox" name="doubleSpinBox_2">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="minimumSize">
-        <size>
-         <width>60</width>
-         <height>0</height>
-        </size>
-       </property>
-       <property name="baseSize">
-        <size>
-         <width>0</width>
-         <height>0</height>
-        </size>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-       </property>
-       <property name="maximum">
-        <double>1000.000000000000000</double>
-       </property>
-       <property name="value">
-        <double>1.000000000000000</double>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QLabel" name="label">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text">
-        <string>Mask Threshold:</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QDoubleSpinBox" name="doubleSpinBox">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="minimumSize">
-        <size>
-         <width>60</width>
-         <height>0</height>
-        </size>
-       </property>
-       <property name="maximumSize">
-        <size>
-         <width>16777215</width>
-         <height>16777215</height>
-        </size>
-       </property>
-       <property name="baseSize">
-        <size>
-         <width>0</width>
-         <height>0</height>
-        </size>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-       </property>
-       <property name="prefix">
-        <string/>
-       </property>
-       <property name="decimals">
-        <number>2</number>
-       </property>
-       <property name="maximum">
-        <double>0.000000000000000</double>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QScrollBar" name="horizontalScrollBar">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="maximum">
-        <number>0</number>
-       </property>
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="checkBox_mask">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text">
-        <string>show mask</string>
-       </property>
-       <property name="checked">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="checkBox_conf">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text">
-        <string>show confidence</string>
-       </property>
-       <property name="checked">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-  </layout>
+  <widget class="QWidget" name="centralwidget">
+   <property name="windowTitle">
+    <string>Form</string>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout">
+    <item>
+     <widget class="QWidget" name="mplwidget" native="true">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <layout class="QVBoxLayout" name="mplLayout"/>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QPushButton" name="pushButton_phase">
+        <property name="text">
+         <string>Load Phase</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="pushButton_mask">
+        <property name="text">
+         <string>Load Mask</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="pushButton_conf">
+        <property name="text">
+         <string>Load Confidence</string>
+        </property>
+        <property name="checkable">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="pushButton_export">
+        <property name="text">
+         <string>Export Phasemap</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <item>
+       <widget class="QLabel" name="label_2">
+        <property name="text">
+         <string>Grid spacing [nm]:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QDoubleSpinBox" name="doubleSpinBox_a">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>60</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="baseSize">
+         <size>
+          <width>0</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="maximum">
+         <double>1000.000000000000000</double>
+        </property>
+        <property name="value">
+         <double>1.000000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLabel" name="label">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Mask Threshold:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QDoubleSpinBox" name="doubleSpinBox_thres">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>60</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16777215</width>
+          <height>16777215</height>
+         </size>
+        </property>
+        <property name="baseSize">
+         <size>
+          <width>0</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="prefix">
+         <string/>
+        </property>
+        <property name="decimals">
+         <number>2</number>
+        </property>
+        <property name="maximum">
+         <double>0.000000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QScrollBar" name="horizontalScrollBar">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="maximum">
+         <number>0</number>
+        </property>
+        <property name="singleStep">
+         <number>1</number>
+        </property>
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="checkBox_mask">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>show mask</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="checkBox_conf">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>show confidence</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
  </widget>
- <customwidgets>
-  <customwidget>
-   <class>MatplotlibWidget</class>
-   <extends>QWidget</extends>
-   <header>matplotlibwidget</header>
-  </customwidget>
- </customwidgets>
  <resources/>
  <connections/>
 </ui>
diff --git a/scripts/magdata/magdata_from_vtk.py b/scripts/magdata/magdata_from_vtk.py
index d16a223..b17b8e7 100644
--- a/scripts/magdata/magdata_from_vtk.py
+++ b/scripts/magdata/magdata_from_vtk.py
@@ -1,8 +1,6 @@
 # -*- coding: utf-8 -*-
 """Create magnetization distributions from vtk-files."""
 
-from __future__ import print_function
-
 import logging.config
 import os
 from time import sleep
@@ -25,8 +23,7 @@ b_0 = 1.
 
 
 def enclosing_zero(x, y, nx=30, ny=30):
-    """
-    Construct a grid of points, that are some distance away from points (x, y)
+    """Construct a grid of points, that are some distance away from points (x, y)
 
     Parameters
     ----------
@@ -47,7 +44,7 @@ def enclosing_zero(x, y, nx=30, ny=30):
     dx = x.ptp() / nx
     dy = y.ptp() / ny
     xp, yp = np.mgrid[x.min() - 2 * dx:x.max() + 2 * dx:(nx + 2) * 1j,
-             y.min() - 2 * dy:y.max() + 2 * dy:(ny + 2) * 1j]
+                      y.min() - 2 * dy:y.max() + 2 * dy:(ny + 2) * 1j]
     xp = xp.ravel()
     yp = yp.ravel()
     # Use KDTree to answer the question: "which point of set (x, y) is the
diff --git a/scripts/phasemap/phasemap_from_dm3.py b/scripts/phasemap/phasemap_from_dm3.py
index 3eaf9d6..0301697 100644
--- a/scripts/phasemap/phasemap_from_dm3.py
+++ b/scripts/phasemap/phasemap_from_dm3.py
@@ -7,18 +7,19 @@ import os
 import numpy as np
 from PIL import Image
 
-import hyperspy.hspy as hp
-import pyramid as py
+import hyperspy.api as hs
+import pyramid as pr
 
 import matplotlib.pyplot as plt
 
-logging.config.fileConfig(py.LOGGING_CONFIG, disable_existing_loggers=False)
+logging.config.fileConfig(pr.LOGGING_CONFIG, disable_existing_loggers=False)
 
 ###################################################################################################
-path_mag = 'zi_an_38kx_220K_09p32_w1198_h154.dm3'
-path_mask = 'zi_an_38kx_220K_00p10_w1198_h154_mask_in.txt'
+path_mag = 'zi_an_skyrmions_02_38kx_220K_06p27_r_t_magn_x13_y27_w420_h400.dm3'
+path_mask = 'zi_an_skyrmions_02_38kx_220K_06p27_r_t_magn_x13_y27_w420_h400_mask_roi.txt'
 path_conf = None
-filename = 'phasemap_dm3_zi_an_magnetite_09p32.hdf5'
+filename = 'phasemap_dm3_{}.hdf5'.format(os.path.splitext(path_mag)[0])
+print(filename)
 a = 1.
 dim_uv = None
 threshold = 0.5
@@ -26,16 +27,16 @@ flip_up_down = True
 ###################################################################################################
 
 # Load images:
-im_mag_hp = hp.load(os.path.join(py.DIR_FILES, 'dm3', path_mag))
+im_mag_hp = hs.load(os.path.join(pr.DIR_FILES, 'dm3', path_mag))
 im_mag = Image.fromarray(im_mag_hp.data)
 if path_mask is not None:
     # im_mask_hp = hp.load(os.path.join(pr.DIR_FILES, 'dm3', path_mask))
-    mask_data = np.genfromtxt(os.path.join(py.DIR_FILES, 'dm3', path_mask), delimiter=',')
+    mask_data = np.genfromtxt(os.path.join(pr.DIR_FILES, 'dm3', path_mask), delimiter=',')
     im_mask = Image.fromarray(mask_data)  # )im_mask_hp.data)
 else:
     im_mask = Image.new('F', im_mag.size, 'white')
 if path_conf is not None:
-    im_conf_hp = hp.load(os.path.join(py.DIR_FILES, 'dm3', path_conf))
+    im_conf_hp = hs.load(os.path.join(pr.DIR_FILES, 'dm3', path_conf))
     im_conf = Image.fromarray(im_conf_hp.data)
 else:
     im_conf = Image.new('F', im_mag.size, 'white')
@@ -54,7 +55,7 @@ mask = np.where(np.asarray(im_mask) >= threshold, True, False)
 confidence = np.where(np.asarray(im_conf) >= threshold, 1, 0)
 
 # Create and save PhaseMap object:
-phase_map = py.PhaseMap(a, phase, mask, confidence, unit='rad')
-phase_map.save_to_hdf5(os.path.join(py.DIR_FILES, 'phasemap', filename), overwrite=True)
+phase_map = pr.PhaseMap(a, phase, mask, confidence, unit='rad')
+phase_map.save_to_hdf5(os.path.join(pr.DIR_FILES, 'phasemap', filename), overwrite=True)
 phase_map.display_combined()
 plt.show()
diff --git a/scripts/phasemap/phasemap_from_raw.py b/scripts/phasemap/phasemap_from_raw.py
index 8870041..71cca7d 100644
--- a/scripts/phasemap/phasemap_from_raw.py
+++ b/scripts/phasemap/phasemap_from_raw.py
@@ -4,12 +4,11 @@
 import logging.config
 import os
 
-import pyramid as pr
-
 import matplotlib.pyplot as plt
 import numpy as np
 from PIL import Image
 
+import pyramid as pr
 
 logging.config.fileConfig(pr.LOGGING_CONFIG, disable_existing_loggers=False)
 
diff --git a/scripts/reconstruction/reconstruction_2d_from_phasemap.py b/scripts/reconstruction/reconstruction_2d_from_phasemap.py
index 7ed9b37..7d04d2c 100644
--- a/scripts/reconstruction/reconstruction_2d_from_phasemap.py
+++ b/scripts/reconstruction/reconstruction_2d_from_phasemap.py
@@ -1,19 +1,20 @@
 # -*- coding: utf-8 -*-
 """Reconstruct a magnetization distributions from a single phase map."""
 
-from __future__ import print_function
+import logging.config
 
+import matplotlib.pyplot as plt
 import numpy as np
+
 import pyramid as pr
 from jutil.taketime import TakeTime
-import logging.config
 
 logging.config.fileConfig(pr.LOGGING_CONFIG, disable_existing_loggers=False)
 
 ###################################################################################################
-phase_name = 'phasemap_gui_150917_skyrm_M_100mT'
+phase_name = 'phasemap_dm3_zi_an_skyrmions_02_38kx_220K_06p27_r_t_magn_x13_y27_w420_h400'
 b_0 = 1  # in T
-lam = 1E-1
+lam = 1E-3
 max_iter = 100
 buffer_pixel = 0
 order = 1
@@ -47,7 +48,6 @@ else:
 mag_data_buffer = mag_data_rec.copy()
 mag_data_rec.crop((0, buffer_pixel, buffer_pixel))
 mag_name = '{}_lam={}'.format(phase_name.replace('phasemap', 'magdata_rec'), lam)
-mag_data_rec = mag_data_rec.flip(axis='y')
 mag_data_rec.save_to_hdf5(mag_name + '.hdf5', overwrite=True)
 
 # Plot stuff:
@@ -69,3 +69,4 @@ difference = (phase_map_rec.phase - phase_map.phase).mean()
 (phase_map_rec - phase_map).display_phase('Difference (mean: {:.2g})'.format(difference))
 if order is not None:
     fwd_model.ramp(0).display_combined('Fitted Ramp')
+plt.show()
diff --git a/setup.py b/setup.py
index 3d455d0..d2b588f 100644
--- a/setup.py
+++ b/setup.py
@@ -2,8 +2,6 @@
 # coding=utf-8
 """Setup for testing, building, distributing and installing the 'Pyramid'-package"""
 
-from __future__ import print_function
-
 import os
 import re
 import subprocess
@@ -16,7 +14,7 @@ from setuptools import setup, find_packages
 from setuptools.extension import Extension
 
 # Import Hyperspy before actually doing stuff, to set the PyQT API at the very beginning (to 2).
-# If this is not done, something sets it to 1 befor HyperSpy is imported, which leads to errors.
+# If this is not done, something sets it to 1 befor Hyperspy is imported, which leads to errors.
 
 
 DISTNAME = 'pyramid'
@@ -104,9 +102,9 @@ def write_version_py(filename='pyramid/version.py'):
 
     """
     version_string = '# -*- coding: utf-8 -*-\n' + \
-                     '"""This file is generated automatically by the Pyramid `setup.py`"""\n' + \
-                     'version = \'{}\'\n'.format(VERSION) + \
-                     'hg_revision = \'{}\'\n'.format(hg_version())
+                     '""""This file is generated automatically by the Pyramid `setup.py`"""\n' + \
+                     'version = "{}"\n'.format(VERSION) + \
+                     'hg_revision = "{}"\n'.format(hg_version())
     with open(os.path.join(os.path.dirname(__file__), filename), 'w') as vfile:
         vfile.write(version_string)
 
@@ -148,16 +146,12 @@ setup(name=DISTNAME,
       version=VERSION,
       packages=find_packages(exclude=['tests']),
       include_dirs=[numpy.get_include()],
-      requires=['numpy', 'matplotlib', 'mayavi', 'hyperspy', 'PIL', 'scipy', 'pyfftw', 'Cython'],
+      requires=['numpy', 'scipy', 'matplotlib', 'Pillow',
+                'mayavi', 'pyfftw', 'hyperspy', 'Cython'],
       scripts=get_files('scripts'),
       test_suite='nose.collector',
       cmdclass={'build_ext': build_ext, 'build': build},
       ext_package='pyramid/numcore',
-      ext_modules=[
-          Extension('phasemapper_core', ['pyramid/numcore/phasemapper_core.pyx'],
-                    include_dirs=[numpy.get_include()],
-                    extra_compile_args=['-march=native', '-mtune=native']
-                    )
-      ]
-      )
+      ext_modules=[Extension('phasemapper_core', ['pyramid/numcore/phasemapper_core.pyx'],
+                             include_dirs=[numpy.get_include()])])
 print('-------------------------------------------------------------------------------\n')
-- 
GitLab