From e742ce84d418a5fe0a33f9e6aa14146f1c97b299 Mon Sep 17 00:00:00 2001
From: Elijah Andrews <eda1g15@soton.ac.uk>
Date: Wed, 1 Feb 2023 12:06:46 +0000
Subject: [PATCH] Added packaged version of bubble analysis GUI.

---
 .../anisotropy/figure1.py                     |    0
 .../anisotropy/figure2.py                     |    0
 .../anisotropy/figure3.py                     |    0
 .../anisotropy/figure4.py                     |    0
 .../anisotropy/figure5.py                     |    0
 .../anisotropy/figure6.py                     |    0
 .../anisotropy/figure7and8.py                 |    0
 .../model_bem_flat_plate_experiment.py        |    0
 .../anisotropy/model_bem_slot_experiment.py   |    0
 .../R1.0_L20_n50000_cn3                       |    0
 .../model_data/corner_anisotropy_sweep.py     |    0
 ...4.00_drat0.1_wthresh12.00_len100.0_N33.csv |    0
 ...00_H4.00_drat0.1_wthresh12.00_len100.0.csv |    0
 ...00_H4.00_drat0.1_wthresh12.00_len100.0.csv |    0
 .../model_data/slot_anisotropy_sweep.py       |    0
 .../R1.0_L15_n20000_i32                       |    0
 .../model_data/square_anisotropy_sweep.py     |    0
 .../R1.0_L15_n20000_i32                       |    0
 .../model_data/triangle_anisotropy_sweep.py   |    0
 .../anisotropy/model_sa_corner_experiment.py  |    0
 .../model_sa_equi_triangle_experiment.py      |    0
 .../anisotropy/model_sa_square_experiment.py  |    0
 .../anisotropy/util/analysis_utils.py         |    0
 .../anisotropy/util/bem.py                    |    0
 .../anisotropy/util/determineDisplacement.py  |    0
 .../anisotropy/util/file_utils.py             |    0
 .../anisotropy/util/gen_utils.py              |    0
 .../anisotropy/util/moi_utils.py              |    0
 .../anisotropy/util/mp4.py                    |    0
 .../anisotropy/util/mraw.py                   |    0
 .../anisotropy/util/plotting_utils.py         |    0
 .../anisotropy/util/vector_utils.py           |    0
 packaged-code/pacakged-gui/README.md          |   15 +
 .../pacakged-gui/bubble_analysis_gui.py       | 1005 +++++++++++++++++
 packaged-code/pacakged-gui/icon.png           |  Bin 0 -> 197082 bytes
 .../pacakged-gui/run_bubble_analysis.bat      |    2 +
 .../pacakged-gui}/util/analysis_utils.py      |    0
 .../pacakged-gui/util/calibration_utils.py    |   51 +
 .../util/determineDisplacement.py             |    0
 .../pacakged-gui}/util/file_utils.py          |    0
 .../pacakged-gui}/util/mp4.py                 |    0
 .../pacakged-gui}/util/mraw.py                |    0
 .../pacakged-gui/util/mraw_converter.py       |  170 +++
 .../pacakged-gui/util/pixel_correction.py     |   69 ++
 .../pacakged-gui}/util/plotting_utils.py      |    0
 packaged-code/pacakged-gui/util/qt_utils.py   |   18 +
 .../pacakged-gui}/util/vector_utils.py        |    0
 .../complex_geometry_anisotropy_data.csv      |    0
 .../porous/fig_data/surface_nucleation.mp4    |  Bin
 .../porous/figure10.py                        |    0
 .../porous/figure12.py                        |    0
 .../porous/figure13.py                        |    0
 .../porous/figure14and15.py                   |    0
 .../porous/figure3.py                         |    0
 .../porous/figure4.py                         |    0
 .../porous/figure5.py                         |    0
 .../porous/figure6.py                         |    0
 .../porous/figure7.py                         |    0
 .../porous/figure8.py                         |    0
 .../porous/figure9.py                         |    0
 .../porous/steel_porous_plate_anisotropy.py   |    0
 .../porous}/util/analysis_utils.py            |    0
 .../porous/util/bem.py                        |    0
 .../porous}/util/determineDisplacement.py     |    0
 .../porous/util/drawing_utils.py              |    0
 .../porous}/util/file_utils.py                |    0
 .../porous/util/gen_utils.py                  |    0
 .../porous}/util/mp4.py                       |    0
 .../porous}/util/mraw.py                      |    0
 .../porous}/util/plotting_utils.py            |    0
 .../slots/bem/bem.py                          |    0
 .../slots/bem/slot.py                         |    0
 .../slots/bem/util/file_utils.py              |    0
 .../slots/bem/util/gen_utils.py               |    0
 .../slots/bem/util/plotting_utils.py          |    0
 .../slots}/bem/util/vector_utils.py           |    0
 .../figure_plots/all_direct_comparisons.py    |    0
 .../mean_data/mean_sweep_W1H3_Y1.94.csv       |    0
 .../mean_data/mean_sweep_W1H3_Y2.91.csv       |    0
 .../mean_data/mean_sweep_W1H3_Y3.89.csv       |    0
 .../mean_data/mean_sweep_W2H12_Y2.63.csv      |    0
 .../mean_data/mean_sweep_W2H3a_Y1.77.csv      |    0
 .../mean_data/mean_sweep_W2H3a_Y2.29.csv      |    0
 .../mean_data/mean_sweep_W2H3a_Y2.81.csv      |    0
 .../mean_data/mean_sweep_W2H3a_Y3.32.csv      |    0
 .../mean_data/mean_sweep_W2H3a_Y3.84.csv      |    0
 .../mean_data/mean_sweep_W2H3b_Y2.66.csv      |    0
 .../mean_data/mean_sweep_W2H3b_Y3.68.csv      |    0
 .../mean_data/mean_sweep_W2H6_Y1.52.csv       |    0
 .../mean_data/mean_sweep_W2H6_Y1.99.csv       |    0
 .../mean_data/mean_sweep_W2H6_Y2.48.csv       |    0
 .../mean_data/mean_sweep_W2H6_Y2.99.csv       |    0
 .../mean_data/mean_sweep_W2H6_Y3.50.csv       |    0
 .../mean_data/mean_sweep_W2H9_Y1.66.csv       |    0
 .../mean_data/mean_sweep_W2H9_Y2.66.csv       |    0
 .../mean_data/mean_sweep_W4H12_Y2.43.csv      |    0
 .../mean_data/mean_sweep_W4H12_Y3.43.csv      |    0
 .../raw_data/raw_data_sweep_W1H3_Y1.94.csv    |    0
 .../raw_data/raw_data_sweep_W1H3_Y2.91.csv    |    0
 .../raw_data/raw_data_sweep_W1H3_Y3.89.csv    |    0
 .../raw_data/raw_data_sweep_W2H12_Y2.63.csv   |    0
 .../raw_data/raw_data_sweep_W2H3a_Y1.77.csv   |    0
 .../raw_data/raw_data_sweep_W2H3a_Y2.29.csv   |    0
 .../raw_data/raw_data_sweep_W2H3a_Y2.81.csv   |    0
 .../raw_data/raw_data_sweep_W2H3a_Y3.32.csv   |    0
 .../raw_data/raw_data_sweep_W2H3a_Y3.84.csv   |    0
 .../raw_data/raw_data_sweep_W2H3b_Y2.66.csv   |    0
 .../raw_data/raw_data_sweep_W2H3b_Y3.68.csv   |    0
 .../raw_data/raw_data_sweep_W2H6_Y1.52.csv    |    0
 .../raw_data/raw_data_sweep_W2H6_Y1.99.csv    |    0
 .../raw_data/raw_data_sweep_W2H6_Y2.48.csv    |    0
 .../raw_data/raw_data_sweep_W2H6_Y2.99.csv    |    0
 .../raw_data/raw_data_sweep_W2H6_Y3.50.csv    |    0
 .../raw_data/raw_data_sweep_W2H9_Y1.66.csv    |    0
 .../raw_data/raw_data_sweep_W2H9_Y2.66.csv    |    0
 .../raw_data/raw_data_sweep_W4H12_Y2.43.csv   |    0
 .../raw_data/raw_data_sweep_W4H12_Y3.43.csv   |    0
 .../shifted_data_sweep_W1H3_Y1.94.csv         |    0
 .../shifted_data_sweep_W1H3_Y2.91.csv         |    0
 .../shifted_data_sweep_W1H3_Y3.89.csv         |    0
 .../shifted_data_sweep_W2H12_Y2.63.csv        |    0
 .../shifted_data_sweep_W2H3a_Y1.77.csv        |    0
 .../shifted_data_sweep_W2H3a_Y2.29.csv        |    0
 .../shifted_data_sweep_W2H3a_Y2.81.csv        |    0
 .../shifted_data_sweep_W2H3a_Y3.32.csv        |    0
 .../shifted_data_sweep_W2H3a_Y3.84.csv        |    0
 .../shifted_data_sweep_W2H3b_Y2.66.csv        |    0
 .../shifted_data_sweep_W2H3b_Y3.68.csv        |    0
 .../shifted_data_sweep_W2H6_Y1.52.csv         |    0
 .../shifted_data_sweep_W2H6_Y1.99.csv         |    0
 .../shifted_data_sweep_W2H6_Y2.48.csv         |    0
 .../shifted_data_sweep_W2H6_Y2.99.csv         |    0
 .../shifted_data_sweep_W2H6_Y3.50.csv         |    0
 .../shifted_data_sweep_W2H9_Y1.66.csv         |    0
 .../shifted_data_sweep_W2H9_Y2.66.csv         |    0
 .../shifted_data_sweep_W4H12_Y2.43.csv        |    0
 .../shifted_data_sweep_W4H12_Y3.43.csv        |    0
 .../mean_sweep_W1H3_Y1.94.csv                 |    0
 .../mean_sweep_W1H3_Y2.91.csv                 |    0
 .../mean_sweep_W1H3_Y3.89.csv                 |    0
 .../mean_sweep_W2H12_Y2.63.csv                |    0
 .../mean_sweep_W2H3a_Y1.77.csv                |    0
 .../mean_sweep_W2H3a_Y2.29.csv                |    0
 .../mean_sweep_W2H3a_Y2.81.csv                |    0
 .../mean_sweep_W2H3a_Y3.32.csv                |    0
 .../mean_sweep_W2H3a_Y3.84.csv                |    0
 .../mean_sweep_W2H3b_Y2.66.csv                |    0
 .../mean_sweep_W2H3b_Y3.68.csv                |    0
 .../mean_sweep_W2H6_Y1.52.csv                 |    0
 .../mean_sweep_W2H6_Y1.99.csv                 |    0
 .../mean_sweep_W2H6_Y2.48.csv                 |    0
 .../mean_sweep_W2H6_Y2.99.csv                 |    0
 .../mean_sweep_W2H6_Y3.50.csv                 |    0
 .../mean_sweep_W2H9_Y1.66.csv                 |    0
 .../mean_sweep_W2H9_Y2.66.csv                 |    0
 .../mean_sweep_W4H12_Y2.43.csv                |    0
 .../mean_sweep_W4H12_Y3.43.csv                |    0
 .../slots/figure_plots/figure10.py            |    0
 .../slots/figure_plots/figure11.py            |    0
 .../slots/figure_plots/figure12.py            |    0
 .../slots/figure_plots/figure13.py            |    0
 .../figure13_data/W1H3_experimental           |    0
 .../figure_plots/figure13_data/W1H3_numerical |    0
 .../figure13_data/W2H3a_experimental          |    0
 .../figure13_data/W2H3a_numerical             |    0
 .../slots/figure_plots/figure5.py             |    0
 ...0_w2.00_h2.00_drat0.1_wthresh12_len100.csv |    0
 ...0_w2.00_h2.00_drat0.1_wthresh12_len100.csv |    0
 ....00_H2.00_drat0.1_wthresh12_len100_N64.csv |    0
 .../slots/figure_plots/figure6.py             |    0
 .../figure6_data/h_collapse_n20000_H1.0.csv   |    0
 .../figure6_data/h_collapse_n20000_H2.0.csv   |    0
 .../figure6_data/h_collapse_n20000_H3.0.csv   |    0
 .../figure6_data/h_collapse_n20000_H4.0.csv   |    0
 .../figure6_data/h_collapse_n20000_H5.0.csv   |    0
 .../slots/figure_plots/figure7.py             |    0
 .../figure7_data/y_collapse_n20000_Y1.0.csv   |    0
 .../figure7_data/y_collapse_n20000_Y2.0.csv   |    0
 .../figure7_data/y_collapse_n20000_Y3.0.csv   |    0
 .../figure7_data/y_collapse_n20000_Y4.0.csv   |    0
 .../figure7_data/y_collapse_n20000_Y5.0.csv   |    0
 .../slots/figure_plots/figure8.py             |    0
 .../peak_sweep_20000_16x16_plate_100.csv      |    0
 .../slots/figure_plots/figure9.py             |    0
 ...1.94_bem_slot_prediction_20000_0.25_15.csv |    0
 ...2.91_bem_slot_prediction_20000_0.25_15.csv |    0
 ...3.89_bem_slot_prediction_20000_0.25_15.csv |    0
 ...Y1.66_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.66_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.63_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y1.77_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.29_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.81_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y3.32_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y3.84_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.66_bem_slot_prediction_20000_0.25_8.csv |    0
 ...Y3.68_bem_slot_prediction_20000_0.25_8.csv |    0
 ...Y1.52_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y1.99_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.43_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y3.43_bem_slot_prediction_20000_0.25_5.csv |    0
 .../slots/figure_plots/util/analyse_slot.py   |    0
 .../slots/figure_plots/util/analysis_utils.py |    0
 .../slots/figure_plots/util/config_utils.py   |    0
 .../slots/figure_plots/util/file_utils.py     |    0
 .../slots/figure_plots/util/plotting_utils.py |    0
 .../thesis/chapter 2/fig_data/plasma.mp4      |  Bin
 .../thesis/chapter 2/figure5.py               |    0
 .../thesis/chapter 2/figure6.py               |    0
 .../thesis/chapter 2/figure7.py               |    0
 .../thesis/chapter 2}/util/analysis_utils.py  |    0
 .../chapter 2}/util/determineDisplacement.py  |    0
 .../thesis/chapter 2}/util/file_utils.py      |    0
 .../thesis/chapter 2}/util/mp4.py             |    0
 .../thesis/chapter 2}/util/mraw.py            |    0
 .../thesis/chapter 2}/util/plotting_utils.py  |    0
 .../thesis/chapter 2/util/raytrace.py         |    0
 .../thesis/chapter 3/bem/bem.py               |    0
 .../thesis/chapter 3/bem/slot.py              |    0
 .../thesis/chapter 3/bem/util/file_utils.py   |    0
 .../thesis/chapter 3/bem/util/gen_utils.py    |    0
 .../chapter 3/bem/util/plotting_utils.py      |    0
 .../chapter 3/bem}/util/vector_utils.py       |    0
 .../figure_plots/all_direct_comparisons.py    |    0
 .../mean_data/mean_sweep_W1H3_Y1.94.csv       |    0
 .../mean_data/mean_sweep_W1H3_Y2.91.csv       |    0
 .../mean_data/mean_sweep_W1H3_Y3.89.csv       |    0
 .../mean_data/mean_sweep_W2H12_Y2.63.csv      |    0
 .../mean_data/mean_sweep_W2H3a_Y1.77.csv      |    0
 .../mean_data/mean_sweep_W2H3a_Y2.29.csv      |    0
 .../mean_data/mean_sweep_W2H3a_Y2.81.csv      |    0
 .../mean_data/mean_sweep_W2H3a_Y3.32.csv      |    0
 .../mean_data/mean_sweep_W2H3a_Y3.84.csv      |    0
 .../mean_data/mean_sweep_W2H3b_Y2.66.csv      |    0
 .../mean_data/mean_sweep_W2H3b_Y3.68.csv      |    0
 .../mean_data/mean_sweep_W2H6_Y1.52.csv       |    0
 .../mean_data/mean_sweep_W2H6_Y1.99.csv       |    0
 .../mean_data/mean_sweep_W2H6_Y2.48.csv       |    0
 .../mean_data/mean_sweep_W2H6_Y2.99.csv       |    0
 .../mean_data/mean_sweep_W2H6_Y3.50.csv       |    0
 .../mean_data/mean_sweep_W2H9_Y1.66.csv       |    0
 .../mean_data/mean_sweep_W2H9_Y2.66.csv       |    0
 .../mean_data/mean_sweep_W4H12_Y2.43.csv      |    0
 .../mean_data/mean_sweep_W4H12_Y3.43.csv      |    0
 .../raw_data/raw_data_sweep_W1H3_Y1.94.csv    |    0
 .../raw_data/raw_data_sweep_W1H3_Y2.91.csv    |    0
 .../raw_data/raw_data_sweep_W1H3_Y3.89.csv    |    0
 .../raw_data/raw_data_sweep_W2H12_Y2.63.csv   |    0
 .../raw_data/raw_data_sweep_W2H3a_Y1.77.csv   |    0
 .../raw_data/raw_data_sweep_W2H3a_Y2.29.csv   |    0
 .../raw_data/raw_data_sweep_W2H3a_Y2.81.csv   |    0
 .../raw_data/raw_data_sweep_W2H3a_Y3.32.csv   |    0
 .../raw_data/raw_data_sweep_W2H3a_Y3.84.csv   |    0
 .../raw_data/raw_data_sweep_W2H3b_Y2.66.csv   |    0
 .../raw_data/raw_data_sweep_W2H3b_Y3.68.csv   |    0
 .../raw_data/raw_data_sweep_W2H6_Y1.52.csv    |    0
 .../raw_data/raw_data_sweep_W2H6_Y1.99.csv    |    0
 .../raw_data/raw_data_sweep_W2H6_Y2.48.csv    |    0
 .../raw_data/raw_data_sweep_W2H6_Y2.99.csv    |    0
 .../raw_data/raw_data_sweep_W2H6_Y3.50.csv    |    0
 .../raw_data/raw_data_sweep_W2H9_Y1.66.csv    |    0
 .../raw_data/raw_data_sweep_W2H9_Y2.66.csv    |    0
 .../raw_data/raw_data_sweep_W4H12_Y2.43.csv   |    0
 .../raw_data/raw_data_sweep_W4H12_Y3.43.csv   |    0
 .../shifted_data_sweep_W1H3_Y1.94.csv         |    0
 .../shifted_data_sweep_W1H3_Y2.91.csv         |    0
 .../shifted_data_sweep_W1H3_Y3.89.csv         |    0
 .../shifted_data_sweep_W2H12_Y2.63.csv        |    0
 .../shifted_data_sweep_W2H3a_Y1.77.csv        |    0
 .../shifted_data_sweep_W2H3a_Y2.29.csv        |    0
 .../shifted_data_sweep_W2H3a_Y2.81.csv        |    0
 .../shifted_data_sweep_W2H3a_Y3.32.csv        |    0
 .../shifted_data_sweep_W2H3a_Y3.84.csv        |    0
 .../shifted_data_sweep_W2H3b_Y2.66.csv        |    0
 .../shifted_data_sweep_W2H3b_Y3.68.csv        |    0
 .../shifted_data_sweep_W2H6_Y1.52.csv         |    0
 .../shifted_data_sweep_W2H6_Y1.99.csv         |    0
 .../shifted_data_sweep_W2H6_Y2.48.csv         |    0
 .../shifted_data_sweep_W2H6_Y2.99.csv         |    0
 .../shifted_data_sweep_W2H6_Y3.50.csv         |    0
 .../shifted_data_sweep_W2H9_Y1.66.csv         |    0
 .../shifted_data_sweep_W2H9_Y2.66.csv         |    0
 .../shifted_data_sweep_W4H12_Y2.43.csv        |    0
 .../shifted_data_sweep_W4H12_Y3.43.csv        |    0
 .../mean_sweep_W1H3_Y1.94.csv                 |    0
 .../mean_sweep_W1H3_Y2.91.csv                 |    0
 .../mean_sweep_W1H3_Y3.89.csv                 |    0
 .../mean_sweep_W2H12_Y2.63.csv                |    0
 .../mean_sweep_W2H3a_Y1.77.csv                |    0
 .../mean_sweep_W2H3a_Y2.29.csv                |    0
 .../mean_sweep_W2H3a_Y2.81.csv                |    0
 .../mean_sweep_W2H3a_Y3.32.csv                |    0
 .../mean_sweep_W2H3a_Y3.84.csv                |    0
 .../mean_sweep_W2H3b_Y2.66.csv                |    0
 .../mean_sweep_W2H3b_Y3.68.csv                |    0
 .../mean_sweep_W2H6_Y1.52.csv                 |    0
 .../mean_sweep_W2H6_Y1.99.csv                 |    0
 .../mean_sweep_W2H6_Y2.48.csv                 |    0
 .../mean_sweep_W2H6_Y2.99.csv                 |    0
 .../mean_sweep_W2H6_Y3.50.csv                 |    0
 .../mean_sweep_W2H9_Y1.66.csv                 |    0
 .../mean_sweep_W2H9_Y2.66.csv                 |    0
 .../mean_sweep_W4H12_Y2.43.csv                |    0
 .../mean_sweep_W4H12_Y3.43.csv                |    0
 .../thesis/chapter 3/figure_plots/figure10.py |    0
 .../peak_sweep_20000_16x16_plate_100.csv      |    0
 .../thesis/chapter 3/figure_plots/figure11.py |    0
 .../thesis/chapter 3/figure_plots/figure12.py |    0
 .../thesis/chapter 3/figure_plots/figure13.py |    0
 .../thesis/chapter 3/figure_plots/figure14.py |    0
 .../thesis/chapter 3/figure_plots/figure15.py |    0
 .../figure15_data/W1H3_experimental           |    0
 .../figure_plots/figure15_data/W1H3_numerical |    0
 .../figure15_data/W2H3a_experimental          |    0
 .../figure15_data/W2H3a_numerical             |    0
 .../thesis/chapter 3/figure_plots/figure4.py  |    0
 .../thesis/chapter 3/figure_plots/figure6.py  |    0
 .../uniform_corner_rms_between_panels_10.csv  |    0
 .../uniform_corner_rms_between_panels_100.csv |    0
 .../uniform_corner_rms_between_panels_150.csv |    0
 .../uniform_corner_rms_between_panels_20.csv  |    0
 .../uniform_corner_rms_between_panels_200.csv |    0
 .../uniform_corner_rms_between_panels_250.csv |    0
 .../uniform_corner_rms_between_panels_30.csv  |    0
 .../uniform_corner_rms_between_panels_40.csv  |    0
 .../uniform_corner_rms_between_panels_50.csv  |    0
 .../thesis/chapter 3/figure_plots/figure7.py  |    0
 ...0_w2.00_h2.00_drat0.1_wthresh12_len100.csv |    0
 ...0_w2.00_h2.00_drat0.1_wthresh12_len100.csv |    0
 ....00_H2.00_drat0.1_wthresh12_len100_N64.csv |    0
 .../thesis/chapter 3/figure_plots/figure8.py  |    0
 .../figure8_data/h_collapse_n20000_H1.0.csv   |    0
 .../figure8_data/h_collapse_n20000_H2.0.csv   |    0
 .../figure8_data/h_collapse_n20000_H3.0.csv   |    0
 .../figure8_data/h_collapse_n20000_H4.0.csv   |    0
 .../figure8_data/h_collapse_n20000_H5.0.csv   |    0
 .../thesis/chapter 3/figure_plots/figure9.py  |    0
 .../figure9_data/y_collapse_n20000_Y1.0.csv   |    0
 .../figure9_data/y_collapse_n20000_Y2.0.csv   |    0
 .../figure9_data/y_collapse_n20000_Y3.0.csv   |    0
 .../figure9_data/y_collapse_n20000_Y4.0.csv   |    0
 .../figure9_data/y_collapse_n20000_Y5.0.csv   |    0
 ...1.94_bem_slot_prediction_20000_0.25_15.csv |    0
 ...2.91_bem_slot_prediction_20000_0.25_15.csv |    0
 ...3.89_bem_slot_prediction_20000_0.25_15.csv |    0
 ...Y1.66_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.66_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.63_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y1.77_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.29_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.81_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y3.32_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y3.84_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.66_bem_slot_prediction_20000_0.25_8.csv |    0
 ...Y3.68_bem_slot_prediction_20000_0.25_8.csv |    0
 ...Y1.52_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y1.99_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y2.43_bem_slot_prediction_20000_0.25_5.csv |    0
 ...Y3.43_bem_slot_prediction_20000_0.25_5.csv |    0
 .../figure_plots/util/analyse_slot.py         |    0
 .../figure_plots/util/analysis_utils.py       |    0
 .../thesis/chapter 3/figure_plots/util/bem.py |    0
 .../figure_plots/util/config_utils.py         |    0
 .../figure_plots/util/element_utils.py        |    0
 .../chapter 3/figure_plots/util/elements.py   |    0
 .../chapter 3/figure_plots/util/file_utils.py |    0
 .../chapter 3/figure_plots/util/gen_utils.py  |    0
 .../figure_plots/util/plotting_utils.py       |    0
 .../figure_plots}/util/vector_utils.py        |    0
 .../thesis/chapter 4/figure1.py               |    0
 .../thesis/chapter 4/figure2.py               |    0
 .../thesis/chapter 4/figure3.py               |    0
 .../thesis/chapter 4/figure4.py               |    0
 .../thesis/chapter 4/figure5.py               |    0
 .../thesis/chapter 4/figure6and7.py           |    0
 .../model_bem_flat_plate_experiment.py        |    0
 .../chapter 4/model_bem_slot_experiment.py    |    0
 .../R1.0_L20_n50000_cn3                       |    0
 .../model_data/corner_anisotropy_sweep.py     |    0
 ...4.00_drat0.1_wthresh12.00_len100.0_N33.csv |    0
 ...00_H4.00_drat0.1_wthresh12.00_len100.0.csv |    0
 ...00_H4.00_drat0.1_wthresh12.00_len100.0.csv |    0
 .../model_data/slot_anisotropy_sweep.py       |    0
 .../R1.0_L15_n20000_i32                       |    0
 .../model_data/square_anisotropy_sweep.py     |    0
 .../R1.0_L15_n20000_i32                       |    0
 .../model_data/triangle_anisotropy_sweep.py   |    0
 .../chapter 4/model_sa_corner_experiment.py   |    0
 .../model_sa_equi_triangle_experiment.py      |    0
 .../chapter 4/model_sa_square_experiment.py   |    0
 .../thesis/chapter 4}/util/analysis_utils.py  |    0
 .../thesis/chapter 4/util/bem.py              |    0
 .../chapter 4}/util/determineDisplacement.py  |    0
 .../thesis/chapter 4}/util/file_utils.py      |    0
 .../thesis/chapter 4/util/gen_utils.py        |    0
 .../thesis/chapter 4/util/moi_utils.py        |    0
 .../thesis/chapter 4}/util/mp4.py             |    0
 .../thesis/chapter 4}/util/mraw.py            |    0
 .../thesis/chapter 4}/util/plotting_utils.py  |    0
 .../thesis/chapter 4/util/vector_utils.py     |   57 +
 .../complex_geometry_anisotropy_data.csv      |    0
 .../chapter 5/fig_data/surface_nucleation.mp4 |  Bin
 .../thesis/chapter 5/figure10.py              |    0
 .../thesis/chapter 5/figure11.py              |    0
 .../thesis/chapter 5/figure12and13.py         |    0
 .../thesis/chapter 5/figure2.py               |    0
 .../thesis/chapter 5/figure3.py               |    0
 .../thesis/chapter 5/figure4.py               |    0
 .../thesis/chapter 5/figure5.py               |    0
 .../thesis/chapter 5/figure6.py               |    0
 .../thesis/chapter 5/figure7.py               |    0
 .../thesis/chapter 5/figure8.py               |    0
 .../steel_porous_plate_anisotropy.py          |    0
 .../thesis/chapter 5/util/analysis_utils.py   |  641 +++++++++++
 .../thesis/chapter 5/util/bem.py              |    0
 .../chapter 5/util/determineDisplacement.py   |   69 ++
 .../thesis/chapter 5/util/drawing_utils.py    |    0
 .../thesis/chapter 5/util/file_utils.py       |  118 ++
 .../thesis/chapter 5/util/gen_utils.py        |    0
 packaged-code/thesis/chapter 5/util/mp4.py    |   45 +
 packaged-code/thesis/chapter 5/util/mraw.py   |  174 +++
 .../thesis/chapter 5/util/plotting_utils.py   |  260 +++++
 422 files changed, 2694 insertions(+)
 rename {paper_code => packaged-code}/anisotropy/figure1.py (100%)
 rename {paper_code => packaged-code}/anisotropy/figure2.py (100%)
 rename {paper_code => packaged-code}/anisotropy/figure3.py (100%)
 rename {paper_code => packaged-code}/anisotropy/figure4.py (100%)
 rename {paper_code => packaged-code}/anisotropy/figure5.py (100%)
 rename {paper_code => packaged-code}/anisotropy/figure6.py (100%)
 rename {paper_code => packaged-code}/anisotropy/figure7and8.py (100%)
 rename {paper_code => packaged-code}/anisotropy/model_bem_flat_plate_experiment.py (100%)
 rename {paper_code => packaged-code}/anisotropy/model_bem_slot_experiment.py (100%)
 rename {paper_code => packaged-code}/anisotropy/model_data/corner_anisotropy_data/R1.0_L20_n50000_cn3 (100%)
 rename {paper_code => packaged-code}/anisotropy/model_data/corner_anisotropy_sweep.py (100%)
 rename {paper_code => packaged-code}/anisotropy/model_data/slot_anisotropy_data/anisotropy_sweep_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0_N33.csv (100%)
 rename {paper_code => packaged-code}/anisotropy/model_data/slot_anisotropy_data/centroids_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv (100%)
 rename {paper_code => packaged-code}/anisotropy/model_data/slot_anisotropy_data/normals_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv (100%)
 rename {paper_code => packaged-code}/anisotropy/model_data/slot_anisotropy_sweep.py (100%)
 rename {paper_code => packaged-code}/anisotropy/model_data/square_anisotropy_data/R1.0_L15_n20000_i32 (100%)
 rename {paper_code => packaged-code}/anisotropy/model_data/square_anisotropy_sweep.py (100%)
 rename {paper_code => packaged-code}/anisotropy/model_data/triangle_anisotropy_data/R1.0_L15_n20000_i32 (100%)
 rename {paper_code => packaged-code}/anisotropy/model_data/triangle_anisotropy_sweep.py (100%)
 rename {paper_code => packaged-code}/anisotropy/model_sa_corner_experiment.py (100%)
 rename {paper_code => packaged-code}/anisotropy/model_sa_equi_triangle_experiment.py (100%)
 rename {paper_code => packaged-code}/anisotropy/model_sa_square_experiment.py (100%)
 rename {paper_code => packaged-code}/anisotropy/util/analysis_utils.py (100%)
 rename {paper_code => packaged-code}/anisotropy/util/bem.py (100%)
 rename {paper_code => packaged-code}/anisotropy/util/determineDisplacement.py (100%)
 rename {paper_code => packaged-code}/anisotropy/util/file_utils.py (100%)
 rename {paper_code => packaged-code}/anisotropy/util/gen_utils.py (100%)
 rename {paper_code => packaged-code}/anisotropy/util/moi_utils.py (100%)
 rename {paper_code => packaged-code}/anisotropy/util/mp4.py (100%)
 rename {paper_code => packaged-code}/anisotropy/util/mraw.py (100%)
 rename {paper_code => packaged-code}/anisotropy/util/plotting_utils.py (100%)
 rename {paper_code => packaged-code}/anisotropy/util/vector_utils.py (100%)
 create mode 100644 packaged-code/pacakged-gui/README.md
 create mode 100644 packaged-code/pacakged-gui/bubble_analysis_gui.py
 create mode 100644 packaged-code/pacakged-gui/icon.png
 create mode 100644 packaged-code/pacakged-gui/run_bubble_analysis.bat
 rename {paper_code/porous => packaged-code/pacakged-gui}/util/analysis_utils.py (100%)
 create mode 100644 packaged-code/pacakged-gui/util/calibration_utils.py
 rename {paper_code/porous => packaged-code/pacakged-gui}/util/determineDisplacement.py (100%)
 rename {paper_code/porous => packaged-code/pacakged-gui}/util/file_utils.py (100%)
 rename {paper_code/porous => packaged-code/pacakged-gui}/util/mp4.py (100%)
 rename {paper_code/porous => packaged-code/pacakged-gui}/util/mraw.py (100%)
 create mode 100644 packaged-code/pacakged-gui/util/mraw_converter.py
 create mode 100644 packaged-code/pacakged-gui/util/pixel_correction.py
 rename {paper_code/porous => packaged-code/pacakged-gui}/util/plotting_utils.py (100%)
 create mode 100644 packaged-code/pacakged-gui/util/qt_utils.py
 rename {paper_code/slots/bem => packaged-code/pacakged-gui}/util/vector_utils.py (100%)
 rename {paper_code => packaged-code}/porous/fig_data/complex_geometry_anisotropy_data.csv (100%)
 rename {paper_code => packaged-code}/porous/fig_data/surface_nucleation.mp4 (100%)
 rename {paper_code => packaged-code}/porous/figure10.py (100%)
 rename {paper_code => packaged-code}/porous/figure12.py (100%)
 rename {paper_code => packaged-code}/porous/figure13.py (100%)
 rename {paper_code => packaged-code}/porous/figure14and15.py (100%)
 rename {paper_code => packaged-code}/porous/figure3.py (100%)
 rename {paper_code => packaged-code}/porous/figure4.py (100%)
 rename {paper_code => packaged-code}/porous/figure5.py (100%)
 rename {paper_code => packaged-code}/porous/figure6.py (100%)
 rename {paper_code => packaged-code}/porous/figure7.py (100%)
 rename {paper_code => packaged-code}/porous/figure8.py (100%)
 rename {paper_code => packaged-code}/porous/figure9.py (100%)
 rename {paper_code => packaged-code}/porous/steel_porous_plate_anisotropy.py (100%)
 rename {paper_code/thesis/chapter 2 => packaged-code/porous}/util/analysis_utils.py (100%)
 rename {paper_code => packaged-code}/porous/util/bem.py (100%)
 rename {paper_code/thesis/chapter 2 => packaged-code/porous}/util/determineDisplacement.py (100%)
 rename {paper_code => packaged-code}/porous/util/drawing_utils.py (100%)
 rename {paper_code/thesis/chapter 2 => packaged-code/porous}/util/file_utils.py (100%)
 rename {paper_code => packaged-code}/porous/util/gen_utils.py (100%)
 rename {paper_code/thesis/chapter 2 => packaged-code/porous}/util/mp4.py (100%)
 rename {paper_code/thesis/chapter 2 => packaged-code/porous}/util/mraw.py (100%)
 rename {paper_code/thesis/chapter 2 => packaged-code/porous}/util/plotting_utils.py (100%)
 rename {paper_code => packaged-code}/slots/bem/bem.py (100%)
 rename {paper_code => packaged-code}/slots/bem/slot.py (100%)
 rename {paper_code => packaged-code}/slots/bem/util/file_utils.py (100%)
 rename {paper_code => packaged-code}/slots/bem/util/gen_utils.py (100%)
 rename {paper_code => packaged-code}/slots/bem/util/plotting_utils.py (100%)
 rename {paper_code/thesis/chapter 3 => packaged-code/slots}/bem/util/vector_utils.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/all_direct_comparisons.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y1.94.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y2.91.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y3.89.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H12_Y2.63.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y1.77.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.29.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.81.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.32.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.84.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y3.68.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.52.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.99.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.48.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.99.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y3.50.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y1.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y2.43.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y3.43.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y1.94.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y2.91.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y3.89.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H12_Y2.63.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y1.77.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.29.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.81.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.32.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.84.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y3.68.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.52.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.99.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.48.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.99.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y3.50.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y1.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y2.43.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y3.43.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y1.94.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y2.91.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y3.89.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H12_Y2.63.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y1.77.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.29.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.81.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.32.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.84.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y3.68.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.52.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.99.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.48.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.99.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y3.50.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y1.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y2.43.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y3.43.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y1.94.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y2.91.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y3.89.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H12_Y2.63.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y1.77.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.29.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.81.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.32.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.84.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y3.68.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.52.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.99.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.48.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.99.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y3.50.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y1.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y2.43.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y3.43.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure10.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure11.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure12.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure13.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure13_data/W1H3_experimental (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure13_data/W1H3_numerical (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure13_data/W2H3a_experimental (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure13_data/W2H3a_numerical (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure5.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure5_data/centroids_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure5_data/normals_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure5_data/vel_sweep_n20000_W2.00_H2.00_drat0.1_wthresh12_len100_N64.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure6.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure6_data/h_collapse_n20000_H1.0.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure6_data/h_collapse_n20000_H2.0.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure6_data/h_collapse_n20000_H3.0.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure6_data/h_collapse_n20000_H4.0.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure6_data/h_collapse_n20000_H5.0.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure7.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure7_data/y_collapse_n20000_Y1.0.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure7_data/y_collapse_n20000_Y2.0.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure7_data/y_collapse_n20000_Y3.0.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure7_data/y_collapse_n20000_Y4.0.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure7_data/y_collapse_n20000_Y5.0.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure8.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure8_data/peak_sweep_20000_16x16_plate_100.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/figure9.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W1.23H2.74Y1.94_bem_slot_prediction_20000_0.25_15.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W1.23H2.74Y2.91_bem_slot_prediction_20000_0.25_15.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W1.23H2.74Y3.89_bem_slot_prediction_20000_0.25_15.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.14H8.21Y1.66_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.14H8.21Y2.66_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.20H11.50Y2.63_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.20H2.70Y1.77_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.20H2.70Y2.29_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.20H2.70Y2.81_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.20H2.70Y3.32_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.20H2.70Y3.84_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.20H2.90Y2.66_bem_slot_prediction_20000_0.25_8.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.20H2.90Y3.68_bem_slot_prediction_20000_0.25_8.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.20H5.40Y1.52_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W2.20H5.40Y1.99_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W4.20H11.47Y2.43_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/model_predictions/W4.20H11.47Y3.43_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/util/analyse_slot.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/util/analysis_utils.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/util/config_utils.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/util/file_utils.py (100%)
 rename {paper_code => packaged-code}/slots/figure_plots/util/plotting_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 2/fig_data/plasma.mp4 (100%)
 rename {paper_code => packaged-code}/thesis/chapter 2/figure5.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 2/figure6.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 2/figure7.py (100%)
 rename {paper_code/thesis/chapter 4 => packaged-code/thesis/chapter 2}/util/analysis_utils.py (100%)
 rename {paper_code/thesis/chapter 4 => packaged-code/thesis/chapter 2}/util/determineDisplacement.py (100%)
 rename {paper_code/thesis/chapter 4 => packaged-code/thesis/chapter 2}/util/file_utils.py (100%)
 rename {paper_code/thesis/chapter 4 => packaged-code/thesis/chapter 2}/util/mp4.py (100%)
 rename {paper_code/thesis/chapter 4 => packaged-code/thesis/chapter 2}/util/mraw.py (100%)
 rename {paper_code/thesis/chapter 4 => packaged-code/thesis/chapter 2}/util/plotting_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 2/util/raytrace.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/bem/bem.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/bem/slot.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/bem/util/file_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/bem/util/gen_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/bem/util/plotting_utils.py (100%)
 rename {paper_code/thesis/chapter 3/figure_plots => packaged-code/thesis/chapter 3/bem}/util/vector_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/all_direct_comparisons.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y1.94.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y2.91.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y3.89.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H12_Y2.63.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y1.77.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.29.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.81.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.32.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.84.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y3.68.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.52.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.99.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.48.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.99.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y3.50.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y1.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y2.43.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y3.43.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y1.94.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y2.91.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y3.89.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H12_Y2.63.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y1.77.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.29.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.81.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.32.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.84.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y3.68.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.52.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.99.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.48.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.99.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y3.50.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y1.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y2.43.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y3.43.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y1.94.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y2.91.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y3.89.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H12_Y2.63.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y1.77.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.29.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.81.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.32.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.84.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y3.68.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.52.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.99.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.48.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.99.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y3.50.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y1.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y2.43.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y3.43.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y1.94.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y2.91.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y3.89.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H12_Y2.63.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y1.77.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.29.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.81.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.32.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.84.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y3.68.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.52.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.99.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.48.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.99.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y3.50.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y1.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y2.66.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y2.43.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y3.43.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure10.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure10_data/peak_sweep_20000_16x16_plate_100.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure11.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure12.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure13.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure14.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure15.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure15_data/W1H3_experimental (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure15_data/W1H3_numerical (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure15_data/W2H3a_experimental (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure15_data/W2H3a_numerical (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure4.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure6.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_10.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_100.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_150.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_20.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_200.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_250.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_30.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_40.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_50.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure7.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure7_data/centroids_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure7_data/normals_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure7_data/vel_sweep_n20000_W2.00_H2.00_drat0.1_wthresh12_len100_N64.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure8.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H1.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H2.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H3.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H4.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H5.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure9.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y1.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y2.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y3.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y4.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y5.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y1.94_bem_slot_prediction_20000_0.25_15.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y2.91_bem_slot_prediction_20000_0.25_15.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y3.89_bem_slot_prediction_20000_0.25_15.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.14H8.21Y1.66_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.14H8.21Y2.66_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.20H11.50Y2.63_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y1.77_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y2.29_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y2.81_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y3.32_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y3.84_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.90Y2.66_bem_slot_prediction_20000_0.25_8.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.90Y3.68_bem_slot_prediction_20000_0.25_8.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.20H5.40Y1.52_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W2.20H5.40Y1.99_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W4.20H11.47Y2.43_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/model_predictions/W4.20H11.47Y3.43_bem_slot_prediction_20000_0.25_5.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/util/analyse_slot.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/util/analysis_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/util/bem.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/util/config_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/util/element_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/util/elements.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/util/file_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/util/gen_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 3/figure_plots/util/plotting_utils.py (100%)
 rename {paper_code/thesis/chapter 4 => packaged-code/thesis/chapter 3/figure_plots}/util/vector_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/figure1.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/figure2.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/figure3.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/figure4.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/figure5.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/figure6and7.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_bem_flat_plate_experiment.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_bem_slot_experiment.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_data/corner_anisotropy_data/R1.0_L20_n50000_cn3 (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_data/corner_anisotropy_sweep.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_data/slot_anisotropy_data/anisotropy_sweep_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0_N33.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_data/slot_anisotropy_data/centroids_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_data/slot_anisotropy_data/normals_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_data/slot_anisotropy_sweep.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_data/square_anisotropy_data/R1.0_L15_n20000_i32 (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_data/square_anisotropy_sweep.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_data/triangle_anisotropy_data/R1.0_L15_n20000_i32 (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_data/triangle_anisotropy_sweep.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_sa_corner_experiment.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_sa_equi_triangle_experiment.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/model_sa_square_experiment.py (100%)
 rename {paper_code/thesis/chapter 5 => packaged-code/thesis/chapter 4}/util/analysis_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/util/bem.py (100%)
 rename {paper_code/thesis/chapter 5 => packaged-code/thesis/chapter 4}/util/determineDisplacement.py (100%)
 rename {paper_code/thesis/chapter 5 => packaged-code/thesis/chapter 4}/util/file_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/util/gen_utils.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 4/util/moi_utils.py (100%)
 rename {paper_code/thesis/chapter 5 => packaged-code/thesis/chapter 4}/util/mp4.py (100%)
 rename {paper_code/thesis/chapter 5 => packaged-code/thesis/chapter 4}/util/mraw.py (100%)
 rename {paper_code/thesis/chapter 5 => packaged-code/thesis/chapter 4}/util/plotting_utils.py (100%)
 create mode 100644 packaged-code/thesis/chapter 4/util/vector_utils.py
 rename {paper_code => packaged-code}/thesis/chapter 5/fig_data/complex_geometry_anisotropy_data.csv (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/fig_data/surface_nucleation.mp4 (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/figure10.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/figure11.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/figure12and13.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/figure2.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/figure3.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/figure4.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/figure5.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/figure6.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/figure7.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/figure8.py (100%)
 rename {paper_code => packaged-code}/thesis/chapter 5/steel_porous_plate_anisotropy.py (100%)
 create mode 100644 packaged-code/thesis/chapter 5/util/analysis_utils.py
 rename {paper_code => packaged-code}/thesis/chapter 5/util/bem.py (100%)
 create mode 100644 packaged-code/thesis/chapter 5/util/determineDisplacement.py
 rename {paper_code => packaged-code}/thesis/chapter 5/util/drawing_utils.py (100%)
 create mode 100644 packaged-code/thesis/chapter 5/util/file_utils.py
 rename {paper_code => packaged-code}/thesis/chapter 5/util/gen_utils.py (100%)
 create mode 100644 packaged-code/thesis/chapter 5/util/mp4.py
 create mode 100644 packaged-code/thesis/chapter 5/util/mraw.py
 create mode 100644 packaged-code/thesis/chapter 5/util/plotting_utils.py

diff --git a/paper_code/anisotropy/figure1.py b/packaged-code/anisotropy/figure1.py
similarity index 100%
rename from paper_code/anisotropy/figure1.py
rename to packaged-code/anisotropy/figure1.py
diff --git a/paper_code/anisotropy/figure2.py b/packaged-code/anisotropy/figure2.py
similarity index 100%
rename from paper_code/anisotropy/figure2.py
rename to packaged-code/anisotropy/figure2.py
diff --git a/paper_code/anisotropy/figure3.py b/packaged-code/anisotropy/figure3.py
similarity index 100%
rename from paper_code/anisotropy/figure3.py
rename to packaged-code/anisotropy/figure3.py
diff --git a/paper_code/anisotropy/figure4.py b/packaged-code/anisotropy/figure4.py
similarity index 100%
rename from paper_code/anisotropy/figure4.py
rename to packaged-code/anisotropy/figure4.py
diff --git a/paper_code/anisotropy/figure5.py b/packaged-code/anisotropy/figure5.py
similarity index 100%
rename from paper_code/anisotropy/figure5.py
rename to packaged-code/anisotropy/figure5.py
diff --git a/paper_code/anisotropy/figure6.py b/packaged-code/anisotropy/figure6.py
similarity index 100%
rename from paper_code/anisotropy/figure6.py
rename to packaged-code/anisotropy/figure6.py
diff --git a/paper_code/anisotropy/figure7and8.py b/packaged-code/anisotropy/figure7and8.py
similarity index 100%
rename from paper_code/anisotropy/figure7and8.py
rename to packaged-code/anisotropy/figure7and8.py
diff --git a/paper_code/anisotropy/model_bem_flat_plate_experiment.py b/packaged-code/anisotropy/model_bem_flat_plate_experiment.py
similarity index 100%
rename from paper_code/anisotropy/model_bem_flat_plate_experiment.py
rename to packaged-code/anisotropy/model_bem_flat_plate_experiment.py
diff --git a/paper_code/anisotropy/model_bem_slot_experiment.py b/packaged-code/anisotropy/model_bem_slot_experiment.py
similarity index 100%
rename from paper_code/anisotropy/model_bem_slot_experiment.py
rename to packaged-code/anisotropy/model_bem_slot_experiment.py
diff --git a/paper_code/anisotropy/model_data/corner_anisotropy_data/R1.0_L20_n50000_cn3 b/packaged-code/anisotropy/model_data/corner_anisotropy_data/R1.0_L20_n50000_cn3
similarity index 100%
rename from paper_code/anisotropy/model_data/corner_anisotropy_data/R1.0_L20_n50000_cn3
rename to packaged-code/anisotropy/model_data/corner_anisotropy_data/R1.0_L20_n50000_cn3
diff --git a/paper_code/anisotropy/model_data/corner_anisotropy_sweep.py b/packaged-code/anisotropy/model_data/corner_anisotropy_sweep.py
similarity index 100%
rename from paper_code/anisotropy/model_data/corner_anisotropy_sweep.py
rename to packaged-code/anisotropy/model_data/corner_anisotropy_sweep.py
diff --git a/paper_code/anisotropy/model_data/slot_anisotropy_data/anisotropy_sweep_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0_N33.csv b/packaged-code/anisotropy/model_data/slot_anisotropy_data/anisotropy_sweep_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0_N33.csv
similarity index 100%
rename from paper_code/anisotropy/model_data/slot_anisotropy_data/anisotropy_sweep_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0_N33.csv
rename to packaged-code/anisotropy/model_data/slot_anisotropy_data/anisotropy_sweep_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0_N33.csv
diff --git a/paper_code/anisotropy/model_data/slot_anisotropy_data/centroids_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv b/packaged-code/anisotropy/model_data/slot_anisotropy_data/centroids_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
similarity index 100%
rename from paper_code/anisotropy/model_data/slot_anisotropy_data/centroids_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
rename to packaged-code/anisotropy/model_data/slot_anisotropy_data/centroids_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
diff --git a/paper_code/anisotropy/model_data/slot_anisotropy_data/normals_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv b/packaged-code/anisotropy/model_data/slot_anisotropy_data/normals_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
similarity index 100%
rename from paper_code/anisotropy/model_data/slot_anisotropy_data/normals_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
rename to packaged-code/anisotropy/model_data/slot_anisotropy_data/normals_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
diff --git a/paper_code/anisotropy/model_data/slot_anisotropy_sweep.py b/packaged-code/anisotropy/model_data/slot_anisotropy_sweep.py
similarity index 100%
rename from paper_code/anisotropy/model_data/slot_anisotropy_sweep.py
rename to packaged-code/anisotropy/model_data/slot_anisotropy_sweep.py
diff --git a/paper_code/anisotropy/model_data/square_anisotropy_data/R1.0_L15_n20000_i32 b/packaged-code/anisotropy/model_data/square_anisotropy_data/R1.0_L15_n20000_i32
similarity index 100%
rename from paper_code/anisotropy/model_data/square_anisotropy_data/R1.0_L15_n20000_i32
rename to packaged-code/anisotropy/model_data/square_anisotropy_data/R1.0_L15_n20000_i32
diff --git a/paper_code/anisotropy/model_data/square_anisotropy_sweep.py b/packaged-code/anisotropy/model_data/square_anisotropy_sweep.py
similarity index 100%
rename from paper_code/anisotropy/model_data/square_anisotropy_sweep.py
rename to packaged-code/anisotropy/model_data/square_anisotropy_sweep.py
diff --git a/paper_code/anisotropy/model_data/triangle_anisotropy_data/R1.0_L15_n20000_i32 b/packaged-code/anisotropy/model_data/triangle_anisotropy_data/R1.0_L15_n20000_i32
similarity index 100%
rename from paper_code/anisotropy/model_data/triangle_anisotropy_data/R1.0_L15_n20000_i32
rename to packaged-code/anisotropy/model_data/triangle_anisotropy_data/R1.0_L15_n20000_i32
diff --git a/paper_code/anisotropy/model_data/triangle_anisotropy_sweep.py b/packaged-code/anisotropy/model_data/triangle_anisotropy_sweep.py
similarity index 100%
rename from paper_code/anisotropy/model_data/triangle_anisotropy_sweep.py
rename to packaged-code/anisotropy/model_data/triangle_anisotropy_sweep.py
diff --git a/paper_code/anisotropy/model_sa_corner_experiment.py b/packaged-code/anisotropy/model_sa_corner_experiment.py
similarity index 100%
rename from paper_code/anisotropy/model_sa_corner_experiment.py
rename to packaged-code/anisotropy/model_sa_corner_experiment.py
diff --git a/paper_code/anisotropy/model_sa_equi_triangle_experiment.py b/packaged-code/anisotropy/model_sa_equi_triangle_experiment.py
similarity index 100%
rename from paper_code/anisotropy/model_sa_equi_triangle_experiment.py
rename to packaged-code/anisotropy/model_sa_equi_triangle_experiment.py
diff --git a/paper_code/anisotropy/model_sa_square_experiment.py b/packaged-code/anisotropy/model_sa_square_experiment.py
similarity index 100%
rename from paper_code/anisotropy/model_sa_square_experiment.py
rename to packaged-code/anisotropy/model_sa_square_experiment.py
diff --git a/paper_code/anisotropy/util/analysis_utils.py b/packaged-code/anisotropy/util/analysis_utils.py
similarity index 100%
rename from paper_code/anisotropy/util/analysis_utils.py
rename to packaged-code/anisotropy/util/analysis_utils.py
diff --git a/paper_code/anisotropy/util/bem.py b/packaged-code/anisotropy/util/bem.py
similarity index 100%
rename from paper_code/anisotropy/util/bem.py
rename to packaged-code/anisotropy/util/bem.py
diff --git a/paper_code/anisotropy/util/determineDisplacement.py b/packaged-code/anisotropy/util/determineDisplacement.py
similarity index 100%
rename from paper_code/anisotropy/util/determineDisplacement.py
rename to packaged-code/anisotropy/util/determineDisplacement.py
diff --git a/paper_code/anisotropy/util/file_utils.py b/packaged-code/anisotropy/util/file_utils.py
similarity index 100%
rename from paper_code/anisotropy/util/file_utils.py
rename to packaged-code/anisotropy/util/file_utils.py
diff --git a/paper_code/anisotropy/util/gen_utils.py b/packaged-code/anisotropy/util/gen_utils.py
similarity index 100%
rename from paper_code/anisotropy/util/gen_utils.py
rename to packaged-code/anisotropy/util/gen_utils.py
diff --git a/paper_code/anisotropy/util/moi_utils.py b/packaged-code/anisotropy/util/moi_utils.py
similarity index 100%
rename from paper_code/anisotropy/util/moi_utils.py
rename to packaged-code/anisotropy/util/moi_utils.py
diff --git a/paper_code/anisotropy/util/mp4.py b/packaged-code/anisotropy/util/mp4.py
similarity index 100%
rename from paper_code/anisotropy/util/mp4.py
rename to packaged-code/anisotropy/util/mp4.py
diff --git a/paper_code/anisotropy/util/mraw.py b/packaged-code/anisotropy/util/mraw.py
similarity index 100%
rename from paper_code/anisotropy/util/mraw.py
rename to packaged-code/anisotropy/util/mraw.py
diff --git a/paper_code/anisotropy/util/plotting_utils.py b/packaged-code/anisotropy/util/plotting_utils.py
similarity index 100%
rename from paper_code/anisotropy/util/plotting_utils.py
rename to packaged-code/anisotropy/util/plotting_utils.py
diff --git a/paper_code/anisotropy/util/vector_utils.py b/packaged-code/anisotropy/util/vector_utils.py
similarity index 100%
rename from paper_code/anisotropy/util/vector_utils.py
rename to packaged-code/anisotropy/util/vector_utils.py
diff --git a/packaged-code/pacakged-gui/README.md b/packaged-code/pacakged-gui/README.md
new file mode 100644
index 0000000..558cbfe
--- /dev/null
+++ b/packaged-code/pacakged-gui/README.md
@@ -0,0 +1,15 @@
+# Bubble Analysis GUI
+`bubble_analysis_gui.py` is a GUI program written with PyQt5 that allows a series of readings to be inspected and analysed easily. A demonstration can be found [here](https://xorg.us/2018-07-18_12-07-23.mp4).
+
+#### Instructions
+1) On running the script a file selection prompt will appear. Select the folder that contains the index.csv file.
+2) Find as many readings in your data that contain the same geometry and have a common coordinate (for example a constant y). Navigate to an empty frame (no bubble) and click 'Add Frame' under 'Calibration'. If you select incorrect frames you can restart by clicking 'Clear Frames'. When you have selected a series of frames click 'Calibrate'. This will take a moment to run and will result in a 'mm/px' value being shown in the 'Calibration' status box.
+3) You can navigate through your data with the navigation buttons provided or slide the slider to advance through the frames.
+4) You can click on a frame to take measurements, left click once at the start of your measurement and again at the end. A red line will appear and the status box at the bottom of the window will show details about your measurement. The angle noted is measured from the positive horizontal (x) direction anti-clockwise (Note: the order in which you choose your points is important in angle measurement). Right clicking will clear your measurement.
+5) There are numerous other options for debugging and information.
+
+#### Recording Data
+To use this analysis tool data must be recorded in the correct format.
+- index.csv must be a CSV file with headers "x", "y", "idx" (names are not important but order is).
+- Each position index should have its own directory containing movies.
+It is suggested to view the existing data as a reference.
\ No newline at end of file
diff --git a/packaged-code/pacakged-gui/bubble_analysis_gui.py b/packaged-code/pacakged-gui/bubble_analysis_gui.py
new file mode 100644
index 0000000..00f3621
--- /dev/null
+++ b/packaged-code/pacakged-gui/bubble_analysis_gui.py
@@ -0,0 +1,1005 @@
+"""
+A program that displays frames from positions and allows them to be measured.
+
+TODO:
+- Allow measurements to be saved for use in other scripts
+    -> Ensure measurements allow for reproducibility and repeatability.
+    -> Save to file and allow minor variations to assess error.
+- Create a better position selection UI (grid of images?).
+    -> Maybe make a composite image from all the positions after calibration.
+    -> Snap to the nearest position centered on the cursor (allow clicking and dragging).
+(- Implement zooming
+    -> Zoom parameter exists but zoom center and actual zooming is not implemented.)?
+"""
+
+import ctypes
+import importlib
+import math
+import os
+import sys
+import time
+
+import numpy as np
+from PyQt5 import QtGui
+from PyQt5.QtCore import Qt, QTimer, QSize, QThread, QObject, pyqtSignal
+from PyQt5.QtGui import QPainter, QPen, QIcon, QPixmap, QResizeEvent
+from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QHBoxLayout, QTextBrowser, QMainWindow, \
+    QPushButton, QSlider, QSpacerItem, QSizePolicy, QStyle, QFileDialog, QLayout, QCheckBox
+
+import util.vector_utils as vect
+import util.analysis_utils as au
+import util.calibration_utils as cu
+import util.determineDisplacement as dd
+import util.file_utils as file
+import util.mraw_converter as mraw_converter
+import util.qt_utils as qtu
+from util.pixel_correction import load_norm_mat
+
+
+class JumpSlider(QSlider):
+    """ From https://stackoverflow.com/a/29639127/5270376 """
+
+    def mousePressEvent(self, ev):
+        """ Jump to click position """
+        self.setValue(QStyle.sliderValueFromPosition(self.minimum(), self.maximum(), ev.x(), self.width()))
+
+    def mouseMoveEvent(self, ev):
+        """ Jump to pointer position while moving """
+        self.setValue(QStyle.sliderValueFromPosition(self.minimum(), self.maximum(), ev.x(), self.width()))
+
+
+class Player(QObject):
+    frames = None
+    fps = None
+    skip = False
+    frame_update = pyqtSignal(int)
+    finished = pyqtSignal()
+
+    def __init__(self, frames=100, fps=30) -> None:
+        super().__init__()
+        self.frames = frames
+        self.fps = fps
+
+    def play(self, i=0):
+        last_time = None
+        while i < self.frames and not self.skip:
+            if last_time is None or time.time() - last_time > 1 / self.fps:
+                self.frame_update.emit(i)
+                i += 1
+                last_time = time.time()
+            app.processEvents()
+        self.skip = False
+        self.finished.emit()
+
+
+class PositionSelection(QWidget):
+    """
+    TODO:
+    -> Maybe make a composite image from all the positions after calibration.
+    -> Snap to the nearest position centered on the cursor (allow clicking and dragging).
+    """
+
+
+class ImageDisplayWidget(QWidget):
+    pixmap = None
+
+    height = None
+    width = None
+
+    def set_size(self):
+        self.setMinimumHeight(self.pixmap.height())
+        self.setMinimumWidth(self.pixmap.width())
+
+        self.setMaximumHeight(self.pixmap.height())
+        self.setMaximumWidth(self.pixmap.width())
+
+    def set_image(self, image):
+        pixmap = qtu.frame_to_pixmap(image)
+        pixmap = pixmap.scaledToHeight(pixmap.height())
+
+        self.pixmap = pixmap
+
+        self.set_size()
+        self.update()
+
+    def set_image_from_png(self, png_path, scale=0.5):
+        self.pixmap = QPixmap(png_path)
+
+        self.pixmap = self.pixmap.scaledToHeight(int(round(self.pixmap.height() * scale)))
+
+        self.set_size()
+
+        self.update()
+
+    def clear_image(self):
+        self.pixmap = None
+        self.setAutoFillBackground(True)
+        p = self.palette()
+        p.setColor(self.backgroundRole(), Qt.gray)
+        self.setPalette(p)
+
+        self.update()
+
+    def paintEvent(self, e):
+        if self.pixmap is not None:
+            # Draw frame.
+            qp = QPainter()
+            if qp.isActive():
+                qp.setRenderHint(QPainter.Antialiasing)
+            qp.begin(self)
+            qp.drawPixmap(0, 0, self.pixmap)
+            qp.end()
+
+
+class DataWidget(QWidget):
+    point_1 = None
+    point_2 = None
+    frame_idx = None
+    repeat_idx = None
+    position_idx = None
+    total_frames = None
+    movie = None
+    norm_mat = None
+
+    scale = None
+    mm_per_pixel = None
+
+    file_dir = None
+
+    positions = None
+
+    position_prefix = None
+
+    draw_binary = False
+    show_debug = False
+    raw = False
+
+    def __init__(self, text_area, position_status, file_dir, aux_box: ImageDisplayWidget, main_window: QMainWindow,
+                 scale=1, parent=None, frame_idx=0, max_frames=100):
+        if parent:
+            super().__init__(parent)
+        else:
+            super().__init__()
+        self.text_area = text_area
+        self.position_status = position_status
+        self.aux_box = aux_box
+        self.main_window = main_window
+
+        self.frame_idx = frame_idx
+        self.max_frames = max_frames
+
+        self.scale = scale
+
+        self.change_dir(file_dir)
+
+        self.width = self.scale * 384
+        self.height = self.scale * 264
+        self.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding))
+
+        # self.setAutoFillBackground(True)
+        # p = self.palette()
+        # p.setColor(self.backgroundRole(), Qt.black)
+        # self.setPalette(p)
+
+        self.update_text()
+
+    def sizeHint(self):
+        return QSize(384, 264)
+
+    def change_dir(self, file_dir):
+        # Reset to zero to avoid jumping into a position that doesn't exist
+        self.frame_idx = 0
+        self.repeat_idx = 0
+
+        self.file_dir = file_dir
+        self.set_positions(file_dir)
+
+        self.norm_mat = load_norm_mat(file_dir)
+        if np.std(self.norm_mat) > 0.1:  # Something has probably gone wrong
+            print("Warning: Pixel correction matrix (norm_mat) appears to have malfunctioned and so will be ignored.")
+            self.norm_mat = None
+
+        self.position_prefix = file.get_prefix_from_idxs(file_dir, np.array(self.positions)[:, 2][0:5])
+
+        self.set_position(0)
+        if hasattr(self.main_window, "calibration"):
+            self.main_window.calibration.load_calibration()
+
+    def set_positions(self, file_dir):
+        index_file = open(file_dir + "index.csv")
+        index_lines = index_file.readlines()
+
+        positions = []  # x, y, index
+
+        for i in range(1, len(index_lines)):  # Start at 1 to skip header.
+            split = index_lines[i].strip().split(",")
+            positions.append([float(split[0]), float(split[1]), split[2]])  # x, y, index number
+
+        # Sort by x
+        self.positions = sorted(positions, key=lambda r: float(r[2]))
+
+    def update(self):
+        super().update()
+        self.update_text()
+        self.aux_box.update()
+        self.main_window.update()
+
+    def resizeEvent(self, a0: QResizeEvent) -> None:
+        last_scale = self.scale
+        width_ratio = self.frameGeometry().width() / 384
+        height_ratio = self.frameGeometry().height() / 264
+        self.scale = min(width_ratio, height_ratio)
+
+        if self.point_1 is not None:
+            self.point_1[0] *= self.scale / last_scale
+            self.point_1[1] *= self.scale / last_scale
+
+        if self.point_2 is not None:
+            self.point_2[0] *= self.scale / last_scale
+            self.point_2[1] *= self.scale / last_scale
+
+        # TODO: Fix this so that the dimension with extra space doesn't expand forever
+        # self.frameGeometry().setWidth(round(self.scale * 384))
+        # self.frameGeometry().setHeight(round(self.scale * 264))
+
+    def set_position(self, position_idx):
+        last_position_idx = self.position_idx
+        self.position_idx = position_idx
+        r_dir_path = self.file_dir + self.position_prefix + str(self.positions[self.position_idx][2]).rjust(4,
+                                                                                                            '0') + "/"
+        if self.movie is not None:
+            self.movie.close()
+
+        self.movie = file.get_mraw_from_dir(r_dir_path)
+        self.move_points(last_position_idx)
+
+    def paintEvent(self, e):
+        r_dir_path = self.file_dir + self.position_prefix + str(self.positions[self.position_idx][2]).rjust(4,
+                                                                                                            '0') + "/"
+        image = self.movie[self.frame_idx + self.max_frames * self.repeat_idx]
+        bg_img = self.movie[0]
+        binary = dd.makeBinary(np.int32(bg_img) - np.int32(image))
+        self.total_frames = self.movie.image_count
+
+        movie_min, movie_max = np.min(image), np.max(image)
+
+        png_path = r_dir_path + "analysis_plot_r{0}.png".format(self.repeat_idx)
+        if os.path.exists(png_path):
+            self.aux_box.set_image_from_png(png_path)
+        else:
+            self.aux_box.clear_image()
+            self.main_window.update()
+
+        # Convert to pixel map.
+        if self.draw_binary:
+            pixmap = qtu.frame_to_pixmap(np.int32(binary), autoscale=True)
+        else:
+            pixmap = qtu.frame_to_pixmap(image, autoscale=not self.raw, min=movie_min, max=movie_max,
+                                         norm_mat=None if self.raw else self.norm_mat)
+        pixmap = pixmap.scaledToHeight(pixmap.height() * self.scale)
+
+        # Draw frame.
+        qp = QPainter()
+        if qp.isActive():
+            qp.setRenderHint(QPainter.Antialiasing)
+        qp.begin(self)
+        qp.drawPixmap(0, 0, pixmap)
+
+        # Draw bubble position
+        if self.show_debug:
+            b_pos_x, b_pos_y, area, ecc, sol, jet_tip = au.analyse_frame(image, bg_img, debug=True)
+
+            if b_pos_x is not None and b_pos_y is not None and jet_tip is not None:
+                self.draw_line(qp, [(b_pos_x + 1) * self.scale, (b_pos_y + 1) * self.scale],
+                               [(jet_tip[0] + 1) * self.scale, (jet_tip[1] + 1) * self.scale], colour=Qt.green)
+
+            if b_pos_x is not None and b_pos_y is not None:
+                self.draw_point(qp, [(b_pos_x + 1) * self.scale, (b_pos_y + 1) * self.scale],
+                                Qt.magenta)
+
+            if area is not None:
+                self.draw_circle(qp, [(b_pos_x + 1) * self.scale, (b_pos_y + 1) * self.scale],
+                                 self.scale * np.sqrt(area / np.pi), Qt.magenta)
+
+            if b_pos_x is not None and b_pos_y is not None \
+                    and ecc is not None and sol is not None and jet_tip is not None:
+                if area is None:
+                    qp.drawText(b_pos_x * self.scale + 5,
+                                b_pos_y * self.scale + 5, f"ecc = {ecc:.2f}, sol = {sol:.2f}")
+                else:
+                    tip_ratio = np.linalg.norm(np.subtract(jet_tip, [b_pos_x, b_pos_y])) / np.sqrt(area / np.pi)
+                    qp.drawText((b_pos_x + np.sqrt(area / np.pi)) * self.scale,
+                                (b_pos_y + np.sqrt(area / np.pi)) * self.scale,
+                                f"ecc = {ecc:.2f}, sol = {sol:.2f}, R = {np.sqrt(area / np.pi):.2f}, tr = {tip_ratio:.2f}")
+
+        # Draw ruler.
+        if self.point_1 is not None and self.point_2 is None:
+            self.draw_point(qp, self.point_1)
+        if self.point_1 is not None and self.point_2 is not None:
+            self.draw_line(qp)
+
+        qp.end()
+
+    def save_reading_movie(self):
+        r_dir_path = self.file_dir + self.position_prefix + str(self.positions[self.position_idx][2]).rjust(4,
+                                                                                                            '0') + "/"
+        mov = file.get_mraw_from_dir(r_dir_path)
+
+        filename = str(QFileDialog.getSaveFileName(self, "Select Save Directory",
+                                                   r_dir_path + "video" + "_" + str(self.repeat_idx) + ".mp4")[0])
+        if filename == "":
+            return
+        if filename[-4:] != ".mp4":
+            filename += ".mp4"
+
+        # These settings make OpenCV compain about stuff, but they still give much nicer quality.
+        if self.raw:
+            mraw_converter.convert(mov, filename, codec='avc1', fps=24,
+                                   frame_range=(100 * self.repeat_idx, 100 * (self.repeat_idx + 1) - 1),
+                                   autoscale_brightness=False, norm_mat=None, writer='cv2')
+        else:
+            mraw_converter.convert(mov, filename, codec='avc1', fps=24,
+                                   frame_range=(100 * self.repeat_idx, 100 * (self.repeat_idx + 1) - 1),
+                                   autoscale_brightness=True, norm_mat=self.norm_mat, writer='cv2')
+
+    def draw_point(self, qp, point, colour=Qt.red):
+        pen = QPen(colour, 4, Qt.SolidLine)
+        qp.setRenderHint(QPainter.Antialiasing)
+        qp.setPen(pen)
+        qp.drawPoint(point[0], point[1])
+
+    def draw_line(self, qp, p1=None, p2=None, colour=Qt.red):
+        pen = QPen(colour, 2, Qt.SolidLine)
+        qp.setRenderHint(QPainter.Antialiasing)
+        qp.setPen(pen)
+        if p1 is None or p2 is None:
+            qp.drawLine(self.point_1[0], self.point_1[1], self.point_2[0], self.point_2[1])
+        else:
+            qp.drawLine(p1[0], p1[1], p2[0], p2[1])
+
+    def draw_circle(self, qp, center, radius, colour=Qt.red):
+        pen = QPen(colour, 2, Qt.SolidLine)
+        qp.setRenderHint(QPainter.Antialiasing)
+        qp.setPen(pen)
+        qp.drawEllipse(center[0] - radius, center[1] - radius, 2 * radius, 2 * radius)
+
+    def next_frame(self):
+        self.frame_idx += 1
+        if self.frame_idx >= self.max_frames:
+            self.frame_idx = 0
+        self.update()
+
+    def previous_frame(self):
+        self.frame_idx -= 1
+        if self.frame_idx < 0:
+            self.frame_idx = self.max_frames - 1
+        self.update()
+
+    def move_points(self, last_position_idx):
+        if self.mm_per_pixel is not None:
+            px_per_mm = 1 / self.mm_per_pixel
+            last_position = self.positions[last_position_idx]
+            this_position = self.positions[self.position_idx]
+            if last_position[0] != this_position[0]:
+                dx_mm = last_position[0] - this_position[0]
+                if self.point_1 is not None:
+                    self.point_1[0] += self.scale * dx_mm * px_per_mm
+                if self.point_2 is not None:
+                    self.point_2[0] += self.scale * dx_mm * px_per_mm
+            if last_position[1] != this_position[1]:
+                dy_mm = last_position[1] - this_position[1]
+                if self.point_1 is not None:
+                    self.point_1[1] -= self.scale * dy_mm * px_per_mm
+                if self.point_2 is not None:
+                    self.point_2[1] -= self.scale * dy_mm * px_per_mm
+
+    def next_position(self):
+        self.repeat_idx = 0
+        if self.position_idx + 1 >= len(self.positions):
+            self.set_position(0)
+        else:
+            self.set_position(self.position_idx + 1)
+        self.update()
+
+    def previous_position(self):
+        self.repeat_idx = 0
+        if self.position_idx - 1 < 0:
+            self.set_position(len(self.positions) - 1)
+        else:
+            self.set_position(self.position_idx - 1)
+        self.update()
+
+    def next_repeat(self):
+        self.repeat_idx += 1
+        if self.frame_idx + self.repeat_idx * self.max_frames >= self.total_frames:
+            self.repeat_idx = int(self.total_frames / self.max_frames) - 1
+        self.update()
+
+    def previous_repeat(self):
+        self.repeat_idx -= 1
+        if self.repeat_idx < 0:
+            self.repeat_idx = 0
+        self.update()
+
+    def set_frame(self, frame_idx):
+        self.frame_idx = frame_idx
+        self.update()
+
+    def set_draw_binary(self, draw_binary):
+        self.draw_binary = draw_binary
+        self.update()
+
+    def set_show_debug(self, show_debug):
+        self.show_debug = show_debug
+        self.update()
+
+    def set_raw(self, raw):
+        self.raw = raw
+        self.update()
+
+    def update_text(self):
+        # Line 1
+        text = "Frame: {0}".format(self.frame_idx)
+        text += "    Repeat: {0}".format(self.repeat_idx)
+        if self.point_1 is not None:
+            text += "    Point 1: {0:.1f}, {1:.1f} (px)".format(self.point_1[0] / self.scale,
+                                                                self.point_1[1] / self.scale)
+            if self.mm_per_pixel is not None:
+                text += "  {0:.2f}, {1:.2f} (mm)".format(
+                    self.positions[self.position_idx][0] + self.mm_per_pixel * self.point_1[0] / self.scale,
+                    self.positions[self.position_idx][1] + self.mm_per_pixel * (264 - self.point_1[1] / self.scale))
+        if self.point_2 is not None:
+            text += "    Point 2: {0:.1f}, {1:.1f} (px)".format(self.point_2[0] / self.scale,
+                                                                self.point_2[1] / self.scale)
+            if self.mm_per_pixel is not None:
+                text += "  {0:.2f}, {1:.2f} (mm)".format(
+                    self.positions[self.position_idx][0] + self.mm_per_pixel * self.point_2[0] / self.scale,
+                    self.positions[self.position_idx][1] + self.mm_per_pixel * (264 - self.point_2[1] / self.scale))
+        # Line 2
+        if self.point_1 is not None and self.point_2 is not None:
+            dx = (self.point_2[0] - self.point_1[0]) / self.scale
+            dy = (self.point_2[1] - self.point_1[1]) / self.scale
+            length = math.sqrt(dx ** 2 + dy ** 2)
+            text += "\nLength (px): {0:.2f}".format(length)
+            text += "    dx (px) = {0:.2f}    dy (px) = {1:.2f}".format(dx, dy)
+
+            # y measured backwards (point_2 to point_1) to correct for inverted axis.
+            text += "    Angle (rad): {0:.4f}".format(math.atan2(-dy, dx))
+
+            # Line 3
+            if self.mm_per_pixel is not None:
+                text += "\nLength (mm): {0:.2f}".format(length * self.mm_per_pixel)
+                text += "    dx (mm) = {0:.2f}    dy (mm) = {1:.2f}".format(dx * self.mm_per_pixel,
+                                                                            -dy * self.mm_per_pixel)
+
+        self.text_area.setText(text)
+
+        # Position status
+        position_status_text = "x = {0:.2f}" \
+                               "\ny = {1:.2f}" \
+                               "\nidx = {2}" \
+            .format(self.positions[self.position_idx][0], self.positions[self.position_idx][1],
+                    self.positions[self.position_idx][2])
+        self.position_status.setText(position_status_text)
+
+    def mousePressEvent(self, event):
+        if event.buttons() & Qt.LeftButton:
+            if self.point_1 is None and self.point_2 is None:
+                self.point_1 = [event.x(), event.y()]
+            elif self.point_1 is not None and self.point_2 is None:
+                self.point_2 = [event.x(), event.y()]
+            else:
+                self.point_1 = [event.x(), event.y()]
+                self.point_2 = None
+            self.update()
+        if event.buttons() & Qt.RightButton:
+            self.point_1 = None
+            self.point_2 = None
+            self.update()
+        self.update_text()
+
+    def mouseMoveEvent(self, event):
+        if event.buttons() & Qt.LeftButton:
+            if self.point_1 is not None:
+                self.point_2 = [event.x(), event.y()]
+                self.update()
+
+    def get_current_frame_data(self):
+        x = self.positions[self.position_idx][0]
+        y = self.positions[self.position_idx][1]
+        mov = file.get_mraw_from_dir(
+            self.file_dir + self.position_prefix + str(self.positions[self.position_idx][2]).rjust(4, '0') + "/")
+        image = mov[self.frame_idx + self.max_frames * self.repeat_idx]
+        self.total_frames = mov.image_count
+        mov.close()
+        return x, y, image
+
+    def incr_y(self):
+        cur_x = self.positions[self.position_idx][0]
+        cur_y = self.positions[self.position_idx][1]
+
+        min_y_dif = None  # type: float
+        min_x_dif = None  # type: float
+        min_r = None
+        for r in range(len(self.positions)):
+            position_y = self.positions[r][1]
+            position_x = self.positions[r][0]
+            if position_y > cur_y:
+                y_dif = abs(position_y - cur_y)
+                x_dif = abs(position_x - cur_x)
+                if min_y_dif is None or y_dif < min_y_dif:
+                    min_x_dif = x_dif
+                    min_y_dif = y_dif
+                    min_r = r
+                elif y_dif == min_y_dif and x_dif < min_x_dif:
+                    min_x_dif = x_dif
+                    min_r = r
+        if min_r is not None:
+            last_position_idx = self.position_idx
+            self.set_position(min_r)
+            self.repeat_idx = 0
+            self.update()
+
+    def decr_y(self):
+        cur_x = self.positions[self.position_idx][0]
+        cur_y = self.positions[self.position_idx][1]
+
+        min_y_dif = None  # type: float
+        min_x_dif = None  # type: float
+        min_r = None
+        for r in range(len(self.positions)):
+            position_y = self.positions[r][1]
+            position_x = self.positions[r][0]
+            if position_y < cur_y:
+                y_dif = abs(position_y - cur_y)
+                x_dif = abs(position_x - cur_x)
+                if min_y_dif is None or y_dif < min_y_dif:
+                    min_x_dif = x_dif
+                    min_y_dif = y_dif
+                    min_r = r
+                elif y_dif == min_y_dif and x_dif < min_x_dif:
+                    min_x_dif = x_dif
+                    min_r = r
+        if min_r is not None:
+            last_position_idx = self.position_idx
+            self.set_position(min_r)
+            self.repeat_idx = 0
+            self.update()
+
+    def incr_x(self):
+        cur_x = self.positions[self.position_idx][0]
+        cur_y = self.positions[self.position_idx][1]
+
+        min_y_dif = None  # type: float
+        min_x_dif = None  # type: float
+        min_r = None
+        for r in range(len(self.positions)):
+            position_y = self.positions[r][1]
+            position_x = self.positions[r][0]
+            if position_x > cur_x:
+                y_dif = abs(position_y - cur_y)
+                x_dif = abs(position_x - cur_x)
+                if min_x_dif is None or x_dif < min_x_dif:
+                    min_x_dif = x_dif
+                    min_y_dif = y_dif
+                    min_r = r
+                elif x_dif == min_x_dif and y_dif < min_y_dif:
+                    min_y_dif = y_dif
+                    min_r = r
+        if min_r is not None:
+            last_position_idx = self.position_idx
+            self.set_position(min_r)
+            self.repeat_idx = 0
+            self.update()
+
+    def decr_x(self):
+        cur_x = self.positions[self.position_idx][0]
+        cur_y = self.positions[self.position_idx][1]
+
+        min_y_dif = None  # type: float
+        min_x_dif = None  # type: float
+        min_r = None
+        for r in range(len(self.positions)):
+            position_y = self.positions[r][1]
+            position_x = self.positions[r][0]
+            if position_x < cur_x:
+                y_dif = abs(position_y - cur_y)
+                x_dif = abs(position_x - cur_x)
+                if min_x_dif is None or x_dif < min_x_dif:
+                    min_x_dif = x_dif
+                    min_y_dif = y_dif
+                    min_r = r
+                elif x_dif == min_x_dif and y_dif < min_y_dif:
+                    min_y_dif = y_dif
+                    min_r = r
+        if min_r is not None:
+            last_position_idx = self.position_idx
+            self.set_position(min_r)
+            self.repeat_idx = 0
+            self.update()
+
+
+class CalibrationWidget(QWidget):
+    calibration_frames = None  # x, y, frame
+    text_area = None
+    mm_per_pixel = None
+
+    def __init__(self, data_widget: DataWidget, parent=None):
+        if parent:
+            super().__init__(parent)
+        else:
+            super().__init__()
+
+        self.data_widget = data_widget
+        self.calibration_frames = []
+
+        vbox = QVBoxLayout()
+        vbox.setAlignment(Qt.AlignTop)
+        vbox.setSizeConstraint(QLayout.SetFixedSize)
+
+        label = QLabel("Calibration")
+        label.setStyleSheet("QLabel { font-weight: bold; }")
+        label.setAlignment(Qt.AlignHCenter)
+        label.setMaximumHeight(16)
+
+        text_area = QTextBrowser()
+        text_area.setMaximumHeight(36)
+        text_area.setMaximumWidth(100)
+        self.text_area = text_area
+
+        add_frame_button = QPushButton("Add Frame")
+        add_frame_button.clicked.connect(self.take_frame)
+        clear_frames_button = QPushButton("Clear Frames")
+        clear_frames_button.clicked.connect(self.clear_frames)
+        calibrate_button = QPushButton("Calibrate")
+        calibrate_button.clicked.connect(self.calibrate)
+
+        vbox.addWidget(label)
+        vbox.addWidget(add_frame_button)
+        vbox.addWidget(clear_frames_button)
+        vbox.addWidget(calibrate_button)
+        vbox.addWidget(text_area)
+        self.setLayout(vbox)
+
+        self.load_calibration()
+        self.update_text()
+
+    def take_frame(self):
+        self.calibration_frames.append(self.data_widget.get_current_frame_data())
+        self.update_text()
+
+    def clear_frames(self):
+        self.calibration_frames.clear()
+        self.update_text()
+
+    def load_calibration(self):
+        file_dir = self.data_widget.file_dir
+        if os.path.exists(file_dir + "params.py"):
+            sys.path.append(file_dir)
+            import params
+            importlib.reload(params)
+            sys.path.remove(file_dir)
+
+            if params.mm_per_px:
+                self.mm_per_pixel = params.mm_per_px
+                self.data_widget.mm_per_pixel = params.mm_per_px
+                self.update_text()
+
+    def calibrate(self):
+        mm_per_pixels = []
+        for i in range(1, len(self.calibration_frames)):
+            x_1 = self.calibration_frames[i - 1][0]
+            y_1 = self.calibration_frames[i - 1][1]
+
+            x_2 = self.calibration_frames[i][0]
+            y_2 = self.calibration_frames[i][1]
+
+            if x_2 == x_1 and y_2 == y_1:
+                self.text_area.setText("Warning!\nDuplicate frame.")
+                continue
+
+            mm = math.sqrt((x_2 - x_1) ** 2 + (y_2 - y_1) ** 2)
+
+            px_offset = cu.calculate_offset(self.calibration_frames[i - 1][2], self.calibration_frames[i][2])
+            print(px_offset)
+            px = vect.mag(px_offset)
+            if px == 0:
+                self.text_area.setText("Error!\nNo offset found.")
+                continue
+            mm_per_pixels.append(mm / px)
+
+        if len(mm_per_pixels) == 0:
+            return
+        self.mm_per_pixel = np.mean(mm_per_pixels)
+        self.data_widget.mm_per_pixel = self.mm_per_pixel
+        self.update_text()
+
+    def update_text(self):
+        text = "Frames: {0}".format(len(self.calibration_frames))
+        if self.mm_per_pixel is not None:
+            text += "\nmm/px = {0:.4f}".format(self.mm_per_pixel)
+        self.text_area.setText(text)
+
+
+class BubbleAnalyser(QMainWindow, QObject):
+    player_play_signal = pyqtSignal(int)
+
+    def __init__(self, file_dir=None):
+        QMainWindow.__init__(self)
+        QObject.__init__(self)
+        while file_dir is None or not os.path.exists(file_dir + "index.csv"):
+            file_dir = str(QFileDialog.getExistingDirectory(self, "Select Directory", "../"))
+            if file_dir == "":
+                QTimer.singleShot(0, self.close)
+                return
+            else:
+                file_dir += "/"
+
+        self.title = 'Bubble Analysis - ' + file_dir
+
+        self.setWindowTitle(self.title)
+        self.setWindowIcon(QIcon('icon.png'))
+
+        # Reset the App ID to interact more nicely with Windows (separate icon from generic Python etc.).
+        myappid = u'bubble_analysis.py'  # arbitrary string
+        ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
+
+        # Build text area
+        text_area = QTextBrowser()
+        text_area.setMaximumHeight(52)
+
+        # Build side bar area.
+        side_bar = QVBoxLayout()
+        side_bar.setAlignment(Qt.AlignTop)
+
+        # Build position box
+        position_box = QVBoxLayout()
+        position_box.setContentsMargins(8, 0, 8, 0)
+        position_box.setSizeConstraint(QLayout.SetFixedSize)
+        position_label = QLabel("Position")
+        position_label.setStyleSheet("QLabel { font-weight: bold; }")
+        position_label.setAlignment(Qt.AlignHCenter)
+        position_label.setMaximumHeight(16)
+        position_box.setAlignment(Qt.AlignTop)
+
+        position_back = QPushButton("Previous")
+        position_back.setAutoRepeat(True)
+        position_forward = QPushButton("Next")
+        position_forward.setAutoRepeat(True)
+
+        incr_x = QPushButton("x +")
+        incr_x.setAutoRepeat(True)
+        incr_x.setMaximumWidth(40)
+        decr_x = QPushButton("x -")
+        decr_x.setAutoRepeat(True)
+        decr_x.setMaximumWidth(40)
+        incr_y = QPushButton("y +")
+        incr_y.setAutoRepeat(True)
+        incr_y.setMaximumWidth(40)
+        decr_y = QPushButton("y -")
+        decr_y.setAutoRepeat(True)
+        decr_y.setMaximumWidth(40)
+        position_buttons = QVBoxLayout()
+        position_buttons.setAlignment(Qt.AlignHCenter)
+        x_buttons = QHBoxLayout()
+        x_buttons.addWidget(decr_x)
+        x_buttons.addWidget(incr_x)
+        incr_y_wrapper = QHBoxLayout()
+        incr_y_wrapper.addWidget(incr_y)
+        decr_y_wrapper = QHBoxLayout()
+        decr_y_wrapper.addWidget(decr_y)
+        position_buttons.addLayout(incr_y_wrapper)
+        position_buttons.addLayout(x_buttons)
+        position_buttons.addLayout(decr_y_wrapper)
+
+        flag_repeat = QPushButton("Flag Invalid Repeat")
+        flag_repeat.clicked.connect(self.flag_invalid_repeat)
+
+        position_status = QTextBrowser()
+        position_status.setMaximumHeight(52)
+        position_status.setMaximumWidth(100)
+        position_box.addWidget(position_label)
+        position_box.addWidget(position_forward)
+        position_box.addWidget(position_back)
+        position_box.addWidget(position_status)
+        position_box.addLayout(position_buttons)
+        position_box.addWidget(flag_repeat)
+
+        # Build auxiliary box
+        aux_box = ImageDisplayWidget()
+
+        # Build image area
+        self.data_widget = DataWidget(text_area, position_status, file_dir, aux_box, self)
+
+        position_forward.clicked.connect(self.data_widget.next_position)
+        position_back.clicked.connect(self.data_widget.previous_position)
+        incr_x.clicked.connect(self.data_widget.incr_x)
+        decr_x.clicked.connect(self.data_widget.decr_x)
+        incr_y.clicked.connect(self.data_widget.incr_y)
+        decr_y.clicked.connect(self.data_widget.decr_y)
+
+        save_repeat = QPushButton("Save Repeat Movie")
+        save_repeat.clicked.connect(self.data_widget.save_reading_movie)
+        position_box.addWidget(save_repeat)
+
+        dir_change = QPushButton("Change Directory")
+        dir_change.clicked.connect(self.select_dir)
+        position_box.addWidget(dir_change)
+
+        # Build calibration widget
+        self.calibration = CalibrationWidget(self.data_widget)
+        side_bar.addWidget(self.calibration)
+        side_bar.addLayout(position_box)
+
+        # Build upper area (image and side buttons)
+        upper_box = QHBoxLayout()
+        # upper_box.addSpacerItem(QSpacerItem(20, 40, QSizePolicy.Preferred, QSizePolicy.Minimum))
+        upper_box.addWidget(self.data_widget)
+        # upper_box.addSpacerItem(QSpacerItem(20, 40, QSizePolicy.Preferred, QSizePolicy.Minimum))
+        upper_box.addLayout(side_bar)
+
+        # Build button area
+        slider = JumpSlider(Qt.Horizontal)
+        slider.setFocusPolicy(Qt.StrongFocus)
+        slider.setTickPosition(QSlider.TicksBothSides)
+        slider.setTickInterval(10)
+        slider.setSingleStep(1)
+        slider.setValue(0)
+        slider.setMinimum(0)
+        slider.setMaximum(99)
+        slider.valueChanged.connect(self.set_frame_from_slider)
+        self.slider = slider
+
+        self.player_thread = QThread()
+        self.player = Player()
+        self.player.moveToThread(self.player_thread)
+        self.player.frame_update.connect(self.set_frame_from_player)
+        self.player.finished.connect(self.on_player_finished)
+        self.player_play_signal.connect(self.player.play)
+
+        spacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Minimum)
+
+        button_box = QHBoxLayout()
+        frame_back = QPushButton("Previous Frame")
+        frame_back.setAutoRepeat(True)
+        frame_back.clicked.connect(self.previous_frame)
+        button_box.addWidget(frame_back)
+        frame_forward = QPushButton("Next Frame")
+        frame_forward.setAutoRepeat(True)
+        frame_forward.clicked.connect(self.next_frame)
+        button_box.addWidget(frame_forward)
+
+        button_box.addItem(spacer)
+
+        rep_back = QPushButton("Previous Repeat")
+        rep_back.setAutoRepeat(True)
+        rep_back.clicked.connect(self.data_widget.previous_repeat)
+        button_box.addWidget(rep_back)
+        rep_forward = QPushButton("Next Repeat")
+        rep_forward.setAutoRepeat(True)
+        rep_forward.clicked.connect(self.data_widget.next_repeat)
+        button_box.addWidget(rep_forward)
+
+        button_box.addItem(spacer)
+
+        self.loop_toggle = QCheckBox("Loop")
+        self.loop_toggle.stateChanged.connect(lambda _: self.toggle_loop(self.loop_toggle.isChecked()))
+        button_box.addWidget(self.loop_toggle)
+
+        binary_toggle = QCheckBox("Binary")
+        binary_toggle.stateChanged.connect(lambda _: self.data_widget.set_draw_binary(binary_toggle.isChecked()))
+        button_box.addWidget(binary_toggle)
+
+        debug_toggle = QCheckBox("Debug")
+        debug_toggle.stateChanged.connect(lambda _: self.data_widget.set_show_debug(debug_toggle.isChecked()))
+        button_box.addWidget(debug_toggle)
+
+        auto_bright_toggle = QCheckBox("Raw Output")
+        auto_bright_toggle.setChecked(False)
+        auto_bright_toggle.stateChanged.connect(
+            lambda _: self.data_widget.set_raw(auto_bright_toggle.isChecked()))
+        button_box.addWidget(auto_bright_toggle)
+
+        self.rand_toggle = QCheckBox("Randomise")
+        button_box.addWidget(self.rand_toggle)
+
+        # Build window contents
+        vbox = QVBoxLayout()  # Main box.
+        hbox = QHBoxLayout()  # Box containing the main box and auxiliary box.
+        central_widget = QWidget()
+        central_widget.setLayout(hbox)
+
+        # Put together the main box
+        vbox.addLayout(upper_box)
+        vbox.addWidget(slider)
+        vbox.addLayout(button_box)
+        vbox.addWidget(text_area)
+
+        # Add the auxiliary box
+        hbox.addLayout(vbox)
+        hbox.addWidget(aux_box)
+
+        self.setCentralWidget(central_widget)
+        self.show()
+        self.update()
+        self.player_thread.start()
+
+    def set_frame_from_slider(self):
+        self.data_widget.set_frame(self.slider.value())
+
+    def set_frame_from_player(self, i):
+        self.data_widget.set_frame(i)
+        self.slider.setValue(i)
+
+    def toggle_loop(self, loop):
+        if loop:
+            self.slider.setEnabled(False)
+            self.player_play_signal.emit(self.slider.value())
+        else:
+            self.player.skip = True  # This is probably pretty unhealthy but it'll do
+
+    def on_player_finished(self):
+        if self.loop_toggle.isChecked():
+            if self.rand_toggle.isChecked():
+                rand_pos = np.random.randint(len(self.data_widget.positions))
+                self.data_widget.set_position(rand_pos)
+                rand_rep = np.random.randint(int(self.data_widget.total_frames / self.data_widget.max_frames))
+                self.data_widget.repeat_idx = rand_rep
+                self.data_widget.update()
+
+            self.player_play_signal.emit(0)
+        else:
+            self.slider.setEnabled(True)
+
+    def next_frame(self):
+        self.data_widget.next_frame()
+        self.slider.setValue(self.data_widget.frame_idx)
+
+    def previous_frame(self):
+        self.data_widget.previous_frame()
+        self.slider.setValue(self.data_widget.frame_idx)
+
+    def update(self):
+        # self.resize(self.minimumSizeHint())
+        super().update()
+
+    def flag_invalid_repeat(self):
+        f = open(self.data_widget.file_dir + "invalid_readings.txt", "a")
+        f.write("{0}:{1}\n".format(self.data_widget.positions[self.data_widget.position_idx][2],
+                                   self.data_widget.repeat_idx))
+        f.close()
+
+    def select_dir(self):
+        file_dir = None
+        while file_dir is None or not os.path.exists(file_dir + "index.csv"):
+            file_dir = str(
+                QFileDialog.getExistingDirectory(self, "Select Directory", self.data_widget.file_dir + "../"))
+            if file_dir == "":
+                return
+            else:
+                file_dir += "/"
+
+        self.calibration.clear_frames()
+        self.calibration.load_calibration()
+        self.data_widget.change_dir(file_dir)
+        self.slider.setSliderPosition(0)
+        self.title = 'Bubble Analysis - ' + file_dir
+        self.setWindowTitle(self.title)
+
+    def keyPressEvent(self, e: QtGui.QKeyEvent):
+        if e.key() == Qt.Key_Slash:
+            self.loop_toggle.setChecked(not self.loop_toggle.isChecked())
+        if e.key() == Qt.Key_Comma:
+            self.data_widget.previous_frame()
+            self.slider.setValue(self.data_widget.frame_idx)
+        if e.key() == Qt.Key_Period:
+            self.data_widget.next_frame()
+            self.slider.setValue(self.data_widget.frame_idx)
+
+
+if __name__ == '__main__':
+    app = QApplication(sys.argv)
+    ex = BubbleAnalyser()
+    # ex.show()
+    # ex = BubbleAnalyser("../../Data/Test1/HSweep4/")
+    sys.exit(app.exec_())
diff --git a/packaged-code/pacakged-gui/icon.png b/packaged-code/pacakged-gui/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..80ed0787decb4706102ca384107b3d9288fc3e86
GIT binary patch
literal 197082
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
K&t;ucLK6T!Ptq~~

literal 0
HcmV?d00001

diff --git a/packaged-code/pacakged-gui/run_bubble_analysis.bat b/packaged-code/pacakged-gui/run_bubble_analysis.bat
new file mode 100644
index 0000000..2013560
--- /dev/null
+++ b/packaged-code/pacakged-gui/run_bubble_analysis.bat
@@ -0,0 +1,2 @@
+python ./bubble_analysis_gui.py
+PAUSE
\ No newline at end of file
diff --git a/paper_code/porous/util/analysis_utils.py b/packaged-code/pacakged-gui/util/analysis_utils.py
similarity index 100%
rename from paper_code/porous/util/analysis_utils.py
rename to packaged-code/pacakged-gui/util/analysis_utils.py
diff --git a/packaged-code/pacakged-gui/util/calibration_utils.py b/packaged-code/pacakged-gui/util/calibration_utils.py
new file mode 100644
index 0000000..47fbac5
--- /dev/null
+++ b/packaged-code/pacakged-gui/util/calibration_utils.py
@@ -0,0 +1,51 @@
+import math
+
+import matplotlib.pyplot as plt
+import numpy as np
+import skimage.transform as tf
+from skimage.registration import phase_cross_correlation
+from skimage.filters import sobel, threshold_triangle
+from skimage.restoration import denoise_bilateral
+
+import util.plotting_utils as pu
+import util.file_utils as fu
+
+
+def calculate_offset(frame_1, frame_2, plot_compared_frames=False):
+    """
+    Calculates a required offset of frame_1 in direction dir such that it maps onto frame_2 as closely as possible.
+
+    :param frame_1: Frame to be moved.
+    :param frame_2: Frame to be mapped onto.
+    :param plot_compared_frames: Whether to plot the final frame comparison.
+    :return: Offset required in direction.
+    """
+    frame_1 = denoise_bilateral(frame_1, channel_axis=None, bins=2, mode='reflect', sigma_spatial=2.5)
+    frame_2 = denoise_bilateral(frame_2, channel_axis=None, bins=2, mode='reflect', sigma_spatial=2.5)
+    frame_1 = sobel(frame_1, mask=np.ones(frame_1.shape, dtype=bool))
+    frame_2 = sobel(frame_2, mask=np.ones(frame_1.shape, dtype=bool))
+
+    # thresh_1 = threshold_triangle(frame_1)
+    # thresh_2 = threshold_triangle(frame_2)
+    # thresh = (thresh_1 + thresh_2) / 2
+    # frame_1 = frame_1 > thresh
+    # frame_2 = frame_2 > thresh
+
+    offset, error, _ = phase_cross_correlation(frame_1, frame_2, normalization=None)
+    if plot_compared_frames:
+        tform = tf.SimilarityTransform(translation=[offset[1], offset[0]])
+        pu.plot_frame(tf.warp(frame_1, tform), show_immediately=False)
+        pu.plot_frame(frame_2, show_immediately=False)
+        plt.show()
+
+    return offset
+
+
+if __name__ == '__main__':
+    # cal_dir = "../../../Data/SidewaysSeries/w2.2h2.7/"
+    # print(calculate_mm_per_pixel(cal_dir, plot_compared_frames=True))
+    # mraw_1 = fu.get_mraw_from_dir("../../../../Data/SlotSweeps/w1h3/movie_S0013/")
+    # mraw_2 = fu.get_mraw_from_dir("../../../../Data/SlotSweeps/w1h3/movie_S0001/")
+    mraw_1 = fu.get_mraw_from_dir("C:/Users/eda1g15/OneDrive - University of Southampton/Research/Porous Materials/Data/~25VF/Purer water between 3 degassed again/movie_C001H001S0001/")
+    mraw_2 = fu.get_mraw_from_dir("C:/Users/eda1g15/OneDrive - University of Southampton/Research/Porous Materials/Data/~25VF/Purer water between 3 degassed again/movie_C001H001S0002/")
+    print(calculate_offset(mraw_1[0], mraw_2[0], True))
diff --git a/paper_code/porous/util/determineDisplacement.py b/packaged-code/pacakged-gui/util/determineDisplacement.py
similarity index 100%
rename from paper_code/porous/util/determineDisplacement.py
rename to packaged-code/pacakged-gui/util/determineDisplacement.py
diff --git a/paper_code/porous/util/file_utils.py b/packaged-code/pacakged-gui/util/file_utils.py
similarity index 100%
rename from paper_code/porous/util/file_utils.py
rename to packaged-code/pacakged-gui/util/file_utils.py
diff --git a/paper_code/porous/util/mp4.py b/packaged-code/pacakged-gui/util/mp4.py
similarity index 100%
rename from paper_code/porous/util/mp4.py
rename to packaged-code/pacakged-gui/util/mp4.py
diff --git a/paper_code/porous/util/mraw.py b/packaged-code/pacakged-gui/util/mraw.py
similarity index 100%
rename from paper_code/porous/util/mraw.py
rename to packaged-code/pacakged-gui/util/mraw.py
diff --git a/packaged-code/pacakged-gui/util/mraw_converter.py b/packaged-code/pacakged-gui/util/mraw_converter.py
new file mode 100644
index 0000000..9118de1
--- /dev/null
+++ b/packaged-code/pacakged-gui/util/mraw_converter.py
@@ -0,0 +1,170 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Thu Jul  6 14:36:00 2017
+
+@author: Ivo Peters
+ivo.r.peters@gmail.com
+
+Modified by Elijah Andrews
+"""
+
+import numpy as np
+# import matplotlib.pyplot as plt
+import cv2
+from PIL import Image
+from subprocess import Popen, PIPE
+import os
+import multiprocessing
+
+from util.mraw import mraw
+from util.pixel_correction import safe_correct, load_norm_mat
+import util.file_utils as file
+
+
+def convert(mraw_obj, outputFile, codec='XVID', fps=24, frame_range=None, scale=1, contrast=1, crf=18,
+            autoscale_brightness=False, norm_mat=None, writer='ffmpeg'):
+    """
+    Convert a given mraw object into a video file.
+    :param mraw_obj: mraw object
+    :param outputFile: output file path
+    :param codec: four letter codec name - ignored if using writer='ffmpeg'
+    :param fps: frames per second in the output file
+    :param frame_range: range of frames to include, [a, b] inclusive of both a and b
+    :param scale: image scale
+    :param contrast: contrast ratio
+    :param crf: Constant Rate Factor (quality), only used for writer='ffmpeg'
+    :param autoscale_brightness: whether to scale brightness based on maximum and minimum brightnesses in the image
+    :param writer: which video-writing method to use (cv2 or ffmpeg)
+    """
+    movie = mraw_obj
+    if frame_range is None:
+        frame_range = (0, len(movie))
+
+    if writer == "cv2":
+        if type(codec) is str and len(codec) == 4:
+            codec = cv2.VideoWriter_fourcc(codec[0], codec[1], codec[2], codec[3])
+        out = cv2.VideoWriter(outputFile, codec, fps,
+                              (movie.width * scale, movie.height * scale),
+                              0)
+    elif writer == "ffmpeg":
+        p = Popen(['ffmpeg',
+                   '-y',  # Overwrite files
+                   '-f', 'image2pipe',  # Input format
+                   '-r', '24',  # Framerate
+                   '-i', '-',  # stdin
+                   '-c:v', 'libx264',  # Codec
+                   '-preset', 'slow',
+                   '-crf', f'{crf}',  # H264 Constant Rate Factor (quality, lower is better)
+                   '-loglevel', 'quiet',  # Stop yelling at me
+                   '-flush_packets', '1',
+                   outputFile], stdin=PIPE)
+
+    movie_min = np.min([np.min(movie[i]) for i in range(frame_range[0], frame_range[1] + 1)])
+    movie_max = np.max([np.max(movie[i]) for i in range(frame_range[0], frame_range[1] + 1)])
+    movie_ptp = movie_max - movie_min
+    for i in range(frame_range[0], frame_range[1] + 1):
+        frame = movie[i]
+        if norm_mat is not None:
+            frame = safe_correct(frame, norm_mat)
+        if autoscale_brightness:
+            frame = ((frame - movie_min) / (movie_ptp / 255.0)).astype(np.uint8)
+        else:
+            frame = np.uint8(np.double(frame) / (2 ** 12) * 255)  # Convert to 8 bit colour.
+        if scale != 1:
+            frame = cv2.resize(frame, (movie.width * scale, movie.height * scale))
+        if contrast != 1:
+            frame = cv2.convertScaleAbs(frame, alpha=contrast)
+
+        if writer == "cv2":
+            out.write(frame)
+        elif writer == "ffmpeg":
+            im = Image.fromarray(frame)
+            im.save(p.stdin, 'PNG')
+
+    if writer == "cv2":
+        out.release()
+    elif writer == "ffmpeg":
+        p.stdin.close()
+        p.wait()
+
+
+def convert_mraw(mraw_obj, outputFile, codec='XVID', fps=24, separate_readings=True, writer="ffmpeg", norm_mat=None):
+    movie = mraw_obj
+    if separate_readings:
+        repeats = movie.image_count // 100
+        for i in range(repeats):
+            filename = outputFile[:-4] + "_" + str(i) + outputFile[-4:]
+            convert(movie, filename, frame_range=(i * 100, (i + 1) * 100 - 1),
+                    codec=codec, fps=fps, contrast=1, writer=writer, norm_mat=norm_mat)
+    else:
+        convert(mraw_obj, outputFile, codec=codec, fps=fps, contrast=1, writer=writer, norm_mat=norm_mat)
+
+
+def convert_series(dir_path, codec="mp4v", file_format="mp4", writer="ffmpeg", px_correct=True):
+    print(dir_path)
+    index_file = open(dir_path + "index.csv")
+    index_lines = index_file.readlines()
+    index_file.close()
+
+    input_data = []  # x, y, index
+
+    for i in range(1, len(index_lines)):  # Start at 1 to skip header.
+        split = index_lines[i].strip().split(",")
+        input_data.append([float(split[0]), float(split[1]), split[2]])  # x, y, index number
+
+    reading_prefix = file.get_prefix_from_idxs(dir_path, np.array(input_data)[:, 2])
+    for i in range(len(input_data)):
+        print("Converting reading {0}. - {1}".format(input_data[i][2], dir_path))
+        reading_path = dir_path + reading_prefix + str(input_data[i][2]).rjust(4, "0") + "/"
+        mraw_obj = file.get_mraw_from_dir(reading_path)
+        if px_correct:
+            norm_mat = load_norm_mat(dir_path)
+        else:
+            norm_mat = None
+        convert_mraw(mraw_obj, reading_path + "video." + file_format,
+                     codec=codec, separate_readings=True, writer=writer, norm_mat=norm_mat)
+
+
+if __name__ == "__main__":
+    # Anisotropy modelling paper
+    # to_convert = ["E:/Data/Lebo/Restructured Data/Equilateral triangle/",
+    #               "E:/Data/Lebo/Restructured Data/Equilateral triangle 2/",
+    #               "E:/Data/Lebo/Restructured Data/Square/",
+    #               "E:/Data/Lebo/Restructured Data/Square 2/",
+    #               "E:/Data/Lebo/Restructured Data/Square 3/",
+    #               "C:/Users/eda1g15/OneDrive - University of Southampton/Research/Porous Materials/Data/Solid plate/"]
+
+    to_convert = []
+
+    # Porous plates paper
+    root_dir = "C:/Users/eda1g15/OneDrive - University of Southampton/Research/Porous Materials/Data/Steel plates/"
+
+    for root, _, files in os.walk(root_dir):
+        if "params.py" in files:
+            to_convert.append(root + "/")
+
+    for cdir in to_convert:
+        print(cdir)
+    print(f"Found {len(to_convert)} data sets")
+
+    pool = multiprocessing.Pool(processes=os.cpu_count() - 1)  # Leave one core for the rest of us
+    pool.map(convert_series, to_convert)
+    pool.close()
+
+    # this_path = "C:/Users/eda1g15/OneDrive - University of Southampton/Research/Porous Materials/Data/" \
+    #             "Steel plates/w48vf24circles/Between 3 holes/"
+    # norm_mat = load_norm_mat(this_path)
+    # this_mraw = file.get_mraw_from_dir(this_path + "movie_C001H001S0026/")
+    # convert_mraw(this_mraw, this_path + "movie_C001H001S0026/" + "video.mp4", norm_mat=norm_mat)
+
+    # TESTING OPTIONS
+    # basic_norm_mat = load_norm_mat()
+
+    # convert(file.get_mraw_from_dir(
+    #     "C:/Users/eda1g15/OneDrive - University of Southampton/Research/Porous Materials/Data/2something Hole 1mm Acrylic 50mm Plate/The Lump/normal_angle_C001H001S0001/"),
+    #     "converted.mp4", codec="mp4v", frame_range=[200, 300], scale=2, contrast=1, autoscale_brightness=True)
+
+    # this_dir = "C:/Users/eda1g15/OneDrive - University of Southampton/Research/Porous Materials/Data/Misc/OAP mirror testing/sono-100power-75att_C001H001S0001/"
+    # convert(file.get_mraw_from_dir(this_dir), this_dir + "luminescence/luminescence1.png", codec=0,
+    #         frame_range=[400, 499],
+    #         scale=1, contrast=1, fps=0, autoscale_brightness=True, norm_mat=basic_norm_mat)
diff --git a/packaged-code/pacakged-gui/util/pixel_correction.py b/packaged-code/pacakged-gui/util/pixel_correction.py
new file mode 100644
index 0000000..2609cda
--- /dev/null
+++ b/packaged-code/pacakged-gui/util/pixel_correction.py
@@ -0,0 +1,69 @@
+import numpy as np
+import matplotlib.pyplot as plt
+import os
+
+from util.mraw import mraw
+from util.file_utils import get_mraw_from_dir, get_prefix_from_idxs
+
+
+def load_norm_mat(dataset_dir="C:/Users/eda1g15/OneDrive - University of Southampton/Research/Porous Materials/"
+                              "Data/Steel plates/w20vf24squares/On a hole/"):
+    """ Load a normalisation matrix for pixel errors. Default dataset dir is set for a clean data set. """
+    subdirs = [d for d in os.listdir(dataset_dir) if "movie_C001H001S" in d or "movie_S" in d or "movie" in d]
+    all_idxs = []
+    max_idx = 0
+    for sd in subdirs:
+        if "movie_C001H001S" in sd:
+            idx = int(sd.split("movie_C001H001S")[-1])
+        elif "movie_S" in sd:
+            idx = int(sd.split("movie_S")[-1])
+        elif "movie" in sd:
+            idx = int(sd.split("movie")[-1])
+        else:
+            raise RuntimeError("Could not find movies in " + dataset_dir)
+
+        if idx > max_idx:
+            max_idx = idx
+
+        all_idxs.append(idx)
+
+    prefix = get_prefix_from_idxs(dataset_dir, all_idxs)
+
+    norm_mats = []
+    if len(all_idxs) > 10:
+        first_blank = max_idx - 2
+    else:
+        first_blank = max_idx
+    for i in range(first_blank, max_idx + 1):
+        max_mraw = get_mraw_from_dir(dataset_dir + f"{prefix}{i:04d}/")  # type: mraw
+        med = np.median(max_mraw[0])
+        norm_mats.append(med / max_mraw[0])
+    return np.median(norm_mats, axis=0)
+
+
+def safe_correct(frame, norm_mat, max_value=2 ** 12 - 1):
+    """ Performs pixel correction but ignores saturated pixels. """
+    out = np.copy(np.float64(frame))
+    np.multiply(norm_mat, frame, out=out, where=frame != max_value)
+    np.minimum(out, max_value, out=out)  # Cap values that become over-saturated (possible for almost-saturated pixels).
+    return out
+
+
+if __name__ == "__main__":
+    mov_dir = "C:/Users/eda1g15/OneDrive - University of Southampton/Research/Porous Materials/" \
+              "Data/Steel plates/w12vf16triangles/On a hole/movie_C001H001S0001/"
+    normalisation_mat = load_norm_mat(mov_dir + "../")
+
+    mov = get_mraw_from_dir(mov_dir)  # type: mraw
+    plt.figure()
+    plt.imshow(mov[32], plt.cm.gray)
+    plt.xticks([])
+    plt.yticks([])
+    plt.tight_layout()
+
+    plt.figure()
+    plt.imshow(normalisation_mat * mov[32], plt.cm.gray)
+    plt.xticks([])
+    plt.yticks([])
+    plt.tight_layout()
+    plt.show()
diff --git a/paper_code/porous/util/plotting_utils.py b/packaged-code/pacakged-gui/util/plotting_utils.py
similarity index 100%
rename from paper_code/porous/util/plotting_utils.py
rename to packaged-code/pacakged-gui/util/plotting_utils.py
diff --git a/packaged-code/pacakged-gui/util/qt_utils.py b/packaged-code/pacakged-gui/util/qt_utils.py
new file mode 100644
index 0000000..ab2d9a2
--- /dev/null
+++ b/packaged-code/pacakged-gui/util/qt_utils.py
@@ -0,0 +1,18 @@
+import numpy as np
+from PyQt5.QtGui import QImage, QPixmap
+from util.pixel_correction import safe_correct
+
+
+def frame_to_pixmap(frame, autoscale=True, min=None, max=None, norm_mat=None):
+    if norm_mat is not None:
+        frame = safe_correct(frame, norm_mat)
+    if autoscale:
+        if min is not None and max is not None:
+            img_8bit = ((frame - min) / ((max - min) / 255.0)).astype(np.uint8)  # map the data range to 0 - 255
+        else:
+            img_8bit = ((frame - frame.min()) / (frame.ptp() / 255.0)).astype(np.uint8)  # map the data range to 0 - 255
+    else:
+        img_8bit = (frame / (4095 / 255)).astype(np.uint8)
+    img = QImage(img_8bit, img_8bit.shape[1], img_8bit.shape[0], QImage.Format_Grayscale8)
+    pixmap = QPixmap(img)
+    return pixmap
diff --git a/paper_code/slots/bem/util/vector_utils.py b/packaged-code/pacakged-gui/util/vector_utils.py
similarity index 100%
rename from paper_code/slots/bem/util/vector_utils.py
rename to packaged-code/pacakged-gui/util/vector_utils.py
diff --git a/paper_code/porous/fig_data/complex_geometry_anisotropy_data.csv b/packaged-code/porous/fig_data/complex_geometry_anisotropy_data.csv
similarity index 100%
rename from paper_code/porous/fig_data/complex_geometry_anisotropy_data.csv
rename to packaged-code/porous/fig_data/complex_geometry_anisotropy_data.csv
diff --git a/paper_code/porous/fig_data/surface_nucleation.mp4 b/packaged-code/porous/fig_data/surface_nucleation.mp4
similarity index 100%
rename from paper_code/porous/fig_data/surface_nucleation.mp4
rename to packaged-code/porous/fig_data/surface_nucleation.mp4
diff --git a/paper_code/porous/figure10.py b/packaged-code/porous/figure10.py
similarity index 100%
rename from paper_code/porous/figure10.py
rename to packaged-code/porous/figure10.py
diff --git a/paper_code/porous/figure12.py b/packaged-code/porous/figure12.py
similarity index 100%
rename from paper_code/porous/figure12.py
rename to packaged-code/porous/figure12.py
diff --git a/paper_code/porous/figure13.py b/packaged-code/porous/figure13.py
similarity index 100%
rename from paper_code/porous/figure13.py
rename to packaged-code/porous/figure13.py
diff --git a/paper_code/porous/figure14and15.py b/packaged-code/porous/figure14and15.py
similarity index 100%
rename from paper_code/porous/figure14and15.py
rename to packaged-code/porous/figure14and15.py
diff --git a/paper_code/porous/figure3.py b/packaged-code/porous/figure3.py
similarity index 100%
rename from paper_code/porous/figure3.py
rename to packaged-code/porous/figure3.py
diff --git a/paper_code/porous/figure4.py b/packaged-code/porous/figure4.py
similarity index 100%
rename from paper_code/porous/figure4.py
rename to packaged-code/porous/figure4.py
diff --git a/paper_code/porous/figure5.py b/packaged-code/porous/figure5.py
similarity index 100%
rename from paper_code/porous/figure5.py
rename to packaged-code/porous/figure5.py
diff --git a/paper_code/porous/figure6.py b/packaged-code/porous/figure6.py
similarity index 100%
rename from paper_code/porous/figure6.py
rename to packaged-code/porous/figure6.py
diff --git a/paper_code/porous/figure7.py b/packaged-code/porous/figure7.py
similarity index 100%
rename from paper_code/porous/figure7.py
rename to packaged-code/porous/figure7.py
diff --git a/paper_code/porous/figure8.py b/packaged-code/porous/figure8.py
similarity index 100%
rename from paper_code/porous/figure8.py
rename to packaged-code/porous/figure8.py
diff --git a/paper_code/porous/figure9.py b/packaged-code/porous/figure9.py
similarity index 100%
rename from paper_code/porous/figure9.py
rename to packaged-code/porous/figure9.py
diff --git a/paper_code/porous/steel_porous_plate_anisotropy.py b/packaged-code/porous/steel_porous_plate_anisotropy.py
similarity index 100%
rename from paper_code/porous/steel_porous_plate_anisotropy.py
rename to packaged-code/porous/steel_porous_plate_anisotropy.py
diff --git a/paper_code/thesis/chapter 2/util/analysis_utils.py b/packaged-code/porous/util/analysis_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 2/util/analysis_utils.py
rename to packaged-code/porous/util/analysis_utils.py
diff --git a/paper_code/porous/util/bem.py b/packaged-code/porous/util/bem.py
similarity index 100%
rename from paper_code/porous/util/bem.py
rename to packaged-code/porous/util/bem.py
diff --git a/paper_code/thesis/chapter 2/util/determineDisplacement.py b/packaged-code/porous/util/determineDisplacement.py
similarity index 100%
rename from paper_code/thesis/chapter 2/util/determineDisplacement.py
rename to packaged-code/porous/util/determineDisplacement.py
diff --git a/paper_code/porous/util/drawing_utils.py b/packaged-code/porous/util/drawing_utils.py
similarity index 100%
rename from paper_code/porous/util/drawing_utils.py
rename to packaged-code/porous/util/drawing_utils.py
diff --git a/paper_code/thesis/chapter 2/util/file_utils.py b/packaged-code/porous/util/file_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 2/util/file_utils.py
rename to packaged-code/porous/util/file_utils.py
diff --git a/paper_code/porous/util/gen_utils.py b/packaged-code/porous/util/gen_utils.py
similarity index 100%
rename from paper_code/porous/util/gen_utils.py
rename to packaged-code/porous/util/gen_utils.py
diff --git a/paper_code/thesis/chapter 2/util/mp4.py b/packaged-code/porous/util/mp4.py
similarity index 100%
rename from paper_code/thesis/chapter 2/util/mp4.py
rename to packaged-code/porous/util/mp4.py
diff --git a/paper_code/thesis/chapter 2/util/mraw.py b/packaged-code/porous/util/mraw.py
similarity index 100%
rename from paper_code/thesis/chapter 2/util/mraw.py
rename to packaged-code/porous/util/mraw.py
diff --git a/paper_code/thesis/chapter 2/util/plotting_utils.py b/packaged-code/porous/util/plotting_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 2/util/plotting_utils.py
rename to packaged-code/porous/util/plotting_utils.py
diff --git a/paper_code/slots/bem/bem.py b/packaged-code/slots/bem/bem.py
similarity index 100%
rename from paper_code/slots/bem/bem.py
rename to packaged-code/slots/bem/bem.py
diff --git a/paper_code/slots/bem/slot.py b/packaged-code/slots/bem/slot.py
similarity index 100%
rename from paper_code/slots/bem/slot.py
rename to packaged-code/slots/bem/slot.py
diff --git a/paper_code/slots/bem/util/file_utils.py b/packaged-code/slots/bem/util/file_utils.py
similarity index 100%
rename from paper_code/slots/bem/util/file_utils.py
rename to packaged-code/slots/bem/util/file_utils.py
diff --git a/paper_code/slots/bem/util/gen_utils.py b/packaged-code/slots/bem/util/gen_utils.py
similarity index 100%
rename from paper_code/slots/bem/util/gen_utils.py
rename to packaged-code/slots/bem/util/gen_utils.py
diff --git a/paper_code/slots/bem/util/plotting_utils.py b/packaged-code/slots/bem/util/plotting_utils.py
similarity index 100%
rename from paper_code/slots/bem/util/plotting_utils.py
rename to packaged-code/slots/bem/util/plotting_utils.py
diff --git a/paper_code/thesis/chapter 3/bem/util/vector_utils.py b/packaged-code/slots/bem/util/vector_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 3/bem/util/vector_utils.py
rename to packaged-code/slots/bem/util/vector_utils.py
diff --git a/paper_code/slots/figure_plots/all_direct_comparisons.py b/packaged-code/slots/figure_plots/all_direct_comparisons.py
similarity index 100%
rename from paper_code/slots/figure_plots/all_direct_comparisons.py
rename to packaged-code/slots/figure_plots/all_direct_comparisons.py
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y1.94.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y1.94.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y1.94.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y1.94.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y2.91.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y2.91.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y2.91.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y2.91.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y3.89.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y3.89.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y3.89.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y3.89.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H12_Y2.63.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H12_Y2.63.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H12_Y2.63.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H12_Y2.63.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y1.77.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y1.77.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y1.77.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y1.77.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.29.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.29.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.29.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.29.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.81.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.81.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.81.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.81.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.32.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.32.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.32.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.32.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.84.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.84.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.84.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.84.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y2.66.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y2.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y2.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y2.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y3.68.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y3.68.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y3.68.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y3.68.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.52.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.52.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.52.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.52.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.99.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.99.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.99.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.99.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.48.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.48.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.48.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.48.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.99.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.99.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.99.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.99.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y3.50.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y3.50.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y3.50.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y3.50.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y1.66.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y1.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y1.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y1.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y2.66.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y2.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y2.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y2.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y2.43.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y2.43.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y2.43.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y2.43.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y3.43.csv b/packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y3.43.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y3.43.csv
rename to packaged-code/slots/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y3.43.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y1.94.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y1.94.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y1.94.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y1.94.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y2.91.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y2.91.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y2.91.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y2.91.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y3.89.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y3.89.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y3.89.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y3.89.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H12_Y2.63.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H12_Y2.63.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H12_Y2.63.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H12_Y2.63.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y1.77.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y1.77.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y1.77.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y1.77.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.29.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.29.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.29.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.29.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.81.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.81.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.81.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.81.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.32.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.32.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.32.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.32.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.84.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.84.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.84.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.84.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y2.66.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y2.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y2.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y2.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y3.68.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y3.68.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y3.68.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y3.68.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.52.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.52.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.52.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.52.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.99.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.99.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.99.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.99.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.48.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.48.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.48.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.48.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.99.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.99.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.99.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.99.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y3.50.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y3.50.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y3.50.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y3.50.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y1.66.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y1.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y1.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y1.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y2.66.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y2.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y2.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y2.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y2.43.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y2.43.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y2.43.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y2.43.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y3.43.csv b/packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y3.43.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y3.43.csv
rename to packaged-code/slots/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y3.43.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y1.94.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y1.94.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y1.94.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y1.94.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y2.91.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y2.91.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y2.91.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y2.91.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y3.89.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y3.89.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y3.89.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y3.89.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H12_Y2.63.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H12_Y2.63.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H12_Y2.63.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H12_Y2.63.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y1.77.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y1.77.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y1.77.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y1.77.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.29.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.29.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.29.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.29.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.81.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.81.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.81.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.81.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.32.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.32.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.32.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.32.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.84.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.84.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.84.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.84.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y2.66.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y2.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y2.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y2.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y3.68.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y3.68.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y3.68.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y3.68.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.52.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.52.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.52.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.52.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.99.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.99.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.99.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.99.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.48.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.48.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.48.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.48.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.99.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.99.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.99.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.99.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y3.50.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y3.50.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y3.50.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y3.50.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y1.66.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y1.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y1.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y1.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y2.66.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y2.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y2.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y2.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y2.43.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y2.43.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y2.43.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y2.43.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y3.43.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y3.43.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y3.43.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y3.43.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y1.94.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y1.94.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y1.94.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y1.94.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y2.91.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y2.91.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y2.91.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y2.91.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y3.89.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y3.89.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y3.89.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y3.89.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H12_Y2.63.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H12_Y2.63.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H12_Y2.63.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H12_Y2.63.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y1.77.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y1.77.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y1.77.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y1.77.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.29.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.29.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.29.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.29.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.81.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.81.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.81.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.81.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.32.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.32.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.32.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.32.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.84.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.84.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.84.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.84.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y2.66.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y2.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y2.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y2.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y3.68.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y3.68.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y3.68.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y3.68.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.52.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.52.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.52.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.52.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.99.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.99.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.99.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.99.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.48.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.48.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.48.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.48.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.99.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.99.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.99.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.99.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y3.50.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y3.50.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y3.50.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y3.50.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y1.66.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y1.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y1.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y1.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y2.66.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y2.66.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y2.66.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y2.66.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y2.43.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y2.43.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y2.43.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y2.43.csv
diff --git a/paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y3.43.csv b/packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y3.43.csv
similarity index 100%
rename from paper_code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y3.43.csv
rename to packaged-code/slots/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y3.43.csv
diff --git a/paper_code/slots/figure_plots/figure10.py b/packaged-code/slots/figure_plots/figure10.py
similarity index 100%
rename from paper_code/slots/figure_plots/figure10.py
rename to packaged-code/slots/figure_plots/figure10.py
diff --git a/paper_code/slots/figure_plots/figure11.py b/packaged-code/slots/figure_plots/figure11.py
similarity index 100%
rename from paper_code/slots/figure_plots/figure11.py
rename to packaged-code/slots/figure_plots/figure11.py
diff --git a/paper_code/slots/figure_plots/figure12.py b/packaged-code/slots/figure_plots/figure12.py
similarity index 100%
rename from paper_code/slots/figure_plots/figure12.py
rename to packaged-code/slots/figure_plots/figure12.py
diff --git a/paper_code/slots/figure_plots/figure13.py b/packaged-code/slots/figure_plots/figure13.py
similarity index 100%
rename from paper_code/slots/figure_plots/figure13.py
rename to packaged-code/slots/figure_plots/figure13.py
diff --git a/paper_code/slots/figure_plots/figure13_data/W1H3_experimental b/packaged-code/slots/figure_plots/figure13_data/W1H3_experimental
similarity index 100%
rename from paper_code/slots/figure_plots/figure13_data/W1H3_experimental
rename to packaged-code/slots/figure_plots/figure13_data/W1H3_experimental
diff --git a/paper_code/slots/figure_plots/figure13_data/W1H3_numerical b/packaged-code/slots/figure_plots/figure13_data/W1H3_numerical
similarity index 100%
rename from paper_code/slots/figure_plots/figure13_data/W1H3_numerical
rename to packaged-code/slots/figure_plots/figure13_data/W1H3_numerical
diff --git a/paper_code/slots/figure_plots/figure13_data/W2H3a_experimental b/packaged-code/slots/figure_plots/figure13_data/W2H3a_experimental
similarity index 100%
rename from paper_code/slots/figure_plots/figure13_data/W2H3a_experimental
rename to packaged-code/slots/figure_plots/figure13_data/W2H3a_experimental
diff --git a/paper_code/slots/figure_plots/figure13_data/W2H3a_numerical b/packaged-code/slots/figure_plots/figure13_data/W2H3a_numerical
similarity index 100%
rename from paper_code/slots/figure_plots/figure13_data/W2H3a_numerical
rename to packaged-code/slots/figure_plots/figure13_data/W2H3a_numerical
diff --git a/paper_code/slots/figure_plots/figure5.py b/packaged-code/slots/figure_plots/figure5.py
similarity index 100%
rename from paper_code/slots/figure_plots/figure5.py
rename to packaged-code/slots/figure_plots/figure5.py
diff --git a/paper_code/slots/figure_plots/figure5_data/centroids_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv b/packaged-code/slots/figure_plots/figure5_data/centroids_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure5_data/centroids_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
rename to packaged-code/slots/figure_plots/figure5_data/centroids_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
diff --git a/paper_code/slots/figure_plots/figure5_data/normals_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv b/packaged-code/slots/figure_plots/figure5_data/normals_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure5_data/normals_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
rename to packaged-code/slots/figure_plots/figure5_data/normals_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
diff --git a/paper_code/slots/figure_plots/figure5_data/vel_sweep_n20000_W2.00_H2.00_drat0.1_wthresh12_len100_N64.csv b/packaged-code/slots/figure_plots/figure5_data/vel_sweep_n20000_W2.00_H2.00_drat0.1_wthresh12_len100_N64.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure5_data/vel_sweep_n20000_W2.00_H2.00_drat0.1_wthresh12_len100_N64.csv
rename to packaged-code/slots/figure_plots/figure5_data/vel_sweep_n20000_W2.00_H2.00_drat0.1_wthresh12_len100_N64.csv
diff --git a/paper_code/slots/figure_plots/figure6.py b/packaged-code/slots/figure_plots/figure6.py
similarity index 100%
rename from paper_code/slots/figure_plots/figure6.py
rename to packaged-code/slots/figure_plots/figure6.py
diff --git a/paper_code/slots/figure_plots/figure6_data/h_collapse_n20000_H1.0.csv b/packaged-code/slots/figure_plots/figure6_data/h_collapse_n20000_H1.0.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure6_data/h_collapse_n20000_H1.0.csv
rename to packaged-code/slots/figure_plots/figure6_data/h_collapse_n20000_H1.0.csv
diff --git a/paper_code/slots/figure_plots/figure6_data/h_collapse_n20000_H2.0.csv b/packaged-code/slots/figure_plots/figure6_data/h_collapse_n20000_H2.0.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure6_data/h_collapse_n20000_H2.0.csv
rename to packaged-code/slots/figure_plots/figure6_data/h_collapse_n20000_H2.0.csv
diff --git a/paper_code/slots/figure_plots/figure6_data/h_collapse_n20000_H3.0.csv b/packaged-code/slots/figure_plots/figure6_data/h_collapse_n20000_H3.0.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure6_data/h_collapse_n20000_H3.0.csv
rename to packaged-code/slots/figure_plots/figure6_data/h_collapse_n20000_H3.0.csv
diff --git a/paper_code/slots/figure_plots/figure6_data/h_collapse_n20000_H4.0.csv b/packaged-code/slots/figure_plots/figure6_data/h_collapse_n20000_H4.0.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure6_data/h_collapse_n20000_H4.0.csv
rename to packaged-code/slots/figure_plots/figure6_data/h_collapse_n20000_H4.0.csv
diff --git a/paper_code/slots/figure_plots/figure6_data/h_collapse_n20000_H5.0.csv b/packaged-code/slots/figure_plots/figure6_data/h_collapse_n20000_H5.0.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure6_data/h_collapse_n20000_H5.0.csv
rename to packaged-code/slots/figure_plots/figure6_data/h_collapse_n20000_H5.0.csv
diff --git a/paper_code/slots/figure_plots/figure7.py b/packaged-code/slots/figure_plots/figure7.py
similarity index 100%
rename from paper_code/slots/figure_plots/figure7.py
rename to packaged-code/slots/figure_plots/figure7.py
diff --git a/paper_code/slots/figure_plots/figure7_data/y_collapse_n20000_Y1.0.csv b/packaged-code/slots/figure_plots/figure7_data/y_collapse_n20000_Y1.0.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure7_data/y_collapse_n20000_Y1.0.csv
rename to packaged-code/slots/figure_plots/figure7_data/y_collapse_n20000_Y1.0.csv
diff --git a/paper_code/slots/figure_plots/figure7_data/y_collapse_n20000_Y2.0.csv b/packaged-code/slots/figure_plots/figure7_data/y_collapse_n20000_Y2.0.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure7_data/y_collapse_n20000_Y2.0.csv
rename to packaged-code/slots/figure_plots/figure7_data/y_collapse_n20000_Y2.0.csv
diff --git a/paper_code/slots/figure_plots/figure7_data/y_collapse_n20000_Y3.0.csv b/packaged-code/slots/figure_plots/figure7_data/y_collapse_n20000_Y3.0.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure7_data/y_collapse_n20000_Y3.0.csv
rename to packaged-code/slots/figure_plots/figure7_data/y_collapse_n20000_Y3.0.csv
diff --git a/paper_code/slots/figure_plots/figure7_data/y_collapse_n20000_Y4.0.csv b/packaged-code/slots/figure_plots/figure7_data/y_collapse_n20000_Y4.0.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure7_data/y_collapse_n20000_Y4.0.csv
rename to packaged-code/slots/figure_plots/figure7_data/y_collapse_n20000_Y4.0.csv
diff --git a/paper_code/slots/figure_plots/figure7_data/y_collapse_n20000_Y5.0.csv b/packaged-code/slots/figure_plots/figure7_data/y_collapse_n20000_Y5.0.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure7_data/y_collapse_n20000_Y5.0.csv
rename to packaged-code/slots/figure_plots/figure7_data/y_collapse_n20000_Y5.0.csv
diff --git a/paper_code/slots/figure_plots/figure8.py b/packaged-code/slots/figure_plots/figure8.py
similarity index 100%
rename from paper_code/slots/figure_plots/figure8.py
rename to packaged-code/slots/figure_plots/figure8.py
diff --git a/paper_code/slots/figure_plots/figure8_data/peak_sweep_20000_16x16_plate_100.csv b/packaged-code/slots/figure_plots/figure8_data/peak_sweep_20000_16x16_plate_100.csv
similarity index 100%
rename from paper_code/slots/figure_plots/figure8_data/peak_sweep_20000_16x16_plate_100.csv
rename to packaged-code/slots/figure_plots/figure8_data/peak_sweep_20000_16x16_plate_100.csv
diff --git a/paper_code/slots/figure_plots/figure9.py b/packaged-code/slots/figure_plots/figure9.py
similarity index 100%
rename from paper_code/slots/figure_plots/figure9.py
rename to packaged-code/slots/figure_plots/figure9.py
diff --git a/paper_code/slots/figure_plots/model_predictions/W1.23H2.74Y1.94_bem_slot_prediction_20000_0.25_15.csv b/packaged-code/slots/figure_plots/model_predictions/W1.23H2.74Y1.94_bem_slot_prediction_20000_0.25_15.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W1.23H2.74Y1.94_bem_slot_prediction_20000_0.25_15.csv
rename to packaged-code/slots/figure_plots/model_predictions/W1.23H2.74Y1.94_bem_slot_prediction_20000_0.25_15.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W1.23H2.74Y2.91_bem_slot_prediction_20000_0.25_15.csv b/packaged-code/slots/figure_plots/model_predictions/W1.23H2.74Y2.91_bem_slot_prediction_20000_0.25_15.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W1.23H2.74Y2.91_bem_slot_prediction_20000_0.25_15.csv
rename to packaged-code/slots/figure_plots/model_predictions/W1.23H2.74Y2.91_bem_slot_prediction_20000_0.25_15.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W1.23H2.74Y3.89_bem_slot_prediction_20000_0.25_15.csv b/packaged-code/slots/figure_plots/model_predictions/W1.23H2.74Y3.89_bem_slot_prediction_20000_0.25_15.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W1.23H2.74Y3.89_bem_slot_prediction_20000_0.25_15.csv
rename to packaged-code/slots/figure_plots/model_predictions/W1.23H2.74Y3.89_bem_slot_prediction_20000_0.25_15.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.14H8.21Y1.66_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W2.14H8.21Y1.66_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.14H8.21Y1.66_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.14H8.21Y1.66_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.14H8.21Y2.66_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W2.14H8.21Y2.66_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.14H8.21Y2.66_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.14H8.21Y2.66_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.20H11.50Y2.63_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W2.20H11.50Y2.63_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.20H11.50Y2.63_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.20H11.50Y2.63_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.20H2.70Y1.77_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W2.20H2.70Y1.77_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.20H2.70Y1.77_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.20H2.70Y1.77_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.20H2.70Y2.29_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W2.20H2.70Y2.29_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.20H2.70Y2.29_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.20H2.70Y2.29_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.20H2.70Y2.81_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W2.20H2.70Y2.81_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.20H2.70Y2.81_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.20H2.70Y2.81_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.20H2.70Y3.32_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W2.20H2.70Y3.32_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.20H2.70Y3.32_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.20H2.70Y3.32_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.20H2.70Y3.84_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W2.20H2.70Y3.84_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.20H2.70Y3.84_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.20H2.70Y3.84_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.20H2.90Y2.66_bem_slot_prediction_20000_0.25_8.csv b/packaged-code/slots/figure_plots/model_predictions/W2.20H2.90Y2.66_bem_slot_prediction_20000_0.25_8.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.20H2.90Y2.66_bem_slot_prediction_20000_0.25_8.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.20H2.90Y2.66_bem_slot_prediction_20000_0.25_8.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.20H2.90Y3.68_bem_slot_prediction_20000_0.25_8.csv b/packaged-code/slots/figure_plots/model_predictions/W2.20H2.90Y3.68_bem_slot_prediction_20000_0.25_8.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.20H2.90Y3.68_bem_slot_prediction_20000_0.25_8.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.20H2.90Y3.68_bem_slot_prediction_20000_0.25_8.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.20H5.40Y1.52_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W2.20H5.40Y1.52_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.20H5.40Y1.52_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.20H5.40Y1.52_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W2.20H5.40Y1.99_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W2.20H5.40Y1.99_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W2.20H5.40Y1.99_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W2.20H5.40Y1.99_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W4.20H11.47Y2.43_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W4.20H11.47Y2.43_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W4.20H11.47Y2.43_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W4.20H11.47Y2.43_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/model_predictions/W4.20H11.47Y3.43_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/slots/figure_plots/model_predictions/W4.20H11.47Y3.43_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/slots/figure_plots/model_predictions/W4.20H11.47Y3.43_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/slots/figure_plots/model_predictions/W4.20H11.47Y3.43_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/slots/figure_plots/util/analyse_slot.py b/packaged-code/slots/figure_plots/util/analyse_slot.py
similarity index 100%
rename from paper_code/slots/figure_plots/util/analyse_slot.py
rename to packaged-code/slots/figure_plots/util/analyse_slot.py
diff --git a/paper_code/slots/figure_plots/util/analysis_utils.py b/packaged-code/slots/figure_plots/util/analysis_utils.py
similarity index 100%
rename from paper_code/slots/figure_plots/util/analysis_utils.py
rename to packaged-code/slots/figure_plots/util/analysis_utils.py
diff --git a/paper_code/slots/figure_plots/util/config_utils.py b/packaged-code/slots/figure_plots/util/config_utils.py
similarity index 100%
rename from paper_code/slots/figure_plots/util/config_utils.py
rename to packaged-code/slots/figure_plots/util/config_utils.py
diff --git a/paper_code/slots/figure_plots/util/file_utils.py b/packaged-code/slots/figure_plots/util/file_utils.py
similarity index 100%
rename from paper_code/slots/figure_plots/util/file_utils.py
rename to packaged-code/slots/figure_plots/util/file_utils.py
diff --git a/paper_code/slots/figure_plots/util/plotting_utils.py b/packaged-code/slots/figure_plots/util/plotting_utils.py
similarity index 100%
rename from paper_code/slots/figure_plots/util/plotting_utils.py
rename to packaged-code/slots/figure_plots/util/plotting_utils.py
diff --git a/paper_code/thesis/chapter 2/fig_data/plasma.mp4 b/packaged-code/thesis/chapter 2/fig_data/plasma.mp4
similarity index 100%
rename from paper_code/thesis/chapter 2/fig_data/plasma.mp4
rename to packaged-code/thesis/chapter 2/fig_data/plasma.mp4
diff --git a/paper_code/thesis/chapter 2/figure5.py b/packaged-code/thesis/chapter 2/figure5.py
similarity index 100%
rename from paper_code/thesis/chapter 2/figure5.py
rename to packaged-code/thesis/chapter 2/figure5.py
diff --git a/paper_code/thesis/chapter 2/figure6.py b/packaged-code/thesis/chapter 2/figure6.py
similarity index 100%
rename from paper_code/thesis/chapter 2/figure6.py
rename to packaged-code/thesis/chapter 2/figure6.py
diff --git a/paper_code/thesis/chapter 2/figure7.py b/packaged-code/thesis/chapter 2/figure7.py
similarity index 100%
rename from paper_code/thesis/chapter 2/figure7.py
rename to packaged-code/thesis/chapter 2/figure7.py
diff --git a/paper_code/thesis/chapter 4/util/analysis_utils.py b/packaged-code/thesis/chapter 2/util/analysis_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 4/util/analysis_utils.py
rename to packaged-code/thesis/chapter 2/util/analysis_utils.py
diff --git a/paper_code/thesis/chapter 4/util/determineDisplacement.py b/packaged-code/thesis/chapter 2/util/determineDisplacement.py
similarity index 100%
rename from paper_code/thesis/chapter 4/util/determineDisplacement.py
rename to packaged-code/thesis/chapter 2/util/determineDisplacement.py
diff --git a/paper_code/thesis/chapter 4/util/file_utils.py b/packaged-code/thesis/chapter 2/util/file_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 4/util/file_utils.py
rename to packaged-code/thesis/chapter 2/util/file_utils.py
diff --git a/paper_code/thesis/chapter 4/util/mp4.py b/packaged-code/thesis/chapter 2/util/mp4.py
similarity index 100%
rename from paper_code/thesis/chapter 4/util/mp4.py
rename to packaged-code/thesis/chapter 2/util/mp4.py
diff --git a/paper_code/thesis/chapter 4/util/mraw.py b/packaged-code/thesis/chapter 2/util/mraw.py
similarity index 100%
rename from paper_code/thesis/chapter 4/util/mraw.py
rename to packaged-code/thesis/chapter 2/util/mraw.py
diff --git a/paper_code/thesis/chapter 4/util/plotting_utils.py b/packaged-code/thesis/chapter 2/util/plotting_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 4/util/plotting_utils.py
rename to packaged-code/thesis/chapter 2/util/plotting_utils.py
diff --git a/paper_code/thesis/chapter 2/util/raytrace.py b/packaged-code/thesis/chapter 2/util/raytrace.py
similarity index 100%
rename from paper_code/thesis/chapter 2/util/raytrace.py
rename to packaged-code/thesis/chapter 2/util/raytrace.py
diff --git a/paper_code/thesis/chapter 3/bem/bem.py b/packaged-code/thesis/chapter 3/bem/bem.py
similarity index 100%
rename from paper_code/thesis/chapter 3/bem/bem.py
rename to packaged-code/thesis/chapter 3/bem/bem.py
diff --git a/paper_code/thesis/chapter 3/bem/slot.py b/packaged-code/thesis/chapter 3/bem/slot.py
similarity index 100%
rename from paper_code/thesis/chapter 3/bem/slot.py
rename to packaged-code/thesis/chapter 3/bem/slot.py
diff --git a/paper_code/thesis/chapter 3/bem/util/file_utils.py b/packaged-code/thesis/chapter 3/bem/util/file_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 3/bem/util/file_utils.py
rename to packaged-code/thesis/chapter 3/bem/util/file_utils.py
diff --git a/paper_code/thesis/chapter 3/bem/util/gen_utils.py b/packaged-code/thesis/chapter 3/bem/util/gen_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 3/bem/util/gen_utils.py
rename to packaged-code/thesis/chapter 3/bem/util/gen_utils.py
diff --git a/paper_code/thesis/chapter 3/bem/util/plotting_utils.py b/packaged-code/thesis/chapter 3/bem/util/plotting_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 3/bem/util/plotting_utils.py
rename to packaged-code/thesis/chapter 3/bem/util/plotting_utils.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/util/vector_utils.py b/packaged-code/thesis/chapter 3/bem/util/vector_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/util/vector_utils.py
rename to packaged-code/thesis/chapter 3/bem/util/vector_utils.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/all_direct_comparisons.py b/packaged-code/thesis/chapter 3/figure_plots/all_direct_comparisons.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/all_direct_comparisons.py
rename to packaged-code/thesis/chapter 3/figure_plots/all_direct_comparisons.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y1.94.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y1.94.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y1.94.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y1.94.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y2.91.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y2.91.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y2.91.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y2.91.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y3.89.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y3.89.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y3.89.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W1H3_Y3.89.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H12_Y2.63.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H12_Y2.63.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H12_Y2.63.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H12_Y2.63.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y1.77.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y1.77.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y1.77.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y1.77.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.29.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.29.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.29.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.29.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.81.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.81.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.81.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y2.81.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.32.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.32.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.32.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.32.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.84.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.84.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.84.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3a_Y3.84.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y2.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y2.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y2.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y2.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y3.68.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y3.68.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y3.68.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H3b_Y3.68.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.52.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.52.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.52.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.52.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.99.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.99.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.99.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y1.99.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.48.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.48.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.48.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.48.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.99.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.99.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.99.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y2.99.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y3.50.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y3.50.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y3.50.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H6_Y3.50.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y1.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y1.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y1.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y1.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y2.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y2.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y2.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W2H9_Y2.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y2.43.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y2.43.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y2.43.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y2.43.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y3.43.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y3.43.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y3.43.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/mean_data/mean_sweep_W4H12_Y3.43.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y1.94.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y1.94.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y1.94.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y1.94.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y2.91.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y2.91.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y2.91.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y2.91.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y3.89.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y3.89.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y3.89.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W1H3_Y3.89.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H12_Y2.63.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H12_Y2.63.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H12_Y2.63.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H12_Y2.63.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y1.77.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y1.77.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y1.77.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y1.77.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.29.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.29.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.29.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.29.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.81.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.81.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.81.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y2.81.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.32.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.32.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.32.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.32.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.84.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.84.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.84.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3a_Y3.84.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y2.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y2.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y2.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y2.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y3.68.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y3.68.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y3.68.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H3b_Y3.68.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.52.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.52.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.52.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.52.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.99.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.99.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.99.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y1.99.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.48.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.48.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.48.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.48.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.99.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.99.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.99.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y2.99.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y3.50.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y3.50.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y3.50.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H6_Y3.50.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y1.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y1.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y1.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y1.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y2.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y2.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y2.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W2H9_Y2.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y2.43.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y2.43.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y2.43.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y2.43.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y3.43.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y3.43.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y3.43.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/raw_data/raw_data_sweep_W4H12_Y3.43.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y1.94.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y1.94.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y1.94.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y1.94.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y2.91.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y2.91.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y2.91.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y2.91.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y3.89.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y3.89.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y3.89.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W1H3_Y3.89.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H12_Y2.63.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H12_Y2.63.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H12_Y2.63.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H12_Y2.63.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y1.77.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y1.77.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y1.77.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y1.77.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.29.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.29.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.29.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.29.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.81.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.81.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.81.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y2.81.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.32.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.32.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.32.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.32.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.84.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.84.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.84.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3a_Y3.84.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y2.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y2.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y2.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y2.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y3.68.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y3.68.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y3.68.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H3b_Y3.68.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.52.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.52.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.52.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.52.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.99.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.99.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.99.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y1.99.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.48.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.48.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.48.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.48.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.99.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.99.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.99.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y2.99.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y3.50.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y3.50.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y3.50.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H6_Y3.50.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y1.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y1.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y1.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y1.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y2.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y2.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y2.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W2H9_Y2.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y2.43.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y2.43.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y2.43.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y2.43.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y3.43.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y3.43.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y3.43.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_data/shifted_data_sweep_W4H12_Y3.43.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y1.94.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y1.94.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y1.94.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y1.94.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y2.91.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y2.91.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y2.91.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y2.91.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y3.89.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y3.89.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y3.89.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W1H3_Y3.89.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H12_Y2.63.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H12_Y2.63.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H12_Y2.63.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H12_Y2.63.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y1.77.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y1.77.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y1.77.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y1.77.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.29.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.29.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.29.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.29.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.81.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.81.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.81.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y2.81.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.32.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.32.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.32.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.32.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.84.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.84.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.84.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3a_Y3.84.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y2.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y2.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y2.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y2.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y3.68.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y3.68.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y3.68.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H3b_Y3.68.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.52.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.52.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.52.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.52.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.99.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.99.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.99.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y1.99.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.48.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.48.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.48.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.48.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.99.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.99.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.99.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y2.99.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y3.50.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y3.50.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y3.50.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H6_Y3.50.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y1.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y1.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y1.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y1.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y2.66.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y2.66.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y2.66.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W2H9_Y2.66.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y2.43.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y2.43.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y2.43.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y2.43.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y3.43.csv b/packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y3.43.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y3.43.csv
rename to packaged-code/thesis/chapter 3/figure_plots/experiment_data/shifted_mean_data/mean_sweep_W4H12_Y3.43.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure10.py b/packaged-code/thesis/chapter 3/figure_plots/figure10.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure10.py
rename to packaged-code/thesis/chapter 3/figure_plots/figure10.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure10_data/peak_sweep_20000_16x16_plate_100.csv b/packaged-code/thesis/chapter 3/figure_plots/figure10_data/peak_sweep_20000_16x16_plate_100.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure10_data/peak_sweep_20000_16x16_plate_100.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure10_data/peak_sweep_20000_16x16_plate_100.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure11.py b/packaged-code/thesis/chapter 3/figure_plots/figure11.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure11.py
rename to packaged-code/thesis/chapter 3/figure_plots/figure11.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure12.py b/packaged-code/thesis/chapter 3/figure_plots/figure12.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure12.py
rename to packaged-code/thesis/chapter 3/figure_plots/figure12.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure13.py b/packaged-code/thesis/chapter 3/figure_plots/figure13.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure13.py
rename to packaged-code/thesis/chapter 3/figure_plots/figure13.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure14.py b/packaged-code/thesis/chapter 3/figure_plots/figure14.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure14.py
rename to packaged-code/thesis/chapter 3/figure_plots/figure14.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure15.py b/packaged-code/thesis/chapter 3/figure_plots/figure15.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure15.py
rename to packaged-code/thesis/chapter 3/figure_plots/figure15.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure15_data/W1H3_experimental b/packaged-code/thesis/chapter 3/figure_plots/figure15_data/W1H3_experimental
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure15_data/W1H3_experimental
rename to packaged-code/thesis/chapter 3/figure_plots/figure15_data/W1H3_experimental
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure15_data/W1H3_numerical b/packaged-code/thesis/chapter 3/figure_plots/figure15_data/W1H3_numerical
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure15_data/W1H3_numerical
rename to packaged-code/thesis/chapter 3/figure_plots/figure15_data/W1H3_numerical
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure15_data/W2H3a_experimental b/packaged-code/thesis/chapter 3/figure_plots/figure15_data/W2H3a_experimental
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure15_data/W2H3a_experimental
rename to packaged-code/thesis/chapter 3/figure_plots/figure15_data/W2H3a_experimental
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure15_data/W2H3a_numerical b/packaged-code/thesis/chapter 3/figure_plots/figure15_data/W2H3a_numerical
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure15_data/W2H3a_numerical
rename to packaged-code/thesis/chapter 3/figure_plots/figure15_data/W2H3a_numerical
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure4.py b/packaged-code/thesis/chapter 3/figure_plots/figure4.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure4.py
rename to packaged-code/thesis/chapter 3/figure_plots/figure4.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure6.py b/packaged-code/thesis/chapter 3/figure_plots/figure6.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure6.py
rename to packaged-code/thesis/chapter 3/figure_plots/figure6.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_10.csv b/packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_10.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_10.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_10.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_100.csv b/packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_100.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_100.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_100.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_150.csv b/packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_150.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_150.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_150.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_20.csv b/packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_20.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_20.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_20.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_200.csv b/packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_200.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_200.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_200.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_250.csv b/packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_250.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_250.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_250.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_30.csv b/packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_30.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_30.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_30.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_40.csv b/packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_40.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_40.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_40.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_50.csv b/packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_50.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_50.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure6_data/uniform_corner_rms_between_panels_50.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure7.py b/packaged-code/thesis/chapter 3/figure_plots/figure7.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure7.py
rename to packaged-code/thesis/chapter 3/figure_plots/figure7.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure7_data/centroids_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv b/packaged-code/thesis/chapter 3/figure_plots/figure7_data/centroids_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure7_data/centroids_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure7_data/centroids_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure7_data/normals_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv b/packaged-code/thesis/chapter 3/figure_plots/figure7_data/normals_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure7_data/normals_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure7_data/normals_n20000_w2.00_h2.00_drat0.1_wthresh12_len100.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure7_data/vel_sweep_n20000_W2.00_H2.00_drat0.1_wthresh12_len100_N64.csv b/packaged-code/thesis/chapter 3/figure_plots/figure7_data/vel_sweep_n20000_W2.00_H2.00_drat0.1_wthresh12_len100_N64.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure7_data/vel_sweep_n20000_W2.00_H2.00_drat0.1_wthresh12_len100_N64.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure7_data/vel_sweep_n20000_W2.00_H2.00_drat0.1_wthresh12_len100_N64.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure8.py b/packaged-code/thesis/chapter 3/figure_plots/figure8.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure8.py
rename to packaged-code/thesis/chapter 3/figure_plots/figure8.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H1.0.csv b/packaged-code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H1.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H1.0.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H1.0.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H2.0.csv b/packaged-code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H2.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H2.0.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H2.0.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H3.0.csv b/packaged-code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H3.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H3.0.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H3.0.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H4.0.csv b/packaged-code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H4.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H4.0.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H4.0.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H5.0.csv b/packaged-code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H5.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H5.0.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure8_data/h_collapse_n20000_H5.0.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure9.py b/packaged-code/thesis/chapter 3/figure_plots/figure9.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure9.py
rename to packaged-code/thesis/chapter 3/figure_plots/figure9.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y1.0.csv b/packaged-code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y1.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y1.0.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y1.0.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y2.0.csv b/packaged-code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y2.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y2.0.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y2.0.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y3.0.csv b/packaged-code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y3.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y3.0.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y3.0.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y4.0.csv b/packaged-code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y4.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y4.0.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y4.0.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y5.0.csv b/packaged-code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y5.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y5.0.csv
rename to packaged-code/thesis/chapter 3/figure_plots/figure9_data/y_collapse_n20000_Y5.0.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y1.94_bem_slot_prediction_20000_0.25_15.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y1.94_bem_slot_prediction_20000_0.25_15.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y1.94_bem_slot_prediction_20000_0.25_15.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y1.94_bem_slot_prediction_20000_0.25_15.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y2.91_bem_slot_prediction_20000_0.25_15.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y2.91_bem_slot_prediction_20000_0.25_15.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y2.91_bem_slot_prediction_20000_0.25_15.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y2.91_bem_slot_prediction_20000_0.25_15.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y3.89_bem_slot_prediction_20000_0.25_15.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y3.89_bem_slot_prediction_20000_0.25_15.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y3.89_bem_slot_prediction_20000_0.25_15.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W1.23H2.74Y3.89_bem_slot_prediction_20000_0.25_15.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.14H8.21Y1.66_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.14H8.21Y1.66_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.14H8.21Y1.66_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.14H8.21Y1.66_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.14H8.21Y2.66_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.14H8.21Y2.66_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.14H8.21Y2.66_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.14H8.21Y2.66_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H11.50Y2.63_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H11.50Y2.63_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H11.50Y2.63_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H11.50Y2.63_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y1.77_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y1.77_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y1.77_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y1.77_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y2.29_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y2.29_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y2.29_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y2.29_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y2.81_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y2.81_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y2.81_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y2.81_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y3.32_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y3.32_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y3.32_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y3.32_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y3.84_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y3.84_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y3.84_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.70Y3.84_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.90Y2.66_bem_slot_prediction_20000_0.25_8.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.90Y2.66_bem_slot_prediction_20000_0.25_8.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.90Y2.66_bem_slot_prediction_20000_0.25_8.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.90Y2.66_bem_slot_prediction_20000_0.25_8.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.90Y3.68_bem_slot_prediction_20000_0.25_8.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.90Y3.68_bem_slot_prediction_20000_0.25_8.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.90Y3.68_bem_slot_prediction_20000_0.25_8.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H2.90Y3.68_bem_slot_prediction_20000_0.25_8.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H5.40Y1.52_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H5.40Y1.52_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H5.40Y1.52_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H5.40Y1.52_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H5.40Y1.99_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H5.40Y1.99_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W2.20H5.40Y1.99_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W2.20H5.40Y1.99_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W4.20H11.47Y2.43_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W4.20H11.47Y2.43_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W4.20H11.47Y2.43_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W4.20H11.47Y2.43_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/model_predictions/W4.20H11.47Y3.43_bem_slot_prediction_20000_0.25_5.csv b/packaged-code/thesis/chapter 3/figure_plots/model_predictions/W4.20H11.47Y3.43_bem_slot_prediction_20000_0.25_5.csv
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/model_predictions/W4.20H11.47Y3.43_bem_slot_prediction_20000_0.25_5.csv
rename to packaged-code/thesis/chapter 3/figure_plots/model_predictions/W4.20H11.47Y3.43_bem_slot_prediction_20000_0.25_5.csv
diff --git a/paper_code/thesis/chapter 3/figure_plots/util/analyse_slot.py b/packaged-code/thesis/chapter 3/figure_plots/util/analyse_slot.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/util/analyse_slot.py
rename to packaged-code/thesis/chapter 3/figure_plots/util/analyse_slot.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/util/analysis_utils.py b/packaged-code/thesis/chapter 3/figure_plots/util/analysis_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/util/analysis_utils.py
rename to packaged-code/thesis/chapter 3/figure_plots/util/analysis_utils.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/util/bem.py b/packaged-code/thesis/chapter 3/figure_plots/util/bem.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/util/bem.py
rename to packaged-code/thesis/chapter 3/figure_plots/util/bem.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/util/config_utils.py b/packaged-code/thesis/chapter 3/figure_plots/util/config_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/util/config_utils.py
rename to packaged-code/thesis/chapter 3/figure_plots/util/config_utils.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/util/element_utils.py b/packaged-code/thesis/chapter 3/figure_plots/util/element_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/util/element_utils.py
rename to packaged-code/thesis/chapter 3/figure_plots/util/element_utils.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/util/elements.py b/packaged-code/thesis/chapter 3/figure_plots/util/elements.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/util/elements.py
rename to packaged-code/thesis/chapter 3/figure_plots/util/elements.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/util/file_utils.py b/packaged-code/thesis/chapter 3/figure_plots/util/file_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/util/file_utils.py
rename to packaged-code/thesis/chapter 3/figure_plots/util/file_utils.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/util/gen_utils.py b/packaged-code/thesis/chapter 3/figure_plots/util/gen_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/util/gen_utils.py
rename to packaged-code/thesis/chapter 3/figure_plots/util/gen_utils.py
diff --git a/paper_code/thesis/chapter 3/figure_plots/util/plotting_utils.py b/packaged-code/thesis/chapter 3/figure_plots/util/plotting_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 3/figure_plots/util/plotting_utils.py
rename to packaged-code/thesis/chapter 3/figure_plots/util/plotting_utils.py
diff --git a/paper_code/thesis/chapter 4/util/vector_utils.py b/packaged-code/thesis/chapter 3/figure_plots/util/vector_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 4/util/vector_utils.py
rename to packaged-code/thesis/chapter 3/figure_plots/util/vector_utils.py
diff --git a/paper_code/thesis/chapter 4/figure1.py b/packaged-code/thesis/chapter 4/figure1.py
similarity index 100%
rename from paper_code/thesis/chapter 4/figure1.py
rename to packaged-code/thesis/chapter 4/figure1.py
diff --git a/paper_code/thesis/chapter 4/figure2.py b/packaged-code/thesis/chapter 4/figure2.py
similarity index 100%
rename from paper_code/thesis/chapter 4/figure2.py
rename to packaged-code/thesis/chapter 4/figure2.py
diff --git a/paper_code/thesis/chapter 4/figure3.py b/packaged-code/thesis/chapter 4/figure3.py
similarity index 100%
rename from paper_code/thesis/chapter 4/figure3.py
rename to packaged-code/thesis/chapter 4/figure3.py
diff --git a/paper_code/thesis/chapter 4/figure4.py b/packaged-code/thesis/chapter 4/figure4.py
similarity index 100%
rename from paper_code/thesis/chapter 4/figure4.py
rename to packaged-code/thesis/chapter 4/figure4.py
diff --git a/paper_code/thesis/chapter 4/figure5.py b/packaged-code/thesis/chapter 4/figure5.py
similarity index 100%
rename from paper_code/thesis/chapter 4/figure5.py
rename to packaged-code/thesis/chapter 4/figure5.py
diff --git a/paper_code/thesis/chapter 4/figure6and7.py b/packaged-code/thesis/chapter 4/figure6and7.py
similarity index 100%
rename from paper_code/thesis/chapter 4/figure6and7.py
rename to packaged-code/thesis/chapter 4/figure6and7.py
diff --git a/paper_code/thesis/chapter 4/model_bem_flat_plate_experiment.py b/packaged-code/thesis/chapter 4/model_bem_flat_plate_experiment.py
similarity index 100%
rename from paper_code/thesis/chapter 4/model_bem_flat_plate_experiment.py
rename to packaged-code/thesis/chapter 4/model_bem_flat_plate_experiment.py
diff --git a/paper_code/thesis/chapter 4/model_bem_slot_experiment.py b/packaged-code/thesis/chapter 4/model_bem_slot_experiment.py
similarity index 100%
rename from paper_code/thesis/chapter 4/model_bem_slot_experiment.py
rename to packaged-code/thesis/chapter 4/model_bem_slot_experiment.py
diff --git a/paper_code/thesis/chapter 4/model_data/corner_anisotropy_data/R1.0_L20_n50000_cn3 b/packaged-code/thesis/chapter 4/model_data/corner_anisotropy_data/R1.0_L20_n50000_cn3
similarity index 100%
rename from paper_code/thesis/chapter 4/model_data/corner_anisotropy_data/R1.0_L20_n50000_cn3
rename to packaged-code/thesis/chapter 4/model_data/corner_anisotropy_data/R1.0_L20_n50000_cn3
diff --git a/paper_code/thesis/chapter 4/model_data/corner_anisotropy_sweep.py b/packaged-code/thesis/chapter 4/model_data/corner_anisotropy_sweep.py
similarity index 100%
rename from paper_code/thesis/chapter 4/model_data/corner_anisotropy_sweep.py
rename to packaged-code/thesis/chapter 4/model_data/corner_anisotropy_sweep.py
diff --git a/paper_code/thesis/chapter 4/model_data/slot_anisotropy_data/anisotropy_sweep_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0_N33.csv b/packaged-code/thesis/chapter 4/model_data/slot_anisotropy_data/anisotropy_sweep_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0_N33.csv
similarity index 100%
rename from paper_code/thesis/chapter 4/model_data/slot_anisotropy_data/anisotropy_sweep_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0_N33.csv
rename to packaged-code/thesis/chapter 4/model_data/slot_anisotropy_data/anisotropy_sweep_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0_N33.csv
diff --git a/paper_code/thesis/chapter 4/model_data/slot_anisotropy_data/centroids_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv b/packaged-code/thesis/chapter 4/model_data/slot_anisotropy_data/centroids_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 4/model_data/slot_anisotropy_data/centroids_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
rename to packaged-code/thesis/chapter 4/model_data/slot_anisotropy_data/centroids_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
diff --git a/paper_code/thesis/chapter 4/model_data/slot_anisotropy_data/normals_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv b/packaged-code/thesis/chapter 4/model_data/slot_anisotropy_data/normals_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
similarity index 100%
rename from paper_code/thesis/chapter 4/model_data/slot_anisotropy_data/normals_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
rename to packaged-code/thesis/chapter 4/model_data/slot_anisotropy_data/normals_n23000_W4.00_H4.00_drat0.1_wthresh12.00_len100.0.csv
diff --git a/paper_code/thesis/chapter 4/model_data/slot_anisotropy_sweep.py b/packaged-code/thesis/chapter 4/model_data/slot_anisotropy_sweep.py
similarity index 100%
rename from paper_code/thesis/chapter 4/model_data/slot_anisotropy_sweep.py
rename to packaged-code/thesis/chapter 4/model_data/slot_anisotropy_sweep.py
diff --git a/paper_code/thesis/chapter 4/model_data/square_anisotropy_data/R1.0_L15_n20000_i32 b/packaged-code/thesis/chapter 4/model_data/square_anisotropy_data/R1.0_L15_n20000_i32
similarity index 100%
rename from paper_code/thesis/chapter 4/model_data/square_anisotropy_data/R1.0_L15_n20000_i32
rename to packaged-code/thesis/chapter 4/model_data/square_anisotropy_data/R1.0_L15_n20000_i32
diff --git a/paper_code/thesis/chapter 4/model_data/square_anisotropy_sweep.py b/packaged-code/thesis/chapter 4/model_data/square_anisotropy_sweep.py
similarity index 100%
rename from paper_code/thesis/chapter 4/model_data/square_anisotropy_sweep.py
rename to packaged-code/thesis/chapter 4/model_data/square_anisotropy_sweep.py
diff --git a/paper_code/thesis/chapter 4/model_data/triangle_anisotropy_data/R1.0_L15_n20000_i32 b/packaged-code/thesis/chapter 4/model_data/triangle_anisotropy_data/R1.0_L15_n20000_i32
similarity index 100%
rename from paper_code/thesis/chapter 4/model_data/triangle_anisotropy_data/R1.0_L15_n20000_i32
rename to packaged-code/thesis/chapter 4/model_data/triangle_anisotropy_data/R1.0_L15_n20000_i32
diff --git a/paper_code/thesis/chapter 4/model_data/triangle_anisotropy_sweep.py b/packaged-code/thesis/chapter 4/model_data/triangle_anisotropy_sweep.py
similarity index 100%
rename from paper_code/thesis/chapter 4/model_data/triangle_anisotropy_sweep.py
rename to packaged-code/thesis/chapter 4/model_data/triangle_anisotropy_sweep.py
diff --git a/paper_code/thesis/chapter 4/model_sa_corner_experiment.py b/packaged-code/thesis/chapter 4/model_sa_corner_experiment.py
similarity index 100%
rename from paper_code/thesis/chapter 4/model_sa_corner_experiment.py
rename to packaged-code/thesis/chapter 4/model_sa_corner_experiment.py
diff --git a/paper_code/thesis/chapter 4/model_sa_equi_triangle_experiment.py b/packaged-code/thesis/chapter 4/model_sa_equi_triangle_experiment.py
similarity index 100%
rename from paper_code/thesis/chapter 4/model_sa_equi_triangle_experiment.py
rename to packaged-code/thesis/chapter 4/model_sa_equi_triangle_experiment.py
diff --git a/paper_code/thesis/chapter 4/model_sa_square_experiment.py b/packaged-code/thesis/chapter 4/model_sa_square_experiment.py
similarity index 100%
rename from paper_code/thesis/chapter 4/model_sa_square_experiment.py
rename to packaged-code/thesis/chapter 4/model_sa_square_experiment.py
diff --git a/paper_code/thesis/chapter 5/util/analysis_utils.py b/packaged-code/thesis/chapter 4/util/analysis_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 5/util/analysis_utils.py
rename to packaged-code/thesis/chapter 4/util/analysis_utils.py
diff --git a/paper_code/thesis/chapter 4/util/bem.py b/packaged-code/thesis/chapter 4/util/bem.py
similarity index 100%
rename from paper_code/thesis/chapter 4/util/bem.py
rename to packaged-code/thesis/chapter 4/util/bem.py
diff --git a/paper_code/thesis/chapter 5/util/determineDisplacement.py b/packaged-code/thesis/chapter 4/util/determineDisplacement.py
similarity index 100%
rename from paper_code/thesis/chapter 5/util/determineDisplacement.py
rename to packaged-code/thesis/chapter 4/util/determineDisplacement.py
diff --git a/paper_code/thesis/chapter 5/util/file_utils.py b/packaged-code/thesis/chapter 4/util/file_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 5/util/file_utils.py
rename to packaged-code/thesis/chapter 4/util/file_utils.py
diff --git a/paper_code/thesis/chapter 4/util/gen_utils.py b/packaged-code/thesis/chapter 4/util/gen_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 4/util/gen_utils.py
rename to packaged-code/thesis/chapter 4/util/gen_utils.py
diff --git a/paper_code/thesis/chapter 4/util/moi_utils.py b/packaged-code/thesis/chapter 4/util/moi_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 4/util/moi_utils.py
rename to packaged-code/thesis/chapter 4/util/moi_utils.py
diff --git a/paper_code/thesis/chapter 5/util/mp4.py b/packaged-code/thesis/chapter 4/util/mp4.py
similarity index 100%
rename from paper_code/thesis/chapter 5/util/mp4.py
rename to packaged-code/thesis/chapter 4/util/mp4.py
diff --git a/paper_code/thesis/chapter 5/util/mraw.py b/packaged-code/thesis/chapter 4/util/mraw.py
similarity index 100%
rename from paper_code/thesis/chapter 5/util/mraw.py
rename to packaged-code/thesis/chapter 4/util/mraw.py
diff --git a/paper_code/thesis/chapter 5/util/plotting_utils.py b/packaged-code/thesis/chapter 4/util/plotting_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 5/util/plotting_utils.py
rename to packaged-code/thesis/chapter 4/util/plotting_utils.py
diff --git a/packaged-code/thesis/chapter 4/util/vector_utils.py b/packaged-code/thesis/chapter 4/util/vector_utils.py
new file mode 100644
index 0000000..7732138
--- /dev/null
+++ b/packaged-code/thesis/chapter 4/util/vector_utils.py	
@@ -0,0 +1,57 @@
+def mag(v):
+    if len(v) == 2:
+        return (v[0] ** 2 + v[1] ** 2) ** 0.5
+
+    if len(v) == 3:
+        return (v[0] ** 2 + v[1] ** 2 + v[2] ** 2) ** 0.5
+
+
+def unit(v):
+    m = mag(v)
+    if len(v) == 2:
+        return [v[0] / m, v[1] / m]
+
+    if len(v) == 3:
+        return [v[0] / m, v[1] / m, v[2] / m]
+
+
+def mag_sqrd(v):
+    if len(v) == 2:
+        return v[0] ** 2 + v[1] ** 2
+
+    if len(v) == 3:
+        return v[0] ** 2 + v[1] ** 2 + v[2] ** 2
+
+
+def dist(v1, v2):
+    if len(v1) != len(v2):
+        raise ValueError("Vector lengths do not match (v1: {0}, v2: {1}).".format(len(v1), len(v2)))
+
+    if len(v1) == 2:
+        return mag([v2[0] - v1[0], v2[1] - v1[1]])
+
+    if len(v1) == 3:
+        return mag([v2[0] - v1[0], v2[1] - v1[1], v2[2] - v1[2]])
+
+
+def get_line_intersect(pos, vect, l_a, l_b):
+    """
+    Calculates the intersect (if any) between a line and a vector from a point.
+    :param pos: Position from which to trace.
+    :param vect: Vector along which to trace.
+    :param l_a: Point a of the line.
+    :param l_b: Point b of the line.
+    :return: Position (x, y) of the intersect or None
+    """
+    # Intersect = pos + zeta * vect
+    zeta = (((pos[0] - l_a[0]) * (l_b[1] - l_a[1])) - (pos[1] - l_a[1]) * (l_b[0] - l_a[0])) / (
+            vect[1] * (l_b[0] - l_a[0]) - vect[0] * (l_b[1] - l_a[1]))
+
+    # Intersect = l_a + kappa * l_b
+    kappa = (vect[0] * (l_a[1] - pos[1]) - vect[1] * (l_a[0] - pos[0])) / (
+            vect[1] * (l_b[0] - l_a[0]) - vect[0] * (l_b[1] - l_a[1]))
+
+    if zeta >= 0 and 0 <= kappa <= 1:
+        return [pos[0] + zeta * vect[0], pos[1] + zeta * vect[1]]
+    else:
+        return None
diff --git a/paper_code/thesis/chapter 5/fig_data/complex_geometry_anisotropy_data.csv b/packaged-code/thesis/chapter 5/fig_data/complex_geometry_anisotropy_data.csv
similarity index 100%
rename from paper_code/thesis/chapter 5/fig_data/complex_geometry_anisotropy_data.csv
rename to packaged-code/thesis/chapter 5/fig_data/complex_geometry_anisotropy_data.csv
diff --git a/paper_code/thesis/chapter 5/fig_data/surface_nucleation.mp4 b/packaged-code/thesis/chapter 5/fig_data/surface_nucleation.mp4
similarity index 100%
rename from paper_code/thesis/chapter 5/fig_data/surface_nucleation.mp4
rename to packaged-code/thesis/chapter 5/fig_data/surface_nucleation.mp4
diff --git a/paper_code/thesis/chapter 5/figure10.py b/packaged-code/thesis/chapter 5/figure10.py
similarity index 100%
rename from paper_code/thesis/chapter 5/figure10.py
rename to packaged-code/thesis/chapter 5/figure10.py
diff --git a/paper_code/thesis/chapter 5/figure11.py b/packaged-code/thesis/chapter 5/figure11.py
similarity index 100%
rename from paper_code/thesis/chapter 5/figure11.py
rename to packaged-code/thesis/chapter 5/figure11.py
diff --git a/paper_code/thesis/chapter 5/figure12and13.py b/packaged-code/thesis/chapter 5/figure12and13.py
similarity index 100%
rename from paper_code/thesis/chapter 5/figure12and13.py
rename to packaged-code/thesis/chapter 5/figure12and13.py
diff --git a/paper_code/thesis/chapter 5/figure2.py b/packaged-code/thesis/chapter 5/figure2.py
similarity index 100%
rename from paper_code/thesis/chapter 5/figure2.py
rename to packaged-code/thesis/chapter 5/figure2.py
diff --git a/paper_code/thesis/chapter 5/figure3.py b/packaged-code/thesis/chapter 5/figure3.py
similarity index 100%
rename from paper_code/thesis/chapter 5/figure3.py
rename to packaged-code/thesis/chapter 5/figure3.py
diff --git a/paper_code/thesis/chapter 5/figure4.py b/packaged-code/thesis/chapter 5/figure4.py
similarity index 100%
rename from paper_code/thesis/chapter 5/figure4.py
rename to packaged-code/thesis/chapter 5/figure4.py
diff --git a/paper_code/thesis/chapter 5/figure5.py b/packaged-code/thesis/chapter 5/figure5.py
similarity index 100%
rename from paper_code/thesis/chapter 5/figure5.py
rename to packaged-code/thesis/chapter 5/figure5.py
diff --git a/paper_code/thesis/chapter 5/figure6.py b/packaged-code/thesis/chapter 5/figure6.py
similarity index 100%
rename from paper_code/thesis/chapter 5/figure6.py
rename to packaged-code/thesis/chapter 5/figure6.py
diff --git a/paper_code/thesis/chapter 5/figure7.py b/packaged-code/thesis/chapter 5/figure7.py
similarity index 100%
rename from paper_code/thesis/chapter 5/figure7.py
rename to packaged-code/thesis/chapter 5/figure7.py
diff --git a/paper_code/thesis/chapter 5/figure8.py b/packaged-code/thesis/chapter 5/figure8.py
similarity index 100%
rename from paper_code/thesis/chapter 5/figure8.py
rename to packaged-code/thesis/chapter 5/figure8.py
diff --git a/paper_code/thesis/chapter 5/steel_porous_plate_anisotropy.py b/packaged-code/thesis/chapter 5/steel_porous_plate_anisotropy.py
similarity index 100%
rename from paper_code/thesis/chapter 5/steel_porous_plate_anisotropy.py
rename to packaged-code/thesis/chapter 5/steel_porous_plate_anisotropy.py
diff --git a/packaged-code/thesis/chapter 5/util/analysis_utils.py b/packaged-code/thesis/chapter 5/util/analysis_utils.py
new file mode 100644
index 0000000..73d3481
--- /dev/null
+++ b/packaged-code/thesis/chapter 5/util/analysis_utils.py	
@@ -0,0 +1,641 @@
+"""
+This code is based on code by Ivo Peters. The original code can be found in util/determineDisplacement.
+
+TODO:
+- Improve error detection.
+    -> Void fraction? (of both frames)
+    -> Frames too far along (>50?)
+- Improve handling of sideways measurements (separate analysis from processing i.e. just x, y, z, idx, vectors etc.)
+"""
+import os
+from typing import List
+import sys
+import importlib
+
+import matplotlib.pyplot as plt
+import numpy as np
+from skimage.measure import label, regionprops
+from scipy.interpolate import interp1d
+
+import util.determineDisplacement as dd
+import util.file_utils as file
+from util.mp4 import MP4
+
+
+class Reading:
+    m_x, m_y, m_z = None, None, None  # Measurement coordinates
+    idx = None
+    repeat_number = None
+
+    disp_vect = None  # Bubble displacement vector (pixels)
+    sup_disp_vect = None  # Displacement vector between minima as in Supponen et al. (2016)
+    bubble_pos = None  # Bubble position in the frame (px coords)
+    max_bubble_area = None  # Maximum bubble area (pixels)
+    sec_max_area = None  # Second maximum of bubble area (pixels)
+    inter_max_frames = None  # Time between
+    ecc_at_max = None  # Eccentricity at maximum area
+    model_anisotropy = None  # Anisotropy vector generated from BEM model
+
+    def __init__(self, idx, repeat_number, m_x=None, m_y=None, m_z=None):
+        self.idx = idx
+        self.repeat_number = repeat_number
+        self.m_x = m_x
+        self.m_y = m_y
+        self.m_z = m_z
+
+    def __str__(self):
+        string = f"{self.idx}:{self.repeat_number},{self.m_x},{self.m_y},{self.m_z}," \
+                 f"{self.disp_vect[0]},{self.disp_vect[1]}," \
+                 f"{self.bubble_pos[0]},{self.bubble_pos[1]}," \
+                 f"{self.max_bubble_area},{self.sec_max_area},{self.inter_max_frames}," \
+                 f"{self.sup_disp_vect[0]},{self.sup_disp_vect[1]}," \
+                 f"{self.ecc_at_max}"
+        if self.model_anisotropy is not None:  # Only include anisotropy if available
+            string += f",{self.model_anisotropy[0]},{self.model_anisotropy[1]},{self.model_anisotropy[2]}"
+        return string
+
+    def get_bubble_pos_mm(self, mm_per_px, frame_height=264):
+        return np.array([self.bubble_pos[0] * mm_per_px + self.m_x,
+                         (frame_height - self.bubble_pos[1]) * mm_per_px + self.m_y])
+
+    def is_complete(self):
+        return self.disp_vect and self.bubble_pos and self.max_bubble_area \
+               and self.sec_max_area and self.inter_max_frames
+
+    def get_jet_angle(self):
+        return np.arctan2(-self.disp_vect[1], self.disp_vect[0]) + np.pi / 2
+
+    def get_angle_dif(self):
+        """ Computes the angle difference between the experimental measurement and the predicted anisotropy. """
+        if self.model_anisotropy is not None:
+            # mm_per_px scaling doesn't matter here, just using this function to get the right direction conventions
+            return np.arccos(np.dot(self.get_disp_mm(1), self.model_anisotropy) /
+                             (np.linalg.norm(self.get_disp_mm(1)) * np.linalg.norm(self.model_anisotropy)))
+
+    def get_normalised_displacement(self):
+        return self.disp_vect / np.sqrt(self.max_bubble_area / np.pi)
+
+    def get_disp_mm(self, mm_per_px):
+        return np.array([self.disp_vect[0] * mm_per_px, - self.disp_vect[1] * mm_per_px, 0])
+
+    def get_radius_ratio(self):
+        return np.sqrt(self.sec_max_area / self.max_bubble_area)
+
+    def get_max_radius(self, mm_per_px):
+        return mm_per_px * np.sqrt(self.max_bubble_area / np.pi)
+
+    def get_scalar_anisotropy(self):
+        if self.model_anisotropy is not None:
+            return np.linalg.norm(self.model_anisotropy)
+
+    @staticmethod
+    def from_str(string: str):
+        """ Deserializes and returns a Reading object. """
+        string = string.strip()
+        split = string.split(",")
+        if split[1] == "None":
+            x = None
+        else:
+            x = float(split[1])
+        if split[2] == "None":
+            y = None
+        else:
+            y = float(split[2])
+        if split[3] == "None":
+            z = None
+        else:
+            z = float(split[3])
+        reading = Reading(int(split[0].split(":")[0]), int(split[0].split(":")[1]), x, y, z)
+        reading.disp_vect = np.array([float(split[4]), float(split[5])])
+        reading.bubble_pos = np.array([float(split[6]), float(split[7])])
+        reading.max_bubble_area = np.array(int(split[8]))
+        if len(split) > 9:  # Only include newer metrics if available
+            reading.sec_max_area = np.array(int(split[9]))
+            reading.inter_max_frames = np.array(int(split[10]))
+        if len(split) > 11:  # Only include even newer metrics if available
+            reading.sup_disp_vect = np.array([float(split[11]), float(split[12])])
+        if len(split) > 13:  # Only include even even newer metric (eccentricity) if available
+            reading.ecc_at_max = np.array(float(split[13]))
+        if len(split) > 14:  # Only include blah blah blah (anisotropy vector)
+            reading.model_anisotropy = np.array([float(split[14]), float(split[15]), float(split[16])])
+        return reading
+
+
+def load_readings(filename, include_invalid=False, do_flag_invalid=True):
+    if do_flag_invalid:
+        flag_invalid_readings(filename.rpartition("/")[0] + "/")
+    dump_file = open(filename)
+    lines = dump_file.readlines()
+
+    readings = []
+
+    for line in lines[1:]:
+        if line[0] == "#" and not include_invalid:
+            continue
+        if line[0] == "#":
+            line = line[1:]
+        readings.append(Reading.from_str(line))
+
+    dump_file.close()
+
+    return readings
+
+
+def save_readings(dir_path, readings):
+    if os.path.exists(dir_path + "readings_dump.csv"):
+        bkp_num = 0
+        while os.path.exists(dir_path + f"readings_dump.csv.bkp.{bkp_num}"):
+            bkp_num += 1
+        os.rename(dir_path + "readings_dump.csv", dir_path + f"readings_dump.csv.bkp.{bkp_num}")
+
+    dump_file = open(dir_path + "readings_dump.csv", "a")
+    dump_file.write("index:repeat number, measured x (mm), measured y (mm), measured z (mm), "
+                    "peak-to-peak x displacement (px), peak-to-peak y displacement (px), "
+                    "in-frame bubble position x (px), in-frame bubble position y (px), "
+                    "maximum bubble area (px^2), second maximum of bubble area (px^2), frames between maxima, "
+                    "minimum-to-minimum x displacement (px), minimum-to-minimum y displacement (px),"
+                    "eccentricity at maximum size,"
+                    "model anisotropy x, model anisotropy y, model anisotropy z\n")
+
+    for reading in readings:
+        dump_file.write(str(reading) + "\n")
+
+    dump_file.close()
+
+
+def plot_analysis(areas, xs, ys, dx, dy, ns, path, frames, frame_rate, repeat_number=0, show_plot=False):
+    areas = np.array(areas)
+    xs = np.array(xs)
+    ys = np.array(ys)
+    ns = np.array(ns)
+
+    # calculate time (s)
+    t = ns / frame_rate
+
+    # close the previous plot
+    plt.close()
+    # find and plot peaks
+    plt.figure()
+    plt.subplot(2, 3, 3)
+    plt.plot(1000 * t, areas)
+    plt.scatter(1000 * t, areas, c="red", s=1)
+    plt.xlabel('t (ms)')
+    plt.ylabel('area (sq. pix.)')
+    peak_idxs, yPeak = dd.findPeaks(ns, areas, kernel=4)
+    idx = ns[peak_idxs]
+    plt.plot(1000 * t[peak_idxs], yPeak, 'o')
+
+    # plot raw images
+    if len(idx) > 0:
+        plt.subplot(2, 3, 1)
+        plt.imshow(frames[idx[0]], cmap=plt.cm.gray)
+        plt.plot(xs[peak_idxs[0]], ys[peak_idxs[0]], 'x')
+        plt.xticks([])
+        plt.yticks([])
+        plt.title("Frame {0}".format(idx[0]))
+    if len(idx) > 1:
+        plt.subplot(2, 3, 4)
+        plt.imshow(frames[idx[1]], cmap=plt.cm.gray)
+        plt.plot(xs[peak_idxs[1]], ys[peak_idxs[1]], 'x')
+        plt.xticks([])
+        plt.yticks([])
+        plt.title("Frame {0}".format(idx[1]))
+
+    # plot binary processed bubble images
+    if len(idx) > 0:
+        plt.subplot(2, 3, 2)
+        binary1 = dd.makeBinary(frames[0] - np.int32(frames[idx[0]]))
+        plt.imshow(binary1, cmap=plt.cm.gray)
+        plt.xticks([])
+        plt.yticks([])
+    if len(idx) > 1:
+        plt.subplot(2, 3, 5)
+        binary2 = dd.makeBinary(frames[0] - np.int32(frames[idx[1]]))
+        plt.imshow(binary2, cmap=plt.cm.gray)
+        plt.xticks([])
+        plt.yticks([])
+
+    # calculate and plot displacement on background image
+    if len(idx) > 1:
+        plt.subplot(2, 3, 6)
+        plt.imshow(frames[0], cmap=plt.cm.gray)
+        plt.plot(xs[peak_idxs[0]:peak_idxs[1] + 1], ys[peak_idxs[0]:peak_idxs[1] + 1], 'x')
+
+        plt.quiver(xs[peak_idxs[0]], ys[peak_idxs[0]], dx, -dy,
+                   scale_units='x',
+                   scale=0.33,
+                   width=0.02)
+
+    plt.tight_layout()
+    if show_plot:
+        plt.show()
+
+    # save figure for checking proper working of algorithms
+    plt.savefig(path + "analysis_plot_r{0}.png".format(repeat_number), dpi=150)
+
+
+def analyse_frame(frame, bg_frame, max_ecc=0.6, min_sol=0.9, debug=False):
+    """
+    Analyses a single frame to find the coordinates and area of the bubble region. Additional parameters returned if
+    debug is True.
+
+    :param frame: Image frame.
+    :param bg_frame: Background image frame.
+    :return: x, y, area, [eccentricity, solidity]
+    """
+    x, y, area, ecc, sol, jt = None, None, None, None, None, None
+
+    img = np.int32(bg_frame) - np.int32(frame)
+    binary = dd.makeBinary(img)
+    label_img = label(binary)
+    props = regionprops(label_img, cache=False)
+
+    if len(props) > 0:
+        if len(props) > 1:
+            max_area = 0.0
+            for j in range(len(props)):
+                if props[j].area > max_area:
+                    max_area = props[j].area
+                    max_idx = j
+            y, x = props[max_idx].centroid
+            area = props[max_idx].area
+            ecc = props[max_idx].eccentricity
+            sol = props[max_idx].solidity
+
+            coords = np.array(props[max_idx].coords)
+            dists = np.linalg.norm(np.subtract(coords, [y, x]), axis=1)
+            max_dist_idx = np.argmax(dists)
+            jt = coords[max_dist_idx]  # np.arctan2(coords[max_dist_idx][1] - y, coords[max_dist_idx][0] - x)
+
+            if props[max_idx].eccentricity > max_ecc or props[max_idx].solidity < min_sol:
+                area = None
+        else:
+            y, x = props[0].centroid
+            area = props[0].area
+            ecc = props[0].eccentricity
+            sol = props[0].solidity
+
+            coords = np.array(props[0].coords)
+            dists = np.linalg.norm(np.subtract(coords, [y, x]), axis=1)
+            max_dist_idx = np.argmax(dists)
+            jt = coords[max_dist_idx]  # np.arctan2(coords[max_dist_idx][1] - y, coords[max_dist_idx][0] - x)
+
+            if props[0].eccentricity > max_ecc or props[0].solidity < min_sol:
+                area = None
+
+    if not debug:
+        return x, y, area
+    else:
+        if jt is not None:
+            jet_tip = (jt[1], jt[0])
+        else:
+            jet_tip = None
+        return x, y, area, ecc, sol, jet_tip
+
+
+def estimate_supponen_disp(areas, idxs, frame_rate, xs, ys):
+    time_per_frame = 1 / frame_rate
+    times = np.array(idxs) * time_per_frame
+
+    gradients = np.abs((areas[1:] - areas[:-1]) / (times[1:] - times[:-1]))
+    grad_change_of_sign = np.sign(gradients[1:] - gradients[:-1])
+    abs_d_grad_cos = np.abs(grad_change_of_sign[1:] - grad_change_of_sign[:-1])
+
+    min_grad_idx = None
+    for i in range(len(abs_d_grad_cos)):
+        if all(abs_d_grad_cos[i:i + 3] == 2):
+            min_grad_idx = i + 2
+            break
+
+    if min_grad_idx is None:  # TODO: Properly analyse these failures
+        return 0, 0
+
+    first_collapse_end_idx = min_grad_idx
+    scnd_collapse_start_idx = min_grad_idx + 1
+
+    try:
+        coeffs1 = np.polyfit(times[:first_collapse_end_idx + 1], areas[:first_collapse_end_idx + 1], 2)
+        coeffs2 = np.polyfit(times[scnd_collapse_start_idx:-1], areas[scnd_collapse_start_idx:-1], 2)
+        intersection = np.roots(coeffs1 - coeffs2)
+        interp_x = interp1d(times, xs - xs[0], "linear")(intersection[-1])
+        interp_y = interp1d(times, ys - ys[0], "linear")(intersection[-1])
+    except:
+        return 0, 0
+
+    return interp_x, interp_y
+
+
+def calculate_displacement(frames, frame_rate, trigger_out_delay, save_path=None, repeat_num=0, laser_delay=100e-6,
+                           warn=False):
+    """
+    Calculate bubble displacement vector for a series of frames.
+    :param frames: Frames
+    :param frame_rate: Frame rate (fps)
+    :param trigger_out_delay: Camera trigger out delay
+    :param save_path: Path in which to save the analysis plot, if None does not save.
+    :param repeat_num: Number of the repeat, used to save the analysis plot for movies with multiple repeats.
+    :param laser_delay: Laser delay
+    :return: displacement vector [x, y], initial bubble centroid [x, y], max area, second max area, inter-max frames,
+        Supponen displacement vector [x, y]
+    """
+    xs = []
+    ys = []
+    areas = []
+    eccs = []
+    idxs = []
+
+    bg_frame = np.int32(frames[0])
+
+    total_laser_delay = laser_delay + trigger_out_delay  # determine total delay in firing the laser
+    laser_frame_idx = int(round(frame_rate * total_laser_delay))  # delay in frames
+    first_frame_idx = laser_frame_idx + 1  # first frame we will analyse
+
+    for idx in range(first_frame_idx, len(frames)):
+        x, y, area, ecc, sol, _ = analyse_frame(frames[idx], bg_frame, debug=True)
+        if area is None:
+            continue  # No bubble found.
+        xs.append(x)
+        ys.append(y)
+        areas.append(area)
+        idxs.append(idx)
+        eccs.append(ecc)
+
+    xs = np.array(xs)
+    ys = np.array(ys)
+    areas = np.array(areas)
+    idxs = np.array(idxs)
+
+    peak_idxs, peak_areas = dd.findPeaks(idxs, areas, kernel=4)
+
+    if len(peak_idxs) > 1:
+        dx = xs[peak_idxs[1]] - xs[peak_idxs[0]]
+        dy = ys[peak_idxs[1]] - ys[peak_idxs[0]]
+
+        sup_dx, sup_dy = estimate_supponen_disp(areas, idxs, frame_rate, xs, ys)
+
+        if save_path is not None:
+            plot_analysis(areas, xs, ys, dx, dy, idxs, save_path, frames, frame_rate, repeat_number=repeat_num)
+
+        return [dx, dy], [xs[peak_idxs[0]], ys[peak_idxs[0]]], areas[peak_idxs[0]], areas[peak_idxs[1]], \
+               peak_idxs[1] - peak_idxs[0], [sup_dx, sup_dy], eccs[peak_idxs[0]]
+    else:
+        if save_path is not None:
+            plot_analysis(areas, xs, ys, 0, 0, idxs, save_path, frames, frame_rate, repeat_number=repeat_num)
+        if warn:
+            print("Warning: Less than two area peaks found.")
+        return None
+
+
+def analyse_reading(dir_path, return_mean=False, warn=False, short_status=False):
+    """
+    Analyses a reading in specified file path.
+
+    :param dir_path: Reading directory path.
+    :param return_mean: Whether to return the mean displacement or a list of displacements.
+    :return: mean displacement vector [x, y], mean bubble position vector [x, y]
+    """
+    if not os.path.exists(dir_path):
+        if warn:
+            print("Warning: " + dir_path + " does not exist.")
+        return
+
+    if not short_status:
+        print("Analysing " + dir_path)
+    movie = file.get_mraw_from_dir(dir_path)
+    if movie.image_count % 100 != 0:
+        if warn:
+            print("Warning: {0} does not have a multiple of 100 frames. Assuming single collapse.".format(dir_path))
+        repeats = 1
+    else:
+        repeats = int(movie.image_count / 100)
+
+    frame_rate = movie.get_fps()
+    trigger_out_delay = movie.trigger_out_delay
+
+    disps = []
+    positions = []
+    areas = []
+    sec_areas = []
+    inter_max_frames = []
+    sup_disps = []
+    eccs = []
+    for i in range(repeats):
+        frames = list(movie[i * 100: (i + 1) * 100])
+        disp_out = calculate_displacement(frames, frame_rate, trigger_out_delay, save_path=dir_path, repeat_num=i,
+                                          warn=warn)
+
+        if disp_out is not None:
+            disp, pos, area, sec_area, imf, sup_disp, ecc_at_max = disp_out
+            disps.append(disp)
+            positions.append(pos)
+            areas.append(area)
+            sec_areas.append(sec_area)
+            inter_max_frames.append(imf)
+            sup_disps.append(sup_disp)
+            eccs.append(ecc_at_max)
+        else:
+            disps.append(None)
+            positions.append(None)
+            areas.append(None)
+            sec_areas.append(None)
+            inter_max_frames.append(None)
+            sup_disps.append(None)
+            eccs.append(None)
+
+    movie.close()
+
+    if short_status:
+        print("|", end="", flush=True)  # TODO: Make this work
+
+    if return_mean:
+        mean_disp = np.mean([d for d in disps if d is not None], axis=1)
+        mean_pos = np.mean([p for p in positions if p is not None], axis=1)
+        return mean_disp, mean_pos
+    else:
+        return disps, positions, areas, sec_areas, inter_max_frames, sup_disps, eccs
+
+
+def analyse_series(dir_path, frame_shape=(384, 264), warn=False):
+    index_file = open(dir_path + "index.csv")
+    index_lines = index_file.readlines()
+    index_file.close()
+
+    if os.path.exists(dir_path + "readings_dump.csv"):
+        bkp_num = 0
+        while os.path.exists(dir_path + f"readings_dump.csv.bkp.{bkp_num}"):
+            bkp_num += 1
+        os.rename(dir_path + "readings_dump.csv", dir_path + f"readings_dump.csv.bkp.{bkp_num}")
+
+    for root, _, files in os.walk(dir_path):
+        for name in files:
+            if "analysis_plot" in name and ".png" in name:
+                os.remove(os.path.join(root, name))
+
+    dump_file = open(dir_path + "readings_dump.csv", "a")
+    dump_file.write("index:repeat number, measured x (mm), measured y (mm), measured z (mm), "
+                    "peak-to-peak x displacement (px), peak-to-peak y displacement (px), "
+                    "in-frame bubble position x (px), in-frame bubble position y (px), "
+                    "maximum bubble area (px^2), second maximum of bubble area (px^2), frames between maxima, "
+                    "minimum-to-minimum x displacement (px), minimum-to-minimum y displacement (px),"
+                    "eccentricity at maximum size\n")
+
+    sideways = False
+    # Identify system:
+    headers = index_lines[0].strip().split(",")
+    for i, h in enumerate(headers):
+        headers[i] = h.strip()
+    if headers[0][0] == "x" and headers[1][0] == "y" and headers[2] == "idx":
+        sideways = False
+        frame_height = frame_shape[1]
+    elif headers[0][0] == "x" and headers[1][0] == "z" and headers[2] == "idx":
+        sideways = True
+        frame_height = frame_shape[0]
+    else:
+        raise ValueError("Index file format was not recognized.")
+
+    # At code end this is formatted:
+    # x, y, index, displacement vector, bubble position vector (px), bubble position vector (mm)
+    # readings = []  # type: List[List[Union[float, float, str, np.ndarray, np.ndarray, np.ndarray]]]
+    readings = []  # type: List[Reading]
+
+    input_data = []  # x, y, index
+
+    for i in range(1, len(index_lines)):  # Start at 1 to skip header.
+        split = index_lines[i].strip().split(",")
+        if sideways:
+            # In sideways configuration the actual x is the measured -z, actual y is measured x.
+            input_data.append([-float(split[1]), float(split[0]), split[2]])  # x, y, idx converted from x, z, idx
+            pass
+        else:
+            input_data.append([float(split[0]), float(split[1]), split[2]])  # x, y, idx
+
+    reading_prefix = file.get_prefix_from_idxs(dir_path, np.array(input_data)[:, 2])
+    for i in range(len(input_data)):
+        reading_path = dir_path + reading_prefix + str(input_data[i][2]).rjust(4, "0") + "/"
+        to_write = 0
+
+        disps, positions, areas, sec_areas, inter_max_frames, sup_disps, eccs = analyse_reading(reading_path, False,
+                                                                                                warn=warn)
+        for d in range(len(disps)):
+            reading = Reading(input_data[i][2], d, m_x=input_data[i][0], m_y=input_data[i][1])
+            # reading = input_data[i].copy()
+
+            if sideways and disps[d] is not None and positions[d] is not None:
+                # Rotate into correct orientation.
+                disps[d] = [disps[d][1], -disps[d][0]]
+                positions[d] = [positions[d][1], frame_height - positions[d][0]]
+
+            reading.disp_vect = disps[d]
+            reading.bubble_pos = positions[d]
+            reading.max_bubble_area = areas[d]
+            reading.sec_max_area = sec_areas[d]
+            reading.inter_max_frames = inter_max_frames[d]
+            reading.sup_disp_vect = sup_disps[d]
+            reading.ecc_at_max = eccs[d]
+
+            readings.append(reading)
+            to_write += 1
+
+        for j in range(1, to_write + 1):
+            reading = readings[-j]
+            if reading.is_complete():
+                dump_file.write(str(reading) + "\n")
+
+    dump_file.close()
+
+    try:
+        flag_invalid_readings(dir_path)
+    except ValueError:
+        if warn:
+            print(f"Could not flag invalid readings in {dir_path}")
+        else:
+            pass
+    return readings
+
+
+def flag_invalid_readings(dir_path, error_on_not_found=False):
+    r_path = dir_path + "readings_dump.csv"
+    i_path = dir_path + "invalid_readings.txt"
+    if os.path.exists(i_path) and os.path.exists(r_path):
+        r_file = open(r_path, "r")
+        r_lines = r_file.readlines()
+        i_file = open(i_path, "r")
+        i_lines = i_file.readlines()
+        new_lines = []
+        for r_line in r_lines:
+            flagged = False
+            for i_line in i_lines:
+                if r_line.split(",")[0] == i_line.strip() and r_line[0] != "#":
+                    new_lines.append("#" + r_line)
+                    flagged = True
+                    break
+            if not flagged:
+                new_lines.append(r_line)
+        r_file.close()
+        i_file.close()
+
+        r_file = open(r_path, "w")
+        r_file.writelines(new_lines)
+        r_file.close()
+    elif error_on_not_found:
+        raise ValueError("Path does not contain the required files.")
+
+
+def get_collapse_variations(dir_path, idx, repeat, laser_delay=151.0e-6, geometry_type=None):
+    reading_prefix = file.get_prefix_from_idxs(dir_path, [idx])
+    reading_path = dir_path + reading_prefix + str(idx).rjust(4, "0") + "/"
+
+    movie = MP4(reading_path + f"video_{repeat}.mp4")
+
+    frame_rate = movie.get_fps()
+    trigger_out_delay = movie.trigger_out_delay
+
+    frames = list(movie[:100])
+
+    xs = []
+    ys = []
+    areas = []
+    eccs = []
+    idxs = []
+
+    bg_frame = np.int32(frames[0])
+
+    total_laser_delay = laser_delay + trigger_out_delay  # determine total delay in firing the laser
+    laser_frame_idx = int(round(frame_rate * total_laser_delay))  # delay in frames
+    first_frame_idx = laser_frame_idx + 1  # first frame we will analyse
+
+    for idx in range(first_frame_idx, len(frames)):
+        x, y, area, ecc, sol, _ = analyse_frame(frames[idx], bg_frame, debug=True)
+        if area is None:
+            continue  # No bubble found.
+        xs.append(x)
+        ys.append(y)
+        areas.append(area)
+        idxs.append(idx)
+        eccs.append(ecc)
+
+    xs = np.array(xs)
+    ys = np.array(ys)
+    areas = np.array(areas)
+    idxs = np.array(idxs)
+
+    sys.path.append(dir_path)
+    import params
+
+    importlib.reload(params)
+    sys.path.remove(dir_path)
+
+    if geometry_type == 'slot':
+        xs = xs - (params.left_slot_wall_x + params.slot_width / 2)
+        ys = ys - params.upper_surface_y
+
+    xs = xs * params.mm_per_px
+    ys = ys * params.mm_per_px
+    radii = np.sqrt(areas / np.pi) * params.mm_per_px
+    ts = idxs / frame_rate
+
+    return xs, ys, radii, ts
+
+
+if __name__ == "__main__":
+    flag_invalid_readings(file.select_dir("../../../../../"))
diff --git a/paper_code/thesis/chapter 5/util/bem.py b/packaged-code/thesis/chapter 5/util/bem.py
similarity index 100%
rename from paper_code/thesis/chapter 5/util/bem.py
rename to packaged-code/thesis/chapter 5/util/bem.py
diff --git a/packaged-code/thesis/chapter 5/util/determineDisplacement.py b/packaged-code/thesis/chapter 5/util/determineDisplacement.py
new file mode 100644
index 0000000..0b3a936
--- /dev/null
+++ b/packaged-code/thesis/chapter 5/util/determineDisplacement.py	
@@ -0,0 +1,69 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Sat May  6 20:43:51 2017
+
+@author: Ivo Peters
+ivo.r.peters@gmail.com
+
+version 1.5
+
+Update version 1.2 (2017-12-07):
+    Added a catch in case only one peak is found for the bubble size.
+Update version 1.3 (2017-12-10):
+    Reduced dpi of output images from 300 to 150.
+Update version 1.4 (2018-03-29):
+    Added a catch in case the peak consists of two points with exactly the same
+    value.
+Update version 1.5 (2018-04-08):
+    Fixed use of non-integer as index in findPeaks function.
+"""
+
+import numpy as np
+from skimage.filters import threshold_otsu
+import skimage.morphology as morph
+from scipy import ndimage
+
+
+def findPeaks(x, y, n=2, kernel=5):
+    """
+    Standard peak finding algorithm, finds the first n peaks using a kernel
+    of size kernel.
+    """
+    peakIdx = []  # index of the peak
+    yPeak = []  # peak value
+    k = np.int((kernel - 1) / 2)
+    for i in range(len(x) - (kernel - 1)):
+        if np.max(y[i:i + kernel]) == y[i + k]:
+            # If this is the first peak that is found, then the peak is added
+            if len(peakIdx) < 1:
+                peakIdx.append(i + k)
+                yPeak.append(y[i + k])
+            # Check if this is not a peak within the same range
+            elif (i + k - peakIdx[-1]) > k:
+                peakIdx.append(i + k)
+                yPeak.append(y[i + k])
+            if len(peakIdx) == n:
+                break
+    return peakIdx, yPeak
+
+
+def makeBinary(I):
+    """
+    Turn a grayscale image into a binary image, trying to only keep the main
+    bubble as a uniform white object on a fully black background.
+    """
+    # find a reasonable threshold
+    thresh = threshold_otsu(I)
+    # make a binary version of the image
+    binary = I > thresh
+    # try to separate small objects that are attached to the main bubble
+    morph.binary_opening(binary, footprint=None, out=binary)
+    # fill up holes to make the bright spot in the center of the bubble black
+    ndimage.binary_fill_holes(binary, output=binary)
+    # remove small objects (noise and object that we separated a few steps ago)
+    binary = morph.remove_small_objects(binary, min_size=128)
+    # return the binary image
+    return binary
+
+
+laserDelay = 151.0e-6  # delay (s) for Q-switch after lamp was triggered (setting in laser)
diff --git a/paper_code/thesis/chapter 5/util/drawing_utils.py b/packaged-code/thesis/chapter 5/util/drawing_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 5/util/drawing_utils.py
rename to packaged-code/thesis/chapter 5/util/drawing_utils.py
diff --git a/packaged-code/thesis/chapter 5/util/file_utils.py b/packaged-code/thesis/chapter 5/util/file_utils.py
new file mode 100644
index 0000000..1de6b12
--- /dev/null
+++ b/packaged-code/thesis/chapter 5/util/file_utils.py	
@@ -0,0 +1,118 @@
+import os
+import re
+from PyQt5.QtWidgets import QFileDialog, QApplication
+import sys
+import importlib
+import numpy as np
+
+from util.mraw import mraw
+
+
+def get_prefix_from_idxs(dir_path, idxs):
+    """
+    Finds the prefix used in a directory for a series of indexes. e.g. movie0001 vs movie_S0001.
+    :param dir_path: Directory path.
+    :param idxs: Array of indexes to check.
+    :return: Prefix.
+    """
+    files = os.listdir(dir_path)
+
+    prefix = None
+    for idx in idxs:
+        for file in files:
+            if os.path.isdir(dir_path + file):
+                suffix = str(idx).rjust(4, '0')
+                match = re.match(r'(.*)' + suffix, file)
+                if match:
+                    file_prefix = match.group(1)
+                    if prefix is None:
+                        prefix = file_prefix
+                    else:
+                        if prefix != file_prefix:
+                            print("Warning: Multiple directory prefixes found. Only using {0}".format(prefix))
+    return prefix
+
+
+def get_mraw_from_dir(dir_path):
+    files = os.listdir(dir_path)
+    headers = []
+    for file in files:
+        if re.match(r'(.*\.cih)', file):
+            headers.append(file)
+
+    if len(headers) > 1:
+        print("Warning: Multiple headers found. Using {0}".format(headers[0]))
+    if len(headers) == 0:
+        print("Warning: No headers found in {0}".format(dir_path))
+        return None
+
+    return mraw(dir_path + headers[0])
+
+
+def select_dir(start_path="../../../../../", create_window=True):
+    if create_window:
+        window = QApplication([])
+    dir_path = str(QFileDialog.getExistingDirectory(None, "Select Directory", start_path)) + "/"
+    return dir_path
+
+
+def load_params(params_dir):
+    sys.path.append(params_dir)
+    import params
+
+    importlib.reload(params)
+    sys.path.remove(params_dir)
+    return params
+
+def lists_to_csv(file_dir, filename, lists, headers=None, overwrite=False):
+    """
+    Writes a list of lists to a CSV file where each list is a column
+    :param file_dir: The directory in which to save the CSV file.
+    :param filename: The name of the CSV file (including file extension).
+    :param lists: The lists to save.
+    :param headers: A list of header strings, one for each column, defaults to no headers.
+    :param overwrite: Whether to overwrite an existing file, defaults to false.
+    :return: Success of file write.
+    """
+    if os.path.exists(file_dir + filename) and not overwrite:
+        print(f"Warning: file already exists. {file_dir + filename}")
+        return False
+    if file_dir != "":
+        os.makedirs(file_dir, exist_ok=True)
+    file = open(file_dir + filename, "w")
+    if headers:
+        line = ""
+        for h in headers:
+            line += h + ","
+        line = line[:-1] + "\n"
+        file.write(line)
+    zipped_lists = np.transpose(lists)
+    for entry in zipped_lists:
+        line = ""
+        for part in entry:
+            line += str(part) + ","
+        line = line[:-1] + "\n"
+        file.write(line)
+    file.close()
+    return True
+
+
+def csv_to_lists(file_dir, filename, has_headers=False):
+    """
+    Reads a CSV file to a list of lists where each column becomes a list.
+    :param file_dir: The directory from which to read the CSV file.
+    :param filename: The name of the CSV file (including file extension).
+    :param has_headers: Whether the CSV file has headers, defaults to False.
+    :return: List of lists.
+    """
+    file = open(file_dir + filename, "r")
+    lines = file.readlines()
+    start_idx = 1 if has_headers else 0
+    zipped_lists = []
+    for line in lines[start_idx:]:
+        line = line.strip(',\n')
+        part_arr = []
+        for part in line.split(","):
+            part_arr.append(float(part))
+        zipped_lists.append(part_arr)
+    return np.transpose(zipped_lists)
diff --git a/paper_code/thesis/chapter 5/util/gen_utils.py b/packaged-code/thesis/chapter 5/util/gen_utils.py
similarity index 100%
rename from paper_code/thesis/chapter 5/util/gen_utils.py
rename to packaged-code/thesis/chapter 5/util/gen_utils.py
diff --git a/packaged-code/thesis/chapter 5/util/mp4.py b/packaged-code/thesis/chapter 5/util/mp4.py
new file mode 100644
index 0000000..f6d8419
--- /dev/null
+++ b/packaged-code/thesis/chapter 5/util/mp4.py	
@@ -0,0 +1,45 @@
+import cv2
+import numpy as np
+
+
+class MP4:
+    # Declared to allow IDE to find these properties automatically.
+    width, height, image_count = None, None, None
+
+    # Hard code these for compatibility assuming that the movies are from MRAW data using the usual settings.
+    frame_rate = 100000
+    trigger_out_delay = 100 * 100e-9
+
+    buf = None
+
+    def __init__(self, fn):
+        cap = cv2.VideoCapture(fn)
+        self.image_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
+        self.width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
+        self.height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
+
+        self.buf = np.empty((self.image_count, self.height, self.width), np.dtype('uint8'))
+
+        fc = 0
+        ret = True
+
+        while fc < self.image_count and ret:
+            self.buf[fc] = cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY)
+            fc += 1
+
+        cap.release()
+
+    def __len__(self):
+        return self.image_count
+
+    def __getitem__(self, key):
+        if type(key) == slice:
+            return map(self.get_frame, range(self.image_count)[key])
+
+        return self.get_frame(key)
+
+    def get_frame(self, idx):
+        return self.buf[idx]
+
+    def get_fps(self):
+        return self.frame_rate
diff --git a/packaged-code/thesis/chapter 5/util/mraw.py b/packaged-code/thesis/chapter 5/util/mraw.py
new file mode 100644
index 0000000..8d79039
--- /dev/null
+++ b/packaged-code/thesis/chapter 5/util/mraw.py	
@@ -0,0 +1,174 @@
+"""
+Photron MRAW reader
+Author: Ivo Peters (i.r.peters@soton.ac.uk)
+Created on:    2016-10-26
+Last revision: 2016-10-27
+Version: 0.2
+
+Chunks of code taken from:
+CINE library: Dustin Kleckner (dkleckner@uchicago.edu)
+pyMRAW.py: Jaka Javh (jaka.javh@fs.uni-lj.si)
+"""
+
+from os import path
+import numpy as np
+import warnings
+import xmltodict
+
+# Processing the data in chunks keeps it in the L2 catch of the processor, increasing speed for large arrays by ~50%
+CHUNK_SIZE = 6 * 10 ** 5  # Should be divisible by 3, 4 and 5!  This seems to be near-optimal.
+
+SUPPORTED_FILE_FORMATS = ['mraw', 'tiff']
+SUPPORTED_EFFECTIVE_BIT_SIDE = ['lower', 'higher']
+
+
+def read_cih(filename):
+    name, ext = path.splitext(filename)
+    if ext == '.cih':
+        cih = dict()
+        # read the cif header
+        with open(filename, 'r') as f:
+            for line in f:
+                if line == '\n':  # end of cif header
+                    break
+                line_sp = line.replace('\n', '').split(' : ')
+                if len(line_sp) == 2:
+                    key, value = line_sp
+                    try:
+                        if '.' in value:
+                            value = float(value)
+                        else:
+                            value = int(value)
+                        cih[key] = value
+                    except:
+                        cih[key] = value
+
+    elif ext == '.cihx':
+        with open(filename, 'r', encoding='utf-8', errors='ignore') as f:
+            lines = f.readlines()
+            first_last_line = [i for i in range(len(lines)) if '<cih>' in lines[i] or '</cih>' in lines[i]]
+            xml = ''.join(lines[first_last_line[0]:first_last_line[-1] + 1])
+
+        raw_cih_dict = xmltodict.parse(xml)
+        cih = {
+            'Date': raw_cih_dict['cih']['fileInfo']['date'],
+            'Camera Type': raw_cih_dict['cih']['deviceInfo']['deviceName'],
+            'Record Rate(fps)': float(raw_cih_dict['cih']['recordInfo']['recordRate']),
+            'Shutter Speed(s)': float(raw_cih_dict['cih']['recordInfo']['shutterSpeed']),
+            'Total Frame': int(raw_cih_dict['cih']['frameInfo']['totalFrame']),
+            'Original Total Frame': int(raw_cih_dict['cih']['frameInfo']['recordedFrame']),
+            'Image Width': int(raw_cih_dict['cih']['imageDataInfo']['resolution']['width']),
+            'Image Height': int(raw_cih_dict['cih']['imageDataInfo']['resolution']['height']),
+            'File Format': raw_cih_dict['cih']['imageFileInfo']['fileFormat'],
+            'EffectiveBit Depth': int(raw_cih_dict['cih']['imageDataInfo']['effectiveBit']['depth']),
+            'EffectiveBit Side': raw_cih_dict['cih']['imageDataInfo']['effectiveBit']['side'],
+            'Color Bit': int(raw_cih_dict['cih']['imageDataInfo']['colorInfo']['bit']),
+            'Comment Text': raw_cih_dict['cih']['basicInfo'].get('comment', ''),
+            'Signal Delay Trigger Out Width(nsec)': int(
+                raw_cih_dict['cih']['deviceInfo']['delayInfos']['delayInfo'][3]['value']) * 100
+            # 4th signal is Trigger Out Width in 100ns units
+        }
+
+    else:
+        raise Exception('Unsupported configuration file ({:s})!'.format(ext))
+
+    # check exceptions
+    # ff = cih['File Format']
+    # if ff.lower() not in SUPPORTED_FILE_FORMATS:
+    #     raise Exception('Unexpected File Format: {:g}.'.format(ff))
+    # bits = cih['Color Bit']
+    # if bits < 12:
+    #     warnings.warn('Not 12bit ({:g} bits)! clipped values?'.format(bits))
+    # - may cause overflow')
+    # 12-bit values are spaced over the 16bit resolution - in case of photron filming at 12bit
+    # this can be meanded by dividing images with //16
+    # if cih['EffectiveBit Depth'] != 12:
+    #     warnings.warn('Not 12bit image!')
+    # ebs = cih['EffectiveBit Side']
+    # if ebs.lower() not in SUPPORTED_EFFECTIVE_BIT_SIDE:
+    #     raise Exception('Unexpected EffectiveBit Side: {:g}'.format(ebs))
+    # if (cih['File Format'].lower() == 'mraw') & (cih['Color Bit'] not in [8, 16]):
+    #     raise Exception('pyMRAW only works for 8-bit and 16-bit files!')
+    # if cih['Original Total Frame'] > cih['Total Frame']:
+    #     warnings.warn('Clipped footage! (Total frame: {}, Original total frame: {})'.format(cih['Total Frame'], cih[
+    #         'Original Total Frame']))
+
+    return cih
+
+
+def twelve2sixteen(a):
+    b = np.zeros(a.size // 3 * 2, dtype='u2')
+
+    for j in range(0, len(a), CHUNK_SIZE):
+        (a0, a1, a2) = [a[j + i:j + CHUNK_SIZE:3].astype('u2') for i in range(3)]
+
+        k = j // 3 * 2
+        k2 = k + CHUNK_SIZE // 3 * 2
+
+        b[k + 0:k2:2] = ((a0 & 0xFF) << 4) + ((a1 & 0xF0) >> 4)
+        b[k + 1:k2:2] = ((a1 & 0x0F) << 8) + ((a2 & 0xFF) >> 0)
+
+    return b
+
+
+class mraw(object):
+    # Declared to allow IDE to find these properties automatically.
+    width, height, imageSize, image_count = None, None, None, None
+
+    def __init__(self, fn):
+        cih = read_cih(fn)
+        self.cih = cih
+
+        self.width = cih['Image Width']
+        self.height = cih['Image Height']
+        self.image_count = cih['Total Frame']
+        self.bit_depth = cih['EffectiveBit Depth']
+        self.frame_rate = float(cih[
+                                    'Record Rate(fps)'])  # turn the frame rate into a float to avoid problems with creating unwanted integers by accident when using this property
+        self.trigger_out_delay = float(cih['Signal Delay Trigger Out Width(nsec)']) * 1e-9
+
+        # calculate the size of an image in bytes:
+        self.imageSize = self.width * self.height * self.bit_depth // 8
+
+        if fn[-4:] == '.cih':
+            self.fileName = fn[:-4] + '.mraw'
+        elif fn[-5:] == '.cihx':
+            self.fileName = fn[:-5] + '.mraw'
+        else:
+            raise ValueError("Input file is neither CIH or CIHX.")
+        self.f = open(self.fileName, 'rb')
+
+    def __len__(self):
+        return self.image_count
+
+    def __getitem__(self, key):
+        if type(key) == slice:
+            return map(self.get_frame, range(self.image_count)[key])
+
+        return self.get_frame(key)
+
+    def get_fps(self):
+        return self.frame_rate
+
+    def get_frame(self, number):
+        # calculate the position in bytes where the image is:
+        bytePosition = number * self.imageSize
+        # seek this position in the file:
+        self.f.seek(bytePosition)
+        # image = np.memmap(f, dtype=np.uint8, mode='r', shape=(self.width * self.height * 12 / 8))
+        image = np.frombuffer(self.f.read(self.imageSize), np.uint8)
+        image = twelve2sixteen(image)
+        image = np.reshape(image, (self.height, self.width))
+        return image
+
+    def get_pixel_range(self):
+        """ Gets the pixel brightness range for the movie """
+        # go to the start of the file
+        self.f.seek(0)
+        # read all the images
+        all_pixels = np.frombuffer(self.f.read(self.imageSize * self.image_count), np.uint8)
+        twelve2sixteen(all_pixels)
+        return np.min(all_pixels), np.max(all_pixels)
+
+    def close(self):
+        self.f.close()
diff --git a/packaged-code/thesis/chapter 5/util/plotting_utils.py b/packaged-code/thesis/chapter 5/util/plotting_utils.py
new file mode 100644
index 0000000..08dd8ba
--- /dev/null
+++ b/packaged-code/thesis/chapter 5/util/plotting_utils.py	
@@ -0,0 +1,260 @@
+import matplotlib as mpl
+import matplotlib.cm as cm
+import matplotlib.pyplot as plt
+import warnings
+from matplotlib.pyplot import Axes
+from matplotlib.axis import Axis
+from matplotlib.colors import LinearSegmentedColormap
+from matplotlib.ticker import StrMethodFormatter, LogLocator, AutoLocator, AutoMinorLocator
+from mpl_toolkits.mplot3d import Axes3D
+import seaborn as sns
+import numpy as np
+
+
+def fig_width():
+    return 5.31445
+
+
+def plot_frame(frame, pos=None, show_immediately=True):
+    plt.figure()
+    plt.imshow(frame, cmap=plt.cm.gray)
+    if pos is not None:
+        plt.plot(pos[0], pos[1], 'rx')
+    plt.xticks([])
+    plt.yticks([])
+    if show_immediately:
+        plt.show()
+
+
+def initialize_plt(font_size=10, line_scale=1, capsize=3, latex=True, dpi=300, colourblind=True):
+    warnings.filterwarnings("ignore", "cmr10")  # STOP TELLING ME THIS PLEASE I KNOW WHAT FONT I WANT
+    if colourblind:
+        sns.set_palette("colorblind")
+        # plt.style.use('seaborn-colorblind')
+    if (latex):
+        plt.rc('text', usetex=True)
+        plt.rc('text.latex',
+               preamble=r'\usepackage{amsmath}\usepackage{amsfonts}\usepackage{amssymb}\DeclareMathAlphabet\mathsfbi{OT1}{cmss}{m}{sl}')
+        font = {'family': 'serif', 'size': font_size, 'serif': ['cmr10']}
+        plt.rc('font', **font)
+    plt.rc('lines', linewidth=line_scale, markersize=3 * line_scale)
+    plt.rc('xtick.major', width=line_scale / 2)
+    plt.rc('xtick.minor', width=line_scale / 2)
+    plt.rc('ytick.major', width=line_scale / 2)
+    plt.rc('ytick.minor', width=line_scale / 2)
+    plt.rc('axes', linewidth=0.5 * line_scale)
+    plt.rc('patch', linewidth=0.5 * line_scale)
+    plt.rc('figure', dpi=dpi)
+    plt.rc('errorbar', capsize=capsize)
+
+
+def label_subplot(ax, label, color='k', loc='tl'):
+    xlim = ax.get_xlim()
+    ylim = ax.get_ylim()
+    font_size = plt.rcParams['font.size']
+    x_off = 0.33 * font_size / 72  # inches
+    y_off = 0.33 * font_size / 72
+
+    ax_width = ax.get_window_extent().width / ax.figure.dpi  # inches
+    ax_height = ax.get_window_extent().height / ax.figure.dpi  # inches
+
+    if loc == 'out':
+        height_frac = (ax_height - y_off) / ax_height
+        width_frac = - x_off / ax_width
+        valign = 'top'
+        halign = 'right'
+    else:
+        if loc[0] == 't':
+            height_frac = (ax_height - y_off) / ax_height
+            valign = 'top'
+        elif loc[0] == 'b':
+            height_frac = y_off / ax_height
+            valign = 'bottom'
+        else:
+            raise ValueError("loc must be tl, bl, tr, or br")
+
+        if loc[1] == 'l':
+            width_frac = x_off / ax_width
+            halign = 'left'
+        elif loc[1] == 'r':
+            width_frac = (ax_width - x_off) / ax_width
+            halign = 'right'
+        else:
+            raise ValueError("loc must be tl, bl, tr, or br")
+
+    ax.annotate(label,
+                xy=(np.mean(xlim), np.mean(ylim)),  # ensure it shows up
+                xytext=(width_frac, height_frac),  # points = inches * 72
+                textcoords='axes fraction', color=color,
+                horizontalalignment=halign, verticalalignment=valign)
+
+
+def format_axis_ticks_decimal(axis: Axis, decimal_places=2):
+    y_formatter = StrMethodFormatter("{x:.%0df}" % decimal_places)
+    axis.set_major_formatter(y_formatter)
+    axis.set_minor_formatter(y_formatter)
+
+    axis.set_major_locator(AutoLocator())
+    axis.set_minor_locator(AutoLocator())
+
+
+color_dict = {'red': ((0.0, 0.0, 0.0),
+                      (0.9, 0.5, 1.0),
+                      (1.0, 1.0, 1.0)),
+              'green': ((0.0, 0.0, 0.0),
+                        (0.5, 0.0, 0.0),
+                        (1.0, 0.0, 0.0)),
+              'blue': ((0.0, 0.0, 0.0),
+                       (0.5, 0.0, 0.0),
+                       (1.0, 0.0, 0.0))}
+
+heatmap_cm = LinearSegmentedColormap('heatmap', color_dict)
+
+
+def set_axes_radius(ax, origin, radius):
+    """ https://stackoverflow.com/a/50664367/5270376 """
+    ax.set_xlim3d([origin[0] - radius, origin[0] + radius])
+    ax.set_ylim3d([origin[1] - radius, origin[1] + radius])
+    ax.set_zlim3d([origin[2] - radius, origin[2] + radius])
+
+
+def set_axes_equal(ax):
+    """
+    https://stackoverflow.com/a/50664367/5270376
+
+    Make axes of 3D plot have equal scale so that spheres appear as spheres,
+    cubes as cubes, etc..  This is one possible solution to Matplotlib's
+    ax.set_aspect('equal') and ax.axis('equal') not working for 3D.
+
+    Input
+      ax: a matplotlib axis, e.g., as output from plt.gca().
+    """
+
+    limits = np.array([
+        ax.get_xlim3d(),
+        ax.get_ylim3d(),
+        ax.get_zlim3d(),
+    ])
+
+    origin = np.mean(limits, axis=1)
+    radius = 0.5 * np.max(np.abs(limits[:, 1] - limits[:, 0]))
+    set_axes_radius(ax, origin, radius)
+
+
+def plot_3d_points(points, c=None, cmap_name="RdBu", center_cmap=True):
+    fig = plt.figure()
+    ax = fig.add_subplot(111, projection='3d')  # type: Axes3D
+    points = np.array(points)
+    if c is not None:
+        if center_cmap:
+            scat = ax.scatter3D(points[:, 0], points[:, 2], points[:, 1], c=c, cmap=cm.get_cmap(cmap_name),
+                                vmin=-np.max(np.abs(c)), vmax=np.max(np.abs(c)))
+        else:
+            scat = ax.scatter3D(points[:, 0], points[:, 2], points[:, 1], c=c, cmap=cm.get_cmap(cmap_name))
+        fig.colorbar(scat)
+    else:
+        ax.scatter3D(points[:, 0], points[:, 2], points[:, 1])
+    ax.set_xlabel('X')
+    ax.set_ylabel('Z')
+    ax.set_zlabel('Y')
+
+    lim = [min([ax.get_xlim()[0], ax.get_ylim()[0], ax.get_zlim()[0]]),
+           max([ax.get_xlim()[1], ax.get_ylim()[1], ax.get_zlim()[1]])]
+    ax.set_xlim(lim)
+    ax.set_ylim(lim)
+    ax.set_zlim(lim)
+    plt.show()
+
+
+def plot_2d_point_sets(point_sets):
+    colors = ["r", "b", "g", "orange", "k", "yellow"]
+    fig = plt.figure()
+    ax = fig.add_subplot(111, aspect='equal')
+    for i in range(len(point_sets)):
+        points = np.array(point_sets[i])
+        ax.scatter(points[:, 0], points[:, 1], c=colors[i])
+    ax.set_xlabel('X')
+    ax.set_ylabel('Y')
+
+    lim = [min([ax.get_xlim()[0], ax.get_ylim()[0]]),
+           max([ax.get_xlim()[1], ax.get_ylim()[1]])]
+    ax.set_xlim(lim)
+    ax.set_ylim(lim)
+    plt.show()
+
+
+def plot_3d_point_sets(point_sets, colors=("r", "b", "g", "orange", "k", "yellow"), colorbar=False):
+    fig = plt.figure()
+    ax = fig.add_subplot(111, projection='3d')  # type: Axes3D
+    for i in range(len(point_sets)):
+        points = np.array(point_sets[i])
+        scat = ax.scatter3D(points[:, 0], points[:, 2], points[:, 1], c=colors[i])
+        if colorbar:
+            plt.colorbar(scat)
+    ax.set_xlabel('X')
+    ax.set_ylabel('Z')
+    ax.set_zlabel('Y')
+
+    # lim = [min([ax.get_xlim()[0], ax.get_ylim()[0], ax.get_zlim()[0]]),
+    #        max([ax.get_xlim()[1], ax.get_ylim()[1], ax.get_zlim()[1]])]
+    # ax.set_xlim(lim)
+    # ax.set_ylim(lim)
+    # ax.set_zlim(lim)
+    set_axes_equal(ax)
+    plt.show()
+
+
+def plot_heatmap(points, x_bins=100, mode='smooth', filename=None, cmap_name='viridis'):
+    """
+    Generate a heatmap plot of a number of points.
+    :param points: The points to use in the heatmap.
+    :param x_bins: The number of bins along the x-axis.
+    :param mode: 'smooth' for smooth bin edges, 'sharp' for sharp bin edges.
+    :param filename: The filename (and path) to save the plot, does not save if None.
+    """
+    points = np.array(points)
+    x = points[:, 0]
+    y = points[:, 1]
+
+    x_dim = abs(np.ptp(x))
+    y_dim = abs(np.ptp(y))
+
+    # Generate heatmap
+    y_bins = int(round(x_bins * y_dim / x_dim))
+    if y_bins == 0:
+        y_bins = 1
+    heatmap, xedges, yedges = np.histogram2d(x, y, bins=(x_bins, y_bins))
+    extent = [xedges[0] - 1, xedges[-1] + 1, yedges[0] - 1, yedges[-1] + 1]
+
+    heatmap = heatmap.T
+
+    fig = plt.figure()
+    if abs(yedges[-1] - yedges[0]) < 0.025:
+        yedges[0] = -0.025  # Ensure that the data is actually visible.
+
+    if mode == 'smooth':
+        ax = fig.add_subplot(111, aspect='equal', xlim=xedges[[0, -1]], ylim=yedges[[0, -1]])
+        im = mpl.image.NonUniformImage(ax, interpolation='bilinear')
+        xcenters = (xedges[:-1] + xedges[1:]) / 2
+        ycenters = (yedges[:-1] + yedges[1:]) / 2
+        im.set_data(xcenters, ycenters, heatmap)
+        ax.images.append(im)
+    elif mode == 'sharp':
+        ax = fig.add_subplot(111, aspect='equal')
+        X, Y = np.meshgrid(xedges, yedges)
+        cmap = None
+        if cmap_name == "heatmap":
+            cmap = heatmap_cm
+        else:
+            cmap = cm.get_cmap(cmap_name)
+        ax.pcolormesh(X, Y, heatmap, cmap=cmap)
+    else:
+        raise (ValueError("{0} is not a valid mode.".format(mode)))
+    if filename is not None:
+        plt.savefig(filename)
+    plt.show()
+
+
+if __name__ == "__main__":
+    this_points = [[0, 1], [0, 2], [2, 3], [1, 3.5]]
+    plot_heatmap(this_points, x_bins=5, mode='sharp')
-- 
GitLab