Extremely Noisy 4-D STEM Strain Mapping Using Cycle Consistent Spatial Transforming Autoencoders (Simulated 4dstem)

Contents

Extremely Noisy 4-D STEM Strain Mapping Using Cycle Consistent Spatial Transforming Autoencoders (Simulated 4dstem)#

Package Installation#

import sys
#!{sys.executable} -m pip install -i https://test.pypi.org/simple/ Auto4DSTEM==0.7.1
!{sys.executable} -m pip install -U Auto4DSTEM
Requirement already satisfied: Auto4DSTEM in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (0.2.6)
Requirement already satisfied: importlib-metadata in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (8.5.0)
Requirement already satisfied: M3learning-Util in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (2.0.3)
Requirement already satisfied: cmcrameri==1.8 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (1.8)
Requirement already satisfied: cupy-cuda12x==13.0.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (13.0.0)
Requirement already satisfied: h5py in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (3.11.0)
Requirement already satisfied: matplotlib==3.6.2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (3.6.2)
Requirement already satisfied: numba==0.58.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (0.58.1)
Requirement already satisfied: numpy==1.25.2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (1.25.2)
Requirement already satisfied: opencv-python-headless==4.11.0.86 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (4.11.0.86)
Requirement already satisfied: py4DSTEM==0.14.9 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (0.14.9)
Requirement already satisfied: pymatgen==2024.3.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (2024.3.1)
Requirement already satisfied: scikit-image==0.19.3 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (0.19.3)
Requirement already satisfied: scikit-learn==1.1.3 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (1.1.3)
Requirement already satisfied: scipy==1.9.3 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (1.9.3)
Requirement already satisfied: torch==2.2.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (2.2.0)
Requirement already satisfied: tqdm==4.66.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (4.66.1)
Requirement already satisfied: typing_extensions==4.8.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from Auto4DSTEM) (4.8.0)
Requirement already satisfied: packaging in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from cmcrameri==1.8->Auto4DSTEM) (24.1)
Requirement already satisfied: fastrlock>=0.5 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from cupy-cuda12x==13.0.0->Auto4DSTEM) (0.8.2)
Requirement already satisfied: contourpy>=1.0.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from matplotlib==3.6.2->Auto4DSTEM) (1.3.0)
Requirement already satisfied: cycler>=0.10 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from matplotlib==3.6.2->Auto4DSTEM) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from matplotlib==3.6.2->Auto4DSTEM) (4.53.1)
Requirement already satisfied: kiwisolver>=1.0.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from matplotlib==3.6.2->Auto4DSTEM) (1.4.7)
Requirement already satisfied: pillow>=6.2.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from matplotlib==3.6.2->Auto4DSTEM) (10.4.0)
Requirement already satisfied: pyparsing>=2.2.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from matplotlib==3.6.2->Auto4DSTEM) (3.1.4)
Requirement already satisfied: python-dateutil>=2.7 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from matplotlib==3.6.2->Auto4DSTEM) (2.9.0.post0)
Requirement already satisfied: llvmlite<0.42,>=0.41.0dev0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from numba==0.58.1->Auto4DSTEM) (0.41.1)
Requirement already satisfied: hdf5plugin>=4.1.3 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (5.0.0)
Requirement already satisfied: ncempy>=1.8.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (1.11.3)
Requirement already satisfied: scikit-optimize>=0.9.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (0.10.2)
Requirement already satisfied: dill>=0.3.3 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (0.3.8)
Requirement already satisfied: gdown>=4.7.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (5.2.0)
Requirement already satisfied: dask>=2.3.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (2024.9.0)
Requirement already satisfied: distributed>=2.3.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (2024.9.0)
Requirement already satisfied: emdfile>=0.0.14 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (0.0.15)
Requirement already satisfied: mpire>=2.7.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (2.10.2)
Requirement already satisfied: threadpoolctl>=3.1.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (3.5.0)
Requirement already satisfied: pylops>=2.1.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (2.2.0)
Requirement already satisfied: colorspacious>=1.1.2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from py4DSTEM==0.14.9->Auto4DSTEM) (1.1.2)
Requirement already satisfied: monty>=2024.2.2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (2024.7.30)
Requirement already satisfied: networkx>=2.2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (3.3)
Requirement already satisfied: palettable>=3.1.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (3.3.3)
Requirement already satisfied: pandas in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (2.2.3)
Requirement already satisfied: plotly>=4.5.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (5.24.1)
Requirement already satisfied: pybtex in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (0.24.0)
Requirement already satisfied: requests in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (2.32.3)
Requirement already satisfied: ruamel.yaml>=0.17.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (0.18.6)
Requirement already satisfied: spglib>=2.0.2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (2.5.0)
Requirement already satisfied: sympy in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (1.13.3)
Requirement already satisfied: tabulate in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (0.9.0)
Requirement already satisfied: uncertainties>=3.1.4 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (3.2.2)
Requirement already satisfied: joblib in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pymatgen==2024.3.1->Auto4DSTEM) (1.4.2)
Requirement already satisfied: imageio>=2.4.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from scikit-image==0.19.3->Auto4DSTEM) (2.35.1)
Requirement already satisfied: tifffile>=2019.7.26 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from scikit-image==0.19.3->Auto4DSTEM) (2024.8.30)
Requirement already satisfied: PyWavelets>=1.1.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from scikit-image==0.19.3->Auto4DSTEM) (1.7.0)
Requirement already satisfied: filelock in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (3.16.1)
Requirement already satisfied: jinja2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (3.1.4)
Requirement already satisfied: fsspec in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (2024.9.0)
Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (12.1.105)
Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (12.1.105)
Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (12.1.105)
Requirement already satisfied: nvidia-cudnn-cu12==8.9.2.26 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (8.9.2.26)
Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (12.1.3.1)
Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (11.0.2.54)
Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (10.3.2.106)
Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (11.4.5.107)
Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (12.1.0.106)
Requirement already satisfied: nvidia-nccl-cu12==2.19.3 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (2.19.3)
Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (12.1.105)
Requirement already satisfied: triton==2.2.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from torch==2.2.0->Auto4DSTEM) (2.2.0)
Requirement already satisfied: nvidia-nvjitlink-cu12 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from nvidia-cusolver-cu12==11.4.5.107->torch==2.2.0->Auto4DSTEM) (12.6.68)
Requirement already satisfied: zipp>=3.20 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from importlib-metadata->Auto4DSTEM) (3.20.2)
Requirement already satisfied: pygments in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from M3learning-Util->Auto4DSTEM) (2.19.1)
Requirement already satisfied: wget in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from M3learning-Util->Auto4DSTEM) (3.2)
Requirement already satisfied: opencv-python in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from M3learning-Util->Auto4DSTEM) (4.10.0.84)
Requirement already satisfied: seaborn in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from M3learning-Util->Auto4DSTEM) (0.13.2)
Requirement already satisfied: globus-cli in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from M3learning-Util->Auto4DSTEM) (3.30.1)
Requirement already satisfied: datafed in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from M3learning-Util->Auto4DSTEM) (3.0.0)
Requirement already satisfied: tensorflow in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from M3learning-Util->Auto4DSTEM) (2.17.1)
Requirement already satisfied: pytest in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from M3learning-Util->Auto4DSTEM) (8.3.3)
Requirement already satisfied: click>=8.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from dask>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (8.1.7)
Requirement already satisfied: cloudpickle>=3.0.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from dask>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (3.0.0)
Requirement already satisfied: partd>=1.4.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from dask>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (1.4.2)
Requirement already satisfied: pyyaml>=5.3.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from dask>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (6.0.2)
Requirement already satisfied: toolz>=0.10.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from dask>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (0.12.1)
Requirement already satisfied: locket>=1.0.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from distributed>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (1.0.0)
Requirement already satisfied: msgpack>=1.0.2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from distributed>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (1.1.0)
Requirement already satisfied: psutil>=5.8.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from distributed>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (5.9.0)
Requirement already satisfied: sortedcontainers>=2.0.5 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from distributed>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (2.4.0)
Requirement already satisfied: tblib>=1.6.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from distributed>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (3.0.0)
Requirement already satisfied: tornado>=6.2.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from distributed>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (6.4.1)
Requirement already satisfied: urllib3>=1.26.5 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from distributed>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (2.2.3)
Requirement already satisfied: zict>=3.0.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from distributed>=2.3.0->py4DSTEM==0.14.9->Auto4DSTEM) (3.0.0)
Requirement already satisfied: beautifulsoup4 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from gdown>=4.7.1->py4DSTEM==0.14.9->Auto4DSTEM) (4.12.3)
Requirement already satisfied: MarkupSafe>=2.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from jinja2->torch==2.2.0->Auto4DSTEM) (2.1.5)
Requirement already satisfied: tenacity>=6.2.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from plotly>=4.5.0->pymatgen==2024.3.1->Auto4DSTEM) (9.0.0)
Requirement already satisfied: six>=1.5 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from python-dateutil>=2.7->matplotlib==3.6.2->Auto4DSTEM) (1.16.0)
Requirement already satisfied: ruamel.yaml.clib>=0.2.7 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from ruamel.yaml>=0.17.0->pymatgen==2024.3.1->Auto4DSTEM) (0.2.8)
Requirement already satisfied: pyaml>=16.9 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from scikit-optimize>=0.9.0->py4DSTEM==0.14.9->Auto4DSTEM) (24.7.0)
Requirement already satisfied: prompt-toolkit>=2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from datafed->M3learning-Util->Auto4DSTEM) (3.0.43)
Requirement already satisfied: protobuf>=4.21.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from datafed->M3learning-Util->Auto4DSTEM) (4.25.5)
Requirement already satisfied: pyzmq>=16 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from datafed->M3learning-Util->Auto4DSTEM) (25.1.2)
Requirement already satisfied: charset-normalizer<4,>=2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from requests->pymatgen==2024.3.1->Auto4DSTEM) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from requests->pymatgen==2024.3.1->Auto4DSTEM) (3.10)
Requirement already satisfied: certifi>=2017.4.17 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from requests->pymatgen==2024.3.1->Auto4DSTEM) (2024.8.30)
Requirement already satisfied: globus-sdk==3.44.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from globus-cli->M3learning-Util->Auto4DSTEM) (3.44.0)
Requirement already satisfied: jmespath==1.0.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from globus-cli->M3learning-Util->Auto4DSTEM) (1.0.1)
Requirement already satisfied: pyjwt<3.0.0,>=2.0.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pyjwt[crypto]<3.0.0,>=2.0.0->globus-sdk==3.44.0->globus-cli->M3learning-Util->Auto4DSTEM) (2.9.0)
Requirement already satisfied: cryptography!=3.4.0,>=3.3.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from globus-sdk==3.44.0->globus-cli->M3learning-Util->Auto4DSTEM) (43.0.1)
Requirement already satisfied: pytz>=2020.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pandas->pymatgen==2024.3.1->Auto4DSTEM) (2024.2)
Requirement already satisfied: tzdata>=2022.7 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pandas->pymatgen==2024.3.1->Auto4DSTEM) (2024.1)
Requirement already satisfied: latexcodec>=1.0.4 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pybtex->pymatgen==2024.3.1->Auto4DSTEM) (3.0.0)
Requirement already satisfied: iniconfig in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pytest->M3learning-Util->Auto4DSTEM) (2.0.0)
Requirement already satisfied: pluggy<2,>=1.5 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pytest->M3learning-Util->Auto4DSTEM) (1.5.0)
Requirement already satisfied: exceptiongroup>=1.0.0rc8 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pytest->M3learning-Util->Auto4DSTEM) (1.2.0)
Requirement already satisfied: tomli>=1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from pytest->M3learning-Util->Auto4DSTEM) (2.0.1)
Requirement already satisfied: mpmath<1.4,>=1.1.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from sympy->pymatgen==2024.3.1->Auto4DSTEM) (1.3.0)
Requirement already satisfied: absl-py>=1.0.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (2.1.0)
Requirement already satisfied: astunparse>=1.6.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (1.6.3)
Requirement already satisfied: flatbuffers>=24.3.25 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (24.3.25)
Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (0.6.0)
Requirement already satisfied: google-pasta>=0.1.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (0.2.0)
Requirement already satisfied: libclang>=13.0.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (18.1.1)
Requirement already satisfied: ml-dtypes<0.5.0,>=0.3.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (0.4.1)
Requirement already satisfied: opt-einsum>=2.3.2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (3.4.0)
Requirement already satisfied: setuptools in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (75.1.0)
Requirement already satisfied: termcolor>=1.1.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (2.5.0)
Requirement already satisfied: wrapt>=1.11.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (1.16.0)
Requirement already satisfied: grpcio<2.0,>=1.24.3 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (1.67.1)
Requirement already satisfied: tensorboard<2.18,>=2.17 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (2.17.1)
Requirement already satisfied: keras>=3.2.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (3.6.0)
Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorflow->M3learning-Util->Auto4DSTEM) (0.37.1)
Requirement already satisfied: wheel<1.0,>=0.23.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from astunparse>=1.6.0->tensorflow->M3learning-Util->Auto4DSTEM) (0.44.0)
Requirement already satisfied: rich in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from keras>=3.2.0->tensorflow->M3learning-Util->Auto4DSTEM) (13.9.4)
Requirement already satisfied: namex in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from keras>=3.2.0->tensorflow->M3learning-Util->Auto4DSTEM) (0.0.8)
Requirement already satisfied: optree in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from keras>=3.2.0->tensorflow->M3learning-Util->Auto4DSTEM) (0.13.0)
Requirement already satisfied: wcwidth in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from prompt-toolkit>=2->datafed->M3learning-Util->Auto4DSTEM) (0.2.5)
Requirement already satisfied: markdown>=2.6.8 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorboard<2.18,>=2.17->tensorflow->M3learning-Util->Auto4DSTEM) (3.7)
Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorboard<2.18,>=2.17->tensorflow->M3learning-Util->Auto4DSTEM) (0.7.2)
Requirement already satisfied: werkzeug>=1.0.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from tensorboard<2.18,>=2.17->tensorflow->M3learning-Util->Auto4DSTEM) (3.1.1)
Requirement already satisfied: soupsieve>1.2 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from beautifulsoup4->gdown>=4.7.1->py4DSTEM==0.14.9->Auto4DSTEM) (2.6)
Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from requests[socks]->gdown>=4.7.1->py4DSTEM==0.14.9->Auto4DSTEM) (1.7.1)
Requirement already satisfied: cffi>=1.12 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from cryptography!=3.4.0,>=3.3.1->globus-sdk==3.44.0->globus-cli->M3learning-Util->Auto4DSTEM) (1.17.1)
Requirement already satisfied: markdown-it-py>=2.2.0 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from rich->keras>=3.2.0->tensorflow->M3learning-Util->Auto4DSTEM) (3.0.0)
Requirement already satisfied: pycparser in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from cffi>=1.12->cryptography!=3.4.0,>=3.3.1->globus-sdk==3.44.0->globus-cli->M3learning-Util->Auto4DSTEM) (2.22)
Requirement already satisfied: mdurl~=0.1 in /home/shuyu/.conda/envs/HAWQ/lib/python3.10/site-packages (from markdown-it-py>=2.2.0->rich->keras>=3.2.0->tensorflow->M3learning-Util->Auto4DSTEM) (0.1.2)

