From 4725e6cfc0c3a6076a88c275e47d0fff019f33a4 Mon Sep 17 00:00:00 2001 From: Jan Caron <j.caron@fz-juelich.de> Date: Fri, 4 Mar 2016 13:49:37 +0100 Subject: [PATCH] Added fieldconverter module! fieldconverter: methods to convert M to A to B magdata: a bit more parameters for quiver_plot3d(), added contour_plot3d() phasemapper: pm() extended for different projections (not just simple) kernel: u and v switched (now named after the unit magnetization direction, which makes much more sense) --- .idea/workspace.xml | 817 ++++++++++++++--------- pyramid/__init__.py | 4 +- pyramid/fieldconverter.py | 139 ++++ pyramid/kernel.py | 10 +- pyramid/magdata.py | 114 ++-- pyramid/phasemap.py | 8 +- pyramid/phasemapper.py | 62 +- pyramid/tests/test_kernel/ref_u_fft.npy | Bin 400 -> 400 bytes pyramid/tests/test_kernel/ref_v_fft.npy | Bin 400 -> 400 bytes scripts/gui/mag_slicer.py | 10 +- scripts/phasemap/phasemap_tilt_series.py | 4 +- 11 files changed, 760 insertions(+), 408 deletions(-) create mode 100644 pyramid/fieldconverter.py diff --git a/.idea/workspace.xml b/.idea/workspace.xml index b1a5b78..96be35c 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,53 +5,18 @@ <option name="ANALYSIS_IN_BACKGROUND" value="true" /> </component> <component name="ChangeListManager"> - <list default="true" id="990252ab-aff5-4ac2-a857-b193d2c46b18" name="Default" comment="Commit after Reformatting with PyCharms!"> - <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/scopes/__c.xml" /> - <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/scopes/__init__.xml" /> - <change type="DELETED" beforePath="$PROJECT_DIR$/pyramid/template.x3d" afterPath="" /> - <change type="DELETED" beforePath="$PROJECT_DIR$/pyramid/tests/pep8_log.txt" afterPath="" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/Pyramid.iml" afterPath="$PROJECT_DIR$/.idea/Pyramid.iml" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" /> + <list default="true" id="990252ab-aff5-4ac2-a857-b193d2c46b18" name="Default" comment="Added fieldconverter module! fieldconverter: methods to convert M to A to B magdata: a bit more parameters for quiver_plot3d(), added contour_plot3d() phasemapper: pm() extended for different projections (not just simple) kernel: u and v switched (now named after the unit magnetization direction, which makes much more sense)"> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/pyramid/fieldconverter.py" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_kernel/ref_u_fft.npy" afterPath="$PROJECT_DIR$/pyramid/tests/test_kernel/ref_u_fft.npy" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_kernel/ref_v_fft.npy" afterPath="$PROJECT_DIR$/pyramid/tests/test_kernel/ref_v_fft.npy" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/Makefile" afterPath="$PROJECT_DIR$/docs/Makefile" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/conf.py" afterPath="$PROJECT_DIR$/docs/conf.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/index.rst" afterPath="$PROJECT_DIR$/docs/index.rst" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/make.bat" afterPath="$PROJECT_DIR$/docs/make.bat" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/pyramid.rst" afterPath="$PROJECT_DIR$/docs/pyramid.rst" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/__init__.py" afterPath="$PROJECT_DIR$/pyramid/__init__.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/analytic.py" afterPath="$PROJECT_DIR$/pyramid/analytic.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/colormap.py" afterPath="$PROJECT_DIR$/pyramid/colormap.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/config.py" afterPath="$PROJECT_DIR$/pyramid/config.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/costfunction.py" afterPath="$PROJECT_DIR$/pyramid/costfunction.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/dataset.py" afterPath="$PROJECT_DIR$/pyramid/dataset.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/diagnostics.py" afterPath="$PROJECT_DIR$/pyramid/diagnostics.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/fft.py" afterPath="$PROJECT_DIR$/pyramid/fft.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/forwardmodel.py" afterPath="$PROJECT_DIR$/pyramid/forwardmodel.py" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/kernel.py" afterPath="$PROJECT_DIR$/pyramid/kernel.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/magcreator.py" afterPath="$PROJECT_DIR$/pyramid/magcreator.py" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/magdata.py" afterPath="$PROJECT_DIR$/pyramid/magdata.py" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/phasemap.py" afterPath="$PROJECT_DIR$/pyramid/phasemap.py" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/phasemapper.py" afterPath="$PROJECT_DIR$/pyramid/phasemapper.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/projector.py" afterPath="$PROJECT_DIR$/pyramid/projector.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/quaternion.py" afterPath="$PROJECT_DIR$/pyramid/quaternion.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/ramp.py" afterPath="$PROJECT_DIR$/pyramid/ramp.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/reconstruction.py" afterPath="$PROJECT_DIR$/pyramid/reconstruction.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/regularisator.py" afterPath="$PROJECT_DIR$/pyramid/regularisator.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_analytic.py" afterPath="$PROJECT_DIR$/pyramid/tests/test_analytic.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_costfunction.py" afterPath="$PROJECT_DIR$/pyramid/tests/test_costfunction.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_dataset.py" afterPath="$PROJECT_DIR$/pyramid/tests/test_dataset.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_forwardmodel.py" afterPath="$PROJECT_DIR$/pyramid/tests/test_forwardmodel.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_kernel.py" afterPath="$PROJECT_DIR$/pyramid/tests/test_kernel.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_magcreator.py" afterPath="$PROJECT_DIR$/pyramid/tests/test_magcreator.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_magdata.py" afterPath="$PROJECT_DIR$/pyramid/tests/test_magdata.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_phasemap.py" afterPath="$PROJECT_DIR$/pyramid/tests/test_phasemap.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_phasemapper.py" afterPath="$PROJECT_DIR$/pyramid/tests/test_phasemapper.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_projector.py" afterPath="$PROJECT_DIR$/pyramid/tests/test_projector.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/tests/test_regularisator.py" afterPath="$PROJECT_DIR$/pyramid/tests/test_regularisator.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pyramid/version.py" afterPath="$PROJECT_DIR$/pyramid/version.py" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/scripts/gui/mag_slicer.py" afterPath="$PROJECT_DIR$/scripts/gui/mag_slicer.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/scripts/reconstruction/reconstruction_3d_from_magdata.py" afterPath="$PROJECT_DIR$/scripts/reconstruction/reconstruction_3d_from_magdata.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/setup.py" afterPath="$PROJECT_DIR$/setup.py" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/scripts/phasemap/phasemap_tilt_series.py" afterPath="$PROJECT_DIR$/scripts/phasemap/phasemap_tilt_series.py" /> </list> <ignored path="Pyramid.iws" /> <ignored path=".idea/workspace.xml" /> @@ -75,7 +40,185 @@ <favorites_list name="Pyramid" /> </component> <component name="FileEditorManager"> - <leaf SIDE_TABS_SIZE_LIMIT_KEY="300" /> + <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> + <file leaf-file-name="magcreator.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/pyramid/magcreator.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="16" column="3" selection-start-line="4" selection-start-column="0" selection-end-line="16" selection-end-column="3" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="projector.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/pyramid/projector.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="608" column="51" selection-start-line="608" selection-start-column="8" selection-end-line="608" selection-end-column="51" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="phasemapper.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/pyramid/phasemapper.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="-8.666667"> + <caret line="332" column="51" selection-start-line="332" selection-start-column="51" selection-end-line="332" selection-end-column="51" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="test_kernel.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_kernel.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="26" column="0" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="mag_slicer.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/scripts/gui/mag_slicer.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="223" column="57" selection-start-line="223" selection-start-column="57" selection-end-line="223" selection-end-column="57" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="phasemap_creator.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/scripts/gui/phasemap_creator.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="11" column="10" selection-start-line="11" selection-start-column="10" selection-end-line="11" selection-end-column="10" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="fft.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/pyramid/fft.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="296" column="15" selection-start-line="296" selection-start-column="15" selection-end-line="296" selection-end-column="28" /> + <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="95" column="34" selection-start-line="95" selection-start-column="34" selection-end-line="95" selection-end-column="34" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="phasemap_tilt_series.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/scripts/phasemap/phasemap_tilt_series.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="40" column="16" selection-start-line="40" selection-start-column="16" selection-end-line="40" selection-end-column="16" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="dataset.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/pyramid/dataset.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="157" column="8" selection-start-line="157" selection-start-column="8" selection-end-line="157" selection-end-column="8" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="reconstruction.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/pyramid/reconstruction.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="46" column="27" selection-start-line="46" selection-start-column="27" selection-end-line="46" selection-end-column="27" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="reconstruction_3d_from_magdata.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/scripts/reconstruction/reconstruction_3d_from_magdata.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="11" column="0" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="76" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="Untitled.py" pinned="false" current-in-tab="false"> + <entry file="file://$USER_HOME$/Downloads/Untitled.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="44" column="40" selection-start-line="44" selection-start-column="40" selection-end-line="44" selection-end-column="40" /> + <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="781" column="8" selection-start-line="781" selection-start-column="8" selection-end-line="781" selection-end-column="8" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="magdata.py" pinned="false" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/pyramid/magdata.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.62133646"> + <caret line="879" column="31" selection-start-line="879" selection-start-column="31" selection-end-line="879" selection-end-column="31" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="__init__.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/pyramid/__init__.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <caret line="90" column="38" selection-start-line="90" selection-start-column="38" selection-end-line="90" selection-end-column="38" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="config.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/pyramid/config.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0"> + <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> + </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" /> @@ -93,27 +236,21 @@ <option value="$PROJECT_DIR$/pyramid/numcore/__init__.py" /> <option value="$PROJECT_DIR$/../HyperSpy/hyperspy/_signals/phase_image.py" /> <option value="$PROJECT_DIR$/../HyperSpy/hyperspy/signals.py" /> - <option value="$PROJECT_DIR$/scripts/gui/mag_slicer.py" /> <option value="$PROJECT_DIR$/pyramid/costfunction.py" /> <option value="$PROJECT_DIR$/pyramid/projector.py" /> <option value="$PROJECT_DIR$/pyramid/reconstruction.py" /> <option value="$PROJECT_DIR$/pyramid/regularisator.py" /> <option value="$PROJECT_DIR$/pyramid/dataset.py" /> - <option value="$PROJECT_DIR$/pyramid/kernel.py" /> <option value="$PROJECT_DIR$/docs/index.rst" /> <option value="$PROJECT_DIR$/docs/pyramid.rst" /> <option value="$PROJECT_DIR$/pyramid/colormap.py" /> <option value="$PROJECT_DIR$/pyramid/ramp.py" /> <option value="$PROJECT_DIR$/docs/conf.py" /> - <option value="$PROJECT_DIR$/pyramid/magcreator.py" /> - <option value="$PROJECT_DIR$/pyramid/phasemap.py" /> <option value="$PROJECT_DIR$/pyramid/quaternion.py" /> <option value="$PROJECT_DIR$/scripts/reconstruction/reconstruction_3d_from_magdata.py" /> <option value="$PROJECT_DIR$/pyramid/forwardmodel.py" /> - <option value="$PROJECT_DIR$/pyramid/magdata.py" /> <option value="$PROJECT_DIR$/pyramid/diagnostics.py" /> <option value="$PROJECT_DIR$/pyramid/fft.py" /> - <option value="$PROJECT_DIR$/pyramid/phasemapper.py" /> <option value="$PROJECT_DIR$/pyramid/version.py" /> <option value="$PROJECT_DIR$/setup.py" /> <option value="$PROJECT_DIR$/pyramid/tests/test_dataset.py" /> @@ -129,7 +266,15 @@ <option value="$PROJECT_DIR$/pyramid/tests/test_analytic.py" /> <option value="$PROJECT_DIR$/pyramid/config.py" /> <option value="$PROJECT_DIR$/pyramid/analytic.py" /> + <option value="$PROJECT_DIR$/pyramid/magcreator.py" /> + <option value="$USER_HOME$/Downloads/Untitled.py" /> <option value="$PROJECT_DIR$/pyramid/__init__.py" /> + <option value="$PROJECT_DIR$/pyramid/phasemap.py" /> + <option value="$PROJECT_DIR$/scripts/gui/mag_slicer.py" /> + <option value="$PROJECT_DIR$/pyramid/fieldconverter.py" /> + <option value="$PROJECT_DIR$/pyramid/phasemapper.py" /> + <option value="$PROJECT_DIR$/pyramid/kernel.py" /> + <option value="$PROJECT_DIR$/pyramid/magdata.py" /> </list> </option> </component> @@ -142,8 +287,8 @@ <component name="ProjectFrameBounds"> <option name="x" value="-8" /> <option name="y" value="-8" /> - <option name="width" value="1616" /> - <option name="height" value="876" /> + <option name="width" value="1936" /> + <option name="height" value="1056" /> </component> <component name="ProjectInspectionProfilesVisibleTreeState"> <entry key="Project Default"> @@ -195,7 +340,34 @@ <foldersAlwaysOnTop value="true" /> </navigator> <panes> - <pane id="Scratches" /> + <pane id="Scope"> + <subPane subId="Changed Files"> + <PATH> + <PATH_ELEMENT USER_OBJECT="Root"> + <option name="myItemId" value="" /> + <option name="myItemType" value="" /> + </PATH_ELEMENT> + <PATH_ELEMENT USER_OBJECT="Pyramid"> + <option name="myItemId" value="" /> + <option name="myItemType" value="" /> + </PATH_ELEMENT> + </PATH> + <PATH> + <PATH_ELEMENT USER_OBJECT="Root"> + <option name="myItemId" value="" /> + <option name="myItemType" value="" /> + </PATH_ELEMENT> + <PATH_ELEMENT USER_OBJECT="Pyramid"> + <option name="myItemId" value="" /> + <option name="myItemType" value="" /> + </PATH_ELEMENT> + <PATH_ELEMENT USER_OBJECT="pyramid"> + <option name="myItemId" value="" /> + <option name="myItemType" value="" /> + </PATH_ELEMENT> + </PATH> + </subPane> + </pane> <pane id="ProjectPane"> <subPane> <PATH> @@ -256,40 +428,31 @@ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> <PATH_ELEMENT> - <option name="myItemId" value="pyramid" /> + <option name="myItemId" value="scripts" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> - </PATH> - </subPane> - </pane> - <pane id="Scope"> - <subPane subId="Changed Files"> - <PATH> - <PATH_ELEMENT USER_OBJECT="Root"> - <option name="myItemId" value="" /> - <option name="myItemType" value="" /> - </PATH_ELEMENT> - <PATH_ELEMENT USER_OBJECT="Pyramid"> - <option name="myItemId" value="" /> - <option name="myItemType" value="" /> + <PATH_ELEMENT> + <option name="myItemId" value="gui" /> + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> </PATH> <PATH> - <PATH_ELEMENT USER_OBJECT="Root"> - <option name="myItemId" value="" /> - <option name="myItemType" value="" /> + <PATH_ELEMENT> + <option name="myItemId" value="Pyramid" /> + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> - <PATH_ELEMENT USER_OBJECT="Pyramid"> - <option name="myItemId" value="" /> - <option name="myItemType" value="" /> + <PATH_ELEMENT> + <option name="myItemId" value="Pyramid" /> + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> - <PATH_ELEMENT USER_OBJECT="pyramid"> - <option name="myItemId" value="" /> - <option name="myItemType" value="" /> + <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="Scratches" /> <pane id="ColorIdeProjectViewPane"> <subPane> <PATH> @@ -313,7 +476,7 @@ </panes> </component> <component name="PropertiesComponent"> - <property name="settings.editor.selected.configurable" value="preferences.sourceCode.Python" /> + <property name="settings.editor.selected.configurable" value="reference.settingsdialog.IDE.editor.colors.Debugger" /> <property name="settings.editor.splitter.proportion" value="0.2" /> <property name="last_opened_file_path" value="$PROJECT_DIR$/docs/_build" /> <property name="FileHistory.org.zmlx.hg4idea.provider.HgHistoryProvider_flatWidth0" value="44" /> @@ -333,11 +496,17 @@ <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 aasfasf.version_info " /> + <property name="restartRequiresConfirmation" value="false" /> + </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="from __future__ import division import sys import os import pdb import hyperspy.api as hs import pyramid from pyramid import * import pyramid.analytic as an import pyramid.magcreator as mc import pyramid.reconstruction as rc import jutil import numpy as np import scipy as sp import matplotlib as mpl import matplotlib.pyplot as plt from pylab import * ion() # Enable Matplotlib's interactive mode sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])" module-name="Pyramid" is-module-sdk="true" working-directory="$PROJECT_DIR$/files/magdata"> - <option name="myCustomStartScript" value="from __future__ import division import sys import os import pdb import hyperspy.api as hs import pyramid from pyramid import * import pyramid.analytic as an import pyramid.magcreator as mc import pyramid.reconstruction as rc import jutil import numpy as np import scipy as sp import matplotlib as mpl import matplotlib.pyplot as plt from pylab import * ion() # Enable Matplotlib's interactive mode sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])" /> + <console-settings custom-start-script="# coding: utf-8 """Startup!""" from __future__ import division import sys import os import pdb import hyperspy.api as hs import pyramid from pyramid import * import pyramid.analytic as an import pyramid.magcreator as mc import pyramid.reconstruction as rc import jutil import numpy as np import scipy as sp import matplotlib as mpl import matplotlib.pyplot as plt from pylab import * import logging.config logging.config.fileConfig(LOGGING_CONFIG, disable_existing_loggers=False) ion() # Enable Matplotlib's interactive mode sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS]) " module-name="Pyramid" is-module-sdk="true" working-directory="$PROJECT_DIR$/files/magdata"> + <option name="myCustomStartScript" value="# coding: utf-8 """Startup!""" from __future__ import division import sys import os import pdb import hyperspy.api as hs import pyramid from pyramid import * import pyramid.analytic as an import pyramid.magcreator as mc import pyramid.reconstruction as rc import jutil import numpy as np import scipy as sp import matplotlib as mpl import matplotlib.pyplot as plt from pylab import * import logging.config logging.config.fileConfig(LOGGING_CONFIG, disable_existing_loggers=False) ion() # Enable Matplotlib's interactive mode sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS]) " /> <option name="myUseModuleSdk" value="true" /> <option name="myModuleName" value="Pyramid" /> <option name="myWorkingDirectory" value="$PROJECT_DIR$/files/magdata" /> @@ -354,24 +523,7 @@ </key> </component> <component name="RunManager" selected="Python tests.Pyramid Tests"> - <configuration default="false" name="mag_slicer" 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="" /> - <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="Pyramid" /> - <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="phasemap" type="PythonConfigurationType" factoryName="Python" temporary="true"> + <configuration default="false" name="magdata" type="PythonConfigurationType" factoryName="Python" temporary="true"> <option name="INTERPRETER_OPTIONS" value="" /> <option name="PARENT_ENVS" value="true" /> <envs> @@ -383,58 +535,41 @@ <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/phasemap.py" /> + <option name="SCRIPT_NAME" value="$PROJECT_DIR$/pyramid/magdata.py" /> <option name="PARAMETERS" value="" /> <option name="SHOW_COMMAND_LINE" value="true" /> <method /> </configuration> - <configuration default="false" name="reconstruction_3d_from_magdata" type="PythonConfigurationType" factoryName="Python" temporary="true"> + <configuration default="false" name="setup" 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$/scripts/reconstruction" /> + <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <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/reconstruction/reconstruction_3d_from_magdata.py" /> + <option name="SCRIPT_NAME" value="$PROJECT_DIR$/setup.py" /> <option name="PARAMETERS" value="" /> <option name="SHOW_COMMAND_LINE" value="true" /> <method /> </configuration> - <configuration default="false" name="fft" type="PythonConfigurationType" factoryName="Python" temporary="true"> + <configuration default="false" name="Untitled" 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="WORKING_DIRECTORY" value="$USER_HOME$/Downloads" /> + <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="$PROJECT_DIR$/pyramid/fft.py" /> - <option name="PARAMETERS" value="" /> - <option name="SHOW_COMMAND_LINE" value="true" /> - <method /> - </configuration> - <configuration default="false" name="setup" 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$" /> - <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$/setup.py" /> + <option name="SCRIPT_NAME" value="$USER_HOME$/Downloads/Untitled.py" /> <option name="PARAMETERS" value="" /> <option name="SHOW_COMMAND_LINE" value="true" /> <method /> @@ -581,6 +716,40 @@ <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" /> @@ -620,21 +789,19 @@ <method /> </configuration> <list size="7"> - <item index="0" class="java.lang.String" itemvalue="Python docs.Pyramid Sphinx" /> - <item index="1" class="java.lang.String" itemvalue="Python tests.Pyramid Tests" /> - <item index="2" class="java.lang.String" itemvalue="Python.mag_slicer" /> - <item index="3" class="java.lang.String" itemvalue="Python.phasemap" /> - <item index="4" class="java.lang.String" itemvalue="Python.reconstruction_3d_from_magdata" /> - <item index="5" class="java.lang.String" itemvalue="Python.fft" /> - <item index="6" class="java.lang.String" itemvalue="Python.setup" /> + <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.magdata" /> + <item index="5" class="java.lang.String" itemvalue="Python.setup" /> + <item index="6" class="java.lang.String" itemvalue="Python.Untitled" /> </list> <recent_temporary> - <list size="5"> - <item index="0" class="java.lang.String" itemvalue="Python.setup" /> - <item index="1" class="java.lang.String" itemvalue="Python.fft" /> - <item index="2" class="java.lang.String" itemvalue="Python.reconstruction_3d_from_magdata" /> - <item index="3" class="java.lang.String" itemvalue="Python.phasemap" /> - <item index="4" class="java.lang.String" itemvalue="Python.mag_slicer" /> + <list size="3"> + <item index="0" class="java.lang.String" itemvalue="Python.magdata" /> + <item index="1" class="java.lang.String" itemvalue="Python.Untitled" /> + <item index="2" class="java.lang.String" itemvalue="Python.setup" /> </list> </recent_temporary> </component> @@ -695,38 +862,44 @@ <option name="project" value="LOCAL" /> <updated>1456209518394</updated> </task> - <option name="localTasksCounter" value="8" /> + <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> + <option name="localTasksCounter" value="9" /> <servers /> </component> <component name="TestHistory"> - <history-entry file="Pyramid_Tests - 2016.02.25 at 12h 10m 06s.xml"> + <history-entry file="Pyramid_Tests - 2016.02.28 at 23h 13m 11s.xml"> <configuration name="Pyramid Tests" configurationId="tests" /> </history-entry> - <history-entry file="Pyramid_Tests - 2016.02.25 at 12h 11m 44s.xml"> + <history-entry file="Pyramid_Tests - 2016.02.28 at 23h 56m 53s.xml"> <configuration name="Pyramid Tests" configurationId="tests" /> </history-entry> - <history-entry file="Pyramid_Tests - 2016.02.25 at 12h 11m 50s.xml"> + <history-entry file="Pyramid_Tests - 2016.02.29 at 00h 18m 56s.xml"> <configuration name="Pyramid Tests" configurationId="tests" /> </history-entry> - <history-entry file="Pyramid_Tests - 2016.02.26 at 16h 08m 01s.xml"> + <history-entry file="Pyramid_Tests - 2016.02.29 at 00h 21m 13s.xml"> <configuration name="Pyramid Tests" configurationId="tests" /> </history-entry> - <history-entry file="Pyramid_Tests - 2016.02.28 at 23h 04m 43s.xml"> + <history-entry file="Pyramid_Tests - 2016.03.04 at 11h 28m 50s.xml"> <configuration name="Pyramid Tests" configurationId="tests" /> </history-entry> - <history-entry file="Pyramid_Tests - 2016.02.28 at 23h 09m 16s.xml"> + <history-entry file="Pyramid_Tests - 2016.03.04 at 12h 53m 22s.xml"> <configuration name="Pyramid Tests" configurationId="tests" /> </history-entry> - <history-entry file="Pyramid_Tests - 2016.02.28 at 23h 13m 11s.xml"> + <history-entry file="Pyramid_Tests - 2016.03.04 at 12h 55m 39s.xml"> <configuration name="Pyramid Tests" configurationId="tests" /> </history-entry> - <history-entry file="Pyramid_Tests - 2016.02.28 at 23h 56m 53s.xml"> + <history-entry file="Pyramid_Tests - 2016.03.04 at 12h 56m 18s.xml"> <configuration name="Pyramid Tests" configurationId="tests" /> </history-entry> - <history-entry file="Pyramid_Tests - 2016.02.29 at 00h 18m 56s.xml"> + <history-entry file="Pyramid_Tests - 2016.03.04 at 12h 56m 40s.xml"> <configuration name="Pyramid Tests" configurationId="tests" /> </history-entry> - <history-entry file="Pyramid_Tests - 2016.02.29 at 00h 21m 13s.xml"> + <history-entry file="Pyramid_Tests - 2016.03.04 at 12h 56m 47s.xml"> <configuration name="Pyramid Tests" configurationId="tests" /> </history-entry> </component> @@ -740,27 +913,27 @@ </todo-panel> </component> <component name="ToolWindowManager"> - <frame x="-8" y="-8" width="1616" height="876" extended-state="6" /> - <editor active="false" /> + <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" /> + <editor active="true" /> <layout> - <window_info id="TODO" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.40616965" 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.33290488" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" /> + <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.13859275" 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.40565032" 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="true" 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.42866325" 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="false" show_stripe_button="true" weight="0.51349616" sideWeight="0.49746513" order="3" 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.36620468" 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.4415167" 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.41773778" sideWeight="0.49746513" order="4" 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.37739873" 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="true" show_stripe_button="true" weight="0.1108742" 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="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18508998" sideWeight="0.49186993" order="0" 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.41791046" 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.087403595" 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.40565032" sideWeight="0.5" order="5" 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.30398458" 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.34254497" 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> </component> @@ -790,7 +963,8 @@ <MESSAGE value="Hopefully made hyperspy import (now at beginning of pyramid package) work! Added PyCharm files! Commit before Reformatting with PyCharms!" /> <MESSAGE value="New branch: new signals for holographic analysis!" /> <MESSAGE value="Commit after Reformatting with PyCharms!" /> - <option name="LAST_COMMIT_MESSAGE" value="Commit after Reformatting with PyCharms!" /> + <MESSAGE value="Added fieldconverter module! fieldconverter: methods to convert M to A to B magdata: a bit more parameters for quiver_plot3d(), added contour_plot3d() phasemapper: pm() extended for different projections (not just simple) kernel: u and v switched (now named after the unit magnetization direction, which makes much more sense)" /> + <option name="LAST_COMMIT_MESSAGE" value="Added fieldconverter module! fieldconverter: methods to convert M to A to B magdata: a bit more parameters for quiver_plot3d(), added contour_plot3d() phasemapper: pm() extended for different projections (not just simple) kernel: u and v switched (now named after the unit magnetization direction, which makes much more sense)" /> <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" /> <option name="REARRANGE_BEFORE_PROJECT_COMMIT" value="true" /> <option name="CHANGE_BROWSER_SETTINGS"> @@ -818,401 +992,388 @@ <breakpoints-dialog> <breakpoints-dialog /> </breakpoints-dialog> - <option name="time" value="23" /> + <default-breakpoints> + <breakpoint type="python-exception"> + <properties notifyOnTerminate="true" exception="BaseException"> + <option name="notifyOnTerminate" value="true" /> + </properties> + </breakpoint> + </default-breakpoints> + <option name="time" value="51" /> </breakpoint-manager> - <watches-manager> - <configuration name="PythonConfigurationType"> - <watch expression="result.shape" /> - <watch expression="recv.shape" /> - <watch expression="sub_vec.shape" /> - </configuration> - </watches-manager> + <watches-manager /> </component> <component name="editorHistoryManager"> - <entry file="file://$PROJECT_DIR$/../HyperSpy/hyperspy/io.py"> + <entry file="file://$PROJECT_DIR$/docs/make.bat"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.28687415"> - <caret line="342" column="54" selection-start-line="342" selection-start-column="54" selection-end-line="342" selection-end-column="54" /> - <folding /> + <state vertical-scroll-proportion="-1.9860919"> + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> </state> </provider> </entry> - <entry file="file://C:/Anaconda2/Lib/site-packages/numpy/__init__.py"> + <entry file="file://$PROJECT_DIR$/docs/_static/sphinxdoc.css"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.20457019"> - <caret line="191" column="23" selection-start-line="191" selection-start-column="23" selection-end-line="191" selection-end-column="23" /> + <state vertical-scroll-proportion="-0.9221141"> + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/../../Notebooks/Current Line/Current line.ipynb"> - <provider selected="true" editor-type-id="ipnb-editor"> - <state> - <selected id="5" /> + <entry file="file://$PROJECT_DIR$/docs/pyramid.numcore.rst"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.21279556"> + <caret line="9" column="0" selection-start-line="9" selection-start-column="0" selection-end-line="9" selection-end-column="0" /> </state> </provider> </entry> - <entry file="file://C:/Anaconda2/Lib/site-packages/pyface/qt/__init__.py"> + <entry file="file://$PROJECT_DIR$/pyramid/ramp.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.36806494"> - <caret line="16" column="0" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" /> + <state vertical-scroll-proportion="0.29310346"> + <caret line="47" column="26" selection-start-line="47" selection-start-column="26" selection-end-line="47" selection-end-column="26" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/regularisator.py"> + <entry file="file://$PROJECT_DIR$/docs/pyramid.rst"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="5.8132186"> - <caret line="238" column="0" selection-start-line="238" selection-start-column="0" selection-end-line="238" selection-end-column="0" /> + <state vertical-scroll-proportion="0.6091954"> + <caret line="136" column="22" selection-start-line="136" selection-start-column="22" selection-end-line="136" selection-end-column="22" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/reconstruction.py"> + <entry file="file://$PROJECT_DIR$/docs/index.rst"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.64511496"> - <caret line="28" column="0" selection-start-line="28" selection-start-column="0" selection-end-line="28" selection-end-column="0" /> + <state vertical-scroll-proportion="0.31752872"> + <caret line="13" column="10" selection-start-line="13" selection-start-column="10" selection-end-line="13" selection-end-column="10" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/costfunction.py"> + <entry file="file://$PROJECT_DIR$/docs/conf.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.24425288"> - <caret line="10" column="0" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" /> + <state vertical-scroll-proportion="0.38793105"> + <caret line="33" column="20" selection-start-line="33" selection-start-column="16" selection-end-line="33" selection-end-column="20" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/projector.py"> - <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="16.09064"> - <caret line="637" column="34" selection-start-line="637" selection-start-column="34" selection-end-line="637" selection-end-column="34" /> - </state> + <entry file="file://$PROJECT_DIR$/docs/icon.ico"> + <provider selected="true" editor-type-id="images"> + <state /> </provider> </entry> - <entry file="file://$PROJECT_DIR$/docs/Makefile"> + <entry file="file://$PROJECT_DIR$/pyramid/colormap.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" /> + <state vertical-scroll-proportion="0.42407808"> + <caret line="23" column="9" selection-start-line="23" selection-start-column="9" selection-end-line="23" selection-end-column="9" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/docs/make.bat"> + <entry file="file://$PROJECT_DIR$/pyramid/quaternion.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="-1.9860919"> - <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <state vertical-scroll-proportion="0.5021692"> + <caret line="119" column="24" selection-start-line="119" selection-start-column="24" selection-end-line="119" selection-end-column="24" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/docs/_static/sphinxdoc.css"> + <entry file="file://$PROJECT_DIR$/pyramid/logging.ini"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="-0.9221141"> - <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <state vertical-scroll-proportion="0.59002167"> + <caret line="32" column="13" selection-start-line="32" selection-start-column="13" selection-end-line="32" selection-end-column="13" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/docs/pyramid.numcore.rst"> + <entry file="file://$PROJECT_DIR$/docs/_build/_static/underscore-1.3.1.js"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.21279556"> - <caret line="9" column="0" selection-start-line="9" selection-start-column="0" selection-end-line="9" selection-end-column="0" /> + <state vertical-scroll-proportion="0.3329718"> + <caret line="94" column="55" selection-start-line="94" selection-start-column="55" selection-end-line="94" selection-end-column="55" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/ramp.py"> + <entry file="file://$PROJECT_DIR$/scripts/reconstruction/reconstruction_2d_from_phasemap.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.29310346"> - <caret line="47" column="26" selection-start-line="47" selection-start-column="26" selection-end-line="47" selection-end-column="26" /> + <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" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/docs/pyramid.rst"> + <entry file="file://$PROJECT_DIR$/pyramid/diagnostics.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.6091954"> - <caret line="136" column="22" selection-start-line="136" selection-start-column="22" selection-end-line="136" selection-end-column="22" /> + <state vertical-scroll-proportion="0.29784366"> + <caret line="13" column="23" selection-start-line="13" selection-start-column="23" selection-end-line="13" selection-end-column="23" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/docs/index.rst"> + <entry file="file://$PROJECT_DIR$/pyramid/version.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.31752872"> - <caret line="13" column="10" selection-start-line="13" selection-start-column="10" selection-end-line="13" selection-end-column="10" /> + <state vertical-scroll-proportion="0.0945758"> + <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/docs/conf.py"> + <entry file="file://$PROJECT_DIR$/setup.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.38793105"> - <caret line="33" column="20" selection-start-line="33" selection-start-column="16" selection-end-line="33" selection-end-column="20" /> + <state vertical-scroll-proportion="0.32962447"> + <caret line="103" column="0" selection-start-line="103" selection-start-column="0" selection-end-line="103" selection-end-column="0" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/docs/icon.ico"> - <provider selected="true" editor-type-id="images"> - <state /> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_dataset.py"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.17097701"> + <caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" /> + </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/magcreator.py"> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_phasemap.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.2836485"> - <caret line="99" column="94" selection-start-line="99" selection-start-column="94" selection-end-line="99" selection-end-column="94" /> - <folding /> + <state vertical-scroll-proportion="0.21982759"> + <caret line="9" column="37" selection-start-line="9" selection-start-column="37" selection-end-line="9" selection-end-column="37" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/colormap.py"> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_magdata.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.42407808"> - <caret line="23" column="9" selection-start-line="23" selection-start-column="9" selection-end-line="23" selection-end-column="9" /> - <folding /> + <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" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/quaternion.py"> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_magcreator.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.5021692"> - <caret line="119" column="24" selection-start-line="119" selection-start-column="24" selection-end-line="119" selection-end-column="24" /> - <folding /> + <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" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/logging.ini"> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_forwardmodel.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.59002167"> - <caret line="32" column="13" selection-start-line="32" selection-start-column="13" selection-end-line="32" selection-end-column="13" /> - <folding /> + <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" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/forwardmodel.py"> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_costfunction.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.5272525"> - <caret line="303" column="47" selection-start-line="303" selection-start-column="47" selection-end-line="303" selection-end-column="47" /> - <folding /> + <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" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/docs/_build/_static/underscore-1.3.1.js"> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_phasemapper.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.3329718"> - <caret line="94" column="55" selection-start-line="94" selection-start-column="55" selection-end-line="94" selection-end-column="55" /> + <state vertical-scroll-proportion="0.47304583"> + <caret line="159" column="21" selection-start-line="159" selection-start-column="21" selection-end-line="159" selection-end-column="21" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/scripts/reconstruction/reconstruction_2d_from_phasemap.py"> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_projector.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" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/phasemap.py"> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_regularisator.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.324295"> - <caret line="108" column="40" selection-start-line="108" selection-start-column="40" selection-end-line="108" selection-end-column="40" /> - <folding /> + <state vertical-scroll-proportion="-1.9097035"> + <caret line="17" column="0" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/magdata.py"> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_analytic.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.44685465"> - <caret line="834" column="54" selection-start-line="834" selection-start-column="54" selection-end-line="834" selection-end-column="54" /> - <folding /> + <state vertical-scroll-proportion="0.43530998"> + <caret line="19" column="16" selection-start-line="19" selection-start-column="16" selection-end-line="19" selection-end-column="16" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/../Jutil/jutil/cg.py"> + <entry file="file://$PROJECT_DIR$/pyramid/numcore/phasemapper_core.c"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="1.4663073"> - <caret line="109" column="16" selection-start-line="109" selection-start-column="16" selection-end-line="109" selection-end-column="16" /> - <folding /> + <state vertical-scroll-proportion="-5.7277627"> + <caret line="2" column="24" selection-start-line="2" selection-start-column="24" selection-end-line="2" selection-end-column="24" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/diagnostics.py"> + <entry file="file://$PROJECT_DIR$/pyramid/analytic.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.29784366"> - <caret line="13" column="23" selection-start-line="13" selection-start-column="23" selection-end-line="13" selection-end-column="23" /> - <folding /> + <state vertical-scroll-proportion="0.9541779"> + <caret line="215" column="31" selection-start-line="215" selection-start-column="31" selection-end-line="215" selection-end-column="31" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/kernel.py"> + <entry file="file://$PROJECT_DIR$/scripts/reconstruction/reconstruction_3d_from_magdata.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="-2.6060605"> - <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" /> + <state vertical-scroll-proportion="0.0"> + <caret line="11" column="0" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="76" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/fft.py"> + <entry file="file://$PROJECT_DIR$/pyramid/config.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.41322315"> - <caret line="227" column="0" selection-start-line="227" selection-start-column="0" selection-end-line="227" selection-end-column="0" /> + <state vertical-scroll-proportion="0.0"> + <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/version.py"> + <entry file="file://C:/Anaconda2/Lib/site-packages/numpy/core/_methods.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0945758"> - <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" /> - <folding /> + <state vertical-scroll-proportion="-0.47831184"> + <caret line="24" column="0" selection-start-line="24" selection-start-column="0" selection-end-line="24" selection-end-column="0" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/setup.py"> + <entry file="file://$PROJECT_DIR$/scripts/gui/phasemap_creator.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.32962447"> - <caret line="103" column="0" selection-start-line="103" selection-start-column="0" selection-end-line="103" selection-end-column="0" /> + <state vertical-scroll-proportion="0.0"> + <caret line="11" column="10" selection-start-line="11" selection-start-column="10" selection-end-line="11" selection-end-column="10" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/phasemapper.py"> + <entry file="file://$PROJECT_DIR$/pyramid/forwardmodel.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.6334232"> - <caret line="598" column="65" selection-start-line="598" selection-start-column="65" selection-end-line="598" selection-end-column="65" /> - <folding /> + <state vertical-scroll-proportion="0.27511415"> + <caret line="72" column="8" selection-start-line="72" selection-start-column="8" selection-end-line="72" selection-end-column="8" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/tests/test_dataset.py"> + <entry file="file://$PROJECT_DIR$/pyramid/dataset.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.17097701"> - <caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" /> + <state vertical-scroll-proportion="0.0"> + <caret line="157" column="8" selection-start-line="157" selection-start-column="8" selection-end-line="157" selection-end-column="8" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/dataset.py"> + <entry file="file://$PROJECT_DIR$/pyramid/fft.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.024425287"> - <caret line="28" column="66" selection-start-line="28" selection-start-column="62" selection-end-line="28" selection-end-column="66" /> + <state vertical-scroll-proportion="0.0"> + <caret line="296" column="15" selection-start-line="296" selection-start-column="15" selection-end-line="296" selection-end-column="28" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/tests/test_phasemap.py"> + <entry file="file://$PROJECT_DIR$/pyramid/phasemap.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.21982759"> - <caret line="9" column="37" selection-start-line="9" selection-start-column="37" selection-end-line="9" selection-end-column="37" /> + <state vertical-scroll-proportion="0.0"> + <caret line="781" column="8" selection-start-line="781" selection-start-column="8" selection-end-line="781" selection-end-column="8" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/tests/test_magdata.py"> + <entry file="file://C:/Anaconda2/Lib/site-packages/matplotlib/backend_bases.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 vertical-scroll-proportion="0.72362554"> + <caret line="2436" column="0" selection-start-line="2436" selection-start-column="0" selection-end-line="2436" selection-end-column="0" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/tests/test_magcreator.py"> + <entry file="file://$APPLICATION_HOME_DIR$/helpers/pydev/pydevd.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 vertical-scroll-proportion="0.9346314"> + <caret line="2410" column="0" selection-start-line="2410" selection-start-column="0" selection-end-line="2410" selection-end-column="0" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/tests/test_kernel.py"> + <entry file="file://$PROJECT_DIR$/scripts/gui/mag_slicer.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" /> + <caret line="223" column="57" selection-start-line="223" selection-start-column="57" selection-end-line="223" selection-end-column="57" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/tests/test_forwardmodel.py"> + <entry file="file://$USER_HOME$/Downloads/Untitled.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" /> + <caret line="44" column="40" selection-start-line="44" selection-start-column="40" selection-end-line="44" selection-end-column="40" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/tests/test_costfunction.py"> + <entry file="file://$PROJECT_DIR$/pyramid/projector.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" /> + <caret line="608" column="51" selection-start-line="608" selection-start-column="8" selection-end-line="608" selection-end-column="51" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/tests/test_phasemapper.py"> + <entry file="file://$PROJECT_DIR$/../Jutil/jutil/cg.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.47304583"> - <caret line="159" column="21" selection-start-line="159" selection-start-column="21" selection-end-line="159" selection-end-column="21" /> + <state vertical-scroll-proportion="0.0189099"> + <caret line="72" column="18" selection-start-line="72" selection-start-column="18" selection-end-line="72" selection-end-column="18" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/tests/test_projector.py"> + <entry file="file://$PROJECT_DIR$/pyramid/fieldconverter.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" /> + <state vertical-scroll-proportion="0.378198"> + <caret line="20" column="36" selection-start-line="20" selection-start-column="36" selection-end-line="20" selection-end-column="36" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/tests/test_regularisator.py"> + <entry file="file://$PROJECT_DIR$/pyramid/magcreator.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="-1.9097035"> - <caret line="17" column="0" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" /> + <state vertical-scroll-proportion="0.0"> + <caret line="16" column="3" selection-start-line="4" selection-start-column="0" selection-end-line="16" selection-end-column="3" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/tests/test_analytic.py"> + <entry file="file://$PROJECT_DIR$/pyramid/reconstruction.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.43530998"> - <caret line="19" column="16" selection-start-line="19" selection-start-column="16" selection-end-line="19" selection-end-column="16" /> + <state vertical-scroll-proportion="0.0"> + <caret line="46" column="27" selection-start-line="46" selection-start-column="27" selection-end-line="46" selection-end-column="27" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/numcore/phasemapper_core.c"> + <entry file="file://$PROJECT_DIR$/pyramid/__init__.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="-5.7277627"> - <caret line="2" column="24" selection-start-line="2" selection-start-column="24" selection-end-line="2" selection-end-column="24" /> + <state vertical-scroll-proportion="0.0"> + <caret line="90" column="38" selection-start-line="90" selection-start-column="38" selection-end-line="90" selection-end-column="38" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/scripts/gui/mag_slicer.py"> + <entry file="file://$PROJECT_DIR$/pyramid/tests/test_kernel.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.32210243"> - <caret line="167" column="50" selection-start-line="167" selection-start-column="50" selection-end-line="167" selection-end-column="50" /> + <state vertical-scroll-proportion="0.0"> + <caret line="26" column="0" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/config.py"> + <entry file="file://$PROJECT_DIR$/pyramid/phasemapper.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.4811321"> - <caret line="21" column="0" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" /> + <state vertical-scroll-proportion="-8.666667"> + <caret line="332" column="51" selection-start-line="332" selection-start-column="51" selection-end-line="332" selection-end-column="51" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/__init__.py"> + <entry file="file://$PROJECT_DIR$/pyramid/kernel.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.1522911"> - <caret line="65" column="25" selection-start-line="65" selection-start-column="25" selection-end-line="65" selection-end-column="25" /> + <state vertical-scroll-proportion="0.0"> + <caret line="95" column="34" selection-start-line="95" selection-start-column="34" selection-end-line="95" selection-end-column="34" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/scripts/reconstruction/reconstruction_3d_from_magdata.py"> + <entry file="file://$PROJECT_DIR$/scripts/phasemap/phasemap_tilt_series.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.25202155"> - <caret line="11" column="29" selection-start-line="11" selection-start-column="29" selection-end-line="11" selection-end-column="29" /> + <state vertical-scroll-proportion="0.0"> + <caret line="40" column="16" selection-start-line="40" selection-start-column="16" selection-end-line="40" selection-end-column="16" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/pyramid/analytic.py"> + <entry file="file://$PROJECT_DIR$/pyramid/magdata.py"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.9541779"> - <caret line="215" column="31" selection-start-line="215" selection-start-column="31" selection-end-line="215" selection-end-column="31" /> + <state vertical-scroll-proportion="0.62133646"> + <caret line="879" column="31" selection-start-line="879" selection-start-column="31" selection-end-line="879" selection-end-column="31" /> <folding /> </state> </provider> diff --git a/pyramid/__init__.py b/pyramid/__init__.py index 4f5ffe1..d45cdbb 100644 --- a/pyramid/__init__.py +++ b/pyramid/__init__.py @@ -59,6 +59,7 @@ from . import analytic from . import magcreator from . import reconstruction from . import fft +from . import fieldconverter from . import costfunction from .costfunction import * from . import dataset @@ -92,7 +93,7 @@ from .version import hg_revision as __hg_revision__ _log.info("Starting Pyramid V{} HG{}".format(__version__, __hg_revision__)) del logging -__all__ = ['analytic', 'magcreator', 'reconstruction', 'fft'] +__all__ = ['analytic', 'magcreator', 'reconstruction', 'fft', 'fieldconverter'] __all__.extend(costfunction.__all__) __all__.extend(dataset.__all__) __all__.extend(diagnostics.__all__) @@ -106,3 +107,4 @@ __all__.extend(regularisator.__all__) __all__.extend(ramp.__all__) __all__.extend(quaternion.__all__) __all__.extend(colormap.__all__) +__all__.extend(config.__all__) diff --git a/pyramid/fieldconverter.py b/pyramid/fieldconverter.py new file mode 100644 index 0000000..0b5e29f --- /dev/null +++ b/pyramid/fieldconverter.py @@ -0,0 +1,139 @@ +# coding=utf-8 +"""Convert vector fields. + +The :mod:`~.fieldconverter` provides methods for converting a magnetization distribution `M` into +a vector potential `A` and convert this in turn into a magnetic field `B`. The direct way is also +possible. + +""" + +import logging + +import numpy as np + +from pyramid import fft +from pyramid.magdata import MagData + +__all__ = ['convert_M_to_A', 'convert_A_to_B', 'convert_M_to_B'] +_log = logging.getLogger(__name__) + + +def convert_M_to_A(mag_data, b_0=1.0): + """Convert a magnetic vector distribution into a vector potential `A`. + + Parameters + ---------- + mag_data: :class:`~pyramid.magdata.MagData` object + The magnetic vector field from which the A-field is calculated. + b_0: float, optional + The saturation magnetization which is used in the calculation. + + Returns + ------- + b_data: :class:`~pyramid.magdata.MagData` object + The calculated B-field. + + """ + _log.debug('Calling convert_M_to_A') + # Preparations of variables: + assert isinstance(mag_data, MagData), 'Only MagData objects can be mapped!' + dim = mag_data.dim + dim_kern = tuple(2 * np.array(dim) - 1) # Dimensions of the kernel + if fft.BACKEND == 'pyfftw': + dim_pad = tuple(2 * np.array(dim)) # is at least even (not neccessary a power of 2) + elif fft.BACKEND == 'numpy': + dim_pad = tuple(2 ** np.ceil(np.log2(2 * np.array(dim))).astype(int)) # pow(2) + else: + raise ValueError('Backend of the fft module is not correctly initiated!') + slice_B = (slice(dim[0] - 1, dim_kern[0]), # Shift because kernel center + slice(dim[1] - 1, dim_kern[1]), # is not at (0, 0, 0)! + slice(dim[2] - 1, dim_kern[2])) + slice_M = (slice(0, dim[0]), # Magnetization is padded on the far end! + slice(0, dim[1]), # B-field cutout is shifted as listed above + slice(0, dim[2])) # because of the kernel center! + # Set up kernels + coeff = mag_data.a * b_0 / (4 * np.pi) + zzz, yyy, xxx = np.indices(dim_kern) + xxx -= dim[2] - 1 + yyy -= dim[1] - 1 + zzz -= dim[0] - 1 + k_x = fft.empty(dim_kern, dtype=fft.FLOAT) + k_y = fft.empty(dim_kern, dtype=fft.FLOAT) + k_z = fft.empty(dim_kern, dtype=fft.FLOAT) + k_x[...] = coeff * xxx / np.abs(xxx ** 2 + yyy ** 2 + zzz ** 2 + 1E-30) ** 3 + k_y[...] = coeff * yyy / np.abs(xxx ** 2 + yyy ** 2 + zzz ** 2 + 1E-30) ** 3 + k_z[...] = coeff * zzz / np.abs(xxx ** 2 + yyy ** 2 + zzz ** 2 + 1E-30) ** 3 + # Calculate Fourier trafo of kernel components: + k_x_fft = fft.rfftn(k_x, dim_pad) + k_y_fft = fft.rfftn(k_y, dim_pad) + k_z_fft = fft.rfftn(k_z, dim_pad) + # Prepare magnetization: + x_mag = fft.zeros(dim_pad, dtype=fft.FLOAT) + y_mag = fft.zeros(dim_pad, dtype=fft.FLOAT) + z_mag = fft.zeros(dim_pad, dtype=fft.FLOAT) + x_mag[slice_M] = mag_data.magnitude[0, ...] + y_mag[slice_M] = mag_data.magnitude[1, ...] + z_mag[slice_M] = mag_data.magnitude[2, ...] + # Calculate Fourier trafo of magnetization components: + x_mag_fft = fft.rfftn(x_mag) + y_mag_fft = fft.rfftn(y_mag) + z_mag_fft = fft.rfftn(z_mag) + # Convolve: + a_x_fft = y_mag_fft * k_z_fft - z_mag_fft * k_y_fft + a_y_fft = z_mag_fft * k_x_fft - x_mag_fft * k_z_fft + a_z_fft = x_mag_fft * k_y_fft - y_mag_fft * k_x_fft + a_x = fft.irfftn(a_x_fft)[slice_B] + a_y = fft.irfftn(a_y_fft)[slice_B] + a_z = fft.irfftn(a_z_fft)[slice_B] + # Return A-field: + return MagData(mag_data.a, np.asarray((a_x, a_y, a_z))) + + +def convert_A_to_B(a_data): + """Convert a vector potential `A` into a B-field distribution. + + Parameters + ---------- + a_data: :class:`~pyramid.magdata.MagData` object + The vector potential field from which the A-field is calculated. + + Returns + ------- + b_data: :class:`~pyramid.magdata.MagData` object + The calculated B-field. + + """ + _log.debug('Calling convert_A_to_B') + assert isinstance(a_data, MagData), 'Only MagData objects can be mapped!' + # Calculate gradients: + x_mag, y_mag, z_mag = a_data.magnitude + x_grad_z, x_grad_y, x_grad_x = np.gradient(x_mag) + y_grad_z, y_grad_y, y_grad_x = np.gradient(y_mag) + z_grad_z, z_grad_y, z_grad_x = np.gradient(z_mag) + # Calculate cross product: + b_x = (z_grad_y - y_grad_z) + b_y = (x_grad_z - z_grad_x) + b_z = (y_grad_x - x_grad_y) + # Return B-field: + return MagData(a_data.a, np.asarray((b_x, b_y, b_z))) + + +def convert_M_to_B(mag_data, b_0=1.0): + """Convert a magnetic vector distribution into a B-field distribution. + + Parameters + ---------- + mag_data: :class:`~pyramid.magdata.MagData` object + The magnetic vector field from which the B-field is calculated. + b_0: float, optional + The saturation magnetization which is used in the calculation. + + Returns + ------- + b_data: :class:`~pyramid.magdata.MagData` object + The calculated B-field. + + """ + _log.debug('Calling convert_M_to_B') + assert isinstance(mag_data, MagData), 'Only MagData objects can be mapped!' + return convert_A_to_B(convert_M_to_A(mag_data, b_0=b_0)) diff --git a/pyramid/kernel.py b/pyramid/kernel.py index 21b7d9a..6c9c7ae 100644 --- a/pyramid/kernel.py +++ b/pyramid/kernel.py @@ -94,8 +94,8 @@ class Kernel(object): u = np.linspace(-(u_dim - 1), u_dim - 1, num=2 * u_dim - 1) v = np.linspace(-(v_dim - 1), v_dim - 1, num=2 * v_dim - 1) uu, vv = np.meshgrid(u, v) - self.u = fft.empty(self.dim_kern, fft.FLOAT) - self.v = fft.empty(self.dim_kern, fft.FLOAT) + self.u = fft.empty(self.dim_kern, dtype=fft.FLOAT) + self.v = fft.empty(self.dim_kern, dtype=fft.FLOAT) self.u[...] = coeff * self._get_elementary_phase(geometry, uu, vv, a) self.v[...] = coeff * self._get_elementary_phase(geometry, vv, uu, a) # Include perturbed reference wave: @@ -123,15 +123,15 @@ class Kernel(object): self._log.debug('Calling _get_elementary_phase') if geometry == 'disc': in_or_out = ~ np.logical_and(n == 0, m == 0) - return m / (n ** 2 + m ** 2 + 1E-30) * in_or_out + return n / (n ** 2 + m ** 2 + 1E-30) * in_or_out elif geometry == 'slab': def _F_a(n, m): A = np.log(a ** 2 * (n ** 2 + m ** 2)) B = np.arctan(n / m) return n * A - 2 * n + 2 * m * B - return 0.5 * (_F_a(n - 0.5, m - 0.5) - _F_a(n + 0.5, m - 0.5) - - _F_a(n - 0.5, m + 0.5) + _F_a(n + 0.5, m + 0.5)) + return 0.5 * (_F_a(n - 0.5, m - 0.5) - _F_a(n + 0.5, m - 0.5) - + _F_a(n - 0.5, m + 0.5) + _F_a(n + 0.5, m + 0.5)) def print_info(self): """Print information about the kernel. diff --git a/pyramid/magdata.py b/pyramid/magdata.py index a1359b4..e740e2b 100644 --- a/pyramid/magdata.py +++ b/pyramid/magdata.py @@ -548,7 +548,7 @@ class MagData(object): self._log.debug('Calling save_to_hdf5') # Construct path if filename isn't already absolute: if not os.path.isabs(filename): - from pyramid import DIR_FILES + from pyramid.config import DIR_FILES directory = os.path.join(DIR_FILES, 'magdata') if not os.path.exists(directory): os.makedirs(directory) @@ -577,7 +577,7 @@ class MagData(object): return # Use relative path if filename isn't already absolute: if not os.path.isabs(filename): - from pyramid import DIR_FILES + from pyramid.config import DIR_FILES directory = os.path.join(DIR_FILES, 'magdata') filename = os.path.join(directory, filename) # Load data from file: @@ -605,7 +605,7 @@ class MagData(object): data = np.array([xx, yy, zz, x_vec, y_vec, z_vec]).T # Construct path if filename isn't already absolute: if not os.path.isabs(filename): - from pyramid import DIR_FILES + from pyramid.config import DIR_FILES directory = os.path.join(DIR_FILES, 'magdata') if not os.path.exists(directory): os.makedirs(directory) @@ -636,7 +636,7 @@ class MagData(object): SCALE = 1.0E-9 / 1.0E-2 # From cm to nm # Use relative path if filename isn't already absolute: if not os.path.isabs(filename): - from pyramid import DIR_FILES + from pyramid.config import DIR_FILES directory = os.path.join(DIR_FILES, 'magdata') filename = os.path.join(directory, filename) # Load data from file: @@ -668,7 +668,8 @@ class MagData(object): The slice-index of the axis specified in `proj_axis`. Is set to the center of `proj_axis` if not specified. log : boolean, optional - Takes the Default is False. + The loratihm of the arrow length is plotted instead. This is helpful if only the + direction of the arrows is important and the amplitude varies a lot. Default is False. scaled : boolean, optional Normalizes the plotted arrows in respect to the highest one. Default is True. scale: float, optional @@ -691,8 +692,8 @@ class MagData(object): if ax_slice is None: self._log.debug('ax_slice is None') ax_slice = self.dim[0] // 2 - plot_u = np.copy(self.magnitude[0][ax_slice, ...]) # x-component - plot_v = np.copy(self.magnitude[1][ax_slice, ...]) # y-component + u_mag = np.copy(self.magnitude[0][ax_slice, ...]) # x-component + v_mag = np.copy(self.magnitude[1][ax_slice, ...]) # y-component u_label = 'x [px]' v_label = 'y [px]' submask = self.get_mask()[ax_slice, ...] @@ -701,8 +702,8 @@ class MagData(object): if ax_slice is None: self._log.debug('ax_slice is None') ax_slice = self.dim[1] // 2 - plot_u = np.copy(self.magnitude[0][:, ax_slice, :]) # x-component - plot_v = np.copy(self.magnitude[2][:, ax_slice, :]) # z-component + u_mag = np.copy(self.magnitude[0][:, ax_slice, :]) # x-component + v_mag = np.copy(self.magnitude[2][:, ax_slice, :]) # z-component u_label = 'x [px]' v_label = 'z [px]' submask = self.get_mask()[:, ax_slice, :] @@ -711,26 +712,26 @@ class MagData(object): if ax_slice is None: self._log.debug('ax_slice is None') ax_slice = self.dim[2] // 2 - plot_u = np.swapaxes(np.copy(self.magnitude[2][..., ax_slice]), 0, 1) # z-component - plot_v = np.swapaxes(np.copy(self.magnitude[1][..., ax_slice]), 0, 1) # y-component + u_mag = np.swapaxes(np.copy(self.magnitude[2][..., ax_slice]), 0, 1) # z-component + v_mag = np.swapaxes(np.copy(self.magnitude[1][..., ax_slice]), 0, 1) # y-component u_label = 'z [px]' v_label = 'y [px]' submask = self.get_mask()[..., ax_slice] else: raise ValueError('{} is not a valid argument (use x, y or z)'.format(proj_axis)) # Prepare quiver (select only used arrows if ar_dens is specified): - dim_uv = plot_u.shape + dim_uv = u_mag.shape vv, uu = np.indices(dim_uv) + 0.5 # shift to center of pixel uu = uu[::ar_dens, ::ar_dens] vv = vv[::ar_dens, ::ar_dens] - plot_u = plot_u[::ar_dens, ::ar_dens] - plot_v = plot_v[::ar_dens, ::ar_dens] - amplitudes = np.hypot(plot_u, plot_v) - angles = np.angle(plot_u + 1j * plot_v, deg=True).tolist() + u_mag = u_mag[::ar_dens, ::ar_dens] + v_mag = v_mag[::ar_dens, ::ar_dens] + amplitudes = np.hypot(u_mag, v_mag) + angles = np.angle(u_mag + 1j * v_mag, deg=True).tolist() # Calculate the arrow colors: if coloring == 'angle': self._log.debug('Encoding angles') - colorinds = (1 + np.arctan2(plot_v, plot_u) / np.pi) / 2 # in-plane color index (0-1). + colorinds = (1 + np.arctan2(v_mag, u_mag) / np.pi) / 2 # in-plane color index (0-1). cmap = DirectionalColormap() elif coloring == 'amplitude': self._log.debug('Encoding amplitude') @@ -738,7 +739,7 @@ class MagData(object): cmap = 'jet' elif coloring == 'uniform': self._log.debug('No color encoding') - colorinds = np.zeros_like(plot_u) # use black arrows! + colorinds = np.zeros_like(u_mag) # use black arrows! cmap = 'gray' else: raise AttributeError("Invalid coloring mode! Use 'angles', 'amplitude' or 'uniform'!") @@ -749,20 +750,20 @@ class MagData(object): axis = fig.add_subplot(1, 1, 1) axis.set_aspect('equal') # Take the logarithm of the arrows to clearly show directions (if specified): - if log: + if log and np.any(amplitudes): # If the slice is empty, skip! cutoff = 10 amp = np.round(amplitudes, decimals=cutoff) min_value = amp[np.nonzero(amp)].min() - plot_u = np.round(plot_u, decimals=cutoff) / min_value - plot_u = np.log10(np.abs(plot_u) + 1) * np.sign(plot_u) - plot_v = np.round(plot_v, decimals=cutoff) / min_value - plot_v = np.log10(np.abs(plot_v) + 1) * np.sign(plot_v) - amplitudes = np.hypot(plot_u, plot_v) # Recalculate! + u_mag = np.round(u_mag, decimals=cutoff) / min_value + u_mag = np.log10(np.abs(u_mag) + 1) * np.sign(u_mag) + v_mag = np.round(v_mag, decimals=cutoff) / min_value + v_mag = np.log10(np.abs(v_mag) + 1) * np.sign(v_mag) + amplitudes = np.hypot(u_mag, v_mag) # Recalculate (used if scaled)! # Scale the magnitude of the arrows to the highest one (if specified): if scaled: - plot_u /= amplitudes.max() + 1E-30 - plot_v /= amplitudes.max() + 1E-30 - axis.quiver(uu, vv, plot_u, plot_v, colorinds, cmap=cmap, clim=(0, 1), angles=angles, + u_mag /= amplitudes.max() + 1E-30 + v_mag /= amplitudes.max() + 1E-30 + axis.quiver(uu, vv, u_mag, v_mag, colorinds, cmap=cmap, clim=(0, 1), angles=angles, pivot='middle', units='xy', scale_units='xy', scale=scale / ar_dens, minlength=0.25, headwidth=6, headlength=7) if show_mask and not np.all(submask): # Plot mask if desired and not trivial! @@ -784,7 +785,7 @@ class MagData(object): return axis def quiver_plot3d(self, title='Magnetization Distribution', limit=None, cmap='jet', - ar_dens=1, mode='arrow', coloring='angle', show_pipeline=False): + mode='2darrow', coloring='angle', ar_dens=1, opacity=1.0): """Plot the magnetization as 3D-vectors in a quiverplot. Parameters @@ -799,13 +800,12 @@ class MagData(object): Number defining the arrow density which is plotted. A higher ar_dens number skips more arrows (a number of 2 plots every second arrow). Default is 1. mode: string, optional - Mode, determining the glyphs used in the 3D plot. Default is 'arrow', which corresponds - to 3D arrows. For large amounts of arrows, '2darrow' should be used. + Mode, determining the glyphs used in the 3D plot. Default is '2darrow', which + corresponds to 2D arrows. For smaller amounts of arrows, 'arrow' (3D) is prettier. coloring : string Color coding mode of the arrows. Use 'angle' (default) or 'amplitude'. - show_pipeline : boolean, optional - If True, the mayavi pipeline, a GUI used for image manipulation is shown. The default - is False. + opacity: float, optional + Defines the opacity of the arrows. Default is 1.0 (completely opaque). Returns ------- @@ -821,16 +821,17 @@ class MagData(object): limit = np.max(self.mag_amp) ad = ar_dens # Create points and vector components as lists: - zz, yy, xx = (np.indices(dim) - a / 2).reshape((3,) + dim) - zz = zz[::ad, ::ad, ::ad].flatten() - yy = yy[::ad, ::ad, ::ad].flatten() - xx = xx[::ad, ::ad, ::ad].flatten() + zzz, yyy, xxx = (np.indices(dim) - a / 2).reshape((3,) + dim) + zzz = zzz[::ad, ::ad, ::ad].flatten() + yyy = yyy[::ad, ::ad, ::ad].flatten() + xxx = xxx[::ad, ::ad, ::ad].flatten() x_mag = self.magnitude[0][::ad, ::ad, ::ad].flatten() y_mag = self.magnitude[1][::ad, ::ad, ::ad].flatten() z_mag = self.magnitude[2][::ad, ::ad, ::ad].flatten() # Plot them as vectors: mlab.figure(size=(750, 700)) - plot = mlab.quiver3d(xx, yy, zz, x_mag, y_mag, z_mag, mode=mode, colormap=cmap) + plot = mlab.quiver3d(xxx, yyy, zzz, x_mag, y_mag, z_mag, + mode=mode, colormap=cmap, opacity=opacity) if coloring == 'angle': # Encodes the full angle via colorwheel and saturation self._log.debug('Encoding full 3D angles') from tvtk.api import tvtk @@ -853,6 +854,39 @@ class MagData(object): mlab.axes(plot) mlab.title(title, height=0.95, size=0.35) mlab.orientation_axes() - if show_pipeline: - mlab.show_pipeline() + # mlab.show() + return plot + + def contour_plot3d(self, title='Magnetization Distribution', contours=10, opacity=0.25): + """Plot the magnetization as 3D-vectors in a quiverplot. + + Parameters + ---------- + title: string, optional + The title for the plot. + contours: int, optional + Number of contours which should be plotted. + opacity: float, optional + Defines the opacity of the contours. Default is 0.25. + + Returns + ------- + plot : :class:`mayavi.modules.vectors.Vectors` + The plot object. + + + """ + self._log.debug('Calling quiver_plot3D') + from mayavi import mlab + # Create points and vector components as lists: + x_mag, y_mag, z_mag = self.magnitude + amplitudes = np.sqrt(x_mag ** 2 + y_mag ** 2 + z_mag ** 2) + # Plot them as vectors: + mlab.figure(size=(750, 700)) + plot = mlab.contour3d(amplitudes, contours=contours, opacity=opacity) + mlab.outline(plot) + mlab.axes(plot) + mlab.title(title, height=0.95, size=0.35) + mlab.orientation_axes() + # mlab.show() return plot diff --git a/pyramid/phasemap.py b/pyramid/phasemap.py index f5b8aba..2e95cfa 100644 --- a/pyramid/phasemap.py +++ b/pyramid/phasemap.py @@ -485,7 +485,7 @@ class PhaseMap(object): self._log.debug('Calling save_to_hdf5') # Construct path if filename isn't already absolute: if not os.path.isabs(filename): - from pyramid import DIR_FILES + from pyramid.config import DIR_FILES directory = os.path.join(DIR_FILES, 'phasemap') if not os.path.exists(directory): os.makedirs(directory) @@ -514,7 +514,7 @@ class PhaseMap(object): return # Use relative path if filename isn't already absolute: if not os.path.isabs(filename): - from pyramid import DIR_FILES + from pyramid.config import DIR_FILES directory = os.path.join(DIR_FILES, 'phasemap') filename = os.path.join(directory, filename) # Load data from file: @@ -540,7 +540,7 @@ class PhaseMap(object): self._log.debug('Calling save_to_txt') # Construct path if filename isn't already absolute: if not os.path.isabs(filename): - from pyramid import DIR_FILES + from pyramid.config import DIR_FILES directory = os.path.join(DIR_FILES, 'phasemap') if not os.path.exists(directory): os.makedirs(directory) @@ -575,7 +575,7 @@ class PhaseMap(object): cls._log.debug('Calling load_from_txt') # Use relative path if filename isn't already absolute: if not os.path.isabs(filename): - from pyramid import DIR_FILES + from pyramid.config import DIR_FILES directory = os.path.join(DIR_FILES, 'phasemap') filename = os.path.join(directory, filename) # Load data from file: diff --git a/pyramid/phasemapper.py b/pyramid/phasemapper.py index 9a360fb..2b05ed7 100644 --- a/pyramid/phasemapper.py +++ b/pyramid/phasemapper.py @@ -18,7 +18,7 @@ from pyramid import fft from pyramid.kernel import Kernel from pyramid.magdata import MagData from pyramid.phasemap import PhaseMap -from pyramid.projector import SimpleProjector +from pyramid.projector import RotTiltProjector, XTiltProjector, YTiltProjector, SimpleProjector __all__ = ['PhaseMapperRDFC', 'PhaseMapperRDRC', 'PhaseMapperFDFC', 'pm'] _log = logging.getLogger(__name__) @@ -142,7 +142,7 @@ class PhaseMapperRDFC(PhaseMapper): self.u_mag_fft = fft.rfftn(self.u_mag) self.v_mag_fft = fft.rfftn(self.v_mag) # Convolve the magnetization with the kernel in Fourier space: - self.phase_fft = self.u_mag_fft * self.kernel.u_fft - self.v_mag_fft * self.kernel.v_fft + self.phase_fft = self.u_mag_fft * self.kernel.v_fft - self.v_mag_fft * self.kernel.u_fft # Return the result: return fft.irfftn(self.phase_fft)[self.kernel.slice_phase] @@ -188,8 +188,8 @@ class PhaseMapperRDFC(PhaseMapper): 'vector size not compatible! vector: {}, size: {}'.format(len(vector), self.m) self.mag_adj[self.kernel.slice_mag] = vector.reshape(self.kernel.dim_uv) mag_adj_fft = fft.irfftn_adj(self.mag_adj) - u_phase_adj_fft = mag_adj_fft * self.kernel.u_fft - v_phase_adj_fft = mag_adj_fft * -self.kernel.v_fft + u_phase_adj_fft = mag_adj_fft * self.kernel.v_fft + v_phase_adj_fft = mag_adj_fft * -self.kernel.u_fft u_phase_adj = fft.rfftn_adj(u_phase_adj_fft)[self.kernel.slice_phase] v_phase_adj = fft.rfftn_adj(v_phase_adj_fft)[self.kernel.slice_phase] result = np.concatenate((-u_phase_adj.flatten(), -v_phase_adj.flatten())) @@ -258,19 +258,19 @@ class PhaseMapperRDRC(PhaseMapper): # Calculation of the phase: phase = np.zeros(dim_uv, dtype=np.float32) if self.numcore: - nc.phasemapper_real_convolve(dim_uv[0], dim_uv[1], v_phi, u_phi, + nc.phasemapper_real_convolve(dim_uv[0], dim_uv[1], u_phi, v_phi, v_mag, u_mag, phase, self.threshold) else: for j in range(dim_uv[0]): for i in range(dim_uv[1]): - 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] - if abs(u_mag[j, i]) > self.threshold: - phase += u_mag[j, i] * u_phase 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] if abs(v_mag[j, i]) > self.threshold: - phase -= v_mag[j, i] * v_phase + 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] + if abs(u_mag[j, i]) > self.threshold: + phase -= v_mag[j, i] * u_phase # Return the phase: return PhaseMap(mag_data.a, phase) @@ -297,7 +297,7 @@ class PhaseMapperRDRC(PhaseMapper): if self.numcore: if vector.dtype != np.float32: vector = vector.astype(np.float32) - nc.jac_dot_real_convolve(v_dim, u_dim, self.kernel.u, self.kernel.v, vector, result) + nc.jac_dot_real_convolve(v_dim, u_dim, self.kernel.v, self.kernel.u, vector, result) else: # Iterate over all contributing pixels (numbered consecutively) for s in range(self.m): # column-wise (two columns at a time, u- and v-component) @@ -307,8 +307,8 @@ class PhaseMapperRDRC(PhaseMapper): u_max = (2 * u_dim - 1) - i # = u_min + u_dim v_min = (v_dim - 1) - j # v_dim-1: center of the kernel v_max = (2 * v_dim - 1) - j # = v_min + v_dim - result += vector[s] * self.kernel.u[v_min:v_max, u_min:u_max].reshape(-1) - result -= vector[s + self.m] * self.kernel.v[v_min:v_max, u_min:u_max].reshape(-1) + result += vector[s] * self.kernel.v[v_min:v_max, u_min:u_max].reshape(-1) + result -= vector[s + self.m] * self.kernel.u[v_min:v_max, u_min:u_max].reshape(-1) return result def jac_T_dot(self, vector): @@ -334,7 +334,7 @@ class PhaseMapperRDRC(PhaseMapper): if self.numcore: if vector.dtype != np.float32: vector = vector.astype(np.float32) - nc.jac_T_dot_real_convolve(v_dim, u_dim, self.kernel.u, self.kernel.v, vector, result) + nc.jac_T_dot_real_convolve(v_dim, u_dim, self.kernel.v, self.kernel.u, vector, result) else: # Iterate over all contributing pixels (numbered consecutively): for s in range(self.m): # row-wise (two rows at a time, u- and v-component) @@ -344,9 +344,9 @@ class PhaseMapperRDRC(PhaseMapper): u_max = (2 * u_dim - 1) - i # = u_min + u_dim v_min = (v_dim - 1) - j # v_dim-1: center of the kernel v_max = (2 * v_dim - 1) - j # = v_min + v_dim - result[s] = np.sum(vector * self.kernel.u[v_min:v_max, u_min:u_max].reshape(-1)) + result[s] = np.sum(vector * self.kernel.v[v_min:v_max, u_min:u_max].reshape(-1)) result[s + self.m] = np.sum(vector * - -self.kernel.v[v_min:v_max, u_min:u_max].reshape(-1)) + -self.kernel.u[v_min:v_max, u_min:u_max].reshape(-1)) return result @@ -579,20 +579,22 @@ class PhaseMapperMIP(PhaseMapper): raise NotImplementedError() -def pm(mag_data, axis='z', dim_uv=None, b_0=1): +def pm(mag_data, mode='z', b_0=1, **kwargs): """Convenience function for fast phase mapping. Parameters ---------- mag_data : :class:`~.MagData` A :class:`~.MagData` object, from which the projected phase map should be calculated. - axis: {'z', 'y', 'x'}, optional - Axis along which the :class:`.~SimpleProjector` projects the magnetic distribution. - dim_uv : tuple of int (N=2), optional - Dimensions of the 2-dimensional projected magnetization grid from which the phase should - be calculated. + mode: {'z', 'y', 'x', 'x-tilt', 'y-tilt', 'rot-tilt'}, optional + Projection mode which determines the :class:`~.pyramid.projector.Projector` subclass, which + is used for the projection. Default is a simple projection along the `z`-direction. b_0 : float, optional Saturation magnetization in Tesla, which is used for the phase calculation. Default is 1. + **kwargs : additional arguments + Additional arguments like `dim_uv`, 'tilt' or 'rotation', which are passed to the + projector-constructor, defined by the `mode`. + Returns ------- phase_map : :class:`~pyramid.phasemap.PhaseMap` @@ -600,9 +602,23 @@ def pm(mag_data, axis='z', dim_uv=None, b_0=1): """ _log.debug('Calling pm') - projector = SimpleProjector(mag_data.dim, axis=axis, dim_uv=dim_uv) + # Determine projection mode: + if mode == 'rot-tilt': + projector = RotTiltProjector(mag_data.dim, **kwargs) + elif mode == 'x-tilt': + projector = XTiltProjector(mag_data.dim, **kwargs) + elif mode == 'y-tilt': + projector = YTiltProjector(mag_data.dim, **kwargs) + elif mode in ['x', 'y', 'z']: + projector = SimpleProjector(mag_data.dim, axis=mode, **kwargs) + else: + raise ValueError("Invalid mode (use 'x', 'y', 'z', 'x-tilt', 'y-tilt' or 'rot-tilt')") + # Project: mag_proj = projector(mag_data) + # Set up phasemapper and map phase: phasemapper = PhaseMapperRDFC(Kernel(mag_data.a, projector.dim_uv, b_0=b_0)) phase_map = phasemapper(mag_proj) + # Get mask from magdata: phase_map.mask = mag_proj.get_mask()[0, ...] + # Return phase: return phase_map diff --git a/pyramid/tests/test_kernel/ref_u_fft.npy b/pyramid/tests/test_kernel/ref_u_fft.npy index 700daac74bfb7eae1cc33b8d187163d1af5d079d..d7588d2717005ee4e12782e7b8d6e8873a0aa17b 100644 GIT binary patch literal 400 zcmbR27wQ`j$;jZwP_3SlTAW;@Zl$1ZlWd``qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I#iItr$mItsN4aKOa?1=E&1-vz{0TwHf8K|*^jt=b8~FnJiAA3WI##Ew(i zy%U5%?8Dac!FoV!7!a|0zXOCp{C^8~SPI#_w*X==AEpLI&j{(Wlv;A$0*H5T%xA)| z6Qpi|#E$JiY@V`E8!Z3iUW5e*!_0uuK(oN|Q1ig@*vtgF%>sl$`hf1+3340AjWBbN OX`r8XLH%oq?pFZnL|hsG literal 400 zcmbR27wQ`j$;jZwP_3SlTAW;@Zl$1ZlWd``qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I#iItr$mItsN4aKObtB$&43`7R)~$_t)s1=1pH_kITmgV@tU`Yf+V?AQ*( z<~&??EkR;&O1pQ0Fo^wc;SNiwCFd=Gct_eoZLrv`ORIK*Fi8H8^?Xa9Sr#DkIOa2f z#h%=YumE9@JTU-jo+ZdEka}eI0nN08nzw^k_d)%;3uG3^&oK7^{R(y;)W6#ScU^S> diff --git a/pyramid/tests/test_kernel/ref_v_fft.npy b/pyramid/tests/test_kernel/ref_v_fft.npy index d7588d2717005ee4e12782e7b8d6e8873a0aa17b..700daac74bfb7eae1cc33b8d187163d1af5d079d 100644 GIT binary patch literal 400 zcmbR27wQ`j$;jZwP_3SlTAW;@Zl$1ZlWd``qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I#iItr$mItsN4aKObtB$&43`7R)~$_t)s1=1pH_kITmgV@tU`Yf+V?AQ*( z<~&??EkR;&O1pQ0Fo^wc;SNiwCFd=Gct_eoZLrv`ORIK*Fi8H8^?Xa9Sr#DkIOa2f z#h%=YumE9@JTU-jo+ZdEka}eI0nN08nzw^k_d)%;3uG3^&oK7^{R(y;)W6#ScU^S> literal 400 zcmbR27wQ`j$;jZwP_3SlTAW;@Zl$1ZlWd``qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I#iItr$mItsN4aKOa?1=E&1-vz{0TwHf8K|*^jt=b8~FnJiAA3WI##Ew(i zy%U5%?8Dac!FoV!7!a|0zXOCp{C^8~SPI#_w*X==AEpLI&j{(Wlv;A$0*H5T%xA)| z6Qpi|#E$JiY@V`E8!Z3iUW5e*!_0uuK(oN|Q1ig@*vtgF%>sl$`hf1+3340AjWBbN OX`r8XLH%oq?pFZnL|hsG diff --git a/scripts/gui/mag_slicer.py b/scripts/gui/mag_slicer.py index 90200f4..9181910 100644 --- a/scripts/gui/mag_slicer.py +++ b/scripts/gui/mag_slicer.py @@ -11,15 +11,15 @@ import os import sys -from PyQt4 import QtCore, QtGui -from matplotlibwidget import MatplotlibWidget - import pyramid from pyramid.kernel import Kernel from pyramid.magdata import MagData from pyramid.phasemapper import PhaseMapperRDFC from pyramid.projector import SimpleProjector +from PyQt4 import QtCore, QtGui +from matplotlibwidget import MatplotlibWidget + try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: @@ -230,8 +230,8 @@ class UI_MagSlicerMain(QtGui.QWidget): def load(self): directory = os.path.join(pyramid.DIR_FILES, 'magdata') mag_file = QtGui.QFileDialog.getOpenFileName(self, 'Open Data File', directory, - 'NetCDF files (*.nc)') - self.mag_data = MagData.load_from_netcdf4(mag_file) + 'HDF5 files (*.hdf5)') + self.mag_data = MagData.load_from_hdf5(mag_file) self.mag_data_loaded = True self.mplWidgetMag.axes.set_visible(True) self.mplWidgetHolo.axes.set_visible(True) diff --git a/scripts/phasemap/phasemap_tilt_series.py b/scripts/phasemap/phasemap_tilt_series.py index fc3248b..06c0d64 100644 --- a/scripts/phasemap/phasemap_tilt_series.py +++ b/scripts/phasemap/phasemap_tilt_series.py @@ -19,7 +19,7 @@ angles = np.linspace() ################################################################################################### mag_data = py.MagData.load_from_netcdf4(filename) -phase_map = py.pm(mag_data, axis=axis, dim_uv=dim_uv, b_0=b_0) +phase_map = py.pm(mag_data, mode=axis, dim_uv=dim_uv, b_0=b_0) phase_map.save_to_netcdf4('phasemap_{}_axis={}'.format(filename.replace('magdata_', ''), axis)) phase_map.display_combined() @@ -56,4 +56,4 @@ for angle in angles: plt.close('all') gc.collect() print 'RSS = {:.2f} MB'.format(proc.memory_info().rss/1024.**2) - print angle, 'deg. done!' \ No newline at end of file + print angle, 'deg. done!' -- GitLab