Package Loading#

%load_ext autoreload
%autoreload 2
import os
import torch
import pickle
import warnings
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.pylab as pylab
from cmcrameri import cm
# from Auto4DSTEM.src.auto4dstem.nn.Train_Function import TrainClass
# from Auto4DSTEM.src.auto4dstem.Viz.util import mask_class
# from Auto4DSTEM.src.auto4dstem.Viz.viz import set_format_Auto4D, visualize_simulate_result, visual_performance_plot,normalized_strain_matrices
# from m3util.util.IO import download_files_from_txt
from auto4dstem.nn.Train_Function import TrainClass
from auto4dstem.Viz.util import mask_class
from auto4dstem.Viz.viz import set_format_Auto4D, visualize_simulate_result, visual_performance_plot,normalized_strain_matrices
from m3util.util.IO import download_files_from_txt
torch.__version__
'2.2.0+cu121'

Device Setting#

os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"]="6"

if torch.cuda.is_available():
    device = torch.device('cuda')
    print("Using GPU")
else:
    device = torch.device('cpu')
    print("Using CPU")
Using GPU

Visualization Format#

set_format = set_format_Auto4D()
pylab.rcParams.update(set_format)
warnings.filterwarnings('ignore') 

Download Data and Pre-Trained Models#

folder_name = 'Simulated_4dstem/Extremely_Noisy_4DSTEM_Strain_Mapping_Using_CC_ST_AE_Simulated'
file_download =  "Simulated_4dstem/simulated_label_weights_affine_para"
# check where are you from the root path
download_files_from_txt(file_download,folder_name)
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Cell In[8], line 2
      1 # check where are you from the root path
----> 2 download_files_from_txt(file_download,folder_name)

File ~/.conda/envs/HAWQ/lib/python3.10/site-packages/m3util/util/IO.py:77, in download_files_from_txt(url_file, download_path)
     74 delay = 1
     76 # Open the text file containing URLs
---> 77 with open(url_file, "r") as file:
     78     urls = file.readlines()
     80 # Iterate over each URL

FileNotFoundError: [Errno 2] No such file or directory: 'Simulated_4dstem/simulated_label_weights_affine_para'

Build mask for training and generating results#

Build Mask#

# set mask class
set_mask = mask_class()
# generate mask 
mask_tensor, mask_list = set_mask.mask_ring(radius_1=50, radius_2 = 85)

Benchmark Simulated 4DSTEM Dataset#

Set BKG level, Load Data and Pre-Trained Weights#

bkg_intensity = 0
bkg_str = format(int(bkg_intensity*100),'02d')
data_path = os.path.abspath(f'{folder_name}/polycrystal_output4D.mat')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Initialize the training class from noise-free simulated dataset#

tc = TrainClass(data_path,
                device = device, 
                transpose = (1,0,3,2),
                background_weight=bkg_intensity,
                learned_rotation=rotation_path,
                adjust_learned_rotation = 0,
                num_base=1,
                up_size=800,
                scale_limit=0.05,
                shear_limit=0.1,
                rotation_limit=0.1,
                trans_limit = 0.15,
                adj_mask_para=0,
                fixed_mask = mask_list,
                check_mask = None,
                interpolate = True,
                revise_affine = False,
                folder_path = folder_name
                )
/home/shuyu/4DSTEM/Simulated_4dstem/Extremely_Noisy_4DSTEM_Strain_Mapping_Using_CC_ST_AE_Simulated/polycrystal_output4D.mat
add image-rotation pair to whole dataset
100%|█████████████████████████████████████████████████████████████| 65536/65536 [00:00<00:00, 1586844.17it/s]
tc.crop_one_image(clim=[0,4e-5])
/home/shuyu/4DSTEM/Simulated_4dstem/Extremely_Noisy_4DSTEM_Strain_Mapping_Using_CC_ST_AE_Simulated/polycrystal_output4D.mat
../_images/de7b421c63f691d89ca25002cc756b4807f25e73e125acea8be99931edbc221a.png

Figure 1: One random diffration image from 4D-STEM

tc.visual_noise(noise_level = [0,0.25,0.6],file_name='simulated',add_label = True,save_format = 'png')
../_images/3fd25956feae1dfa5a7902e83de3911c5d305cab2f51b944331af05d7c276ac9.png

Figure 2: Diffract image with various Poisson Ditributed Noise intensity. a) Raw data. b) Applied 10% noise intensity. c) 25% noise intensity. d) 45% noise intensity. e) 60% Noise Intensity.

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)

Generate and save results#

# # set batch size and load dataset into DataLoader
tc.batch_size = 256
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)
100%|██████████████████████████████████████████████████████████████████████| 256/256 [08:02<00:00,  1.88s/it]

Initialize visual result class#

Set hyper parameters of the class#

bkg_intensity = 0
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
rotation_clean = np.load(rotation_path)
scale_shear_clean = np.load(strain_path)

Visualize results in notebook#

img_show = True
if img_show:
    %matplotlib inline
else:
    plt.ioff()

Create class and visualize rotation result#

visual = visualize_simulate_result(rotation =  rotation_clean,
                                scale_shear = scale_shear_clean,
                                file_py4DSTEM = file_py4DSTEM,
                                label_rotation_path = folder_name +'/Label_rotation.npy',
                                label_xx_path = folder_name +'/Label_strain_xx.npy',
                                label_yy_path = folder_name +'/Label_strain_yy.npy',
                                label_xy_path = folder_name +'/Label_shear_xy.npy',
                                cmap_rotation = cm.vikO,
                                cmap_strain= cm.vik,
                                cmap_mae=cm.vik,
                                noise_intensity = 0,
                                angle_shift = 25,
                                strain_diff_range = [-0.03,0.03],
                                strain_rotation_range = [-40,30],
                                mae_diff_range = [-0.006,0.006],
                                mae_rotation_range = [-0.5,0.5],
                                label_style= 'b'
                               )
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 47420.25it/s]
../_images/5d20007a7ce7eb3b2af9ca9c957243973c025054720b1fd516436456ccadf161.png

Visualize label map#

visual.visual_label_map(cmap_strain = cm.vik,
                        cmap_rotation = cm.vikO,
                        label_style='b')
../_images/e80b3880e07165c025a86da1b7b61a98581362cc8c2dcbf333114a3685e32025.png

Visualize strain map result#

visual.visual_strain()
../_images/d15b914e87d6e11243be1b5591e22d3fd04bd6519acf5663313a147725f9b8d9.png

Visualize MAE comparison#

visual.visual_diff(label_style='b')
../_images/d1663e4555ad857cd5c9b8097bac5bb150c927321605fa2b03da9f0960dab5e6.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

05% Noisy 4D STEM#

Load pretraiend weight and rotation path#

bkg_intensity = 0.05
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Update train class parameter for data generating#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = 0

Generate dataset#

tc.reset_dataset()
/home/shuyu/4DSTEM/Simulated_4dstem/Extremely_Noisy_4DSTEM_Strain_Mapping_Using_CC_ST_AE_Simulated/polycrystal_output4D.mat
add Poison distributed background noise to whole dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 65536/65536 [01:21<00:00, 808.53it/s]
add image-rotation pair to whole dataset
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 65536/65536 [00:00<00:00, 225803.94it/s]

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 256/256 [20:21<00:00,  4.77s/it]

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.05
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_5per = np.load(rotation_path)
scale_shear_5per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_5per
visual.scale_shear = scale_shear_5per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-7)
../_images/49fbcb90be272beb8cffd07cf6bbe991487c02a301a4fbafa56ac80c21027322.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 46478.80it/s]

Visualize strain map result#

visual.visual_strain()
../_images/b1380856438a3e890d421c5ba8cf241322edc4b072b6d2d226a5cdffd8bbfe2b.png

Visualize MAE comparison#

visual.visual_diff()
../_images/2906a6d79fb9accc3fa3ff0f0df2a650c51ee093d63076c429166d7641e569d2.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

10% Noisy 4D STEM#

Load pretraiend weight and rotation path#

bkg_intensity = 0.10
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Add extra rotation accoding to training strategy#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = -25

Generate dataset#

tc.reset_dataset()
/home/shuyu/4DSTEM/Simulated_4dstem/Extremely_Noisy_4DSTEM_Strain_Mapping_Using_CC_ST_AE_Simulated/polycrystal_output4D.mat
add Poison distributed background noise to whole dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 65536/65536 [01:25<00:00, 769.46it/s]
add image-rotation pair to whole dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 65536/65536 [00:00<00:00, 1504243.34it/s]

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 256/256 [20:24<00:00,  4.78s/it]

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.10
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_10per = np.load(rotation_path)
scale_shear_10per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_10per
visual.scale_shear = scale_shear_10per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-5)
../_images/d5d140ea150d74d2c85d8e118dcba5e5ea3f615a78d17b0125b8c837862705f6.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 46431.91it/s]

Visualize strain result#

visual.visual_strain()
../_images/1420787d6bc9cfe529c6a2cbeebb77a9891171cc6810553df9af326acbfbd8e8.png

visualize MAE comparison#

visual.visual_diff()
../_images/334ff0f6cb18d56a0c94b964ee8b6d336c75e63a4fb81214b87d8bdb74a341a7.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

15% Noisy 4D STEM#

Load pretraiend weight and rotation path#

bkg_intensity = 0.15
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Add extra rotation accoding to training strategy#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = 0

Generate dataset#

tc.reset_dataset()
/home/shuyu/4DSTEM/Simulated_4dstem/Extremely_Noisy_4DSTEM_Strain_Mapping_Using_CC_ST_AE_Simulated/polycrystal_output4D.mat
add Poison distributed background noise to whole dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 65536/65536 [01:27<00:00, 744.99it/s]
add image-rotation pair to whole dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 65536/65536 [00:00<00:00, 1547265.51it/s]

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)
 57%|██████████████████████████████████████████████████████████████████████████████████████████▋                                                                     | 145/256 [10:31<08:03,  4.36s/it]

KeyboardInterrupt

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.15
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_15per = np.load(rotation_path)
scale_shear_15per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_15per
visual.scale_shear = scale_shear_15per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-8)
../_images/18e57805d10371f231bc4fe9fffc93e0ccfd5f497eb95595f72b4f3a1a042c60.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 56071.13it/s]

Visualize strain result#

visual.visual_strain()
../_images/85b677b89cb62ff68bcaa255b610cd7d2c4fb1abd7b41742da909e3c53c5c357.png

visualize MAE comparison#

visual.visual_diff()
../_images/14d8940ed53677e6e85e579873d4c720de5c9a198ea1eabbb57cc64fdd387357.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

20% Noisy 4D STEM#

Load pretraiend weight and rotation path#

bkg_intensity = 0.20
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Add extra rotation accoding to training strategy#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = -20

Generate dataset#

tc.reset_dataset()

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.20
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_20per = np.load(rotation_path)
scale_shear_20per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_20per
visual.scale_shear = scale_shear_20per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-7)
../_images/0dd70309e2f9ded2efccb38bbdb79c5e5ee270e370efef1b19e88ea15ef9b5cf.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 55830.55it/s]

Visualize strain result#

visual.visual_strain()
../_images/f99b6639201805d9e2cfa6e671b9078a085236dfdd75029a7981c331d746188e.png

Visualize MAE comparison#

visual.visual_diff()
../_images/a4f68d7871d7bfd1873bbbacc264b746a95fe5790f947dc10dbe43374b457904.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

25% Noisy 4D STEM#

Load pretraiend weight and rotation path#

bkg_intensity = 0.25
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Add extra rotation accoding to training strategy#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = -15

Generate dataset#

tc.reset_dataset()

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.25
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_25per = np.load(rotation_path)
scale_shear_25per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_25per
visual.scale_shear = scale_shear_25per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-9)
../_images/d03d8d92d6c593f76660ad35082ff27c03c52d3b66eba02ff1c529d04af7f46e.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 46307.74it/s]

Visualize strain result#

visual.visual_strain()
../_images/334e9688aeea4eacabf81f5e2357002b667f1f99d7a72917530e40e9772a0c19.png

Visualize MAE comparison#

visual.visual_diff()
../_images/61e055025faee9ac851b2e86f573774f3ea434ae59dc99e377557e9be8588696.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

Visualize 30Percent Background#

Load pretraiend weight and rotation path#

bkg_intensity = 0.30
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Add extra rotation accoding to training strategy#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = -30

Generate dataset#

tc.reset_dataset()

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.30
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_30per = np.load(rotation_path)
scale_shear_30per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_30per
visual.scale_shear = scale_shear_30per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-9)
../_images/8b35a2795696efa99992f54e921ceea2be218ebd1f3e343f40569ec8b7752764.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 56827.06it/s]

Visualize strain result#

visual.visual_strain()
../_images/6d9ae98ded815f37feb9822fe883221e2f017af182b31255226fe2179e997cd0.png

Visualize MAE comparison#

visual.visual_diff()
../_images/ad2bcf2a3c3facf40994f5be637e8df00c7221188d404f4b53f09222e01e17dc.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

Visualize 35Percent Background#

Load pretraiend weight and rotation path#

bkg_intensity = 0.35
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Add extra rotation accoding to training strategy#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = -5

Generate dataset#

tc.reset_dataset()

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.35
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_35per = np.load(rotation_path)
scale_shear_35per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_35per
visual.scale_shear = scale_shear_35per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-6)
../_images/a31f32c202a1fe7de8db7a278a18259dd64f00ac6cbeb69c0713b27437a783e9.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 47082.36it/s]

Visualize strain result#

visual.visual_strain()
../_images/6d0eb59c4cc8b59554a09eecda4533c882d574a3615c89caaf34f6107b04cea5.png

visualize MAE comparison#

visual.visual_diff()
../_images/1a2d2aeb2fc57822be699864341c8c8c9cfa8768d92fc884bd084d44859463c0.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

Visualize 40Percent Background#

Load pretraiend weight and rotation path#

bkg_intensity = 0.40
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Add extra rotation accoding to training strategy#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = -25

Generate dataset#

tc.reset_dataset()

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.40
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_40per = np.load(rotation_path)
scale_shear_40per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_40per
visual.scale_shear = scale_shear_40per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-8)
../_images/2126f0361dafa8d5bebd9c036277e1bada78239eefd6cc36a8b0a60b8ef6e08f.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 49644.70it/s]

Visualize strain result#

visual.visual_strain()
../_images/73a011acd17b29faa66735ac73a82bb08d81e227518e20a9af5773d9f7a931dd.png

visualize MAE comparison#

visual.visual_diff()
../_images/b7005ae1c0ef03cad391dfb16a3e97d533234551817928fc89040355c24974c1.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

Visualize 45Percent Background#

Load pretraiend weight and rotation path#

bkg_intensity = 0.45
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Add extra rotation accoding to training strategy#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = -40

Generate dataset#

tc.reset_dataset()

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.45
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_45per = np.load(rotation_path)
scale_shear_45per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_45per
visual.scale_shear = scale_shear_45per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-7)
../_images/440e183afbe3b910ac9e5cce942cf119c8537ebd53d0d8701506b3ddba847a6e.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 52438.74it/s]

Visualize strain result#

visual.visual_strain()
../_images/5a1dbc8e61aa76b02fabb473d6e4296c92ff6e029fdad42fdd6c8e5f220119ac.png

visualize MAE comparison#

visual.visual_diff()
../_images/ffa40be085b65e994dd5c7496fb3c91a5d8e837ba7d67d1a3f29b5cf280ae1e9.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

Visualize 50Percent Background#

Load pretraiend weight and rotation path#

bkg_intensity = 0.50
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Add extra rotation accoding to training strategy#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = -20

Generate dataset#

tc.reset_dataset()

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.50
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_50per = np.load(rotation_path)
scale_shear_50per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_50per
visual.scale_shear = scale_shear_50per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-6)
../_images/af09a112df63c95f6a69eee32d7f64c64121885fa53e8b6eb858ae701a09e651.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 56021.23it/s]

Visualize strain result#

visual.visual_strain()
../_images/62ba5f3296600014dd7409531dfe7b42beed42015817c2dd4ac44d68137d39b9.png

Visualize MAE comparison#

visual.visual_diff()
../_images/bf35f3b80288458eabacd56f1b1a3c44bd695b13cbe0a1fc2f0fe3b362be82ab.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

Visualize 60Percent Background#

Load pretraiend weight and rotation path#

bkg_intensity = 0.60
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Add extra rotation accoding to training strategy#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = 1

Generate dataset#

tc.reset_dataset()

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.60
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_60per = np.load(rotation_path)
scale_shear_60per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_60per
visual.scale_shear = scale_shear_60per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-9)
../_images/b505ae4773ce3d64ca082ecef118b39339de681c320d8ddf0d480c3de2fe23aa.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 46945.31it/s]

Visualize strain result#

visual.visual_strain()
../_images/6bc39377731dfaa426f87c7074986c927ab8792a6cd71ee75459444387142b0d.png

Visualize MAE comparison#

visual.mae_diff_range = [-0.01,0.01]
visual.visual_diff()
../_images/b7775686a7159ed130872e69bd691c580e26224f4b798d5607cd591709648eb7.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

Visualize 70Percent Background#

Load pretraiend weight and rotation path#

bkg_intensity = 0.70
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Percent_pretrained_rotation.npy'

Add extra rotation accoding to training strategy#

tc.background_weight= bkg_intensity
tc.learned_rotation = rotation_path
# add extra rotation accoding to training strategy
tc.adjust_learned_rotation = 20

Generate dataset#

tc.reset_dataset()

Load pretrained weight to neural network#

weight_path = f"{folder_name}/{bkg_str}percent_noisy_simulated_4dstem_pretrained_weights.pkl"
tc.load_pretrained_weight(weight_path)
tc.predict(train_process='2',
           save_strain = True,
           save_rotation = True,
           file_name=bkg_intensity)

Update visual result class#

Set hyper parameters of the class#

bkg_intensity = 0.70
bkg_str = format(int(bkg_intensity*100),'02d')
rotation_path = f'{folder_name}/{bkg_str}Per_2_train_process_rotation.npy'
strain_path = f'{folder_name}/{bkg_str}Per_2_train_process_scale_shear.npy'
rotation_70per = np.load(rotation_path)
scale_shear_70per = np.load(strain_path)

Load variable into visualization class#

visual.file_py4DSTEM = f'{folder_name}/analysis_bg{bkg_str}per_1e5counts__strain.h5'
visual.rotation = rotation_70per
visual.scale_shear = scale_shear_70per
visual.noise_intensity = bkg_intensity

Reset baseline of py4DSTEM#

visual.reset_baseline()

Shift angle to compare appropriately#

visual.reset_angle(angle_shift=-8)
../_images/97e3fb9daac73f972959f85a18dc0076c9c1a9859b2fdb4be3bc09f9c1bfea88.png

Update polar decomposition based on new affine matrix#

visual.reset_polar_matrix()
100%|███████████████████████████████████████████████████████████████| 65536/65536 [00:01<00:00, 53125.69it/s]

Visualize strain result#

visual.visual_strain()
../_images/4abd4d9af3130553e98a9ccb0991903adb5f39bcc11ef10d420fb2577574b510.png

Visualize MAE comparison#

visual.mae_diff_range = [-0.015,0.015]
visual.visual_diff()
../_images/37459876fbafd60ecd9bf6f8a2eb24649a096e83fa8986b35222cc41a2d6ff0e.png
visual.record_performance(data_index=True,
                          data_index_path=f'{folder_name}/simulated_4dstem_grain_index.npy',
                          show_index_map=False,
                          width=2)
visual.add_data_2_plot()

Visualize performance of both methods#

img_show = True
if img_show:
    %matplotlib inline
else:
    plt.ioff()
direct_load = True
if direct_load:
    with open(f'{folder_name}/MAE_list_simulated_4dstem.pickle', 'rb') as pickle_file:
        visual.list_of_dic = pickle.load(pickle_file)

Generate various noise level plots of both methods#

Generate Strain XX results#

# maually_record_fpga_results

# x_add = [0,0.25,0.6]
# fpga_xx = [0.002,0.0017,0.0019]
# fpga_yy = [0.0026,0.0017,0.0022]
# fpga_xy = [0.0015,0.0011,0.0016]
# fpga_rot = [1.63,1.28,1.47]
visual_performance_plot(x_list=visual.extract_ele_from_dic(0)[0],
                        auto=visual.extract_ele_from_dic(4)[1],
                        py4d=visual.extract_ele_from_dic(0)[1],
#                         auto_yerr =visual.extract_ele_from_dic(12)[1],
#                         py4d_yerr =visual.extract_ele_from_dic(8)[1],
                        title = 'Strian X',
                        xlabel = '',
                        ylabel ='',
                        # add_x = x_add,
                        # add_y = fpga_xx,
                        marker_list = ['o','H','^'],
                        figsize=(6,5),
                        ylim = [0,0.005],
                        fill_between = False,
                        errorbar= False,
                        folder_path='save_figures/')
../_images/4573be1d7019c175bb2fbcdb03741b9a4fe042f1212c28ccb711f31684364d0f.png

Generate Strain YY results#

visual_performance_plot(x_list=visual.extract_ele_from_dic(0)[0],
                        auto=visual.extract_ele_from_dic(5)[1],
                        py4d=visual.extract_ele_from_dic(1)[1],
                        # auto_yerr =visual.extract_ele_from_dic(13)[1],
                        # py4d_yerr =visual.extract_ele_from_dic(9)[1],
                        title = 'Strian Y',
                        xlabel = '',
                        ylabel ='',
                        # add_x = x_add,
                        # add_y = fpga_yy,
                        marker_list = ['o','H','^'],
                        figsize=(6,5),
                        ylim = [0,0.005],
                        fill_between = False,
                        errorbar=False,
                        folder_path='save_figures/')
../_images/ba00dbf3b1d40971ceb8a08e6fc5880e825e98df4831edab6738b7a5ad0c9ea2.png

Generate Strain XY results#

visual_performance_plot(x_list=visual.extract_ele_from_dic(0)[0],
                        auto=visual.extract_ele_from_dic(6)[1],
                        py4d=visual.extract_ele_from_dic(2)[1],
                        # auto_yerr =visual.extract_ele_from_dic(14)[1],
                        # py4d_yerr =visual.extract_ele_from_dic(10)[1],
                        title = 'Shear',
                        xlabel = '',
                        ylabel ='',
                        # add_x = x_add,
                        # add_y = fpga_xy,
                        marker_list = ['o','H','^'],
                        figsize=(6,5),
                        ylim = [0,0.004],
                        fill_between = False,
                        errorbar=False,
                        folder_path='save_figures/')
../_images/2679dfd75dd19663c4fa993d3528dd1ca16682b8d14b40b009d119ac3e97a0ae.png

Generate Rotation results#

visual_performance_plot(x_list=visual.extract_ele_from_dic(0)[0],
                        auto=visual.extract_ele_from_dic(7)[1],
                        py4d=visual.extract_ele_from_dic(3)[1],
                        # auto_yerr =visual.extract_ele_from_dic(15)[1],
                        # py4d_yerr =visual.extract_ele_from_dic(11)[1],
                        title = 'Rotation',
                        xlabel = '',
                        ylabel ='',
                        # add_x = x_add,
                        # add_y = fpga_rot,
                        marker_list = ['o','H','^'],
                        figsize=(6,5),
                        ylim = [0,1.75],
                        fill_between = False,
                        errorbar= False,
                        folder_path='save_figures/')
../_images/4ff6e1f54dcd4baeca82bad2551bd53641b9cafca31f52a6f42c63938b737ccd.png