[med-svn] [openfovea] 05/13: Remove unwanted files.

Andreas Tille tille at debian.org
Tue Dec 26 19:57:37 UTC 2017


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository openfovea.

commit eaa3d981c3be86e4cee6a314f9ead2e0b44c5539
Author: Charles Roduit <charles.roduit at gmail.com>
Date:   Mon Aug 20 13:40:51 2012 +0000

    Remove unwanted files.
---
 debian/files                                       |    1 -
 debian/openfovea.debhelper.log                     |   44 -
 debian/openfovea.postinst.debhelper                |    7 -
 debian/openfovea.prerm.debhelper                   |   12 -
 debian/openfovea.substvars                         |    3 -
 debian/openfovea/DEBIAN/control                    |   14 -
 debian/openfovea/DEBIAN/md5sums                    |   60 -
 debian/openfovea/DEBIAN/postinst                   |    9 -
 debian/openfovea/DEBIAN/prerm                      |   14 -
 debian/openfovea/usr/bin/openfovea                 |   12 -
 .../dist-packages/openfovea-0.1a160.egg-info       |    1 -
 .../dist-packages/openfovea/Icon/CellFovea.ico     |    1 -
 .../dist-packages/openfovea/Icon/CellFovea.png     |    1 -
 .../dist-packages/openfovea/Icon/CellFovea.svg     |    1 -
 .../dist-packages/openfovea/Icon/Export_curve.svg  |    1 -
 .../dist-packages/openfovea/Icon/NoData.png        |    1 -
 .../dist-packages/openfovea/Icon/NoData.svg        |    1 -
 .../dist-packages/openfovea/Icon/event.ico         |    1 -
 .../dist-packages/openfovea/Icon/event.png         |    1 -
 .../dist-packages/openfovea/Icon/event.svg         |    1 -
 .../dist-packages/openfovea/Icon/export.ico        |    1 -
 .../dist-packages/openfovea/Icon/export.png        |    1 -
 .../dist-packages/openfovea/Icon/export.svg        |    1 -
 .../dist-packages/openfovea/Icon/export_curve.ico  |    1 -
 .../dist-packages/openfovea/Icon/export_curve.png  |    1 -
 .../dist-packages/openfovea/Icon/icon64x64.svg     |    1 -
 .../dist-packages/openfovea/Icon/openfovea.ico     |    1 -
 .../dist-packages/openfovea/Icon/openfovea.png     |    1 -
 .../dist-packages/openfovea/Icon/tomo_x_square.svg |    1 -
 .../dist-packages/openfovea/Icon/tomo_y_square.svg |    1 -
 .../dist-packages/openfovea/Icon/tomo_z_square.svg |    1 -
 .../dist-packages/openfovea/Icon/two_evt.ico       |    1 -
 .../dist-packages/openfovea/Icon/two_evt.png       |    1 -
 .../dist-packages/openfovea/Icon/two_evt.svg       |    1 -
 .../python2.7/dist-packages/openfovea/__init__.py  |    1 -
 .../python2.7/dist-packages/openfovea/classes.py   |    1 -
 .../python2.7/dist-packages/openfovea/common.py    |    1 -
 .../openfovea/dialog_experiment_properties.py      |    1 -
 .../dist-packages/openfovea/dialog_export_map.py   |    1 -
 .../dist-packages/openfovea/dialog_flatten.py      |    1 -
 .../openfovea/dialog_mask_properties.py            |    1 -
 .../openfovea/fovea_toolbox/__init__.py            |    1 -
 .../dist-packages/openfovea/fovea_toolbox/curve.py |    1 -
 .../openfovea/fovea_toolbox/file_util/__init__.py  |    1 -
 .../openfovea/fovea_toolbox/file_util/aex.py       |    1 -
 .../openfovea/fovea_toolbox/file_util/afm_file.py  |    1 -
 .../openfovea/fovea_toolbox/file_util/asylum.py    |    1 -
 .../openfovea/fovea_toolbox/file_util/common.py    |    1 -
 .../openfovea/fovea_toolbox/file_util/csem.py      |    1 -
 .../openfovea/fovea_toolbox/file_util/jpk.py       |    1 -
 .../openfovea/fovea_toolbox/file_util/nanoscope.py |    1 -
 .../fovea_toolbox/file_util/succellus_import.py    |    1 -
 .../dist-packages/openfovea/fovea_toolbox/misc.py  |    1 -
 .../openfovea/fovea_toolbox/opengl.py              |    1 -
 .../openfovea/fovea_toolbox/opengl_gtk.py          |    1 -
 .../openfovea/fovea_toolbox/post_proc.py           |    1 -
 .../glade/dialog_experiment_properties.glade       |    1 -
 .../openfovea/glade/dialog_flatten.glade           |    1 -
 .../dist-packages/openfovea/glade/openfovea.glade  |    1 -
 .../dist-packages/openfovea/glade/plot.glade       |    1 -
 .../openfovea/glade/stiffness_plot.glade           |    1 -
 .../dist-packages/openfovea/openfovea_gui.py       |    1 -
 .../dist-packages/openfovea/plot_generic.py        |    1 -
 .../python2.7/dist-packages/openfovea/plot_gtk.py  |    1 -
 .../dist-packages/openfovea/simple_window_gtk.py   |    1 -
 .../usr/share/applications/openfovea.desktop       |   10 -
 .../usr/share/doc/openfovea/changelog.Debian.gz    |  Bin 161 -> 0 bytes
 debian/openfovea/usr/share/doc/openfovea/copyright |   31 -
 debian/openfovea/usr/share/pixmaps/openfovea.png   |  Bin 5560 -> 0 bytes
 .../usr/share/pyshared/openfovea-0.1a160.egg-info  |   10 -
 .../share/pyshared/openfovea/Icon/CellFovea.ico    |  Bin 162408 -> 0 bytes
 .../share/pyshared/openfovea/Icon/CellFovea.png    |  Bin 28558 -> 0 bytes
 .../share/pyshared/openfovea/Icon/CellFovea.svg    | 3596 ---------------
 .../share/pyshared/openfovea/Icon/Export_curve.svg |   88 -
 .../usr/share/pyshared/openfovea/Icon/NoData.png   |  Bin 19043 -> 0 bytes
 .../usr/share/pyshared/openfovea/Icon/NoData.svg   |  335 --
 .../usr/share/pyshared/openfovea/Icon/event.ico    |  Bin 900 -> 0 bytes
 .../usr/share/pyshared/openfovea/Icon/event.png    |  Bin 352 -> 0 bytes
 .../usr/share/pyshared/openfovea/Icon/event.svg    |   72 -
 .../usr/share/pyshared/openfovea/Icon/export.ico   |  Bin 16958 -> 0 bytes
 .../usr/share/pyshared/openfovea/Icon/export.png   |  Bin 5929 -> 0 bytes
 .../usr/share/pyshared/openfovea/Icon/export.svg   |  375 --
 .../share/pyshared/openfovea/Icon/export_curve.ico |  Bin 900 -> 0 bytes
 .../share/pyshared/openfovea/Icon/export_curve.png |  Bin 361 -> 0 bytes
 .../share/pyshared/openfovea/Icon/icon64x64.svg    |  290 --
 .../share/pyshared/openfovea/Icon/openfovea.ico    |  Bin 16958 -> 0 bytes
 .../share/pyshared/openfovea/Icon/openfovea.png    |  Bin 5560 -> 0 bytes
 .../pyshared/openfovea/Icon/tomo_x_square.svg      |  187 -
 .../pyshared/openfovea/Icon/tomo_y_square.svg      |  173 -
 .../pyshared/openfovea/Icon/tomo_z_square.svg      |  183 -
 .../usr/share/pyshared/openfovea/Icon/two_evt.ico  |  Bin 900 -> 0 bytes
 .../usr/share/pyshared/openfovea/Icon/two_evt.png  |  Bin 377 -> 0 bytes
 .../usr/share/pyshared/openfovea/Icon/two_evt.svg  |   69 -
 .../usr/share/pyshared/openfovea/__init__.py       |    1 -
 .../usr/share/pyshared/openfovea/classes.py        | 2738 ------------
 .../usr/share/pyshared/openfovea/common.py         |    3 -
 .../openfovea/dialog_experiment_properties.py      |  267 --
 .../share/pyshared/openfovea/dialog_export_map.py  |  478 --
 .../usr/share/pyshared/openfovea/dialog_flatten.py |   93 -
 .../pyshared/openfovea/dialog_mask_properties.py   |  294 --
 .../pyshared/openfovea/fovea_toolbox/__init__.py   |    1 -
 .../pyshared/openfovea/fovea_toolbox/curve.py      | 1174 -----
 .../openfovea/fovea_toolbox/file_util/__init__.py  |    0
 .../openfovea/fovea_toolbox/file_util/aex.py       |  710 ---
 .../openfovea/fovea_toolbox/file_util/afm_file.py  |  353 --
 .../openfovea/fovea_toolbox/file_util/asylum.py    |  524 ---
 .../openfovea/fovea_toolbox/file_util/common.py    |  288 --
 .../openfovea/fovea_toolbox/file_util/csem.py      |   82 -
 .../openfovea/fovea_toolbox/file_util/jpk.py       | 1376 ------
 .../openfovea/fovea_toolbox/file_util/nanoscope.py |  305 --
 .../fovea_toolbox/file_util/succellus_import.py    |  323 --
 .../share/pyshared/openfovea/fovea_toolbox/misc.py |  365 --
 .../pyshared/openfovea/fovea_toolbox/opengl.py     |  689 ---
 .../pyshared/openfovea/fovea_toolbox/opengl_gtk.py |  115 -
 .../pyshared/openfovea/fovea_toolbox/post_proc.py  |  585 ---
 .../glade/dialog_experiment_properties.glade       |  771 ----
 .../pyshared/openfovea/glade/dialog_flatten.glade  |  142 -
 .../share/pyshared/openfovea/glade/openfovea.glade | 4628 --------------------
 .../usr/share/pyshared/openfovea/glade/plot.glade  |  104 -
 .../pyshared/openfovea/glade/stiffness_plot.glade  |  163 -
 .../usr/share/pyshared/openfovea/openfovea_gui.py  | 2990 -------------
 .../usr/share/pyshared/openfovea/plot_generic.py   | 2224 ----------
 .../usr/share/pyshared/openfovea/plot_gtk.py       |  702 ---
 .../share/pyshared/openfovea/simple_window_gtk.py  |   80 -
 124 files changed, 28218 deletions(-)

diff --git a/debian/files b/debian/files
deleted file mode 100644
index 3434bd1..0000000
--- a/debian/files
+++ /dev/null
@@ -1 +0,0 @@
-openfovea_0.1a160-1_all.deb science optional
diff --git a/debian/openfovea.debhelper.log b/debian/openfovea.debhelper.log
deleted file mode 100644
index ab80b3b..0000000
--- a/debian/openfovea.debhelper.log
+++ /dev/null
@@ -1,44 +0,0 @@
-dh_auto_configure
-dh_auto_build
-dh_auto_test
-dh_prep
-dh_installdirs
-dh_auto_install
-dh_install
-dh_installdocs
-dh_installchangelogs
-dh_installexamples
-dh_installman
-dh_installcatalogs
-dh_installcron
-dh_installdebconf
-dh_installemacsen
-dh_installifupdown
-dh_installinfo
-dh_installinit
-dh_installmenu
-dh_installmime
-dh_installmodules
-dh_installlogcheck
-dh_installlogrotate
-dh_installpam
-dh_installppp
-dh_installudev
-dh_installwm
-dh_installxfonts
-dh_installgsettings
-dh_bugfiles
-dh_ucf
-dh_lintian
-dh_gconf
-dh_icons
-dh_perl
-dh_usrlocal
-dh_link
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_builddeb
diff --git a/debian/openfovea.postinst.debhelper b/debian/openfovea.postinst.debhelper
deleted file mode 100644
index 831e641..0000000
--- a/debian/openfovea.postinst.debhelper
+++ /dev/null
@@ -1,7 +0,0 @@
-
-# Automatically added by dh_python2:
-if which pycompile >/dev/null 2>&1; then
-	pycompile -p openfovea 
-fi
-
-# End automatically added section
diff --git a/debian/openfovea.prerm.debhelper b/debian/openfovea.prerm.debhelper
deleted file mode 100644
index b42797d..0000000
--- a/debian/openfovea.prerm.debhelper
+++ /dev/null
@@ -1,12 +0,0 @@
-
-# Automatically added by dh_python2:
-if which pyclean >/dev/null 2>&1; then
-	pyclean -p openfovea 
-else
-	dpkg -L openfovea | grep \.py$ | while read file
-	do
-		rm -f "${file}"[co] >/dev/null
-  	done
-fi
-
-# End automatically added section
diff --git a/debian/openfovea.substvars b/debian/openfovea.substvars
deleted file mode 100644
index ca85ef2..0000000
--- a/debian/openfovea.substvars
+++ /dev/null
@@ -1,3 +0,0 @@
-python:Versions=2.7
-python:Depends=python2.7, python (>= 2.7), python (<< 2.8), python (>= 2.7.1-0ubuntu2), python
-misc:Depends=
diff --git a/debian/openfovea/DEBIAN/control b/debian/openfovea/DEBIAN/control
deleted file mode 100644
index be2fb64..0000000
--- a/debian/openfovea/DEBIAN/control
+++ /dev/null
@@ -1,14 +0,0 @@
-Package: openfovea
-Version: 0.1a160-1
-Architecture: all
-Maintainer: Debian Med Packaging Team <debian-med-packaging at lists.alioth.debian.org>
-Installed-Size: 1670
-Depends: python-numpy, python-scipy, python-matplotlib, python-gtk2, python-gtkglext1, python2.7, python (>= 2.7.1-0ubuntu2), python (<< 2.8)
-Section: science
-Priority: optional
-Homepage: http://www.freesbi.ch/en/openfovea
-Description: Postprocessing of force volume data acquired with AFM.
- OpenFovea is a software to postprocess AFM force volume experiment.
- It is able to compute the stiffness of the scanned area, detect unbinding event
- and the zero force topography. It comes with a user friendly graphical
- interface that allow the user to select and display the data.
diff --git a/debian/openfovea/DEBIAN/md5sums b/debian/openfovea/DEBIAN/md5sums
deleted file mode 100644
index 2f9cb22..0000000
--- a/debian/openfovea/DEBIAN/md5sums
+++ /dev/null
@@ -1,60 +0,0 @@
-e2a48e9ed676b77949a3d73c4961489a  usr/bin/openfovea
-d105bab6ddbff75f7eb23dc391987d3b  usr/share/applications/openfovea.desktop
-f498a2d23fcc11e8c0c632d587f3ac7f  usr/share/doc/openfovea/changelog.Debian.gz
-f186881da2651ceaf0a65ca99a271dc8  usr/share/doc/openfovea/copyright
-f3bc7d3ee380e5e63631e6070e2a7476  usr/share/pixmaps/openfovea.png
-70fa220fffd419ce6196b9d33c601ca4  usr/share/pyshared/openfovea-0.1a160.egg-info
-5e3e24be578d79ebf450ec89abaf1144  usr/share/pyshared/openfovea/Icon/CellFovea.ico
-bc2171d62a6055c2b35d40f09c1e133f  usr/share/pyshared/openfovea/Icon/CellFovea.png
-8a5483e77fff6aca67bf46392aa10c1b  usr/share/pyshared/openfovea/Icon/CellFovea.svg
-091444f89545dd66373092c1b7385441  usr/share/pyshared/openfovea/Icon/Export_curve.svg
-1d699c3cb21f34868e66f605f5cf4bc8  usr/share/pyshared/openfovea/Icon/NoData.png
-6474dea07661acd90f832565e8c1cd90  usr/share/pyshared/openfovea/Icon/NoData.svg
-9455c8f495de856c53f104c17323cafa  usr/share/pyshared/openfovea/Icon/event.ico
-c935f290ede818e0c9e47872efc1ab6d  usr/share/pyshared/openfovea/Icon/event.png
-a4bb1086d29e348133e4df1c350056a9  usr/share/pyshared/openfovea/Icon/event.svg
-76bbfac0de467ffe4eb1f1b5b0fe1d09  usr/share/pyshared/openfovea/Icon/export.ico
-849dce6decef8a02822e57addc09cf3c  usr/share/pyshared/openfovea/Icon/export.png
-825469ba09aeb4aa777ef6191b5f98ee  usr/share/pyshared/openfovea/Icon/export.svg
-28e0fc3f38c39bcb15fef2e15deae992  usr/share/pyshared/openfovea/Icon/export_curve.ico
-6795c44d1bd44708901d741cfaf36399  usr/share/pyshared/openfovea/Icon/export_curve.png
-b41ee2d40f74eb317de55654e4cc0ecd  usr/share/pyshared/openfovea/Icon/icon64x64.svg
-0363ab28c7ee3c28696bde7849fe0b47  usr/share/pyshared/openfovea/Icon/openfovea.ico
-f3bc7d3ee380e5e63631e6070e2a7476  usr/share/pyshared/openfovea/Icon/openfovea.png
-8a4067fb3a344a462571105098b93440  usr/share/pyshared/openfovea/Icon/tomo_x_square.svg
-e72480a861d00a4670af445ee6a743d0  usr/share/pyshared/openfovea/Icon/tomo_y_square.svg
-e3c57394ea948e1d1c74108c8bcebcb7  usr/share/pyshared/openfovea/Icon/tomo_z_square.svg
-c3f6d2e7256e888422ed6b1ba2afc470  usr/share/pyshared/openfovea/Icon/two_evt.ico
-e63d58f3e88af5ad8a97fcded0d5ca54  usr/share/pyshared/openfovea/Icon/two_evt.png
-15ca69624c548d3b0af901ac01e65a50  usr/share/pyshared/openfovea/Icon/two_evt.svg
-c253b75b67818235c1801e2215a576ed  usr/share/pyshared/openfovea/__init__.py
-8ae5b0dbe70ce07c572b6308493c38b0  usr/share/pyshared/openfovea/classes.py
-237e072eed5ae70d33dcea3bb42b4a66  usr/share/pyshared/openfovea/common.py
-3fb00e938b161d57790f35ba525785c1  usr/share/pyshared/openfovea/dialog_experiment_properties.py
-deb0347fd2b1a687640af82184a737a9  usr/share/pyshared/openfovea/dialog_export_map.py
-0ab13fec9ae8ca45a5cb435abc71c84a  usr/share/pyshared/openfovea/dialog_flatten.py
-e9788fff5fe1e9a90c2cf74cc6e34fc4  usr/share/pyshared/openfovea/dialog_mask_properties.py
-c253b75b67818235c1801e2215a576ed  usr/share/pyshared/openfovea/fovea_toolbox/__init__.py
-d38b1997d5493588dda902a4623910f9  usr/share/pyshared/openfovea/fovea_toolbox/curve.py
-d41d8cd98f00b204e9800998ecf8427e  usr/share/pyshared/openfovea/fovea_toolbox/file_util/__init__.py
-cf2e7bc6c284b7c6306c274670b5df0f  usr/share/pyshared/openfovea/fovea_toolbox/file_util/aex.py
-1ec22c2009833678f6b6bf3314d3bc32  usr/share/pyshared/openfovea/fovea_toolbox/file_util/afm_file.py
-c2e4616e21d7921f9ba43315d1a7b4a4  usr/share/pyshared/openfovea/fovea_toolbox/file_util/asylum.py
-4eeea9195faaed1aa2d86d3d6f18272b  usr/share/pyshared/openfovea/fovea_toolbox/file_util/common.py
-6e8c4fe02179b37aef2acb1c64d6622a  usr/share/pyshared/openfovea/fovea_toolbox/file_util/csem.py
-5d9b3e24731d9d26db7578ae61c80e6b  usr/share/pyshared/openfovea/fovea_toolbox/file_util/jpk.py
-88f936149583a35a1d40d0c6b0a799a4  usr/share/pyshared/openfovea/fovea_toolbox/file_util/nanoscope.py
-db0974887b66e859bf1bf0891b27059b  usr/share/pyshared/openfovea/fovea_toolbox/file_util/succellus_import.py
-fc847a44bb1d8858b9255bf5aa4f2f75  usr/share/pyshared/openfovea/fovea_toolbox/misc.py
-f829d0ad3ea107316d2d0eadbab704d2  usr/share/pyshared/openfovea/fovea_toolbox/opengl.py
-a9d94fb8631924fa6e32116bd3bbdbda  usr/share/pyshared/openfovea/fovea_toolbox/opengl_gtk.py
-b74ae77e052160c4362078056129e534  usr/share/pyshared/openfovea/fovea_toolbox/post_proc.py
-cd990ce108731dad114c8b738ec8b902  usr/share/pyshared/openfovea/glade/dialog_experiment_properties.glade
-cf16654aceb52ed2ff76e282925d5f52  usr/share/pyshared/openfovea/glade/dialog_flatten.glade
-e04936c0bc5d4ac8b54a0ff39bad26c9  usr/share/pyshared/openfovea/glade/openfovea.glade
-1fa80922449c9777dfda6ce00d8a36e8  usr/share/pyshared/openfovea/glade/plot.glade
-d37e6e27ddbe81233710e36584ab4e95  usr/share/pyshared/openfovea/glade/stiffness_plot.glade
-9fde39a300be82576dad2295a8a5276a  usr/share/pyshared/openfovea/openfovea_gui.py
-336e844de74de22176c3650aaaddba42  usr/share/pyshared/openfovea/plot_generic.py
-5821343ba637d211098fe4c00211e904  usr/share/pyshared/openfovea/plot_gtk.py
-f01283ad374ddbeb8610a875612dcea7  usr/share/pyshared/openfovea/simple_window_gtk.py
diff --git a/debian/openfovea/DEBIAN/postinst b/debian/openfovea/DEBIAN/postinst
deleted file mode 100755
index 670c3a2..0000000
--- a/debian/openfovea/DEBIAN/postinst
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# Automatically added by dh_python2:
-if which pycompile >/dev/null 2>&1; then
-	pycompile -p openfovea 
-fi
-
-# End automatically added section
diff --git a/debian/openfovea/DEBIAN/prerm b/debian/openfovea/DEBIAN/prerm
deleted file mode 100755
index 91a7630..0000000
--- a/debian/openfovea/DEBIAN/prerm
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-set -e
-
-# Automatically added by dh_python2:
-if which pyclean >/dev/null 2>&1; then
-	pyclean -p openfovea 
-else
-	dpkg -L openfovea | grep \.py$ | while read file
-	do
-		rm -f "${file}"[co] >/dev/null
-  	done
-fi
-
-# End automatically added section
diff --git a/debian/openfovea/usr/bin/openfovea b/debian/openfovea/usr/bin/openfovea
deleted file mode 100755
index 48b4df1..0000000
--- a/debian/openfovea/usr/bin/openfovea
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/python
-#
-import sys
-
-from openfovea import openfovea_gui
-
-if __name__ == '__main__':
-    if len(sys.argv) == 2:
-        arg = sys.argv[1]
-    else:
-        arg = None
-    openfovea_gui.main(arg)
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea-0.1a160.egg-info b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea-0.1a160.egg-info
deleted file mode 120000
index 434fc86..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea-0.1a160.egg-info
+++ /dev/null
@@ -1 +0,0 @@
-../../../share/pyshared/openfovea-0.1a160.egg-info
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/CellFovea.ico b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/CellFovea.ico
deleted file mode 120000
index e2dabde..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/CellFovea.ico
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/CellFovea.ico
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/CellFovea.png b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/CellFovea.png
deleted file mode 120000
index a0d39d7..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/CellFovea.png
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/CellFovea.png
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/CellFovea.svg b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/CellFovea.svg
deleted file mode 120000
index 95ef0d6..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/CellFovea.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/CellFovea.svg
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/Export_curve.svg b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/Export_curve.svg
deleted file mode 120000
index 37eb13f..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/Export_curve.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/Export_curve.svg
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/NoData.png b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/NoData.png
deleted file mode 120000
index e17837e..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/NoData.png
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/NoData.png
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/NoData.svg b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/NoData.svg
deleted file mode 120000
index 21cde54..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/NoData.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/NoData.svg
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/event.ico b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/event.ico
deleted file mode 120000
index d0d2757..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/event.ico
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/event.ico
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/event.png b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/event.png
deleted file mode 120000
index 6a61847..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/event.png
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/event.png
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/event.svg b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/event.svg
deleted file mode 120000
index a6131cc..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/event.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/event.svg
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export.ico b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export.ico
deleted file mode 120000
index a0d6526..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export.ico
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/export.ico
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export.png b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export.png
deleted file mode 120000
index a927096..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export.png
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/export.png
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export.svg b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export.svg
deleted file mode 120000
index ad09049..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/export.svg
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export_curve.ico b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export_curve.ico
deleted file mode 120000
index 0b0946c..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export_curve.ico
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/export_curve.ico
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export_curve.png b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export_curve.png
deleted file mode 120000
index 81316be..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/export_curve.png
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/export_curve.png
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/icon64x64.svg b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/icon64x64.svg
deleted file mode 120000
index 173fee7..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/icon64x64.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/icon64x64.svg
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/openfovea.ico b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/openfovea.ico
deleted file mode 120000
index 7a95ed4..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/openfovea.ico
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/openfovea.ico
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/openfovea.png b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/openfovea.png
deleted file mode 120000
index f761255..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/openfovea.png
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/openfovea.png
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/tomo_x_square.svg b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/tomo_x_square.svg
deleted file mode 120000
index deee776..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/tomo_x_square.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/tomo_x_square.svg
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/tomo_y_square.svg b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/tomo_y_square.svg
deleted file mode 120000
index 299b485..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/tomo_y_square.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/tomo_y_square.svg
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/tomo_z_square.svg b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/tomo_z_square.svg
deleted file mode 120000
index 91d3239..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/tomo_z_square.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/tomo_z_square.svg
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/two_evt.ico b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/two_evt.ico
deleted file mode 120000
index b4a2c8f..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/two_evt.ico
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/two_evt.ico
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/two_evt.png b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/two_evt.png
deleted file mode 120000
index 948ca22..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/two_evt.png
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/two_evt.png
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/two_evt.svg b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/two_evt.svg
deleted file mode 120000
index 9236026..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/Icon/two_evt.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/Icon/two_evt.svg
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/__init__.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/__init__.py
deleted file mode 120000
index 7c4c77a..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../share/pyshared/openfovea/__init__.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/classes.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/classes.py
deleted file mode 120000
index f9dc6da..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/classes.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../share/pyshared/openfovea/classes.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/common.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/common.py
deleted file mode 120000
index b9869b7..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/common.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../share/pyshared/openfovea/common.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_experiment_properties.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_experiment_properties.py
deleted file mode 120000
index 1e1b9dc..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_experiment_properties.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../share/pyshared/openfovea/dialog_experiment_properties.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_export_map.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_export_map.py
deleted file mode 120000
index a063869..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_export_map.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../share/pyshared/openfovea/dialog_export_map.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_flatten.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_flatten.py
deleted file mode 120000
index a14e7a7..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_flatten.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../share/pyshared/openfovea/dialog_flatten.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_mask_properties.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_mask_properties.py
deleted file mode 120000
index 9ccb259..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/dialog_mask_properties.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../share/pyshared/openfovea/dialog_mask_properties.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/__init__.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/__init__.py
deleted file mode 120000
index 66f48b4..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/fovea_toolbox/__init__.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/curve.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/curve.py
deleted file mode 120000
index 2bb1b79..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/curve.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/fovea_toolbox/curve.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/__init__.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/__init__.py
deleted file mode 120000
index 2225eb2..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../share/pyshared/openfovea/fovea_toolbox/file_util/__init__.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/aex.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/aex.py
deleted file mode 120000
index f48efb7..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/aex.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../share/pyshared/openfovea/fovea_toolbox/file_util/aex.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/afm_file.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/afm_file.py
deleted file mode 120000
index 293778c..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/afm_file.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../share/pyshared/openfovea/fovea_toolbox/file_util/afm_file.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/asylum.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/asylum.py
deleted file mode 120000
index 8ec4639..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/asylum.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../share/pyshared/openfovea/fovea_toolbox/file_util/asylum.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/common.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/common.py
deleted file mode 120000
index 6c317ef..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/common.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../share/pyshared/openfovea/fovea_toolbox/file_util/common.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/csem.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/csem.py
deleted file mode 120000
index 8dcf42f..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/csem.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../share/pyshared/openfovea/fovea_toolbox/file_util/csem.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/jpk.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/jpk.py
deleted file mode 120000
index bc1b5b8..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/jpk.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../share/pyshared/openfovea/fovea_toolbox/file_util/jpk.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/nanoscope.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/nanoscope.py
deleted file mode 120000
index 415b237..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/nanoscope.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../share/pyshared/openfovea/fovea_toolbox/file_util/nanoscope.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/succellus_import.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/succellus_import.py
deleted file mode 120000
index 04a4faa..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/file_util/succellus_import.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../share/pyshared/openfovea/fovea_toolbox/file_util/succellus_import.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/misc.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/misc.py
deleted file mode 120000
index ee4810f..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/misc.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/fovea_toolbox/misc.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/opengl.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/opengl.py
deleted file mode 120000
index e765001..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/opengl.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/fovea_toolbox/opengl.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/opengl_gtk.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/opengl_gtk.py
deleted file mode 120000
index 671907d..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/opengl_gtk.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/fovea_toolbox/opengl_gtk.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/post_proc.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/post_proc.py
deleted file mode 120000
index 74da3a7..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/fovea_toolbox/post_proc.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/fovea_toolbox/post_proc.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/dialog_experiment_properties.glade b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/dialog_experiment_properties.glade
deleted file mode 120000
index 3b3a77b..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/dialog_experiment_properties.glade
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/glade/dialog_experiment_properties.glade
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/dialog_flatten.glade b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/dialog_flatten.glade
deleted file mode 120000
index cda38ca..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/dialog_flatten.glade
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/glade/dialog_flatten.glade
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/openfovea.glade b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/openfovea.glade
deleted file mode 120000
index 8177a3b..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/openfovea.glade
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/glade/openfovea.glade
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/plot.glade b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/plot.glade
deleted file mode 120000
index 27474d7..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/plot.glade
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/glade/plot.glade
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/stiffness_plot.glade b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/stiffness_plot.glade
deleted file mode 120000
index d099fba..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/glade/stiffness_plot.glade
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../share/pyshared/openfovea/glade/stiffness_plot.glade
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/openfovea_gui.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/openfovea_gui.py
deleted file mode 120000
index 1143ccd..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/openfovea_gui.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../share/pyshared/openfovea/openfovea_gui.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/plot_generic.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/plot_generic.py
deleted file mode 120000
index 99b11ff..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/plot_generic.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../share/pyshared/openfovea/plot_generic.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/plot_gtk.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/plot_gtk.py
deleted file mode 120000
index a64f17a..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/plot_gtk.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../share/pyshared/openfovea/plot_gtk.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/simple_window_gtk.py b/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/simple_window_gtk.py
deleted file mode 120000
index 1145862..0000000
--- a/debian/openfovea/usr/lib/python2.7/dist-packages/openfovea/simple_window_gtk.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../../share/pyshared/openfovea/simple_window_gtk.py
\ No newline at end of file
diff --git a/debian/openfovea/usr/share/applications/openfovea.desktop b/debian/openfovea/usr/share/applications/openfovea.desktop
deleted file mode 100644
index fe76687..0000000
--- a/debian/openfovea/usr/share/applications/openfovea.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Version=0.1
-Terminal=false
-Exec=openfovea
-Icon=openfovea
-Type=Application
-Categories=Application;Education;Science;
-Name=OpenFovea
-Comment=Postprocess AFM force volume experiments
-Comment[fr]=Traiter des fichiers AFM en force volume
diff --git a/debian/openfovea/usr/share/doc/openfovea/changelog.Debian.gz b/debian/openfovea/usr/share/doc/openfovea/changelog.Debian.gz
deleted file mode 100644
index bb614ce..0000000
Binary files a/debian/openfovea/usr/share/doc/openfovea/changelog.Debian.gz and /dev/null differ
diff --git a/debian/openfovea/usr/share/doc/openfovea/copyright b/debian/openfovea/usr/share/doc/openfovea/copyright
deleted file mode 100644
index 3ab6b47..0000000
--- a/debian/openfovea/usr/share/doc/openfovea/copyright
+++ /dev/null
@@ -1,31 +0,0 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Upstream-Name: OpenFovea
-Upstream-Contact: Charles Roduit <charles.roduit at gmail.com>
-Source: https://launchpad.net/openfovea/+download
-
-Files: *
-Copyright: © 2008-2012 Charles Roduit <charles.roduit at gmail.com>
-License: GPL-3+
-
-Files: debian/*
-Copyright: © 2008-2012 Charles Roduit <charles.roduit at gmail.com>
-             2012 Andreas Tille <tille at debian.org>
-License: GPL-3+
-
-License: GPL-3+
-    This package is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3 of the License, or
-    (at your option) any later version.
- .
-    This package is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
- .
-    You should have received a copy of the GNU General Public License
-    along with this package; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
- .
- On Debian systems, the complete text of the GNU General
- Public License can be found in `/usr/share/common-licenses/GPL-3'.
diff --git a/debian/openfovea/usr/share/pixmaps/openfovea.png b/debian/openfovea/usr/share/pixmaps/openfovea.png
deleted file mode 100644
index df4e9b0..0000000
Binary files a/debian/openfovea/usr/share/pixmaps/openfovea.png and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea-0.1a160.egg-info b/debian/openfovea/usr/share/pyshared/openfovea-0.1a160.egg-info
deleted file mode 100644
index 17f0511..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea-0.1a160.egg-info
+++ /dev/null
@@ -1,10 +0,0 @@
-Metadata-Version: 1.0
-Name: openfovea
-Version: 0.1a160
-Summary: Postprocessing of force volume data acquired with AFM./nOpenFovea is a software to postprocess AFM force volume/nexperiment. It is able to compute the stiffness of the/nscanned area, detect unbinding event and the zero force/ntopography. It comes with a user friendly graphical interface/nthat allow the user to select and display the data.
-Home-page: http://www.freesbi.ch/openfovea
-Author: Charles Roduit
-Author-email: charles.roduit at gmail.com
-License: GNU Public License v3
-Description: UNKNOWN
-Platform: UNKNOWN
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/CellFovea.ico b/debian/openfovea/usr/share/pyshared/openfovea/Icon/CellFovea.ico
deleted file mode 100644
index b89cdb4..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/CellFovea.ico and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/CellFovea.png b/debian/openfovea/usr/share/pyshared/openfovea/Icon/CellFovea.png
deleted file mode 100644
index 89bd853..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/CellFovea.png and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/CellFovea.svg b/debian/openfovea/usr/share/pyshared/openfovea/Icon/CellFovea.svg
deleted file mode 100644
index f822956..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/Icon/CellFovea.svg
+++ /dev/null
@@ -1,3596 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="240.64737"
-   height="162.86655"
-   id="svg3213"
-   sodipodi:version="0.32"
-   inkscape:version="0.47 r22583"
-   sodipodi:docname="CellFovea.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0"
-   inkscape:export-filename="CellFovea.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs3215">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective669" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="2"
-     inkscape:cx="-77.612393"
-     inkscape:cy="59.39276"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="1680"
-     inkscape:window-height="975"
-     inkscape:window-x="0"
-     inkscape:window-y="25"
-     showgrid="false"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata3218">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer4"
-     inkscape:label="Bits"
-     transform="translate(-45.700655,-119.62301)">
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="131.42107"
-       y="228.63101"
-       id="text7323"><tspan
-         sodipodi:role="line"
-         id="tspan7325"
-         x="131.42107"
-         y="228.63101">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="223.06163"
-       y="270.31192"
-       id="text7327"><tspan
-         sodipodi:role="line"
-         id="tspan7329"
-         x="223.06163"
-         y="270.31192">0</tspan></text>
-    <text
-       id="text7331"
-       y="140.82446"
-       x="62.094151"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="140.82446"
-         x="62.094151"
-         id="tspan7333"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7335"
-       y="164.16061"
-       x="153.89981"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="164.16061"
-         x="153.89981"
-         id="tspan7337"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="251.19574"
-       y="160.35654"
-       id="text7339"><tspan
-         sodipodi:role="line"
-         id="tspan7341"
-         x="251.19574"
-         y="160.35654">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="107.87391"
-       y="272.68326"
-       id="text7343"><tspan
-         sodipodi:role="line"
-         id="tspan7345"
-         x="107.87391"
-         y="272.68326">0</tspan></text>
-    <text
-       id="text7347"
-       y="138.54355"
-       x="209.77827"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="138.54355"
-         x="209.77827"
-         id="tspan7349"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7351"
-       y="172.26157"
-       x="121.87239"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="172.26157"
-         x="121.87239"
-         id="tspan7353"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="184.1967"
-       y="222.21594"
-       id="text7355"><tspan
-         sodipodi:role="line"
-         id="tspan7357"
-         x="184.1967"
-         y="222.21594">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="64.094971"
-       y="211.85178"
-       id="text7359"><tspan
-         sodipodi:role="line"
-         id="tspan7361"
-         x="64.094971"
-         y="211.85178">0</tspan></text>
-    <text
-       id="text7363"
-       y="142.17252"
-       x="167.27603"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="142.17252"
-         x="167.27603"
-         id="tspan7365"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7367"
-       y="179.45569"
-       x="108.6289"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="179.45569"
-         x="108.6289"
-         id="tspan7369"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="196.16692"
-       y="243.49857"
-       id="text7371"><tspan
-         sodipodi:role="line"
-         id="tspan7373"
-         x="196.16692"
-         y="243.49857">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="241.46648"
-       y="148.81821"
-       id="text7375"><tspan
-         sodipodi:role="line"
-         id="tspan7377"
-         x="241.46648"
-         y="148.81821">0</tspan></text>
-    <text
-       id="text7379"
-       y="191.34015"
-       x="200.73746"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="191.34015"
-         x="200.73746"
-         id="tspan7381"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7383"
-       y="229.76044"
-       x="147.33078"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="229.76044"
-         x="147.33078"
-         id="tspan7385"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="267.31656"
-       y="247.83063"
-       id="text7387"><tspan
-         sodipodi:role="line"
-         id="tspan7389"
-         x="267.31656"
-         y="247.83063">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="189.32402"
-       y="233.61884"
-       id="text7391"><tspan
-         sodipodi:role="line"
-         id="tspan7393"
-         x="189.32402"
-         y="233.61884">0</tspan></text>
-    <text
-       id="text7395"
-       y="245.02402"
-       x="279.52615"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="245.02402"
-         x="279.52615"
-         id="tspan7397"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7399"
-       y="177.79987"
-       x="159.79971"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="177.79987"
-         x="159.79971"
-         id="tspan7401"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="230.61319"
-       y="216.32779"
-       id="text7403"><tspan
-         sodipodi:role="line"
-         id="tspan7405"
-         x="230.61319"
-         y="216.32779">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="184.16879"
-       y="245.44888"
-       id="text7407"><tspan
-         sodipodi:role="line"
-         id="tspan7409"
-         x="184.16879"
-         y="245.44888">0</tspan></text>
-    <text
-       id="text7411"
-       y="256.19821"
-       x="277.21558"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="256.19821"
-         x="277.21558"
-         id="tspan7413"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7415"
-       y="217.78836"
-       x="244.34319"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="217.78836"
-         x="244.34319"
-         id="tspan7417"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="161.53256"
-       y="203.74268"
-       id="text7419"><tspan
-         sodipodi:role="line"
-         id="tspan7421"
-         x="161.53256"
-         y="203.74268">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="193.90981"
-       y="252.92419"
-       id="text7423"><tspan
-         sodipodi:role="line"
-         id="tspan7425"
-         x="193.90981"
-         y="252.92419">0</tspan></text>
-    <text
-       id="text7427"
-       y="221.67325"
-       x="62.491062"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="221.67325"
-         x="62.491062"
-         id="tspan7429"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7431"
-       y="148.5636"
-       x="132.19785"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="148.5636"
-         x="132.19785"
-         id="tspan7433"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="201.76994"
-       y="233.55933"
-       id="text7435"><tspan
-         sodipodi:role="line"
-         id="tspan7437"
-         x="201.76994"
-         y="233.55933">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="94.649147"
-       y="250.63531"
-       id="text7439"><tspan
-         sodipodi:role="line"
-         id="tspan7441"
-         x="94.649147"
-         y="250.63531">0</tspan></text>
-    <text
-       id="text7443"
-       y="227.9404"
-       x="238.36919"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="227.9404"
-         x="238.36919"
-         id="tspan7445"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7447"
-       y="236.28308"
-       x="90.436417"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="236.28308"
-         x="90.436417"
-         id="tspan7449"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="269.03665"
-       y="175.63049"
-       id="text7451"><tspan
-         sodipodi:role="line"
-         id="tspan7453"
-         x="269.03665"
-         y="175.63049">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="68.647423"
-       y="170.26721"
-       id="text7455"><tspan
-         sodipodi:role="line"
-         id="tspan7457"
-         x="68.647423"
-         y="170.26721">0</tspan></text>
-    <text
-       id="text7459"
-       y="137.40594"
-       x="52.400578"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="137.40594"
-         x="52.400578"
-         id="tspan7461"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7463"
-       y="157.71948"
-       x="121.76649"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="157.71948"
-         x="121.76649"
-         id="tspan7465"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="131.57228"
-       y="253.93176"
-       id="text7467"><tspan
-         sodipodi:role="line"
-         id="tspan7469"
-         x="131.57228"
-         y="253.93176">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="95.258995"
-       y="188.83554"
-       id="text7471"><tspan
-         sodipodi:role="line"
-         id="tspan7473"
-         x="95.258995"
-         y="188.83554">0</tspan></text>
-    <text
-       id="text7475"
-       y="260.15335"
-       x="70.6194"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="260.15335"
-         x="70.6194"
-         id="tspan7477"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7479"
-       y="177.81973"
-       x="57.143078"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="177.81973"
-         x="57.143078"
-         id="tspan7481"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="70.99781"
-       y="145.83261"
-       id="text7483"><tspan
-         sodipodi:role="line"
-         id="tspan7485"
-         x="70.99781"
-         y="145.83261">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="124.69511"
-       y="218.29025"
-       id="text7487"><tspan
-         sodipodi:role="line"
-         id="tspan7489"
-         x="124.69511"
-         y="218.29025">0</tspan></text>
-    <text
-       id="text7491"
-       y="126.53004"
-       x="221.88689"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="126.53004"
-         x="221.88689"
-         id="tspan7493"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7495"
-       y="169.52927"
-       x="209.61615"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="169.52927"
-         x="209.61615"
-         id="tspan7497"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="268.06421"
-       y="213.08386"
-       id="text7499"><tspan
-         sodipodi:role="line"
-         id="tspan7501"
-         x="268.06421"
-         y="213.08386">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="103.32587"
-       y="238.55936"
-       id="text7503"><tspan
-         sodipodi:role="line"
-         id="tspan7505"
-         x="103.32587"
-         y="238.55936">0</tspan></text>
-    <text
-       id="text7507"
-       y="247.54709"
-       x="245.06923"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="247.54709"
-         x="245.06923"
-         id="tspan7509"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7511"
-       y="142.72232"
-       x="221.64601"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="142.72232"
-         x="221.64601"
-         id="tspan7513"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="88.418098"
-       y="224.23447"
-       id="text7515"><tspan
-         sodipodi:role="line"
-         id="tspan7517"
-         x="88.418098"
-         y="224.23447">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="211.20859"
-       y="182.65372"
-       id="text7519"><tspan
-         sodipodi:role="line"
-         id="tspan7521"
-         x="211.20859"
-         y="182.65372">0</tspan></text>
-    <text
-       id="text7523"
-       y="231.28979"
-       x="116.50174"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="231.28979"
-         x="116.50174"
-         id="tspan7525"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7527"
-       y="193.50485"
-       x="267.6705"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="193.50485"
-         x="267.6705"
-         id="tspan7529"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="199.69466"
-       y="219.73071"
-       id="text7531"><tspan
-         sodipodi:role="line"
-         id="tspan7533"
-         x="199.69466"
-         y="219.73071">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="125.50278"
-       y="137.23776"
-       id="text7535"><tspan
-         sodipodi:role="line"
-         id="tspan7537"
-         x="125.50278"
-         y="137.23776">0</tspan></text>
-    <text
-       id="text7539"
-       y="231.14621"
-       x="262.4632"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="231.14621"
-         x="262.4632"
-         id="tspan7541"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7543"
-       y="264.32819"
-       x="83.972054"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="264.32819"
-         x="83.972054"
-         id="tspan7545"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="154.86562"
-       y="214.05109"
-       id="text7547"><tspan
-         sodipodi:role="line"
-         id="tspan7549"
-         x="154.86562"
-         y="214.05109">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="256.22528"
-       y="275.93796"
-       id="text7551"><tspan
-         sodipodi:role="line"
-         id="tspan7553"
-         x="256.22528"
-         y="275.93796">0</tspan></text>
-    <text
-       id="text7555"
-       y="135.35281"
-       x="108.81109"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="135.35281"
-         x="108.81109"
-         id="tspan7557"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7559"
-       y="258.58734"
-       x="106.2802"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="258.58734"
-         x="106.2802"
-         id="tspan7561"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="277.11206"
-       y="268.27054"
-       id="text7563"><tspan
-         sodipodi:role="line"
-         id="tspan7565"
-         x="277.11206"
-         y="268.27054">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="174.5488"
-       y="175.61255"
-       id="text7567"><tspan
-         sodipodi:role="line"
-         id="tspan7569"
-         x="174.5488"
-         y="175.61255">0</tspan></text>
-    <text
-       id="text7571"
-       y="134.92068"
-       x="152.73569"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="134.92068"
-         x="152.73569"
-         id="tspan7573"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7575"
-       y="207.51483"
-       x="113.5559"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="207.51483"
-         x="113.5559"
-         id="tspan7577"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="134.77467"
-       y="175.8103"
-       id="text7579"><tspan
-         sodipodi:role="line"
-         id="tspan7581"
-         x="134.77467"
-         y="175.8103">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="120.65469"
-       y="124.00263"
-       id="text7583"><tspan
-         sodipodi:role="line"
-         id="tspan7585"
-         x="120.65469"
-         y="124.00263">0</tspan></text>
-    <text
-       id="text7587"
-       y="174.66803"
-       x="78.980545"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="174.66803"
-         x="78.980545"
-         id="tspan7589"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7591"
-       y="247.42282"
-       x="67.847542"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="247.42282"
-         x="67.847542"
-         id="tspan7593"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="234.17882"
-       y="268.25302"
-       id="text7595"><tspan
-         sodipodi:role="line"
-         id="tspan7597"
-         x="234.17882"
-         y="268.25302">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="81.596985"
-       y="139.26016"
-       id="text7599"><tspan
-         sodipodi:role="line"
-         id="tspan7601"
-         x="81.596985"
-         y="139.26016">0</tspan></text>
-    <text
-       id="text7603"
-       y="172.61575"
-       x="243.68694"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="172.61575"
-         x="243.68694"
-         id="tspan7605"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7607"
-       y="124.4159"
-       x="204.99699"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="124.4159"
-         x="204.99699"
-         id="tspan7609"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="185.714"
-       y="167.75403"
-       id="text7611"><tspan
-         sodipodi:role="line"
-         id="tspan7613"
-         x="185.714"
-         y="167.75403">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="58.348816"
-       y="165.0242"
-       id="text7615"><tspan
-         sodipodi:role="line"
-         id="tspan7617"
-         x="58.348816"
-         y="165.0242">0</tspan></text>
-    <text
-       id="text7619"
-       y="246.27271"
-       x="110.42152"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="246.27271"
-         x="110.42152"
-         id="tspan7621"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7623"
-       y="270.323"
-       x="62.909519"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="270.323"
-         x="62.909519"
-         id="tspan7625"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="237.15057"
-       y="124.3672"
-       id="text7627"><tspan
-         sodipodi:role="line"
-         id="tspan7629"
-         x="237.15057"
-         y="124.3672">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="270.89532"
-       y="146.11148"
-       id="text7631"><tspan
-         sodipodi:role="line"
-         id="tspan7633"
-         x="270.89532"
-         y="146.11148">0</tspan></text>
-    <text
-       id="text7635"
-       y="160.84805"
-       x="239.36745"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="160.84805"
-         x="239.36745"
-         id="tspan7637"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7639"
-       y="264.9032"
-       x="172.15738"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="264.9032"
-         x="172.15738"
-         id="tspan7641"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="81.674652"
-       y="126.24647"
-       id="text7643"><tspan
-         sodipodi:role="line"
-         id="tspan7645"
-         x="81.674652"
-         y="126.24647">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="123.13406"
-       y="268.15717"
-       id="text7647"><tspan
-         sodipodi:role="line"
-         id="tspan7649"
-         x="123.13406"
-         y="268.15717">0</tspan></text>
-    <text
-       id="text7651"
-       y="195.62305"
-       x="109.57259"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="195.62305"
-         x="109.57259"
-         id="tspan7653"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7655"
-       y="211.34879"
-       x="186.72392"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="211.34879"
-         x="186.72392"
-         id="tspan7657"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="100.37601"
-       y="157.28885"
-       id="text7659"><tspan
-         sodipodi:role="line"
-         id="tspan7661"
-         x="100.37601"
-         y="157.28885">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="278.1217"
-       y="133.47122"
-       id="text7663"><tspan
-         sodipodi:role="line"
-         id="tspan7665"
-         x="278.1217"
-         y="133.47122">0</tspan></text>
-    <text
-       id="text7667"
-       y="138.38715"
-       x="232.15355"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="138.38715"
-         x="232.15355"
-         id="tspan7669"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7671"
-       y="208.06494"
-       x="72.864136"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="208.06494"
-         x="72.864136"
-         id="tspan7673"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="135.18149"
-       y="198.08893"
-       id="text7675"><tspan
-         sodipodi:role="line"
-         id="tspan7677"
-         x="135.18149"
-         y="198.08893">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="188.43085"
-       y="183.0831"
-       id="text7679"><tspan
-         sodipodi:role="line"
-         id="tspan7681"
-         x="188.43085"
-         y="183.0831">0</tspan></text>
-    <text
-       id="text7683"
-       y="154.85855"
-       x="227.39803"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="154.85855"
-         x="227.39803"
-         id="tspan7685"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7687"
-       y="239.40295"
-       x="235.49475"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="239.40295"
-         x="235.49475"
-         id="tspan7689"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="188.15451"
-       y="124.07832"
-       id="text7691"><tspan
-         sodipodi:role="line"
-         id="tspan7693"
-         x="188.15451"
-         y="124.07832">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="239.5519"
-       y="207.20532"
-       id="text7695"><tspan
-         sodipodi:role="line"
-         id="tspan7697"
-         x="239.5519"
-         y="207.20532">0</tspan></text>
-    <text
-       id="text7699"
-       y="146.14432"
-       x="255.6631"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="146.14432"
-         x="255.6631"
-         id="tspan7701"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7703"
-       y="164.67694"
-       x="270.41199"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="164.67694"
-         x="270.41199"
-         id="tspan7705"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="255.41878"
-       y="194.40753"
-       id="text7707"><tspan
-         sodipodi:role="line"
-         id="tspan7709"
-         x="255.41878"
-         y="194.40753">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="205.46326"
-       y="264.65891"
-       id="text7711"><tspan
-         sodipodi:role="line"
-         id="tspan7713"
-         x="205.46326"
-         y="264.65891">0</tspan></text>
-    <text
-       id="text7715"
-       y="254.12766"
-       x="203.73886"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="254.12766"
-         x="203.73886"
-         id="tspan7717"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7719"
-       y="153.10153"
-       x="79.12059"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="153.10153"
-         x="79.12059"
-         id="tspan7721"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="82.240837"
-       y="213.31952"
-       id="text7723"><tspan
-         sodipodi:role="line"
-         id="tspan7725"
-         x="82.240837"
-         y="213.31952">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="139.58028"
-       y="138.88788"
-       id="text7727"><tspan
-         sodipodi:role="line"
-         id="tspan7729"
-         x="139.58028"
-         y="138.88788">0</tspan></text>
-    <text
-       id="text7731"
-       y="207.01096"
-       x="203.29869"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="207.01096"
-         x="203.29869"
-         id="tspan7733"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7735"
-       y="229.10562"
-       x="54.580288"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="229.10562"
-         x="54.580288"
-         id="tspan7737"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="128.86438"
-       y="186.3273"
-       id="text7739"><tspan
-         sodipodi:role="line"
-         id="tspan7741"
-         x="128.86438"
-         y="186.3273">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="251.71045"
-       y="226.49323"
-       id="text7743"><tspan
-         sodipodi:role="line"
-         id="tspan7745"
-         x="251.71045"
-         y="226.49323">0</tspan></text>
-    <text
-       id="text7747"
-       y="259.50558"
-       x="267.04922"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="259.50558"
-         x="267.04922"
-         id="tspan7749"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7751"
-       y="165.45895"
-       x="142.70377"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="165.45895"
-         x="142.70377"
-         id="tspan7753"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="218.15103"
-       y="205.93649"
-       id="text7755"><tspan
-         sodipodi:role="line"
-         id="tspan7757"
-         x="218.15103"
-         y="205.93649">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="257.78766"
-       y="263.67184"
-       id="text7759"><tspan
-         sodipodi:role="line"
-         id="tspan7761"
-         x="257.78766"
-         y="263.67184">0</tspan></text>
-    <text
-       id="text7763"
-       y="278.85159"
-       x="92.469254"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="278.85159"
-         x="92.469254"
-         id="tspan7765"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7767"
-       y="214.56992"
-       x="52.940365"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="214.56992"
-         x="52.940365"
-         id="tspan7769"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="211.85077"
-       y="196.25562"
-       id="text7771"><tspan
-         sodipodi:role="line"
-         id="tspan7773"
-         x="211.85077"
-         y="196.25562">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="148.51263"
-       y="177.56439"
-       id="text7775"><tspan
-         sodipodi:role="line"
-         id="tspan7777"
-         x="148.51263"
-         y="177.56439">0</tspan></text>
-    <text
-       id="text7779"
-       y="168.66425"
-       x="232.2695"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="168.66425"
-         x="232.2695"
-         id="tspan7781"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7783"
-       y="158.5563"
-       x="68.976707"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="158.5563"
-         x="68.976707"
-         id="tspan7785"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="134.01878"
-       y="209.83325"
-       id="text7787"><tspan
-         sodipodi:role="line"
-         id="tspan7789"
-         x="134.01878"
-         y="209.83325">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="87.222809"
-       y="163.51364"
-       id="text7791"><tspan
-         sodipodi:role="line"
-         id="tspan7793"
-         x="87.222809"
-         y="163.51364">0</tspan></text>
-    <text
-       id="text7795"
-       y="245.26587"
-       x="146.75023"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="245.26587"
-         x="146.75023"
-         id="tspan7797"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7799"
-       y="218.09555"
-       x="215.00714"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="218.09555"
-         x="215.00714"
-         id="tspan7801"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="175.84486"
-       y="202.78647"
-       id="text7803"><tspan
-         sodipodi:role="line"
-         id="tspan7805"
-         x="175.84486"
-         y="202.78647">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="166.60945"
-       y="189.87643"
-       id="text7807"><tspan
-         sodipodi:role="line"
-         id="tspan7809"
-         x="166.60945"
-         y="189.87643">0</tspan></text>
-    <text
-       id="text7811"
-       y="155.73206"
-       x="174.52493"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="155.73206"
-         x="174.52493"
-         id="tspan7813"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7815"
-       y="147.48669"
-       x="52.792706"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="147.48669"
-         x="52.792706"
-         id="tspan7817"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="160.22496"
-       y="236.4252"
-       id="text7819"><tspan
-         sodipodi:role="line"
-         id="tspan7821"
-         x="160.22496"
-         y="236.4252">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="105.15429"
-       y="123.04322"
-       id="text7823"><tspan
-         sodipodi:role="line"
-         id="tspan7825"
-         x="105.15429"
-         y="123.04322">0</tspan></text>
-    <text
-       id="text7827"
-       y="201.86539"
-       x="98.401131"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="201.86539"
-         x="98.401131"
-         id="tspan7829"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7831"
-       y="248.95572"
-       x="80.990288"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="248.95572"
-         x="80.990288"
-         id="tspan7833"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="143.98083"
-       y="256.83417"
-       id="text7835"><tspan
-         sodipodi:role="line"
-         id="tspan7837"
-         x="143.98083"
-         y="256.83417">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="186.36455"
-       y="257.64389"
-       id="text7839"><tspan
-         sodipodi:role="line"
-         id="tspan7841"
-         x="186.36455"
-         y="257.64389">0</tspan></text>
-    <text
-       id="text7843"
-       y="221.50293"
-       x="263.09351"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="221.50293"
-         x="263.09351"
-         id="tspan7845"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7847"
-       y="260.75845"
-       x="214.45547"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="260.75845"
-         x="214.45547"
-         id="tspan7849"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="45.899574"
-       y="188.49945"
-       id="text7851"><tspan
-         sodipodi:role="line"
-         id="tspan7853"
-         x="45.899574"
-         y="188.49945">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="56.529663"
-       y="243.39795"
-       id="text7855"><tspan
-         sodipodi:role="line"
-         id="tspan7857"
-         x="56.529663"
-         y="243.39795">0</tspan></text>
-    <text
-       id="text7859"
-       y="191.96484"
-       x="153.80205"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="191.96484"
-         x="153.80205"
-         id="tspan7861"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7863"
-       y="269.5448"
-       x="246.4796"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="269.5448"
-         x="246.4796"
-         id="tspan7865"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="55.995922"
-       y="257.84549"
-       id="text7867"><tspan
-         sodipodi:role="line"
-         id="tspan7869"
-         x="55.995922"
-         y="257.84549">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="171.88618"
-       y="241.60095"
-       id="text7871"><tspan
-         sodipodi:role="line"
-         id="tspan7873"
-         x="171.88618"
-         y="241.60095">0</tspan></text>
-    <text
-       id="text7875"
-       y="190.3486"
-       x="179.25259"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="190.3486"
-         x="179.25259"
-         id="tspan7877"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7879"
-       y="235.20984"
-       x="78.651352"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="235.20984"
-         x="78.651352"
-         id="tspan7881"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="84.658546"
-       y="200.48074"
-       id="text7883"><tspan
-         sodipodi:role="line"
-         id="tspan7885"
-         x="84.658546"
-         y="200.48074">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="263.55734"
-       y="203.3121"
-       id="text7887"><tspan
-         sodipodi:role="line"
-         id="tspan7889"
-         x="263.55734"
-         y="203.3121">0</tspan></text>
-    <text
-       id="text7891"
-       y="222.24011"
-       x="74.2994"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="222.24011"
-         x="74.2994"
-         id="tspan7893"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7895"
-       y="149.39575"
-       x="201.1241"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="149.39575"
-         x="201.1241"
-         id="tspan7897"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="273.68958"
-       y="225.88272"
-       id="text7899"><tspan
-         sodipodi:role="line"
-         id="tspan7901"
-         x="273.68958"
-         y="225.88272">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="248.6011"
-       y="183.89633"
-       id="text7903"><tspan
-         sodipodi:role="line"
-         id="tspan7905"
-         x="248.6011"
-         y="183.89633">0</tspan></text>
-    <text
-       id="text7907"
-       y="238.90292"
-       x="257.16061"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="238.90292"
-         x="257.16061"
-         id="tspan7909"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7911"
-       y="185.04776"
-       x="274.09634"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="185.04776"
-         x="274.09634"
-         id="tspan7913"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="145.54854"
-       y="204.84641"
-       id="text7915"><tspan
-         sodipodi:role="line"
-         id="tspan7917"
-         x="145.54854"
-         y="204.84641">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="257.12903"
-       y="171.76752"
-       id="text7919"><tspan
-         sodipodi:role="line"
-         id="tspan7921"
-         x="257.12903"
-         y="171.76752">0</tspan></text>
-    <text
-       id="text7923"
-       y="201.78888"
-       x="124.00615"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="201.78888"
-         x="124.00615"
-         id="tspan7925"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7927"
-       y="211.39737"
-       x="92.151649"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="211.39737"
-         x="92.151649"
-         id="tspan7929"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="123.71606"
-       y="241.91376"
-       id="text7931"><tspan
-         sodipodi:role="line"
-         id="tspan7933"
-         x="123.71606"
-         y="241.91376">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="229.65138"
-       y="199.33151"
-       id="text7935"><tspan
-         sodipodi:role="line"
-         id="tspan7937"
-         x="229.65138"
-         y="199.33151">0</tspan></text>
-    <text
-       id="text7939"
-       y="171.31924"
-       x="221.04245"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="171.31924"
-         x="221.04245"
-         id="tspan7941"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7943"
-       y="252.89844"
-       x="232.88243"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="252.89844"
-         x="232.88243"
-         id="tspan7945"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="58.925636"
-       y="189.922"
-       id="text7947"><tspan
-         sodipodi:role="line"
-         id="tspan7949"
-         x="58.925636"
-         y="189.922">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="161.15739"
-       y="223.89349"
-       id="text7951"><tspan
-         sodipodi:role="line"
-         id="tspan7953"
-         x="161.15739"
-         y="223.89349">0</tspan></text>
-    <text
-       id="text7955"
-       y="152.68649"
-       x="188.14098"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="152.68649"
-         x="188.14098"
-         id="tspan7957"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7959"
-       y="205.10791"
-       x="250.53149"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="205.10791"
-         x="250.53149"
-         id="tspan7961"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="112.12592"
-       y="219.80997"
-       id="text7963"><tspan
-         sodipodi:role="line"
-         id="tspan7965"
-         x="112.12592"
-         y="219.80997">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="257.03229"
-       y="250.08038"
-       id="text7967"><tspan
-         sodipodi:role="line"
-         id="tspan7969"
-         x="257.03229"
-         y="250.08038">0</tspan></text>
-    <text
-       id="text7971"
-       y="194.43082"
-       x="242.23183"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="194.43082"
-         x="242.23183"
-         id="tspan7973"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7975"
-       y="265.25623"
-       x="96.08268"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="265.25623"
-         x="96.08268"
-         id="tspan7977"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="145.5961"
-       y="150.26752"
-       id="text7979"><tspan
-         sodipodi:role="line"
-         id="tspan7981"
-         x="145.5961"
-         y="150.26752">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="225.21077"
-       y="244.55939"
-       id="text7983"><tspan
-         sodipodi:role="line"
-         id="tspan7985"
-         x="225.21077"
-         y="244.55939">0</tspan></text>
-    <text
-       id="text7987"
-       y="227.19022"
-       x="102.21632"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="227.19022"
-         x="102.21632"
-         id="tspan7989"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text7991"
-       y="260.3157"
-       x="155.493"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="260.3157"
-         x="155.493"
-         id="tspan7993"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="142.62978"
-       y="189.1004"
-       id="text7995"><tspan
-         sodipodi:role="line"
-         id="tspan7997"
-         x="142.62978"
-         y="189.1004">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="93.911186"
-       y="133.0596"
-       id="text7999"><tspan
-         sodipodi:role="line"
-         id="tspan8001"
-         x="93.911186"
-         y="133.0596">0</tspan></text>
-    <text
-       id="text8003"
-       y="157.52823"
-       x="262.21701"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="157.52823"
-         x="262.21701"
-         id="tspan8005"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text8007"
-       y="123.38465"
-       x="252.02077"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="123.38465"
-         x="252.02077"
-         id="tspan8009"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="180.50484"
-       y="265.0802"
-       id="text8011"><tspan
-         sodipodi:role="line"
-         id="tspan8013"
-         x="180.50484"
-         y="265.0802">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="261.14484"
-       y="183.65457"
-       id="text8015"><tspan
-         sodipodi:role="line"
-         id="tspan8017"
-         x="261.14484"
-         y="183.65457">0</tspan></text>
-    <text
-       id="text8019"
-       y="253.15482"
-       x="174.89355"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="253.15482"
-         x="174.89355"
-         id="tspan8021"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text8023"
-       y="187.90659"
-       x="81.396645"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="187.90659"
-         x="81.396645"
-         id="tspan8025"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="140.51141"
-       y="220.24677"
-       id="text8027"><tspan
-         sodipodi:role="line"
-         id="tspan8029"
-         x="140.51141"
-         y="220.24677">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="247.1368"
-       y="236.3717"
-       id="text8031"><tspan
-         sodipodi:role="line"
-         id="tspan8033"
-         x="247.1368"
-         y="236.3717">0</tspan></text>
-    <text
-       id="text8035"
-       y="255.28009"
-       x="118.72974"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="255.28009"
-         x="118.72974"
-         id="tspan8037"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text8039"
-       y="136.74268"
-       x="194.19891"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="136.74268"
-         x="194.19891"
-         id="tspan8041"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       id="text9133"
-       y="275.62961"
-       x="76.741791"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="275.62961"
-         x="76.741791"
-         id="tspan9135"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="136.49042"
-       y="239.63364"
-       id="text9137"><tspan
-         sodipodi:role="line"
-         id="tspan9139"
-         x="136.49042"
-         y="239.63364">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="174.03481"
-       y="228.57138"
-       id="text9141"><tspan
-         sodipodi:role="line"
-         id="tspan9143"
-         x="174.03481"
-         y="228.57138">0</tspan></text>
-    <text
-       id="text9145"
-       y="187.03268"
-       x="222.60555"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="187.03268"
-         x="222.60555"
-         id="tspan9147"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       id="text9149"
-       y="147.64297"
-       x="113.30415"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="147.64297"
-         x="113.30415"
-         id="tspan9151"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text9153"
-       y="227.30307"
-       x="210.40755"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="227.30307"
-         x="210.40755"
-         id="tspan9155"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="198.20656"
-       y="176.41068"
-       id="text9157"><tspan
-         sodipodi:role="line"
-         id="tspan9159"
-         x="198.20656"
-         y="176.41068">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="160.35732"
-       y="247.80856"
-       id="text9161"><tspan
-         sodipodi:role="line"
-         id="tspan9163"
-         x="160.35732"
-         y="247.80856">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="165.33409"
-       y="165.22528"
-       id="text9165"><tspan
-         sodipodi:role="line"
-         id="tspan9167"
-         x="165.33409"
-         y="165.22528">1</tspan></text>
-    <text
-       id="text9169"
-       y="198.93561"
-       x="190.03622"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="198.93561"
-         x="190.03622"
-         id="tspan9171"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="89.460587"
-       y="177.40625"
-       id="text9173"><tspan
-         sodipodi:role="line"
-         id="tspan9175"
-         x="89.460587"
-         y="177.40625">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="266.65631"
-       y="272.81451"
-       id="text9177"><tspan
-         sodipodi:role="line"
-         id="tspan9179"
-         x="266.65631"
-         y="272.81451">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="165.15221"
-       y="258.10254"
-       id="text9181"><tspan
-         sodipodi:role="line"
-         id="tspan9183"
-         x="165.15221"
-         y="258.10254">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="250.07803"
-       y="257.96936"
-       id="text9185"><tspan
-         sodipodi:role="line"
-         id="tspan9187"
-         x="250.07803"
-         y="257.96936">1</tspan></text>
-    <text
-       id="text9189"
-       y="215.28748"
-       x="101.39529"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="215.28748"
-         x="101.39529"
-         id="tspan9191"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text9193"
-       y="147.22446"
-       x="89.888008"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="147.22446"
-         x="89.888008"
-         id="tspan9195"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="170.1925"
-       y="215.29181"
-       id="text9197"><tspan
-         sodipodi:role="line"
-         id="tspan9199"
-         x="170.1925"
-         y="215.29181">0</tspan></text>
-    <text
-       id="text9201"
-       y="151.06677"
-       x="159.22986"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="151.06677"
-         x="159.22986"
-         id="tspan9203"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="180.66072"
-       y="139.30685"
-       id="text9205"><tspan
-         sodipodi:role="line"
-         id="tspan9207"
-         x="180.66072"
-         y="139.30685">0</tspan></text>
-    <text
-       id="text9209"
-       y="154.93866"
-       x="214.17307"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="154.93866"
-         x="214.17307"
-         id="tspan9211"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text9213"
-       y="233.5549"
-       x="66.344627"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="233.5549"
-         x="66.344627"
-         id="tspan9215"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text9217"
-       y="236.38675"
-       x="46.764381"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="236.38675"
-         x="46.764381"
-         id="tspan9219"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text9221"
-       y="262.53342"
-       x="196.27524"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="262.53342"
-         x="196.27524"
-         id="tspan9223"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="200.04375"
-       y="162.34601"
-       id="text9225"><tspan
-         sodipodi:role="line"
-         id="tspan9227"
-         x="200.04375"
-         y="162.34601">1</tspan></text>
-    <text
-       id="text9229"
-       y="237.20163"
-       x="269.33759"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="237.20163"
-         x="269.33759"
-         id="tspan9231"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text9233"
-       y="144.66498"
-       x="101.35098"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="144.66498"
-         x="101.35098"
-         id="tspan9235"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="224.51021"
-       y="258.67438"
-       id="text9237"><tspan
-         sodipodi:role="line"
-         id="tspan9239"
-         x="224.51021"
-         y="258.67438">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="118.31021"
-       y="186.60919"
-       id="text9241"><tspan
-         sodipodi:role="line"
-         id="tspan9243"
-         x="118.31021"
-         y="186.60919">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="110.93532"
-       y="163.6601"
-       id="text9245"><tspan
-         sodipodi:role="line"
-         id="tspan9247"
-         x="110.93532"
-         y="163.6601">1</tspan></text>
-    <text
-       id="text9249"
-       y="133.39905"
-       x="262.76294"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="133.39905"
-         x="262.76294"
-         id="tspan9251"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       id="text9253"
-       y="195.44809"
-       x="70.369133"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="195.44809"
-         x="70.369133"
-         id="tspan9255"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       id="text9257"
-       y="213.84482"
-       x="255.71587"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="213.84482"
-         x="255.71587"
-         id="tspan9259"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="137.7946"
-       y="124.68156"
-       id="text9261"><tspan
-         sodipodi:role="line"
-         id="tspan9263"
-         x="137.7946"
-         y="124.68156">0</tspan></text>
-    <text
-       id="text9265"
-       y="201.82272"
-       x="56.023602"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="201.82272"
-         x="56.023602"
-         id="tspan9267"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       id="text9269"
-       y="160.70361"
-       x="131.81258"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="160.70361"
-         x="131.81258"
-         id="tspan9271"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       id="text9273"
-       y="236.68692"
-       x="214.94283"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="236.68692"
-         x="214.94283"
-         id="tspan9275"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       id="text9277"
-       y="182.85999"
-       x="69.354774"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="182.85999"
-         x="69.354774"
-         id="tspan9279"
-         sodipodi:role="line">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="99.148666"
-       y="170.15384"
-       id="text9281"><tspan
-         sodipodi:role="line"
-         id="tspan9283"
-         x="99.148666"
-         y="170.15384">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="215.68773"
-       y="249.82095"
-       id="text9285"><tspan
-         sodipodi:role="line"
-         id="tspan9287"
-         x="215.68773"
-         y="249.82095">0</tspan></text>
-    <text
-       id="text9289"
-       y="228.98578"
-       x="225.24254"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="228.98578"
-         x="225.24254"
-         id="tspan9291"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="247.55975"
-       y="135.91595"
-       id="text9293"><tspan
-         sodipodi:role="line"
-         id="tspan9295"
-         x="247.55975"
-         y="135.91595">1</tspan></text>
-    <text
-       id="text9297"
-       y="133.06812"
-       x="71.292046"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       xml:space="preserve"><tspan
-         y="133.06812"
-         x="71.292046"
-         id="tspan9299"
-         sodipodi:role="line">0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="233.8558"
-       y="181.68958"
-       id="text9301"><tspan
-         sodipodi:role="line"
-         id="tspan9303"
-         x="233.8558"
-         y="181.68958">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="61.191753"
-       y="152.93503"
-       id="text9305"><tspan
-         sodipodi:role="line"
-         id="tspan9307"
-         x="61.191753"
-         y="152.93503">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="240.61885"
-       y="259.27277"
-       id="text9309"><tspan
-         sodipodi:role="line"
-         id="tspan9311"
-         x="240.61885"
-         y="259.27277">1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:4.60828304px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="206.93533"
-       y="243.84409"
-       id="text9313"><tspan
-         sodipodi:role="line"
-         id="tspan9315"
-         x="206.93533"
-         y="243.84409">0</tspan></text>
-  </g>
-  <g
-     inkscape:label="Fovea"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(-45.700655,-119.62301)">
-    <path
-       style="fill:#dca958;fill-opacity:1;stroke:#cd8d2b;stroke-width:0.76804715;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 46.648158,209.94851 L 80.210466,209.94851 C 87.298224,209.81407 99.75468,251.13536 114.35844,251.12768 C 128.37654,251.12001 140.34494,210.10691 147.92075,209.94851 L 181.65459,209.94851 L 181.65459,281.48257 L 46.648158,281.48257 L 46.648158,209.94851 z"
-       id="rect2851"
-       sodipodi:nodetypes="cczccccc" />
-    <g
-       id="g2647"
-       transform="translate(-105,-83)">
-      <g
-         transform="matrix(0.3840236,0,0,0.3840236,103.53412,157.89079)"
-         id="g5910">
-        <path
-           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="M 142.43151,459.90771 C 141.14867,459.79597 139.08492,460.97504 139.65359,462.93817 C 140.23148,464.93313 141.59315,461.6746 140.4112,485.6666 C 140.2676,488.58138 137.75956,490.40169 137.38075,494.2529 C 137.00195,498.10411 138.58031,494.18977 138.51717,510.41534 C 138.47467,521.33918 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,517.23242 141.80016,504.73323 C 141.81446,498.03027 145.08316,494.94738 145.20943,491.47498 C 145.3 [...]
-           id="path3266"
-           sodipodi:nodetypes="cssssccsssss" />
-        <path
-           sodipodi:nodetypes="cssssccsssss"
-           id="path3268"
-           d="M 150.00765,459.40263 C 148.72481,459.29089 146.66106,460.46996 147.22973,462.43309 C 147.80762,464.42805 148.15914,462.43221 147.98734,477.0803 C 147.95426,479.99843 145.3357,481.81539 144.95689,485.6666 C 144.57809,489.51781 146.15645,485.60347 146.09331,501.82904 C 146.05081,512.75288 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.35018,508.64612 149.3763,496.14693 C 149.3906,489.44397 152.6593,486.36108 152.78557,482.88868 C 152. [...]
-           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-        <g
-           id="g4159">
-          <g
-             id="g4151">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path3270"
-               d="M 142.43151,459.90771 C 141.14867,459.79597 139.08492,460.97504 139.65359,462.93817 C 140.23148,464.93313 141.59315,461.6746 140.4112,485.6666 C 140.2676,488.58138 137.75956,490.40169 137.38075,494.2529 C 137.00195,498.10411 138.58031,494.18977 138.51717,510.41534 C 138.47467,521.33918 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,517.23242 141.80016,504.73323 C 141.81446,498.03027 145.08316,494.94738 145.20943,491.47498 C 1 [...]
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path4147"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.0814,-7.582614)" />
-          </g>
-          <g
-             id="g4155">
-            <path
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 150.00765,459.40263 C 148.72481,459.29089 146.66106,460.46996 147.22973,462.43309 C 147.80762,464.42805 148.15914,462.43221 147.98734,477.0803 C 147.95426,479.99843 145.3357,481.81539 144.95689,485.6666 C 144.57809,489.51781 146.15645,485.60347 146.09331,501.82904 C 146.05081,512.75288 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.35018,508.64612 149.3763,496.14693 C 149.3906,489.44397 152.6593,486.36108 152.78557,482.88868 C  [...]
-               id="path3272"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.59577,-6.518967)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path4149"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-        </g>
-        <g
-           id="g4167"
-           transform="translate(-14,0)">
-          <g
-             id="g4169">
-            <path
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 142.43151,459.90771 C 141.14867,459.79597 139.08492,460.97504 139.65359,462.93817 C 140.23148,464.93313 141.59315,461.6746 140.4112,485.6666 C 140.2676,488.58138 137.75956,490.40169 137.38075,494.2529 C 137.00195,498.10411 138.58031,494.18977 138.51717,510.41534 C 138.47467,521.33918 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,517.23242 141.80016,504.73323 C 141.81446,498.03027 145.08316,494.94738 145.20943,491.47498 C 1 [...]
-               id="path4171"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.0814,-7.582614)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path4173"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-          <g
-             id="g4175">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path4177"
-               d="M 150.00765,459.40263 C 148.72481,459.29089 146.66106,460.46996 147.22973,462.43309 C 147.80762,464.42805 148.15914,462.43221 147.98734,477.0803 C 147.95426,479.99843 145.3357,481.81539 144.95689,485.6666 C 144.57809,489.51781 146.15645,485.60347 146.09331,501.82904 C 146.05081,512.75288 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.35018,508.64612 149.3763,496.14693 C 149.3906,489.44397 152.6593,486.36108 152.78557,482.88868 C  [...]
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path4179"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.59577,-6.518967)" />
-          </g>
-        </g>
-        <g
-           id="g4181"
-           transform="translate(14,0)">
-          <g
-             id="g4183">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path4185"
-               d="M 142.43151,459.90771 C 141.14867,459.79597 139.08492,460.97504 139.65359,462.93817 C 140.23148,464.93313 141.59315,461.6746 140.4112,485.6666 C 140.2676,488.58138 137.75956,490.40169 137.38075,494.2529 C 137.00195,498.10411 138.58031,494.18977 138.51717,510.41534 C 138.47467,521.33918 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,517.23242 141.80016,504.73323 C 141.81446,498.03027 145.08316,494.94738 145.20943,491.47498 C 1 [...]
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path4187"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.0814,-7.582614)" />
-          </g>
-          <g
-             id="g4189">
-            <path
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 150.00765,459.40263 C 148.72481,459.29089 146.66106,460.46996 147.22973,462.43309 C 147.80762,464.42805 148.15914,462.43221 147.98734,477.0803 C 147.95426,479.99843 145.3357,481.81539 144.95689,485.6666 C 144.57809,489.51781 146.15645,485.60347 146.09331,501.82904 C 146.05081,512.75288 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.35018,508.64612 149.3763,496.14693 C 149.3906,489.44397 152.6593,486.36108 152.78557,482.88868 C  [...]
-               id="path4191"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.59577,-6.518967)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path4193"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-        </g>
-        <g
-           transform="translate(28,0)"
-           id="g4195">
-          <g
-             id="g4197">
-            <path
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 142.43151,459.90771 C 141.14867,459.79597 139.08492,460.97504 139.65359,462.93817 C 140.23148,464.93313 141.59315,461.6746 140.4112,485.6666 C 140.2676,488.58138 137.75956,490.40169 137.38075,494.2529 C 137.00195,498.10411 138.58031,494.18977 138.51717,510.41534 C 138.47467,521.33918 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,517.23242 141.80016,504.73323 C 141.81446,498.03027 145.08316,494.94738 145.20943,491.47498 C 1 [...]
-               id="path4199"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.0814,-7.582614)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path4201"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-          <g
-             id="g4203">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path4205"
-               d="M 150.00765,459.40263 C 148.72481,459.29089 146.66106,460.46996 147.22973,462.43309 C 147.80762,464.42805 148.15914,462.43221 147.98734,477.0803 C 147.95426,479.99843 145.3357,481.81539 144.95689,485.6666 C 144.57809,489.51781 146.15645,485.60347 146.09331,501.82904 C 146.05081,512.75288 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.35018,508.64612 149.3763,496.14693 C 149.3906,489.44397 152.6593,486.36108 152.78557,482.88868 C  [...]
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path4207"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.59577,-6.518967)" />
-          </g>
-        </g>
-        <g
-           id="g4209"
-           transform="translate(42.48476,0)">
-          <g
-             id="g4211">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path4213"
-               d="M 142.43151,459.90771 C 141.14867,459.79597 139.08492,460.97504 139.65359,462.93817 C 140.23148,464.93313 141.59315,461.6746 140.4112,485.6666 C 140.2676,488.58138 137.75956,490.40169 137.38075,494.2529 C 137.00195,498.10411 138.58031,494.18977 138.51717,510.41534 C 138.47467,521.33918 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,517.23242 141.80016,504.73323 C 141.81446,498.03027 145.08316,494.94738 145.20943,491.47498 C 1 [...]
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path4215"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.0814,-7.582614)" />
-          </g>
-          <g
-             id="g4217">
-            <path
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 150.00765,459.40263 C 148.72481,459.29089 146.66106,460.46996 147.22973,462.43309 C 147.80762,464.42805 148.15914,462.43221 147.98734,477.0803 C 147.95426,479.99843 145.3357,481.81539 144.95689,485.6666 C 144.57809,489.51781 146.15645,485.60347 146.09331,501.82904 C 146.05081,512.75288 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.35018,508.64612 149.3763,496.14693 C 149.3906,489.44397 152.6593,486.36108 152.78557,482.88868 C  [...]
-               id="path4219"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.59577,-6.518967)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path4221"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-        </g>
-        <g
-           transform="translate(56.48476,0)"
-           id="g4223">
-          <g
-             id="g4225">
-            <path
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 142.43151,459.90771 C 141.14867,459.79597 139.08492,460.97504 139.65359,462.93817 C 140.23148,464.93313 141.59315,461.6746 140.4112,485.6666 C 140.2676,488.58138 137.75956,490.40169 137.38075,494.2529 C 137.00195,498.10411 138.58031,494.18977 138.51717,510.41534 C 138.47467,521.33918 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,517.23242 141.80016,504.73323 C 141.81446,498.03027 145.08316,494.94738 145.20943,491.47498 C 1 [...]
-               id="path4227"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.0814,-7.582614)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path4229"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-          <g
-             id="g4231">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path4233"
-               d="M 150.00765,459.40263 C 148.72481,459.29089 146.66106,460.46996 147.22973,462.43309 C 147.80762,464.42805 148.15914,462.43221 147.98734,477.0803 C 147.95426,479.99843 145.3357,481.81539 144.95689,485.6666 C 144.57809,489.51781 146.15645,485.60347 146.09331,501.82904 C 146.05081,512.75288 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.35018,508.64612 149.3763,496.14693 C 149.3906,489.44397 152.6593,486.36108 152.78557,482.88868 C  [...]
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path4235"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.59577,-6.518967)" />
-          </g>
-        </g>
-        <g
-           id="g4237"
-           transform="translate(70.48476,0)">
-          <g
-             id="g4239">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path4241"
-               d="M 142.43151,459.90771 C 141.14867,459.79597 139.08492,460.97504 139.65359,462.93817 C 140.23148,464.93313 141.59315,461.6746 140.4112,485.6666 C 140.2676,488.58138 137.75956,490.40169 137.38075,494.2529 C 137.00195,498.10411 138.58031,494.18977 138.51717,510.41534 C 138.47467,521.33918 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,517.23242 141.80016,504.73323 C 141.81446,498.03027 145.08316,494.94738 145.20943,491.47498 C 1 [...]
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path4243"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.0814,-7.582614)" />
-          </g>
-          <g
-             id="g4245">
-            <path
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 150.00765,459.40263 C 148.72481,459.29089 146.66106,460.46996 147.22973,462.43309 C 147.80762,464.42805 148.15914,462.43221 147.98734,477.0803 C 147.95426,479.99843 145.3357,481.81539 144.95689,485.6666 C 144.57809,489.51781 146.15645,485.60347 146.09331,501.82904 C 146.05081,512.75288 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.35018,508.64612 149.3763,496.14693 C 149.3906,489.44397 152.6593,486.36108 152.78557,482.88868 C  [...]
-               id="path4247"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.59577,-6.518967)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path4249"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-        </g>
-        <g
-           transform="translate(84.48476,0)"
-           id="g4251">
-          <g
-             id="g4253">
-            <path
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 142.43151,459.90771 C 141.14867,459.79597 139.08492,460.97504 139.65359,462.93817 C 140.23148,464.93313 141.59315,461.6746 140.4112,485.6666 C 140.2676,488.58138 137.75956,490.40169 137.38075,494.2529 C 137.00195,498.10411 138.58031,494.18977 138.51717,510.41534 C 138.47467,521.33918 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,517.23242 141.80016,504.73323 C 141.81446,498.03027 145.08316,494.94738 145.20943,491.47498 C 1 [...]
-               id="path4255"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.0814,-7.582614)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path4257"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-          <g
-             id="g4259">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path4261"
-               d="M 150.00765,459.40263 C 148.72481,459.29089 146.66106,460.46996 147.22973,462.43309 C 147.80762,464.42805 148.15914,462.43221 147.98734,477.0803 C 147.95426,479.99843 145.3357,481.81539 144.95689,485.6666 C 144.57809,489.51781 146.15645,485.60347 146.09331,501.82904 C 146.05081,512.75288 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.35018,508.64612 149.3763,496.14693 C 149.3906,489.44397 152.6593,486.36108 152.78557,482.88868 C  [...]
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path4263"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.59577,-6.518967)" />
-          </g>
-        </g>
-        <g
-           id="g4265"
-           transform="translate(98.48476,0)">
-          <g
-             id="g4267">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path4269"
-               d="M 142.43151,459.90771 C 141.14867,459.79597 139.08492,460.97504 139.65359,462.93817 C 140.23148,464.93313 141.59315,461.6746 140.4112,485.6666 C 140.2676,488.58138 137.75956,490.40169 137.38075,494.2529 C 137.00195,498.10411 138.58031,494.18977 138.51717,510.41534 C 138.47467,521.33918 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,517.23242 141.80016,504.73323 C 141.81446,498.03027 145.08316,494.94738 145.20943,491.47498 C 1 [...]
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path4271"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.0814,-7.582614)" />
-          </g>
-          <g
-             id="g4273">
-            <path
-               style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 150.00765,459.40263 C 148.72481,459.29089 146.66106,460.46996 147.22973,462.43309 C 147.80762,464.42805 148.15914,462.43221 147.98734,477.0803 C 147.95426,479.99843 145.3357,481.81539 144.95689,485.6666 C 144.57809,489.51781 146.15645,485.60347 146.09331,501.82904 C 146.05081,512.75288 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.35018,508.64612 149.3763,496.14693 C 149.3906,489.44397 152.6593,486.36108 152.78557,482.88868 C  [...]
-               id="path4275"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.59577,-6.518967)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path4277"
-               style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-        </g>
-        <g
-           id="g4281"
-           transform="translate(112.4848,0)">
-          <path
-             sodipodi:nodetypes="cssssccsssss"
-             id="path4283"
-             d="M 142.43151,459.90771 C 141.14867,459.79597 139.08492,460.97504 139.65359,462.93817 C 140.23148,464.93313 141.59315,461.6746 140.4112,485.6666 C 140.2676,488.58138 137.75956,490.40169 137.38075,494.2529 C 137.00195,498.10411 138.58031,494.18977 138.51717,510.41534 C 138.47467,521.33918 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,517.23242 141.80016,504.73323 C 141.81446,498.03027 145.08316,494.94738 145.20943,491.47498 C 145 [...]
-             style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path4285"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.0814,-7.582614)" />
-        </g>
-        <g
-           id="g4287"
-           transform="translate(112.4848,0)">
-          <path
-             style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 150.00765,459.40263 C 148.72481,459.29089 146.66106,460.46996 147.22973,462.43309 C 147.80762,464.42805 148.15914,462.43221 147.98734,477.0803 C 147.95426,479.99843 145.3357,481.81539 144.95689,485.6666 C 144.57809,489.51781 146.15645,485.60347 146.09331,501.82904 C 146.05081,512.75288 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.35018,508.64612 149.3763,496.14693 C 149.3906,489.44397 152.6593,486.36108 152.78557,482.88868 C 15 [...]
-             id="path4289"
-             sodipodi:nodetypes="cssssccsssss" />
-          <path
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.59577,-6.518967)"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.3889598"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path4291"
-             style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-        </g>
-        <g
-           id="g4537">
-          <path
-             style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 265.16631,455.97914 C 263.88347,456.76026 264.85543,457.93933 265.4241,459.90246 C 266.00199,461.89742 269.14938,457.21031 267.96743,481.20231 C 267.82383,484.11709 264.24436,490.40169 263.86555,494.2529 C 263.48675,498.10411 265.06511,494.18977 265.00197,510.41534 C 264.95947,521.33918 264.8757,540.08857 264.8757,540.08857 L 269.42139,540.08857 C 269.42139,540.08857 268.25884,517.23242 268.28496,504.73323 C 268.29926,498.03027 271.56796,494.94738 271.69423,491.47498 C  [...]
-             id="path4439"
-             sodipodi:nodetypes="cssssccsssss" />
-          <path
-             transform="matrix(0.96429,0.26485,-0.26485,0.96429,236.5662,-7.582614)"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.3889598"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path4441"
-             style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-          <path
-             sodipodi:nodetypes="cssssccsssss"
-             id="path4445"
-             d="M 267.38531,452.79549 C 265.90734,455.63745 268.14586,454.93425 269.60739,456.18309 C 271.18642,457.53234 280.35823,463.86078 276.79357,475.11601 C 275.91244,477.89813 271.8205,481.81539 271.44169,485.6666 C 271.06289,489.51781 272.64125,485.60347 272.57811,501.82904 C 272.53561,512.75288 271.94676,540.08857 271.94676,540.08857 L 276.49245,540.08857 C 276.49245,540.08857 275.83498,508.64612 275.8611,496.14693 C 275.8754,489.44397 279.1441,486.36108 279.27037,482.88868 C 2 [...]
-             style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path4447"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,172.0806,-6.518967)" />
-          <path
-             sodipodi:nodetypes="cssssccsssss"
-             id="path4453"
-             d="M 271.66631,450.622 C 270.46807,452.42636 272.87329,453.1179 273.70982,453.65246 C 275.45997,454.77084 289.22081,461.13889 281.96743,481.55946 C 280.99063,484.30945 278.24436,490.40169 277.86555,494.2529 C 277.48675,498.10411 279.06511,494.18977 279.00197,510.41534 C 278.95947,521.33918 278.8757,540.08857 278.8757,540.08857 L 283.42139,540.08857 C 283.42139,540.08857 282.25884,517.23242 282.28496,504.73323 C 282.29926,498.03027 285.56796,494.94738 285.69423,491.47498 C 28 [...]
-             style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path4455"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.96429,0.26485,-0.26485,0.96429,250.5662,-7.582614)" />
-          <path
-             style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 281.02345,453.83628 C 280.27633,454.6174 283.10556,455.2898 283.51339,455.92924 C 285.81812,459.5429 292.86366,462.38889 294.896,485.6666 C 295.14983,488.57386 292.24436,490.40169 291.86555,494.2529 C 291.48675,498.10411 293.06511,494.18977 293.00197,510.41534 C 292.95947,521.33918 292.8757,540.08857 292.8757,540.08857 L 297.42139,540.08857 C 297.42139,540.08857 296.25884,517.23242 296.28496,504.73323 C 296.29926,498.03027 299.56796,494.94738 299.69423,491.47498 C 299.8 [...]
-             id="path4467"
-             sodipodi:nodetypes="cssssccsssss" />
-          <path
-             transform="matrix(0.96429,0.26485,-0.26485,0.96429,264.5662,-7.582614)"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.3889598"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path4469"
-             style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-          <path
-             style="fill:#9ad8e8;fill-opacity:1;fill-rule:evenodd;stroke:#63b7de;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 276.92102,449.40263 C 275.71262,450.23469 277.08771,452.14078 278.42882,452.25452 C 280.11987,452.39793 292.92965,460.28935 290.615,475.47316 C 290.1752,478.35815 285.8205,481.81539 285.44169,485.6666 C 285.06289,489.51781 286.64125,485.60347 286.57811,501.82904 C 286.53561,512.75288 285.94676,540.08857 285.94676,540.08857 L 290.49245,540.08857 C 290.49245,540.08857 289.83498,508.64612 289.8611,496.14693 C 289.8754,489.44397 293.1441,486.36108 293.27037,482.88868 C 293. [...]
-             id="path4459"
-             sodipodi:nodetypes="cssssccsssss" />
-          <path
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,186.0806,-6.518967)"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.3889598"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path4461"
-             style="fill:#99b2e9;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-        </g>
-      </g>
-      <g
-         transform="matrix(0.3840236,0,0,0.3840236,103.53412,157.89079)"
-         id="g5830">
-        <g
-           id="g5578"
-           transform="matrix(0.926041,-0.377423,0.377423,0.926041,-92.20903,15.91881)">
-          <path
-             sodipodi:nodetypes="cssssccsssss"
-             id="path5580"
-             d="M 149.20408,491.18834 C 147.92124,491.0766 145.85749,492.25567 146.42616,494.2188 C 147.00405,496.21376 147.802,493.86078 147.6302,508.50887 C 147.59712,511.427 144.97856,513.24396 144.59975,517.09517 C 144.22095,520.94638 146.17783,517.03793 145.73617,533.25761 C 145.63417,537.00353 145.4933,537.99127 145.4933,537.99127 L 150.00765,540.08857 C 150.00765,540.08857 148.94595,537.79103 149.01916,527.5755 C 149.0672,520.8727 152.30216,517.78965 152.42843,514.31725 C 152.5547 [...]
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path5582"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.06006,24.9096)" />
-        </g>
-        <g
-           id="g5464"
-           transform="translate(1.617597,3.078398)">
-          <g
-             transform="translate(-14,-84)"
-             id="g4573">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path4575"
-               d="M 142.43151,490.97914 C 141.14867,490.8674 139.08492,492.04647 139.65359,494.0096 C 140.23148,496.00456 140.87886,494.62103 140.4112,501.73803 C 140.21985,504.65006 137.75956,506.47312 137.38075,510.32433 C 137.00195,514.17554 138.58031,510.2612 138.51717,526.48677 C 138.47467,537.41061 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,533.30385 141.80016,520.80466 C 141.81446,514.1017 145.08316,511.01881 145.20943,507.54641 C 1 [...]
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path4577"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.26,9.292386)" />
-          </g>
-          <g
-             transform="translate(-14,-84)"
-             id="g4579">
-            <path
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 149.20408,491.18834 C 147.92124,491.0766 145.85749,492.25567 146.42616,494.2188 C 147.00405,496.21376 147.802,493.86078 147.6302,508.50887 C 147.59712,511.427 144.97856,513.24396 144.59975,517.09517 C 144.22095,520.94638 145.86628,517.03244 145.73617,533.25761 C 145.69367,538.36706 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 148.89772,537.78706 149.01916,527.5755 C 149.09887,520.873 152.30216,517.78965 152.42843,514.31725 C 152. [...]
-               id="path4581"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.06006,24.9096)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path4583"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-        </g>
-        <g
-           transform="translate(16.1568,3.078398)"
-           id="g5472">
-          <g
-             id="g5474"
-             transform="translate(-14,-84)">
-            <path
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 142.43151,490.97914 C 141.14867,490.8674 139.08492,492.04647 139.65359,494.0096 C 140.23148,496.00456 140.87886,494.62103 140.4112,501.73803 C 140.21985,504.65006 137.75956,506.47312 137.38075,510.32433 C 137.00195,514.17554 138.58031,510.2612 138.51717,526.48677 C 138.47467,537.41061 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,533.30385 141.80016,520.80466 C 141.81446,514.1017 145.08316,511.01881 145.20943,507.54641 C 1 [...]
-               id="path5476"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.26,9.292386)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path5478"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-          <g
-             id="g5480"
-             transform="translate(-14,-84)">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path5482"
-               d="M 149.20408,491.18834 C 147.92124,491.0766 145.85749,492.25567 146.42616,494.2188 C 147.00405,496.21376 147.802,493.86078 147.6302,508.50887 C 147.59712,511.427 144.97856,513.24396 144.59975,517.09517 C 144.22095,520.94638 145.54731,517.03302 145.73617,533.25761 C 145.78899,537.60452 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.18368,538.35897 149.01916,527.5755 C 148.91691,520.8733 152.30216,517.78965 152.42843,514.31725 C 152 [...]
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path5484"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.06006,24.9096)" />
-          </g>
-        </g>
-        <g
-           id="g5486"
-           transform="translate(30.1568,3.078398)">
-          <g
-             transform="translate(-14,-84)"
-             id="g5488">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path5490"
-               d="M 142.43151,490.97914 C 141.14867,490.8674 139.08492,492.04647 139.65359,494.0096 C 140.23148,496.00456 140.87886,494.62103 140.4112,501.73803 C 140.21985,504.65006 137.75956,506.47312 137.38075,510.32433 C 137.00195,514.17554 138.58031,510.2612 138.51717,526.48677 C 138.47467,537.41061 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,533.30385 141.80016,520.80466 C 141.81446,514.1017 145.08316,511.01881 145.20943,507.54641 C 1 [...]
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path5492"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.26,9.292386)" />
-          </g>
-          <g
-             transform="translate(-14,-84)"
-             id="g5494">
-            <path
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 149.20408,491.18834 C 147.92124,491.0766 145.85749,492.25567 146.42616,494.2188 C 147.00405,496.21376 147.802,493.86078 147.6302,508.50887 C 147.59712,511.427 144.97856,513.24396 144.59975,517.09517 C 144.22095,520.94638 145.88814,517.03263 145.73617,533.25761 C 145.69367,537.60452 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.18368,537.9777 149.01916,527.5755 C 148.91507,520.87333 152.30216,517.78965 152.42843,514.31725 C 152 [...]
-               id="path5496"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.06006,24.9096)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path5498"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-        </g>
-        <g
-           transform="translate(44.1568,3.078398)"
-           id="g5500">
-          <g
-             id="g5502"
-             transform="translate(-14,-84)">
-            <path
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 142.43151,490.97914 C 141.14867,490.8674 139.08492,492.04647 139.65359,494.0096 C 140.23148,496.00456 140.87886,494.62103 140.4112,501.73803 C 140.21985,504.65006 137.75956,506.47312 137.38075,510.32433 C 137.00195,514.17554 138.58031,510.2612 138.51717,526.48677 C 138.47467,537.41061 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,533.30385 141.80016,520.80466 C 141.81446,514.1017 145.08316,511.01881 145.20943,507.54641 C 1 [...]
-               id="path5504"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.26,9.292386)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path5506"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-          <g
-             id="g5508"
-             transform="translate(-14,-84)">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path5510"
-               d="M 149.20408,491.18834 C 147.92124,491.0766 145.85749,492.25567 146.42616,494.2188 C 147.00405,496.21376 147.802,493.86078 147.6302,508.50887 C 147.59712,511.427 144.97856,513.24396 144.59975,517.09517 C 144.22095,520.94638 146.26186,517.04044 145.73617,533.25761 C 145.59835,537.5092 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.18368,537.21516 149.01916,527.5755 C 148.907,520.87346 152.30216,517.78965 152.42843,514.31725 C 152.5 [...]
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path5512"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.06006,24.9096)" />
-          </g>
-        </g>
-        <g
-           id="g5514"
-           transform="translate(58.1568,3.078398)">
-          <g
-             transform="translate(-14,-84)"
-             id="g5516">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path5518"
-               d="M 142.43151,490.97914 C 141.14867,490.8674 139.08492,492.04647 139.65359,494.0096 C 140.23148,496.00456 140.87886,494.62103 140.4112,501.73803 C 140.21985,504.65006 137.75956,506.47312 137.38075,510.32433 C 137.00195,514.17554 138.58031,510.2612 138.51717,526.48677 C 138.47467,537.41061 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,533.30385 141.80016,520.80466 C 141.81446,514.1017 145.08316,511.01881 145.20943,507.54641 C 1 [...]
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path5520"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.26,9.292386)" />
-          </g>
-          <g
-             transform="translate(-14,-84)"
-             id="g5522">
-            <path
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 149.20408,491.18834 C 147.92124,491.0766 145.85749,492.25567 146.42616,494.2188 C 147.00405,496.21376 147.802,493.86078 147.6302,508.50887 C 147.59712,511.427 144.97856,513.24396 144.59975,517.09517 C 144.22095,520.94638 145.73617,517.03192 145.73617,533.25761 C 145.73617,537.3417 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.01916,537.41423 149.01916,527.5755 C 149.01916,520.87252 152.30216,517.78965 152.42843,514.31725 C 152 [...]
-               id="path5524"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.06006,24.9096)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path5526"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-        </g>
-        <g
-           transform="translate(72.1568,3.078398)"
-           id="g5528">
-          <g
-             id="g5530"
-             transform="translate(-14,-84)">
-            <path
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 142.43151,490.97914 C 141.14867,490.8674 139.08492,492.04647 139.65359,494.0096 C 140.23148,496.00456 140.87886,494.62103 140.4112,501.73803 C 140.21985,504.65006 137.75956,506.47312 137.38075,510.32433 C 137.00195,514.17554 138.58031,510.2612 138.51717,526.48677 C 138.47467,537.41061 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,533.30385 141.80016,520.80466 C 141.81446,514.1017 145.08316,511.01881 145.20943,507.54641 C 1 [...]
-               id="path5532"
-               sodipodi:nodetypes="cssssccsssss" />
-            <path
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.26,9.292386)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path5534"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-          <g
-             id="g5536"
-             transform="translate(-14,-84)">
-            <path
-               sodipodi:nodetypes="cssssccsssss"
-               id="path5538"
-               d="M 149.20408,491.18834 C 147.92124,491.0766 145.85749,492.25567 146.42616,494.2188 C 147.00405,496.21376 147.802,493.86078 147.6302,508.50887 C 147.59712,511.427 144.97856,513.24396 144.59975,517.09517 C 144.22095,520.94638 145.73617,517.03192 145.73617,533.25761 C 145.73617,538.28318 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 149.01916,537.40583 149.01916,527.5755 C 149.01916,520.87252 152.30216,517.78965 152.42843,514.31725 C 15 [...]
-               style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path5540"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.06006,24.9096)" />
-          </g>
-        </g>
-        <g
-           id="g5544"
-           transform="translate(72.1568,-80.9216)">
-          <path
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 141.35311,490.97914 C 140.07027,490.8674 138.00652,492.04647 138.57519,494.0096 C 139.15308,496.00456 140.13746,494.58733 140.4112,501.73803 C 140.52284,504.6542 136.81596,505.39472 136.43715,509.24593 C 136.05835,513.09714 138.58031,510.2612 138.51717,526.48677 C 138.47467,537.41061 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 140.83044,532.22545 140.85656,519.72626 C 140.87086,513.0233 144.13956,509.94041 144.26583,506.46801 C 144. [...]
-             id="path5546"
-             sodipodi:nodetypes="cssssccsssss" />
-          <path
-             transform="matrix(0.96429,0.26485,-0.26485,0.96429,109.4512,8.213988)"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.3889598"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path5548"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-        </g>
-        <g
-           id="g5550"
-           transform="translate(72.4264,-80.9216)">
-          <path
-             sodipodi:nodetypes="cssssccsssss"
-             id="path5552"
-             d="M 145.18208,491.86234 C 143.89924,491.7506 143.31829,492.25567 143.88696,494.2188 C 144.46485,496.21376 144.2972,493.86078 145.743,508.10447 C 146.03771,511.00787 142.01296,512.56996 141.63415,516.42117 C 141.25535,520.27238 144.38817,516.05671 144.38817,532.31401 C 144.38817,538.3107 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 146.83624,540.20949 146.86236,527.7103 C 146.87666,521.00734 149.33656,517.11565 149.46283,513.64325 C 149 [...]
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path5554"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,42.36406,25.1792)" />
-        </g>
-        <g
-           transform="matrix(0.926041,-0.377423,0.377423,0.926041,-79.8164,12.54123)"
-           id="g5586">
-          <path
-             sodipodi:nodetypes="cssssccsssss"
-             id="path5588"
-             d="M 139.75083,489.47486 C 138.46799,489.36312 136.40424,490.54219 136.97291,492.50532 C 137.5508,494.50028 140.87886,494.62103 140.4112,501.73803 C 140.21985,504.65006 137.75956,506.47312 137.38075,510.32433 C 137.00195,514.17554 138.58031,510.2612 138.51717,526.48677 C 138.47467,537.41061 138.82093,539.286 138.82093,539.286 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,533.30385 141.80016,520.80466 C 141.81446,514.1017 145.08316,511.01881 145.20943,507.54641 C 145. [...]
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path5590"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.26,9.292386)" />
-        </g>
-        <g
-           transform="translate(86.1568,-80.9216)"
-           id="g5558">
-          <path
-             sodipodi:nodetypes="cssssccsssss"
-             id="path5560"
-             d="M 137.03952,491.11394 C 135.75668,491.0022 133.69293,492.18127 134.2616,494.1444 C 134.83949,496.13936 135.75647,495.16023 136.09761,501.60323 C 136.25191,504.51746 134.25477,503.10313 133.87596,506.95434 C 133.49716,510.80555 135.21032,508.2392 135.14718,524.46477 C 135.10468,535.38861 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 137.73005,533.70825 137.75617,521.20906 C 137.77047,514.5061 141.57837,507.64882 141.70464,504.17642 C 141 [...]
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path5562"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.96429,0.26485,-0.26485,0.96429,107.1596,6.461592)" />
-        </g>
-        <g
-           transform="matrix(0.926041,-0.377423,0.377423,0.926041,-79.2445,14.82885)"
-           id="g5592">
-          <path
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 144.17131,488.00493 C 142.88847,487.89319 140.82472,489.07226 141.39339,491.03539 C 141.97128,493.03035 145.75551,492.82084 145.58371,507.46893 C 145.55063,510.38706 143.18724,511.07285 142.80843,514.92406 C 142.42963,518.77527 145.66579,517.03207 145.73617,533.25761 C 145.75822,538.34072 145.20049,539.46735 145.20049,539.46735 L 150.00765,540.08857 C 150.00765,540.08857 149.19443,537.68644 149.01916,527.5755 C 148.90298,520.87353 150.75265,516.54054 150.87892,513.06814 [...]
-             id="path5594"
-             sodipodi:nodetypes="cssssccsssss" />
-          <path
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,44.11211,23.6998)"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.3889598"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path5596"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-        </g>
-        <g
-           transform="translate(86.1568,-80.9216)"
-           id="g5564">
-          <path
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 141.92489,494.01914 C 140.64205,493.9074 138.5783,495.08647 139.14697,497.0496 C 139.72486,499.04456 141.46641,499.11796 141.56421,512.28326 C 141.58589,515.20149 138.69111,516.06819 139.74696,519.79116 C 140.89324,523.83301 141.89778,518.88375 145.54553,531.92316 C 146.68712,536.00391 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 148.06668,530.2167 146.72756,525.6883 C 146.13786,523.69415 147.44937,520.48564 147.57564,517.01324 C 1 [...]
-             id="path5566"
-             sodipodi:nodetypes="cssssccsssss" />
-          <path
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,40.47687,26.662)"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.3889598"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path5568"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-        </g>
-        <g
-           id="g5572"
-           transform="translate(100.1568,-80.9216)">
-          <path
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 133.06888,491.31135 C 131.78604,491.19961 129.72229,492.37868 130.29096,494.34181 C 130.86885,496.33677 131.3923,494.3271 132.2877,501.40302 C 132.66826,504.41036 131.27795,506.09185 131.85232,510.32433 C 132.3727,514.15898 133.78721,510.60232 135.08573,525.81955 C 135.32652,528.64136 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 137.77069,527.58478 137.51086,522.80633 C 137.14691,516.11325 139.93086,510.48347 138.6325,507.26046 C 137 [...]
-             id="path5574"
-             sodipodi:nodetypes="cssssccsssss" />
-          <path
-             transform="matrix(0.923822,-0.382822,0.382822,0.923822,-196.4126,132.3561)"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.3889598"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path5576"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-        </g>
-        <g
-           id="g5806"
-           transform="matrix(0.774683,-0.436512,0.377721,0.895261,-52.92922,37.58278)">
-          <path
-             sodipodi:nodetypes="cssssccsssss"
-             id="path5808"
-             d="M 144.58359,488.44515 C 143.30075,488.33341 139.86857,489.16467 140.43724,491.1278 C 141.01513,493.12276 143.40545,492.38862 144.21528,507.12112 C 144.38102,510.13619 141.82345,511.47258 141.44464,515.32379 C 141.06584,519.175 146.12727,517.06994 145.73617,533.25761 C 145.61465,538.28711 145.01856,538.2221 145.01856,538.2221 L 149.73665,538.62557 C 149.73665,538.62557 149.08631,537.99078 149.01916,527.5755 C 148.97591,520.86666 149.38886,516.94027 149.51513,513.46787 C 14 [...]
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path5810"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,44.11211,23.6998)" />
-        </g>
-        <g
-           transform="matrix(0.730447,-0.507073,0.459821,0.855997,-86.27254,67.44803)"
-           id="g5812">
-          <path
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 146.94842,489.65143 C 145.66558,489.53969 143.60183,490.71876 144.1705,492.68189 C 144.74839,494.67685 145.75551,492.82084 145.58371,507.46893 C 145.55063,510.38706 143.18724,511.07285 142.80843,514.92406 C 142.42963,518.77527 148.21611,517.4406 145.73617,533.25761 C 145.39546,535.43062 144.39126,536.50346 144.39126,536.50346 L 148.53122,536.31879 C 148.53122,536.31879 149.8347,538.01215 149.01916,527.5755 C 148.49232,520.83339 150.75265,516.54054 150.87892,513.06814 C  [...]
-             id="path5814"
-             sodipodi:nodetypes="cssssccsssss" />
-          <path
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,44.11211,23.6998)"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.3889598"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path5816"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-        </g>
-        <g
-           id="g5824"
-           transform="matrix(0.893805,-0.448457,0.448457,0.893805,-100.226,34.6487)">
-          <path
-             sodipodi:nodetypes="cssssccsssss"
-             id="path5826"
-             d="M 141.92489,494.01914 C 140.64205,493.9074 138.5783,495.08647 139.14697,497.0496 C 139.72486,499.04456 141.46641,499.11796 141.56421,512.28326 C 141.58589,515.20149 140.12577,515.93995 139.74696,519.79116 C 139.36816,523.64237 142.72352,520.057 145.73617,533.25761 C 146.70153,537.48755 148.02138,538.81331 148.02138,538.81331 L 152.56707,538.81331 C 152.56707,538.81331 148.06668,530.2167 146.72756,525.6883 C 146.13786,523.69415 147.44937,520.48564 147.57564,517.01324 C 147 [...]
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path5828"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,40.47687,26.662)" />
-        </g>
-        <g
-           id="g5818"
-           transform="matrix(0.638842,-0.618512,0.592183,0.77038,-140.2824,125.7023)">
-          <path
-             sodipodi:nodetypes="cssssccsssss"
-             id="path5820"
-             d="M 148.77098,490.74351 C 147.48814,490.63177 145.42439,491.81084 145.99306,493.77397 C 146.57095,495.76893 145.75551,492.82084 145.58371,507.46893 C 145.55063,510.38706 143.18724,511.07285 142.80843,514.92406 C 142.42963,518.77527 146.85083,517.17294 145.73617,533.25761 C 145.50009,536.6642 144.41537,538.32034 144.41537,538.32034 L 147.61918,538.48027 C 147.61918,538.48027 149.35089,538.32048 149.01916,527.5755 C 148.81159,520.85211 150.75265,516.54054 150.87892,513.06814  [...]
-             style="fill:#e8c69a;fill-opacity:1;fill-rule:evenodd;stroke:#deb463;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#d6a33f;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path5822"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,44.11211,23.6998)" />
-        </g>
-      </g>
-      <g
-         id="g2608"
-         transform="translate(0,0.539199)">
-        <g
-           id="g1551"
-           transform="matrix(0.3840236,0,0,0.3840236,136.7512,106.97234)">
-          <path
-             sodipodi:nodetypes="csssssccsssss"
-             id="path1553"
-             d="M 115.00993,485.82485 C 114.36851,485.76898 112.67066,488.41755 115.35725,488.4207 C 118.74278,488.42468 122.05455,487.59081 125.91011,488.37872 C 128.08444,488.82306 135.48841,493.32158 138.5518,508.23927 C 139.13884,511.09794 137.16018,512.36776 138.33156,515.74717 C 139.59895,519.40354 145.86628,517.03244 145.73617,533.25761 C 145.69367,538.36706 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 148.89772,537.78706 149.01916,527.5755 C [...]
-             style="fill:#dece6c;fill-opacity:1;fill-rule:evenodd;stroke:#d0ac32;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#ccb43c;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path1555"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.5227536"
-             sodipodi:ry="3.2829959"
-             d="m 163.77851,474.80746 c 0,1.81315 -0.68176,3.283 -1.52276,3.283 -0.84099,0 -1.52275,-1.46985 -1.52275,-3.283 0,-1.81314 0.68176,-3.28299 1.52275,-3.28299 0.841,0 1.52276,1.46985 1.52276,3.28299 z"
-             transform="matrix(0.962661,-0.27071,0.27071,0.962661,-142.9933,100.4454)" />
-        </g>
-        <g
-           id="g7274"
-           transform="matrix(0.3840236,0,0,0.3840236,129.07073,106.97234)">
-          <path
-             style="fill:#dece6c;fill-opacity:1;fill-rule:evenodd;stroke:#d0ac32;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 132.32782,488.97914 C 127.12429,488.74028 129.43901,492.80016 131.38836,491.81329 C 133.738,490.62376 134.09577,493.29494 137.74723,493.05642 C 140.8919,492.85101 140.87886,494.62103 140.4112,501.73803 C 140.21985,504.65006 137.75956,506.47312 137.38075,510.32433 C 137.00195,514.17554 138.58031,510.2612 138.51717,526.48677 C 138.47467,537.41061 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,533.30385 141.80016,520.80466 C 141 [...]
-             id="path7276"
-             sodipodi:nodetypes="csssssccsssss" />
-          <path
-             transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.26,9.292386)"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.3889598"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path7278"
-             style="fill:#ccb43c;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-        </g>
-        <g
-           id="g7280"
-           transform="matrix(0.3840236,0,0,0.3840236,129.07073,106.97234)">
-          <path
-             sodipodi:nodetypes="csssssccsssss"
-             id="path7282"
-             d="M 121.52431,489.32964 C 120.88289,489.27377 119.18504,491.92234 121.87163,491.92549 C 125.25716,491.92947 128.49123,492.00859 132.42449,491.88351 C 135.40762,491.78865 143.802,493.86078 143.6302,508.50887 C 143.59712,511.427 142.97856,513.24396 142.59975,517.09517 C 142.22095,520.94638 145.86628,517.03244 145.73617,533.25761 C 145.69367,538.36706 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 148.89772,537.78706 149.01916,527.5755 C 14 [...]
-             style="fill:#dece6c;fill-opacity:1;fill-rule:evenodd;stroke:#d0ac32;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#ccb43c;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path7284"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.992538,0.121935,-0.121935,0.992538,43.06006,24.9096)" />
-        </g>
-        <use
-           height="1052.3622"
-           width="744.09448"
-           transform="translate(18.433131,4.2749997e-6)"
-           id="use1547"
-           xlink:href="#g6322"
-           y="0"
-           x="0" />
-        <use
-           x="0"
-           y="0"
-           xlink:href="#g6322"
-           id="use1549"
-           transform="translate(24.577508,4.2749997e-6)"
-           width="744.09448"
-           height="1052.3622" />
-        <use
-           x="0"
-           y="0"
-           xlink:href="#g6322"
-           id="use1545"
-           transform="translate(18.433131,4.2749997e-6)"
-           width="744.09448"
-           height="1052.3622" />
-        <use
-           height="1052.3622"
-           width="744.09448"
-           transform="translate(12.288754,4.2749997e-6)"
-           id="use1543"
-           xlink:href="#g6322"
-           y="0"
-           x="0" />
-        <use
-           x="0"
-           y="0"
-           xlink:href="#g6322"
-           id="use1541"
-           transform="translate(6.1443771,4.2749997e-6)"
-           width="744.09448"
-           height="1052.3622" />
-        <g
-           style="display:inline"
-           transform="matrix(0.3840236,0,0,0.3840236,104.49323,139.23033)"
-           id="g6322">
-          <g
-             id="g6330"
-             transform="translate(-14,-84)">
-            <path
-               sodipodi:nodetypes="csssssccsssss"
-               id="path6332"
-               d="M 137.39931,488.45464 C 136.75789,488.39877 135.06004,491.04734 137.74663,491.05049 C 141.13216,491.05447 140.99123,489.88359 145.17449,491.25851 C 148.00991,492.19043 147.802,493.86078 147.6302,508.50887 C 147.59712,511.427 144.97856,513.24396 144.59975,517.09517 C 144.22095,520.94638 145.86628,517.03244 145.73617,533.25761 C 145.69367,538.36706 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 148.89772,537.78706 149.01916,527.5755 C  [...]
-               style="fill:#dece6c;fill-opacity:1;fill-rule:evenodd;stroke:#d0ac32;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-            <path
-               sodipodi:type="arc"
-               style="fill:#ccb43c;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               id="path6334"
-               sodipodi:cx="162.25575"
-               sodipodi:cy="474.80746"
-               sodipodi:rx="1.3889598"
-               sodipodi:ry="3.2829959"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               transform="matrix(0.992538,0.121935,-0.121935,0.992538,45.06006,24.9096)" />
-          </g>
-          <g
-             id="g6324"
-             transform="translate(-14,-84)">
-            <path
-               style="fill:#dece6c;fill-opacity:1;fill-rule:evenodd;stroke:#d0ac32;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-               d="M 139.72862,488.13234 L 138.30996,490.01429 C 142.62233,490.02799 140.02107,489.65653 140.36243,493.56622 C 140.63599,496.69942 140.87886,494.62103 140.4112,501.73803 C 140.21985,504.65006 137.75956,506.47312 137.38075,510.32433 C 137.00195,514.17554 138.58031,510.2612 138.51717,526.48677 C 138.47467,537.41061 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,533.30385 141.80016,520.80466 C 141.81446,514.1017 145.08316,511.01881 [...]
-               id="path6326"
-               sodipodi:nodetypes="ccssssccssssc" />
-            <path
-               transform="matrix(0.96429,0.26485,-0.26485,0.96429,110.26,9.292386)"
-               d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-               sodipodi:ry="3.2829959"
-               sodipodi:rx="1.3889598"
-               sodipodi:cy="474.80746"
-               sodipodi:cx="162.25575"
-               id="path6328"
-               style="fill:#ccb43c;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-               sodipodi:type="arc" />
-          </g>
-        </g>
-        <g
-           id="g1537"
-           transform="matrix(0.3840236,0,0,0.3840236,94.317552,157.55865)">
-          <path
-             style="fill:#dece6c;fill-opacity:1;fill-rule:evenodd;stroke:#d0ac32;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 234.82532,359.25204 C 229.62179,359.01318 231.93651,363.07306 233.88586,362.08619 C 236.2355,360.89666 236.59327,361.56784 240.24473,361.32932 C 243.3894,361.12391 246.74635,375.5651 246.27869,382.6821 C 246.08734,385.59413 244.09885,387.21499 245.20284,389.853 C 246.69677,393.4228 250.49133,392.33889 250.74507,399.00586 C 250.98534,405.31875 250.8884,408.36147 250.8884,408.36147 L 255.43409,408.36147 C 255.43409,408.36147 254.40634,402.65515 254.43246,399.59194 C 254.4 [...]
-             id="path7322"
-             sodipodi:nodetypes="csssssccsssss" />
-          <path
-             transform="matrix(0.99974,-2.285026e-2,2.285026e-2,0.99974,74.87678,-83.21669)"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.3889598"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path7324"
-             style="fill:#ccb43c;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-        </g>
-        <g
-           transform="matrix(0.3840236,0,0,0.3840236,132.91096,106.97234)"
-           id="g7294">
-          <path
-             style="fill:#dece6c;fill-opacity:1;fill-rule:evenodd;stroke:#d0ac32;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 129.52431,487.32964 C 128.88289,487.27377 127.18504,489.92234 129.87163,489.92549 C 133.25716,489.92947 132.49123,492.00859 136.42449,491.88351 C 139.40762,491.78865 139.802,493.86078 139.6302,508.50887 C 139.59712,511.427 137.16018,512.36776 138.33156,515.74717 C 139.59895,519.40354 145.86628,517.03244 145.73617,533.25761 C 145.69367,538.36706 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 148.89772,537.78706 149.01916,527.5755 C 14 [...]
-             id="path7296"
-             sodipodi:nodetypes="csssssccsssss" />
-          <path
-             transform="matrix(0.962661,-0.27071,0.27071,0.962661,-142.9933,100.4454)"
-             d="m 163.77851,474.80746 c 0,1.81315 -0.68176,3.283 -1.52276,3.283 -0.84099,0 -1.52275,-1.46985 -1.52275,-3.283 0,-1.81314 0.68176,-3.28299 1.52275,-3.28299 0.841,0 1.52276,1.46985 1.52276,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.5227536"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path7298"
-             style="fill:#ccb43c;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-        </g>
-        <g
-           id="g1565"
-           transform="matrix(0.3840236,0,0,0.3840236,138.28729,106.97234)">
-          <path
-             sodipodi:nodetypes="csssssccsssss"
-             id="path1567"
-             d="M 111.00993,485.82485 C 110.36851,485.76898 108.67066,488.41755 111.35725,488.4207 C 114.74278,488.42468 118.05455,487.59081 121.91011,488.37872 C 124.08444,488.82306 131.48841,493.32158 134.5518,508.23927 C 135.13884,511.09794 133.16018,512.36776 134.33156,515.74717 C 135.59895,519.40354 146.27068,517.84124 149.37576,533.52721 C 150.36797,538.53957 149.10155,540.35817 149.10155,540.35817 L 153.64724,540.35817 C 153.64724,540.35817 151.97939,529.27169 151.31075,527.7103 C [...]
-             style="fill:#dece6c;fill-opacity:1;fill-rule:evenodd;stroke:#d0ac32;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#ccb43c;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path1569"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.5227536"
-             sodipodi:ry="3.2829959"
-             d="m 163.77851,474.80746 c 0,1.81315 -0.68176,3.283 -1.52276,3.283 -0.84099,0 -1.52275,-1.46985 -1.52275,-3.283 0,-1.81314 0.68176,-3.28299 1.52275,-3.28299 0.841,0 1.52276,1.46985 1.52276,3.28299 z"
-             transform="matrix(0.962661,-0.27071,0.27071,0.962661,-146.4981,100.8498)" />
-        </g>
-        <g
-           transform="matrix(0.3840236,0,0,0.3840236,133.67901,106.97234)"
-           id="g7288">
-          <path
-             sodipodi:nodetypes="ccssssccssscc"
-             id="path7290"
-             d="M 47.281861,487.60915 L 46.342401,490.4433 C 50.501351,490.38193 123.78218,490.46415 127.43364,490.22563 C 130.57831,490.02022 134.87886,494.62103 134.4112,501.73803 C 134.21985,504.65006 131.75956,506.94492 132.45915,509.44813 C 133.50075,513.17511 138.58031,510.2612 138.51717,526.48677 C 138.47467,537.41061 138.3909,540.08857 138.3909,540.08857 L 142.93659,540.08857 C 142.93659,540.08857 141.77404,533.30385 141.80016,520.80466 C 141.81446,514.1017 138.20696,511.35581 13 [...]
-             style="fill:#dece6c;fill-opacity:1;fill-rule:evenodd;stroke:#d0ac32;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             sodipodi:type="arc"
-             style="fill:#ccb43c;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             id="path7292"
-             sodipodi:cx="162.25575"
-             sodipodi:cy="474.80746"
-             sodipodi:rx="1.3889598"
-             sodipodi:ry="3.2829959"
-             d="m 163.64471,474.80746 c 0,1.81315 -0.62186,3.283 -1.38896,3.283 -0.7671,0 -1.38896,-1.46985 -1.38896,-3.283 0,-1.81314 0.62186,-3.28299 1.38896,-3.28299 0.7671,0 1.38896,1.46985 1.38896,3.28299 z"
-             transform="matrix(0.995477,9.500641e-2,-9.500641e-2,0.995477,19.02852,19.63825)" />
-        </g>
-        <g
-           transform="matrix(0.3840236,0,0,0.3840236,138.28729,106.97234)"
-           id="g1559">
-          <path
-             style="fill:#dece6c;fill-opacity:1;fill-rule:evenodd;stroke:#d0ac32;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="M 34.669336,485.55525 L 35.016656,488.1511 C 38.835626,487.86714 118.05455,487.59081 121.91011,488.37872 C 124.08444,488.82306 131.48841,493.32158 134.5518,508.23927 C 135.13884,511.09794 133.16018,512.36776 134.33156,515.74717 C 135.59895,519.40354 142.63109,517.57164 145.73617,533.25761 C 146.72838,538.26997 145.46196,540.08857 145.46196,540.08857 L 150.00765,540.08857 C 150.00765,540.08857 148.3398,529.00209 147.67116,527.4407 C 144.79849,520.73253 142.30357,516.37425  [...]
-             id="path1561"
-             sodipodi:nodetypes="ccssssccssssc" />
-          <path
-             transform="matrix(0.962661,-0.27071,0.27071,0.962661,-146.4981,100.8498)"
-             d="m 163.77851,474.80746 c 0,1.81315 -0.68176,3.283 -1.52276,3.283 -0.84099,0 -1.52275,-1.46985 -1.52275,-3.283 0,-1.81314 0.68176,-3.28299 1.52275,-3.28299 0.841,0 1.52276,1.46985 1.52276,3.28299 z"
-             sodipodi:ry="3.2829959"
-             sodipodi:rx="1.5227536"
-             sodipodi:cy="474.80746"
-             sodipodi:cx="162.25575"
-             id="path1563"
-             style="fill:#ccb43c;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             sodipodi:type="arc" />
-        </g>
-      </g>
-    </g>
-    <use
-       x="0"
-       y="0"
-       xlink:href="#g2647"
-       id="use2849"
-       transform="matrix(-1,0,0,1,227.72776,4.3793762e-8)"
-       width="744.09448"
-       height="1052.3622" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer5"
-     inkscape:label="Tip"
-     transform="translate(-45.700655,-119.62301)">
-    <g
-       style="display:inline"
-       id="g5555"
-       transform="matrix(0.3840236,0,0,0.3840236,13.749846,185.22329)">
-      <g
-         style="display:inline"
-         id="g5557"
-         inkscape:label="Calque 1" />
-      <g
-         style="display:inline"
-         inkscape:label="Oeuil"
-         id="layer2">
-        <g
-           transform="translate(268.3572,-229.3095)"
-           id="g3158"
-           style="display:inline">
-          <path
-             style="fill:#e3a200;fill-opacity:1;fill-rule:evenodd;stroke:#b87a0a;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-             d="M -56.194377,290.66148 L -5.4384401,375.80048 L 48.59209,290.66148 C 109.65915,274.67937 130.59352,265.73378 440.49026,140.67771 L 423.76701,106.15763 C 154.58912,217.0441 94.88535,263.31492 -74.204551,257.91569 L -74.204551,290.66148 L -56.194377,290.66148 z"
-             id="path1327"
-             sodipodi:nodetypes="cccccccc" />
-        </g>
-      </g>
-    </g>
-  </g>
-</svg>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/Export_curve.svg b/debian/openfovea/usr/share/pyshared/openfovea/Icon/Export_curve.svg
deleted file mode 100644
index 65989d7..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/Icon/Export_curve.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="24"
-   height="24"
-   id="svg3613"
-   version="1.1"
-   inkscape:version="0.47 r22583"
-   inkscape:export-filename="export_curve.png"
-   inkscape:export-xdpi="52.5"
-   inkscape:export-ydpi="52.5"
-   sodipodi:docname="Export_curve.svg">
-  <defs
-     id="defs3615">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective3621" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="7.7083333"
-     inkscape:cx="16.94543"
-     inkscape:cy="15.450684"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="832"
-     inkscape:window-height="625"
-     inkscape:window-x="51"
-     inkscape:window-y="103"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata3618">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1028.3622)">
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 5.8378379,1023.3677 3.0486486,18.227 17.7081075,0"
-       id="path3623" />
-    <path
-       style="fill:none;stroke:#ff0000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 2.1405405,1027.8433 2.1405405,19.3297 4.7513514,-0.016 4.3621626,2.3189 0.08108,-2.3514 9.810811,-0.016"
-       id="path4135"
-       sodipodi:nodetypes="cccccc" />
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       id="rect4137"
-       width="12.972973"
-       height="14.27027"
-       x="25.945944"
-       y="1023.6919" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 2;stroke-dashoffset:0"
-       d="m 26.464865,1028.4921 10.118918,0"
-       id="path4139"
-       sodipodi:nodetypes="cc" />
-  </g>
-</svg>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/NoData.png b/debian/openfovea/usr/share/pyshared/openfovea/Icon/NoData.png
deleted file mode 100644
index b857156..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/NoData.png and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/NoData.svg b/debian/openfovea/usr/share/pyshared/openfovea/Icon/NoData.svg
deleted file mode 100644
index 6851c7d..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/Icon/NoData.svg
+++ /dev/null
@@ -1,335 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="161.52025"
-   height="143.48293"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   version="1.0"
-   sodipodi:docbase="/home/charles/Projet/AFM/OpenFovea/Icon"
-   sodipodi:docname="NoData.svg"
-   inkscape:export-filename="/home/charles/Bazaar/OpenFovea/mosaic/src/Icon/NoData.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 32 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="64 : 32 : 1"
-       inkscape:persp3d-origin="32 : 21.333333 : 1"
-       id="perspective3169" />
-    <linearGradient
-       id="linearGradient2832">
-      <stop
-         id="stop2834"
-         offset="0"
-         style="stop-color:#f2ffff;stop-opacity:0;" />
-      <stop
-         id="stop2838"
-         offset="1"
-         style="stop-color:#f2ffff;stop-opacity:0.7037037;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2772">
-      <stop
-         style="stop-color:#f2ffff;stop-opacity:0.88148147;"
-         offset="0"
-         id="stop2774" />
-      <stop
-         id="stop2780"
-         offset="0.82051283"
-         style="stop-color:#f2ffff;stop-opacity:0.38518518;" />
-      <stop
-         style="stop-color:#f2ffff;stop-opacity:0;"
-         offset="1"
-         id="stop2776" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2772"
-       id="radialGradient2778"
-       cx="387.5"
-       cy="438.73355"
-       fx="387.5"
-       fy="438.73355"
-       r="81.502647"
-       gradientTransform="matrix(1,0,0,1.04908,0,-23.40425)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2832"
-       id="radialGradient2830"
-       cx="387.14285"
-       cy="486.64789"
-       fx="387.14285"
-       fy="486.64789"
-       r="102.86049"
-       gradientTransform="translate(0,3.116813e-5)"
-       gradientUnits="userSpaceOnUse" />
-    <filter
-       inkscape:collect="always"
-       id="filter4000">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="0.87375745"
-         id="feGaussianBlur4002" />
-    </filter>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="2"
-     inkscape:cx="75.750097"
-     inkscape:cy="97.202502"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     width="64px"
-     height="64px"
-     inkscape:window-width="1280"
-     inkscape:window-height="949"
-     inkscape:window-x="390"
-     inkscape:window-y="47"
-     showgrid="false" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer2"
-     inkscape:label="Iris"
-     style="display:inline"
-     transform="translate(46.260125,50.03102)">
-    <path
-       sodipodi:type="arc"
-       style="fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path1872"
-       sodipodi:cx="387.14285"
-       sodipodi:cy="486.64789"
-       sodipodi:rx="102.85715"
-       sodipodi:ry="102.85715"
-       d="M 475.44604,539.39388 A 102.85715,102.85715 0 1 1 475.44644,539.39321"
-       sodipodi:start="0.53845272"
-       sodipodi:end="6.8216304"
-       sodipodi:open="true"
-       transform="matrix(0.5777973,0,0,0.5777973,-186.97978,-247.16444)" />
-    <path
-       transform="matrix(0.5777973,0,0,0.5777973,-186.97978,-247.16444)"
-       sodipodi:open="true"
-       sodipodi:end="6.8216304"
-       sodipodi:start="0.53845272"
-       d="M 475.44604,539.39388 A 102.85715,102.85715 0 1 1 475.44644,539.39321"
-       sodipodi:ry="102.85715"
-       sodipodi:rx="102.85715"
-       sodipodi:cy="486.64789"
-       sodipodi:cx="387.14285"
-       id="path2822"
-       style="fill:url(#radialGradient2830);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       sodipodi:type="arc" />
-  </g>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline"
-     transform="translate(46.260125,50.03102)">
-    <g
-       id="g2808"
-       transform="matrix(0.5777973,0,0,0.5777973,-187.18619,-247.28843)">
-      <path
-         sodipodi:type="arc"
-         style="fill:#00cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2788"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="M 288.18709,458.58814 A 102.85715,102.85715 0 0 1 292.71022,445.8794 L 387.14285,486.64789 z"
-         sodipodi:start="3.4178981"
-         sodipodi:end="3.5491417" />
-      <path
-         sodipodi:end="4.5812194"
-         sodipodi:start="4.3329848"
-         d="M 349.04795,391.10538 A 102.85715,102.85715 0 0 1 373.68978,384.67433 L 387.14285,486.64789 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2790"
-         style="fill:#00e000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#00cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2792"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="M 314.15905,414.1706 A 102.85715,102.85715 0 0 1 329.91339,401.18221 L 387.14285,486.64789 z"
-         sodipodi:start="3.9235087"
-         sodipodi:end="4.1223451" />
-      <path
-         sodipodi:end="5.3665573"
-         sodipodi:start="5.1452281"
-         d="M 430.28626,393.27638 A 102.85715,102.85715 0 0 1 449.73137,405.02516 L 387.14285,486.64789 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2794"
-         style="fill:#63cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#00cd6d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2796"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="M 489.40234,475.57586 A 102.85715,102.85715 0 0 1 489.93906,490.18795 L 387.14285,486.64789 z"
-         sodipodi:start="6.1753316"
-         sodipodi:end="6.3176094" />
-      <path
-         sodipodi:end="0.46670819"
-         sodipodi:start="0.270173"
-         d="M 486.26883,514.10027 A 102.85715,102.85715 0 0 1 478.99987,532.92835 L 387.14285,486.64789 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2798"
-         style="fill:#00b600;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#00cd28;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2800"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="M 402.60529,588.33617 A 102.85715,102.85715 0 0 1 387.01799,589.50496 L 387.14285,486.64789 z"
-         sodipodi:start="1.419895"
-         sodipodi:end="1.5720103" />
-      <path
-         sodipodi:end="1.1096195"
-         sodipodi:start="0.95694208"
-         d="M 446.39087,570.72681 A 102.85715,102.85715 0 0 1 432.91452,578.75949 L 387.14285,486.64789 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2802"
-         style="fill:#30cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#00e400;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2804"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="M 341.16962,578.65905 A 102.85715,102.85715 0 0 1 324.52646,568.24924 L 387.14285,486.64789 z"
-         sodipodi:start="2.0341626"
-         sodipodi:end="2.2253062" />
-      <path
-         sodipodi:end="2.790794"
-         sodipodi:start="2.5992668"
-         d="M 299.04462,539.7355 A 102.85715,102.85715 0 0 1 290.54985,521.99453 L 387.14285,486.64789 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2806"
-         style="fill:#00cd40;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-    </g>
-    <path
-       sodipodi:type="arc"
-       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path1874"
-       sodipodi:cx="166"
-       sodipodi:cy="166.36218"
-       sodipodi:rx="51"
-       sodipodi:ry="50"
-       d="M 209.78366,192.0026 A 51,50 0 1 1 209.78386,192.00227"
-       sodipodi:start="0.53845272"
-       sodipodi:end="6.8216304"
-       sodipodi:open="true"
-       transform="matrix(0.5777973,0,0,0.5777973,-58.626305,-61.237609)" />
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient2778);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2762"
-       sodipodi:cx="409"
-       sodipodi:cy="476.86218"
-       sodipodi:rx="106"
-       sodipodi:ry="91"
-       d="M 500.00134,523.52773 A 106,91 0 1 1 500.00175,523.52714"
-       sodipodi:start="0.53845272"
-       sodipodi:end="6.8216304"
-       sodipodi:open="true"
-       transform="matrix(0.5777973,0,0,0.5777973,-199.89771,-247.86605)" />
-    <g
-       id="g4004"
-       transform="translate(98.8816,0)">
-      <text
-         xml:space="preserve"
-         style="font-size:24px;font-style:normal;font-weight:normal;opacity:0.94100294;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4000);font-family:Bitstream Vera Sans"
-         id="text3950"
-         transform="translate(-98.287844,0.3535534)"><textPath
-           xlink:href="#path3175"
-           id="textPath3952"><tspan
-   id="tspan3954"
-   style="font-size:24px">No Data to show</tspan></textPath></text>
-      <text
-         transform="translate(-98.99495,-0.3535534)"
-         id="text3171"
-         style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-         xml:space="preserve"><textPath
-           id="textPath3947"
-           xlink:href="#path3175"><tspan
-   style="font-size:24px"
-   id="tspan3173">No Data to show</tspan></textPath></text>
-    </g>
-    <path
-       sodipodi:type="arc"
-       style="opacity:0.5;fill:none;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path3175"
-       sodipodi:cx="136.11806"
-       sodipodi:cy="33.59441"
-       sodipodi:rx="65.053825"
-       sodipodi:ry="65.053825"
-       d="M 71.06568,33.160371 A 65.053825,65.053825 0 0 1 201.17151,33.813888"
-       sodipodi:start="3.1482647"
-       sodipodi:end="6.2865591"
-       sodipodi:open="true"
-       transform="translate(-99.61879,-1.5)" />
-  </g>
-</svg>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/event.ico b/debian/openfovea/usr/share/pyshared/openfovea/Icon/event.ico
deleted file mode 100644
index 8113b4b..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/event.ico and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/event.png b/debian/openfovea/usr/share/pyshared/openfovea/Icon/event.png
deleted file mode 100644
index 5c81385..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/event.png and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/event.svg b/debian/openfovea/usr/share/pyshared/openfovea/Icon/event.svg
deleted file mode 100644
index bdc6399..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/Icon/event.svg
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="24"
-   height="24"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.47 r22583"
-   sodipodi:docname="event.svg"
-   inkscape:export-filename="event.png"
-   inkscape:export-xdpi="28.33"
-   inkscape:export-ydpi="28.33">
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective10" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="4.3671875"
-     inkscape:cx="-18.626592"
-     inkscape:cy="29.168491"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1101"
-     inkscape:window-height="814"
-     inkscape:window-x="95"
-     inkscape:window-y="64"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1028.3622)">
-    <path
-       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 0.51520576,1030.141 3.55436914,0 c 10.3961131,-0.3272 14.0666961,19.4769 14.0666961,19.4769 l 0.177096,-19.5206 5.26861,0"
-       id="path2816"
-       sodipodi:nodetypes="ccccc" />
-  </g>
-</svg>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/export.ico b/debian/openfovea/usr/share/pyshared/openfovea/Icon/export.ico
deleted file mode 100644
index dbb63b2..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/export.ico and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/export.png b/debian/openfovea/usr/share/pyshared/openfovea/Icon/export.png
deleted file mode 100644
index d6bea17..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/export.png and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/export.svg b/debian/openfovea/usr/share/pyshared/openfovea/Icon/export.svg
deleted file mode 100644
index 8ac19fc..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/Icon/export.svg
+++ /dev/null
@@ -1,375 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="64"
-   height="64"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.47 r22583"
-   version="1.0"
-   sodipodi:docname="export.svg"
-   inkscape:export-filename="export.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="2.8284271"
-     inkscape:cx="74.547595"
-     inkscape:cy="85.267813"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     width="64px"
-     height="64px"
-     inkscape:window-width="1280"
-     inkscape:window-height="949"
-     inkscape:window-x="0"
-     inkscape:window-y="25"
-     showgrid="false"
-     inkscape:window-maximized="0" />
-  <defs
-     id="defs4">
-    <marker
-       style="overflow:visible"
-       id="TriangleOutS"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="TriangleOutS">
-      <path
-         transform="scale(0.2)"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         id="path3966" />
-    </marker>
-    <marker
-       style="overflow:visible;"
-       id="Arrow2Send"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow2Send">
-      <path
-         transform="scale(0.3) rotate(180) translate(-2.3,0)"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
-         id="path3850" />
-    </marker>
-    <marker
-       style="overflow:visible;"
-       id="Arrow1Send"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow1Send">
-      <path
-         transform="scale(0.2) rotate(180) translate(6,0)"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         id="path3832" />
-    </marker>
-    <marker
-       style="overflow:visible;"
-       id="Arrow2Lend"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow2Lend">
-      <path
-         transform="scale(1.1) rotate(180) translate(1,0)"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
-         id="path3838" />
-    </marker>
-    <marker
-       style="overflow:visible;"
-       id="Arrow1Lend"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow1Lend">
-      <path
-         transform="scale(0.8) rotate(180) translate(12.5,0)"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         id="path3820" />
-    </marker>
-    <inkscape:perspective
-       id="perspective32"
-       inkscape:persp3d-origin="32 : 21.333333 : 1"
-       inkscape:vp_z="64 : 32 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 32 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient2832">
-      <stop
-         style="stop-color:#f2ffff;stop-opacity:0;"
-         offset="0"
-         id="stop2834" />
-      <stop
-         style="stop-color:#f2ffff;stop-opacity:0.7037037;"
-         offset="1"
-         id="stop2838" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2772">
-      <stop
-         id="stop2774"
-         offset="0"
-         style="stop-color:#f2ffff;stop-opacity:0.88148147;" />
-      <stop
-         style="stop-color:#f2ffff;stop-opacity:0.38518518;"
-         offset="0.82051283"
-         id="stop2780" />
-      <stop
-         id="stop2776"
-         offset="1"
-         style="stop-color:#f2ffff;stop-opacity:0;" />
-    </linearGradient>
-    <radialGradient
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,1.04908,0,-23.40425)"
-       r="81.502647"
-       fy="438.73355"
-       fx="387.5"
-       cy="438.73355"
-       cx="387.5"
-       id="radialGradient2778"
-       xlink:href="#linearGradient2772"
-       inkscape:collect="always" />
-    <radialGradient
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(0,3.116813e-5)"
-       r="102.86049"
-       fy="486.64789"
-       fx="387.14285"
-       cy="486.64789"
-       cx="387.14285"
-       id="radialGradient2830"
-       xlink:href="#linearGradient2832"
-       inkscape:collect="always" />
-    <marker
-       style="overflow:visible"
-       id="TriangleOutSp"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="TriangleOutSp">
-      <path
-         transform="scale(0.2)"
-         style="marker-start:none;stroke:#0000ff;stroke-width:1.0pt;fill:#0000ff;fill-rule:evenodd"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         id="path5423" />
-    </marker>
-  </defs>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     style="display:inline"
-     inkscape:label="Iris"
-     id="layer2"
-     inkscape:groupmode="layer">
-    <path
-       transform="matrix(0.29079,0,0,0.29079,-80.27129,-109.4375)"
-       sodipodi:open="true"
-       sodipodi:end="6.8216304"
-       sodipodi:start="0.53845272"
-       d="M 475.44604,539.39388 A 102.85715,102.85715 0 1 1 475.44644,539.39321"
-       sodipodi:ry="102.85715"
-       sodipodi:rx="102.85715"
-       sodipodi:cy="486.64789"
-       sodipodi:cx="387.14285"
-       id="path1872"
-       style="fill:lime;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       sodipodi:type="arc" />
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient2830);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2822"
-       sodipodi:cx="387.14285"
-       sodipodi:cy="486.64789"
-       sodipodi:rx="102.85715"
-       sodipodi:ry="102.85715"
-       d="M 475.44604,539.39388 A 102.85715,102.85715 0 1 1 475.44644,539.39321"
-       sodipodi:start="0.53845272"
-       sodipodi:end="6.8216304"
-       sodipodi:open="true"
-       transform="matrix(0.29079,0,0,0.29079,-80.27129,-109.4375)" />
-  </g>
-  <g
-     style="display:inline"
-     id="layer1"
-     inkscape:groupmode="layer"
-     inkscape:label="Calque 1">
-    <g
-       transform="matrix(0.29079,0,0,0.29079,-80.37517,-109.4999)"
-       id="g2808">
-      <path
-         sodipodi:end="3.5491417"
-         sodipodi:start="3.4178981"
-         d="m 288.18709,458.58814 c 1.22799,-4.33066 2.73895,-8.57603 4.52313,-12.70874 l 94.43263,40.76849 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2788"
-         style="fill:#00cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#00e000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2790"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="m 349.04795,391.10538 c 7.91582,-3.15621 16.19319,-5.31645 24.64183,-6.43105 l 13.45307,101.97356 z"
-         sodipodi:start="4.3329848"
-         sodipodi:end="4.5812194" />
-      <path
-         sodipodi:end="4.1223451"
-         sodipodi:start="3.9235087"
-         d="m 314.15905,414.1706 c 4.80767,-4.84127 10.08511,-9.19216 15.75434,-12.98839 l 57.22946,85.46568 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2792"
-         style="fill:#00cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#63cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2794"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="m 430.28626,393.27638 c 6.89565,3.18621 13.41713,7.1265 19.44511,11.74878 l -62.58852,81.62273 z"
-         sodipodi:start="5.1452281"
-         sodipodi:end="5.3665573" />
-      <path
-         sodipodi:end="6.3176094"
-         sodipodi:start="6.1753316"
-         d="m 489.40234,475.57586 c 0.52532,4.8518 0.70468,9.73483 0.53672,14.61209 l -102.79621,-3.54006 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2796"
-         style="fill:#00cd6d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#00b600;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2798"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="m 486.26883,514.10027 c -1.7999,6.49915 -4.23461,12.80553 -7.26896,18.82808 l -91.85702,-46.28046 z"
-         sodipodi:start="0.270173"
-         sodipodi:end="0.46670819" />
-      <path
-         sodipodi:end="1.5720103"
-         sodipodi:start="1.419895"
-         d="m 402.60529,588.33617 c -5.1586,0.7844 -10.36941,1.17512 -15.5873,1.16879 l 0.12486,-102.85707 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2800"
-         style="fill:#00cd28;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#30cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2802"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="m 446.39087,570.72681 c -4.28107,3.01675 -8.78629,5.70212 -13.47635,8.03268 l -45.77167,-92.1116 z"
-         sodipodi:start="0.95694208"
-         sodipodi:end="1.1096195" />
-      <path
-         sodipodi:end="2.2253062"
-         sodipodi:start="2.0341626"
-         d="m 341.16962,578.65905 c -5.86691,-2.93139 -11.44001,-6.4172 -16.64316,-10.40981 l 62.61639,-81.60135 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2804"
-         style="fill:#00e400;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#00cd40;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2806"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="m 299.04462,539.7355 c -3.39183,-5.62871 -6.23642,-11.56952 -8.49477,-17.74097 l 96.593,-35.34664 z"
-         sodipodi:start="2.5992668"
-         sodipodi:end="2.790794" />
-    </g>
-    <path
-       transform="matrix(0.29079,0,0,0.29079,-15.6744,-15.86547)"
-       sodipodi:open="true"
-       sodipodi:end="6.8216304"
-       sodipodi:start="0.53845272"
-       d="M 209.78366,192.0026 A 51,50 0 1 1 209.78386,192.00227"
-       sodipodi:ry="50"
-       sodipodi:rx="51"
-       sodipodi:cy="166.36218"
-       sodipodi:cx="166"
-       id="path1874"
-       style="fill:black;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       sodipodi:type="arc" />
-    <path
-       transform="matrix(0.29079,0,0,0.29079,-86.77254,-109.7906)"
-       sodipodi:open="true"
-       sodipodi:end="6.8216304"
-       sodipodi:start="0.53845272"
-       d="M 500.00134,523.52773 A 106,91 0 1 1 500.00175,523.52714"
-       sodipodi:ry="91"
-       sodipodi:rx="106"
-       sodipodi:cy="476.86218"
-       sodipodi:cx="409"
-       id="path2762"
-       style="fill:url(#radialGradient2778);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       sodipodi:type="arc" />
-    <path
-       style="fill:#0000ff;fill-opacity:0.57499999;stroke:none"
-       d="M 27.223611,20.866486 19.091883,9.1992245 65.760931,2.8352625 48.436814,47.736543 39.59798,36.069281 13.965359,55.42633 c 0,0 -7.4350825,4.161152 -12.6395335,-3.093593 -5.204451,-7.254745 1.414214,-12.904698 1.414214,-12.904698 L 27.223611,20.866486 z"
-       id="path5508"
-       sodipodi:nodetypes="cccccczcc" />
-  </g>
-</svg>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/export_curve.ico b/debian/openfovea/usr/share/pyshared/openfovea/Icon/export_curve.ico
deleted file mode 100644
index c7fb448..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/export_curve.ico and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/export_curve.png b/debian/openfovea/usr/share/pyshared/openfovea/Icon/export_curve.png
deleted file mode 100644
index f53ec19..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/export_curve.png and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/icon64x64.svg b/debian/openfovea/usr/share/pyshared/openfovea/Icon/icon64x64.svg
deleted file mode 100644
index 332de46..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/Icon/icon64x64.svg
+++ /dev/null
@@ -1,290 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="64"
-   height="64"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   version="1.0"
-   sodipodi:docbase="/home/charles/Projet/AFM/OpenFovea/Icon"
-   sodipodi:docname="icon64x64.svg"
-   inkscape:export-filename="/home/charles/Bazaar/OpenFovea/packaging/openfovea/Icon/openfovea.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 32 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="64 : 32 : 1"
-       inkscape:persp3d-origin="32 : 21.333333 : 1"
-       id="perspective32" />
-    <linearGradient
-       id="linearGradient2832">
-      <stop
-         id="stop2834"
-         offset="0"
-         style="stop-color:#f2ffff;stop-opacity:0;" />
-      <stop
-         id="stop2838"
-         offset="1"
-         style="stop-color:#f2ffff;stop-opacity:0.7037037;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2772">
-      <stop
-         style="stop-color:#f2ffff;stop-opacity:0.88148147;"
-         offset="0"
-         id="stop2774" />
-      <stop
-         id="stop2780"
-         offset="0.82051283"
-         style="stop-color:#f2ffff;stop-opacity:0.38518518;" />
-      <stop
-         style="stop-color:#f2ffff;stop-opacity:0;"
-         offset="1"
-         id="stop2776" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2772"
-       id="radialGradient2778"
-       cx="387.5"
-       cy="438.73355"
-       fx="387.5"
-       fy="438.73355"
-       r="81.502647"
-       gradientTransform="matrix(1,0,0,1.04908,0,-23.40425)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2832"
-       id="radialGradient2830"
-       cx="387.14285"
-       cy="486.64789"
-       fx="387.14285"
-       fy="486.64789"
-       r="102.86049"
-       gradientTransform="translate(0,3.116813e-5)"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="2.8284271"
-     inkscape:cx="149.35582"
-     inkscape:cy="100.06507"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     width="64px"
-     height="64px"
-     inkscape:window-width="1280"
-     inkscape:window-height="949"
-     inkscape:window-x="0"
-     inkscape:window-y="25"
-     showgrid="false" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer2"
-     inkscape:label="Iris"
-     style="display:inline">
-    <path
-       sodipodi:type="arc"
-       style="fill:lime;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path1872"
-       sodipodi:cx="387.14285"
-       sodipodi:cy="486.64789"
-       sodipodi:rx="102.85715"
-       sodipodi:ry="102.85715"
-       d="M 475.44604,539.39388 A 102.85715,102.85715 0 1 1 475.44644,539.39321"
-       sodipodi:start="0.53845272"
-       sodipodi:end="6.8216304"
-       sodipodi:open="true"
-       transform="matrix(0.29079,0,0,0.29079,-80.27129,-109.4375)" />
-    <path
-       transform="matrix(0.29079,0,0,0.29079,-80.27129,-109.4375)"
-       sodipodi:open="true"
-       sodipodi:end="6.8216304"
-       sodipodi:start="0.53845272"
-       d="M 475.44604,539.39388 A 102.85715,102.85715 0 1 1 475.44644,539.39321"
-       sodipodi:ry="102.85715"
-       sodipodi:rx="102.85715"
-       sodipodi:cy="486.64789"
-       sodipodi:cx="387.14285"
-       id="path2822"
-       style="fill:url(#radialGradient2830);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       sodipodi:type="arc" />
-  </g>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     style="display:inline">
-    <g
-       id="g2808"
-       transform="matrix(0.29079,0,0,0.29079,-80.37517,-109.4999)">
-      <path
-         sodipodi:type="arc"
-         style="fill:#00cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2788"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="M 288.18709,458.58814 A 102.85715,102.85715 0 0 1 292.71022,445.8794 L 387.14285,486.64789 z"
-         sodipodi:start="3.4178981"
-         sodipodi:end="3.5491417" />
-      <path
-         sodipodi:end="4.5812194"
-         sodipodi:start="4.3329848"
-         d="M 349.04795,391.10538 A 102.85715,102.85715 0 0 1 373.68978,384.67433 L 387.14285,486.64789 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2790"
-         style="fill:#00e000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#00cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2792"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="M 314.15905,414.1706 A 102.85715,102.85715 0 0 1 329.91339,401.18221 L 387.14285,486.64789 z"
-         sodipodi:start="3.9235087"
-         sodipodi:end="4.1223451" />
-      <path
-         sodipodi:end="5.3665573"
-         sodipodi:start="5.1452281"
-         d="M 430.28626,393.27638 A 102.85715,102.85715 0 0 1 449.73137,405.02516 L 387.14285,486.64789 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2794"
-         style="fill:#63cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#00cd6d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2796"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="M 489.40234,475.57586 A 102.85715,102.85715 0 0 1 489.93906,490.18795 L 387.14285,486.64789 z"
-         sodipodi:start="6.1753316"
-         sodipodi:end="6.3176094" />
-      <path
-         sodipodi:end="0.46670819"
-         sodipodi:start="0.270173"
-         d="M 486.26883,514.10027 A 102.85715,102.85715 0 0 1 478.99987,532.92835 L 387.14285,486.64789 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2798"
-         style="fill:#00b600;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#00cd28;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2800"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="M 402.60529,588.33617 A 102.85715,102.85715 0 0 1 387.01799,589.50496 L 387.14285,486.64789 z"
-         sodipodi:start="1.419895"
-         sodipodi:end="1.5720103" />
-      <path
-         sodipodi:end="1.1096195"
-         sodipodi:start="0.95694208"
-         d="M 446.39087,570.72681 A 102.85715,102.85715 0 0 1 432.91452,578.75949 L 387.14285,486.64789 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2802"
-         style="fill:#30cd00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#00e400;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2804"
-         sodipodi:cx="387.14285"
-         sodipodi:cy="486.64789"
-         sodipodi:rx="102.85715"
-         sodipodi:ry="102.85715"
-         d="M 341.16962,578.65905 A 102.85715,102.85715 0 0 1 324.52646,568.24924 L 387.14285,486.64789 z"
-         sodipodi:start="2.0341626"
-         sodipodi:end="2.2253062" />
-      <path
-         sodipodi:end="2.790794"
-         sodipodi:start="2.5992668"
-         d="M 299.04462,539.7355 A 102.85715,102.85715 0 0 1 290.54985,521.99453 L 387.14285,486.64789 z"
-         sodipodi:ry="102.85715"
-         sodipodi:rx="102.85715"
-         sodipodi:cy="486.64789"
-         sodipodi:cx="387.14285"
-         id="path2806"
-         style="fill:#00cd40;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         sodipodi:type="arc" />
-    </g>
-    <path
-       sodipodi:type="arc"
-       style="fill:black;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path1874"
-       sodipodi:cx="166"
-       sodipodi:cy="166.36218"
-       sodipodi:rx="51"
-       sodipodi:ry="50"
-       d="M 209.78366,192.0026 A 51,50 0 1 1 209.78386,192.00227"
-       sodipodi:start="0.53845272"
-       sodipodi:end="6.8216304"
-       sodipodi:open="true"
-       transform="matrix(0.29079,0,0,0.29079,-15.6744,-15.86547)" />
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient2778);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2762"
-       sodipodi:cx="409"
-       sodipodi:cy="476.86218"
-       sodipodi:rx="106"
-       sodipodi:ry="91"
-       d="M 500.00134,523.52773 A 106,91 0 1 1 500.00175,523.52714"
-       sodipodi:start="0.53845272"
-       sodipodi:end="6.8216304"
-       sodipodi:open="true"
-       transform="matrix(0.29079,0,0,0.29079,-86.77254,-109.7906)" />
-  </g>
-</svg>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/openfovea.ico b/debian/openfovea/usr/share/pyshared/openfovea/Icon/openfovea.ico
deleted file mode 100644
index 3ae0fc0..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/openfovea.ico and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/openfovea.png b/debian/openfovea/usr/share/pyshared/openfovea/Icon/openfovea.png
deleted file mode 100644
index df4e9b0..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/openfovea.png and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/tomo_x_square.svg b/debian/openfovea/usr/share/pyshared/openfovea/Icon/tomo_x_square.svg
deleted file mode 100644
index adbb15d..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/Icon/tomo_x_square.svg
+++ /dev/null
@@ -1,187 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="29.899384"
-   height="24.995012"
-   id="svg3280"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   version="1.0"
-   sodipodi:docname="tomo_x_square.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs3282">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="-6.5123916 : 6.2257691 : 0"
-       inkscape:vp_y="1.4135022e-15 : 23.085005 : 0"
-       inkscape:vp_z="8.9844554 : -0.10633669 : 0"
-       inkscape:persp3d-origin="-74.254878 : 13.403064 : 1"
-       id="perspective2430" />
-    <inkscape:perspective
-       id="perspective2420"
-       inkscape:persp3d-origin="-87.44631 : 3.2456637 : 1"
-       inkscape:vp_z="8.9844554 : -0.10633669 : 0"
-       inkscape:vp_y="1.4135022e-15 : 23.085005 : 0"
-       inkscape:vp_x="-6.5123916 : 6.2257691 : 0"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective3306"
-       inkscape:persp3d-origin="-63.004878 : 15.188778 : 1"
-       inkscape:vp_z="8.9844554 : -0.10633669 : 0"
-       inkscape:vp_y="1.4135022e-15 : 23.085005 : 0"
-       inkscape:vp_x="-6.5123916 : 6.2257691 : 0"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="-6.5123916 : 6.2257691 : 0"
-       inkscape:vp_y="1.4135022e-15 : 23.085005 : 0"
-       inkscape:vp_z="8.9844554 : -0.10633669 : 0"
-       inkscape:persp3d-origin="-76.19631 : 5.031378 : 1"
-       id="perspective10" />
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective3288" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="5.6"
-     inkscape:cx="52.4945"
-     inkscape:cy="28.807076"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1131"
-     inkscape:window-height="726"
-     inkscape:window-x="309"
-     inkscape:window-y="147" />
-  <metadata
-     id="metadata3285">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(43.261608,-742.32513)">
-    <g
-       sodipodi:type="inkscape:box3d"
-       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.34055018;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:0.34055018, 0.34055018;stroke-dashoffset:0;stroke-opacity:1"
-       id="g3169"
-       inkscape:perspectiveID="#perspective3306"
-       inkscape:corner0="1.549884 : -0.23976184 : 0 : 1"
-       inkscape:corner7="0.81015214 : -0.64656034 : 1.3234556 : 1">
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3181"
-         style="fill:#e9e9ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="11"
-         d="M -17.946194,748.15778 L -13.12877,752.76318 L -13.12877,762.15412 L -17.946194,757.54872 L -17.946194,748.15778 z" />
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3171"
-         style="fill:#353564;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="6"
-         d="M -29.836722,748.01705 L -29.836722,757.40799 L -17.946194,757.54872 L -17.946194,748.15778 L -29.836722,748.01705 z" />
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3179"
-         style="fill:#afafde;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="13"
-         d="M -29.836722,757.40799 L -25.019298,762.01339 L -13.12877,762.15412 L -17.946194,757.54872 L -29.836722,757.40799 z" />
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3173"
-         style="fill:#4d4d9f;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="5"
-         d="M -29.836722,748.01705 L -25.019298,752.62245 L -13.12877,752.76318 L -17.946194,748.15778 L -29.836722,748.01705 z" />
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3177"
-         style="fill:#d7d7ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="14"
-         d="M -25.019298,752.62245 L -25.019298,762.01339 L -13.12877,762.15412 L -13.12877,752.76318 L -25.019298,752.62245 z" />
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3175"
-         style="fill:#8686bf;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="3"
-         d="M -29.836722,748.01705 L -25.019298,752.62245 L -25.019298,762.01339 L -29.836722,757.40799 L -29.836722,748.01705 z" />
-    </g>
-    <rect
-       style="fill:#474747;fill-opacity:0.58895706;stroke:#000000;stroke-width:0.00597004;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:0.00597003, 0.00597003;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3278"
-       width="17.792322"
-       height="10.059039"
-       x="774.87329"
-       y="-45.206345"
-       transform="matrix(0,1,0.6980577,0.7160415,0,0)" />
-    <g
-       inkscape:corner7="0.81015214 : -0.2043281 : 1.3781759 : 1"
-       inkscape:corner0="1.549884 : 0.2024704 : 0 : 1"
-       inkscape:perspectiveID="#perspective10"
-       id="g3233"
-       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.34055018;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:0.34055018, 0.34055018;stroke-dashoffset:0;stroke-opacity:1"
-       sodipodi:type="inkscape:box3d">
-      <path
-         d="M -30.645994,748.11206 L -25.82857,752.71746 L -25.82857,762.10841 L -30.645994,757.50301 L -30.645994,748.11206 z"
-         inkscape:box3dsidetype="11"
-         style="fill:#e9e9ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3239"
-         sodipodi:type="inkscape:box3dside" />
-      <path
-         d="M -43.028154,747.96551 L -43.028154,757.35646 L -30.645994,757.50301 L -30.645994,748.11206 L -43.028154,747.96551 z"
-         inkscape:box3dsidetype="6"
-         style="fill:#353564;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3237"
-         sodipodi:type="inkscape:box3dside" />
-      <path
-         d="M -43.028154,757.35646 L -38.21073,761.96186 L -25.82857,762.10841 L -30.645994,757.50301 L -43.028154,757.35646 z"
-         inkscape:box3dsidetype="13"
-         style="fill:#afafde;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3235"
-         sodipodi:type="inkscape:box3dside" />
-      <path
-         d="M -43.028154,747.96551 L -38.21073,752.57091 L -25.82857,752.71746 L -30.645994,748.11206 L -43.028154,747.96551 z"
-         inkscape:box3dsidetype="5"
-         style="fill:#4d4d9f;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3241"
-         sodipodi:type="inkscape:box3dside" />
-      <path
-         d="M -38.21073,752.57091 L -38.21073,761.96186 L -25.82857,762.10841 L -25.82857,752.71746 L -38.21073,752.57091 z"
-         inkscape:box3dsidetype="14"
-         style="fill:#d7d7ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3243"
-         sodipodi:type="inkscape:box3dside" />
-      <path
-         d="M -43.028154,747.96551 L -38.21073,752.57091 L -38.21073,761.96186 L -43.028154,757.35646 L -43.028154,747.96551 z"
-         inkscape:box3dsidetype="3"
-         style="fill:#8686bf;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3245"
-         sodipodi:type="inkscape:box3dside" />
-    </g>
-  </g>
-</svg>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/tomo_y_square.svg b/debian/openfovea/usr/share/pyshared/openfovea/Icon/tomo_y_square.svg
deleted file mode 100644
index e610bd5..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/Icon/tomo_y_square.svg
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="29.468185"
-   height="25.000004"
-   id="svg3308"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   version="1.0"
-   sodipodi:docname="tomo_y_square.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs3310">
-    <inkscape:perspective
-       id="perspective3334"
-       inkscape:persp3d-origin="-364.97991 : 19.498083 : 1"
-       inkscape:vp_z="11.676602 : -0.13819994 : 0"
-       inkscape:vp_y="1.8370509e-15 : 30.002309 : 0"
-       inkscape:vp_x="-8.4637967 : 8.0912892 : 0"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="-8.4637967 : 8.0912892 : 0"
-       inkscape:vp_y="1.8370509e-15 : 30.002309 : 0"
-       inkscape:vp_z="11.676602 : -0.13819994 : 0"
-       inkscape:persp3d-origin="-357.86507 : -0.38916702 : 1"
-       id="perspective10" />
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective3316" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.684154"
-     inkscape:cx="25.34874"
-     inkscape:cy="11.889522"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1001"
-     inkscape:window-height="755"
-     inkscape:window-x="577"
-     inkscape:window-y="95" />
-  <metadata
-     id="metadata3313">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(189.09959,296.32348)">
-    <g
-       sodipodi:type="inkscape:box3d"
-       style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.34055018;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:0.34055018, 0.34055018;stroke-dashoffset:0;stroke-opacity:1"
-       id="g3169"
-       inkscape:perspectiveID="#perspective3334"
-       inkscape:corner0="1.549884 : -0.23976184 : 0 : 1"
-       inkscape:corner7="0.81015214 : -0.64656034 : 1.3234556 : 1">
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3181"
-         style="fill:#e9e9ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="11"
-         d="M -173.54476,-295.98581 L -167.28382,-290.00042 L -167.28382,-277.79553 L -173.54476,-283.78091 L -173.54476,-295.98581 z" />
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3171"
-         style="fill:#353564;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="6"
-         d="M -188.99822,-296.16871 L -188.99822,-283.96382 L -173.54476,-283.78091 L -173.54476,-295.98581 L -188.99822,-296.16871 z" />
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3179"
-         style="fill:#afafde;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="13"
-         d="M -188.99822,-283.96382 L -182.73728,-277.97843 L -167.28382,-277.79553 L -173.54476,-283.78091 L -188.99822,-283.96382 z" />
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3173"
-         style="fill:#4d4d9f;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="5"
-         d="M -188.99822,-296.16871 L -182.73728,-290.18333 L -167.28382,-290.00042 L -173.54476,-295.98581 L -188.99822,-296.16871 z" />
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3177"
-         style="fill:#d7d7ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="14"
-         d="M -182.73728,-290.18333 L -182.73728,-277.97843 L -167.28382,-277.79553 L -167.28382,-290.00042 L -182.73728,-290.18333 z" />
-      <path
-         sodipodi:type="inkscape:box3dside"
-         id="path3175"
-         style="fill:#8686bf;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         inkscape:box3dsidetype="3"
-         d="M -188.99822,-296.16871 L -182.73728,-290.18333 L -182.73728,-277.97843 L -188.99822,-283.96382 L -188.99822,-296.16871 z" />
-    </g>
-    <rect
-       style="opacity:1;fill:#474747;fill-opacity:0.58895706;stroke:#000000;stroke-width:0.00943256;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:0.00943256, 0.00943256;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect3278"
-       width="23.120758"
-       height="19.323767"
-       x="-188.452"
-       y="-294.07654"
-       transform="matrix(1,0,-3.190733e-3,0.9999949,0,0)" />
-    <g
-       inkscape:corner7="0.81015214 : -0.2043281 : 1.3781759 : 1"
-       inkscape:corner0="1.549884 : 0.2024704 : 0 : 1"
-       inkscape:perspectiveID="#perspective10"
-       id="g3233"
-       style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.34055018;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:0.34055018, 0.34055018;stroke-dashoffset:0;stroke-opacity:1"
-       sodipodi:type="inkscape:box3d">
-      <path
-         d="M -165.79097,-289.35898 L -159.53003,-283.3736 L -159.53003,-271.16871 L -165.79097,-277.15409 L -165.79097,-289.35898 z"
-         inkscape:box3dsidetype="11"
-         style="fill:#e9e9ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3239"
-         sodipodi:type="inkscape:box3dside" />
-      <path
-         d="M -181.88338,-289.54945 L -181.88338,-277.34455 L -165.79097,-277.15409 L -165.79097,-289.35898 L -181.88338,-289.54945 z"
-         inkscape:box3dsidetype="6"
-         style="fill:#353564;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3237"
-         sodipodi:type="inkscape:box3dside" />
-      <path
-         d="M -181.88338,-277.34455 L -175.62244,-271.35917 L -159.53003,-271.16871 L -165.79097,-277.15409 L -181.88338,-277.34455 z"
-         inkscape:box3dsidetype="13"
-         style="fill:#afafde;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3235"
-         sodipodi:type="inkscape:box3dside" />
-      <path
-         d="M -181.88338,-289.54945 L -175.62244,-283.56406 L -159.53003,-283.3736 L -165.79097,-289.35898 L -181.88338,-289.54945 z"
-         inkscape:box3dsidetype="5"
-         style="fill:#4d4d9f;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3241"
-         sodipodi:type="inkscape:box3dside" />
-      <path
-         d="M -175.62244,-283.56406 L -175.62244,-271.35917 L -159.53003,-271.16871 L -159.53003,-283.3736 L -175.62244,-283.56406 z"
-         inkscape:box3dsidetype="14"
-         style="fill:#d7d7ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3243"
-         sodipodi:type="inkscape:box3dside" />
-      <path
-         d="M -181.88338,-289.54945 L -175.62244,-283.56406 L -175.62244,-271.35917 L -181.88338,-277.34455 L -181.88338,-289.54945 z"
-         inkscape:box3dsidetype="3"
-         style="fill:#8686bf;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-         id="path3245"
-         sodipodi:type="inkscape:box3dside" />
-    </g>
-  </g>
-</svg>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/tomo_z_square.svg b/debian/openfovea/usr/share/pyshared/openfovea/Icon/tomo_z_square.svg
deleted file mode 100644
index 5cfbcd0..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/Icon/tomo_z_square.svg
+++ /dev/null
@@ -1,183 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25.666435"
-   height="25"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   version="1.0"
-   sodipodi:docname="tomo_z_square.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       id="perspective2446"
-       inkscape:persp3d-origin="-364.09235 : -8.3537513 : 1"
-       inkscape:vp_z="9.2257984 : -0.10919314 : 0"
-       inkscape:vp_y="1.4514721e-15 : 23.705121 : 0"
-       inkscape:vp_x="-6.6873294 : 6.3930075 : 0"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective2436"
-       inkscape:persp3d-origin="-364.09235 : -8.3537513 : 1"
-       inkscape:vp_z="9.2257984 : -0.10919314 : 0"
-       inkscape:vp_y="1.4514721e-15 : 23.705121 : 0"
-       inkscape:vp_x="-6.6873294 : 6.3930075 : 0"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective3231"
-       inkscape:persp3d-origin="377.76153 : 585.0731 : 1"
-       inkscape:vp_z="389.1901 : -4.60631 : 0"
-       inkscape:vp_y="6.1230318e-14 : 1000 : 0"
-       inkscape:vp_x="-17.142856 : 646.18109 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="-6.6873294 : 6.3930075 : 0"
-       inkscape:vp_y="1.4514721e-15 : 23.705121 : 0"
-       inkscape:vp_z="9.2257984 : -0.10919314 : 0"
-       inkscape:persp3d-origin="-363.19949 : 10.217677 : 1"
-       id="perspective10" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="5.6"
-     inkscape:cx="-5.2881722"
-     inkscape:cy="-15.065071"
-     inkscape:document-units="px"
-     inkscape:current-layer="g2395"
-     showgrid="false"
-     inkscape:window-width="1286"
-     inkscape:window-height="816"
-     inkscape:window-x="0"
-     inkscape:window-y="180" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(189.04492,-1064.7383)">
-    <g
-       id="g2395">
-      <g
-         inkscape:corner7="0.81015214 : -0.64656034 : 1.3234556 : 1"
-         inkscape:corner0="1.549884 : -0.23976184 : 0 : 1"
-         inkscape:perspectiveID="#perspective10"
-         id="g3169"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.34055018;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:0.34055018, 0.34055018;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="inkscape:box3d">
-        <path
-           d="M -172.30922,1075.4403 L -167.36239,1080.1694 L -167.36239,1089.8126 L -172.30922,1085.0835 L -172.30922,1075.4403 z"
-           inkscape:box3dsidetype="11"
-           style="fill:#e9e9ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           id="path3181"
-           sodipodi:type="inkscape:box3dside" />
-        <path
-           d="M -184.51915,1075.2958 L -184.51915,1084.939 L -172.30922,1085.0835 L -172.30922,1075.4403 L -184.51915,1075.2958 z"
-           inkscape:box3dsidetype="6"
-           style="fill:#353564;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           id="path3171"
-           sodipodi:type="inkscape:box3dside" />
-        <path
-           d="M -184.51915,1084.939 L -179.57232,1089.6681 L -167.36239,1089.8126 L -172.30922,1085.0835 L -184.51915,1084.939 z"
-           inkscape:box3dsidetype="13"
-           style="fill:#afafde;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           id="path3179"
-           sodipodi:type="inkscape:box3dside" />
-        <path
-           d="M -184.51915,1075.2958 L -179.57232,1080.0249 L -167.36239,1080.1694 L -172.30922,1075.4403 L -184.51915,1075.2958 z"
-           inkscape:box3dsidetype="5"
-           style="fill:#4d4d9f;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           id="path3173"
-           sodipodi:type="inkscape:box3dside" />
-        <path
-           d="M -179.57232,1080.0249 L -179.57232,1089.6681 L -167.36239,1089.8126 L -167.36239,1080.1694 L -179.57232,1080.0249 z"
-           inkscape:box3dsidetype="14"
-           style="fill:#d7d7ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           id="path3177"
-           sodipodi:type="inkscape:box3dside" />
-        <path
-           d="M -184.51915,1075.2958 L -179.57232,1080.0249 L -179.57232,1089.6681 L -184.51915,1084.939 L -184.51915,1075.2958 z"
-           inkscape:box3dsidetype="3"
-           style="fill:#8686bf;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           id="path3175"
-           sodipodi:type="inkscape:box3dside" />
-      </g>
-      <rect
-         transform="matrix(1,0,0.7160415,0.6980577,0,0)"
-         y="1537.6874"
-         x="-1290.0929"
-         height="10.329248"
-         width="18.270266"
-         id="rect3278"
-         style="fill:#474747;fill-opacity:0.58895706;stroke:#000000;stroke-width:0.00613041;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:0.00613041, 0.00613041;stroke-dashoffset:0;stroke-opacity:1" />
-      <g
-         sodipodi:type="inkscape:box3d"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.34055018;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:0.34055018, 0.34055018;stroke-dashoffset:0;stroke-opacity:1"
-         id="g3233"
-         inkscape:perspectiveID="#perspective10"
-         inkscape:corner0="1.549884 : 0.2024704 : 0 : 1"
-         inkscape:corner7="0.81015214 : -0.2043281 : 1.3781759 : 1">
-        <path
-           sodipodi:type="inkscape:box3dside"
-           id="path3239"
-           style="fill:#e9e9ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           inkscape:box3dsidetype="11"
-           d="M -171.80438,1064.9631 L -166.85755,1069.6922 L -166.85755,1079.3354 L -171.80438,1074.6063 L -171.80438,1064.9631 z" />
-        <path
-           sodipodi:type="inkscape:box3dside"
-           id="path3237"
-           style="fill:#353564;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           inkscape:box3dsidetype="6"
-           d="M -184.51915,1064.8126 L -184.51915,1074.4558 L -171.80438,1074.6063 L -171.80438,1064.9631 L -184.51915,1064.8126 z" />
-        <path
-           sodipodi:type="inkscape:box3dside"
-           id="path3235"
-           style="fill:#afafde;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           inkscape:box3dsidetype="13"
-           d="M -184.51915,1074.4558 L -179.57232,1079.1849 L -166.85755,1079.3354 L -171.80438,1074.6063 L -184.51915,1074.4558 z" />
-        <path
-           sodipodi:type="inkscape:box3dside"
-           id="path3241"
-           style="fill:#4d4d9f;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           inkscape:box3dsidetype="5"
-           d="M -184.51915,1064.8126 L -179.57232,1069.5417 L -166.85755,1069.6922 L -171.80438,1064.9631 L -184.51915,1064.8126 z" />
-        <path
-           sodipodi:type="inkscape:box3dside"
-           id="path3243"
-           style="fill:#d7d7ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           inkscape:box3dsidetype="14"
-           d="M -179.57232,1069.5417 L -179.57232,1079.1849 L -166.85755,1079.3354 L -166.85755,1069.6922 L -179.57232,1069.5417 z" />
-        <path
-           sodipodi:type="inkscape:box3dside"
-           id="path3245"
-           style="fill:#8686bf;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
-           inkscape:box3dsidetype="3"
-           d="M -184.51915,1064.8126 L -179.57232,1069.5417 L -179.57232,1079.1849 L -184.51915,1074.4558 L -184.51915,1064.8126 z" />
-      </g>
-    </g>
-  </g>
-</svg>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/two_evt.ico b/debian/openfovea/usr/share/pyshared/openfovea/Icon/two_evt.ico
deleted file mode 100644
index 126be2d..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/two_evt.ico and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/two_evt.png b/debian/openfovea/usr/share/pyshared/openfovea/Icon/two_evt.png
deleted file mode 100644
index 89cea4b..0000000
Binary files a/debian/openfovea/usr/share/pyshared/openfovea/Icon/two_evt.png and /dev/null differ
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/Icon/two_evt.svg b/debian/openfovea/usr/share/pyshared/openfovea/Icon/two_evt.svg
deleted file mode 100644
index ead8448..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/Icon/two_evt.svg
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="24"
-   height="24"
-   id="svg4192"
-   version="1.1"
-   inkscape:version="0.47 r22583"
-   sodipodi:docname="Nouveau document 7">
-  <defs
-     id="defs4194">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective4200" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="18.666667"
-     inkscape:cx="1.3392857"
-     inkscape:cy="12"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1115"
-     inkscape:window-height="703"
-     inkscape:window-x="656"
-     inkscape:window-y="313"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata4197">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1028.3622)">
-    <path
-       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
-       d="M 0.80357143,3.1071429 2.25,3.1607143 7.6071429,22.232143 7.125,3.2678571 l 5.196429,0 L 17.892857,21.75 17.839286,3.4285714 l 5.25,0.053571"
-       id="path4202"
-       transform="translate(0,1028.3622)" />
-  </g>
-</svg>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/__init__.py b/debian/openfovea/usr/share/pyshared/openfovea/__init__.py
deleted file mode 100644
index 01678e9..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__all__ = ['curve', 'file']
\ No newline at end of file
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/classes.py b/debian/openfovea/usr/share/pyshared/openfovea/classes.py
deleted file mode 100644
index 2c9649d..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/classes.py
+++ /dev/null
@@ -1,2738 +0,0 @@
-#! /usr/bin/python
-# -*- coding: utf-8 -*-
-
-'''
-This module contains the classes that are usefull for OpenFovea. Currently,
-there is only the class ForceVolume, but we will soon implement an experiment
-class
-'''
-
-import os
-import csv
-from datetime import datetime
-# import pdb
-
-import numpy as num
-import math
-
-from fovea_toolbox import curve
-from fovea_toolbox.file_util import afm_file, aex
-from fovea_toolbox.post_proc import rel_values, rand_dot, \
-                                    add_stiffness_to_event, resize_array
-from fovea_toolbox import post_proc, misc
-from plot_generic import PlotData
-import plot_generic as plot
-
-__author__ = "Charles Roduit <charles.roduit at gmail.com>"
-__date__ = "25 juin 2005"
-__version__ = "0.1.alpha.1"
-__credits__ = "Rewrite of the 'Succellus' software developed during my thesis\
-               at the EPFL under the direction of Sandor Kasas."
-
-
-class ForceVolume(object):
-    """
-    This class contains all attributes and methods used to post-process force
-    curve. The needed input is the name of the file to open.
-
-    Attributes :
-
-        * name: the original file name
-        * indent: indentation vector of the force indentation curve
-        * force: force vector of the force indentation curve
-        * curve_nb: indice of the current curve
-        * pox_x: x coordinate of the current curve
-        * pos_y: y coordinate of the current curve
-        * stiffness: dictionnary that contains the parameters to compute the
-                      stiffness
-          - hertz_model: the hertz model used
-          - poisson_ratio: Poisson ratio of the material.
-          - point_carac: caracteristic of the tip (radius or semi-opening
-                      angle)
-          - nb_parts: the number of segment to compute
-          - size_parts: the size of each segments
-          - glass: the slope of the "non indenting part" of the curve
-          - claibSens: ???
-          - relative_max_dist: the maximum distance to compute relative
-                      stiffness
-          - poc_threshold: The threshold to detect the point of contact
-          - poc_method: Stores the method to find the point of contact. (see
-                          curve.find_poc for the available methods.)
-          - limit_slide: Wether to limit or not the sliding of the slice when
-                           finding point of contact.
-          - recompute_poc: Wether to recompute poc or not.
-          - poc_len_slice: Length of the fit curve portion to find point of
-                      contact
-        * array: dictionnary that contains the arrays computed on the scan.
-          - 'Piezo': The height of the piezo at the end of the indentation.
-          - 'PoCIndice': The indice of the point of contact.
-          - 'Topography': The zero force image.
-          - 'Stiffness': The computed stiffness.
-          - 'Stiffness tomo': Same as "Stiffness", but in an array corrected
-                               with the zero force image.
-          - 'Event': The number of events.
-          - 'Event force': The force of events (max if several).
-          - 'Event random': The position of random selected pixels.
-          - 'Relative pos': ??
-          - 'Relative rand pos': ??
-          - 'Path': This defines a path to display info.
-          - 'Masked': True | False (default: False) To apply or not a mask to
-                       the array.
-        * event: dictionnary that possess information on the computation and
-                  display of the events.
-          - nbr_random: the number of random event that has to be generated.
-          - rel_stiff and rel_stiff_ctl: the result of the relative stiffness.
-        * header: TO COMPLETE
-          - ev_dist_thresh: the distance from which we have to display the
-                                 events.
-        * plot_who: curve to plot
-        * exist: to check the existence of computed things
-        * array: the 2D arrays computed
-        * header: the header of the file
-        * deflection_av
-        * deflection_re: advance and retraction curves
-        * plotx: the scanner extention part for all the deflection curves
-        * event_list: list of all events
-    """
-    # TODO: change self.event_list to self.event['list']
-    def __init__(self, fv_file):
-        self.indent = []  # The indentation and force curve of the
-        self.force = []  # trace curve.
-        self.r_indent = []  # The indentation and force curve of the
-        self.r_force = []  # retrace curve.
-        self.curve_nb = 0
-        self.pos_x = 0
-        self.pos_y = 0
-        self.counter = {'num': 0,
-                        'increment': 0,
-                        'text': 'Please wait...'}
-        self.stiffness = {'hertz_model': 'Sphere',  # Hertz model used.
-                        'fit_method': 'Raw',  # The fit method used.
-                        'poisson_ratio': 0.3,  # Poisson ratio of the material.
-                        'point_carac': 40,  # Caracteristic of the tip (depend
-                        # on the Hertz model).
-                        'nb_parts': 4,  # Number of FI segment.
-                        'size_parts': 50,  # The size of each FI segment.
-                        'glass': -1.,  # Correction factor for the sensitivity
-                        # calibration.
-                        'calib_sens': 1,  # ?? Dead code ??
-                        'relative_max_dist': 3,  # When computing the relative
-                        # stiffness, what is the maximum distance to compute.
-                        'poc_threshold': 2,  # The dependency on noise.
-                        'poc_method': 'curve_fit',  # Stores the method to find
-                        # the point of contact. (see curve.find_poc for the
-                        # available methods.)
-                        'limit_slide': False,  # Wether to limit or not the
-                        # sliding of the slice when finding point of contact.
-                        'recompute_poc': True,  # Wether to recompute poc or
-                                               # not.
-                        'poc_len_slice': 0.3,  # Length of the fit curve
-                        # portion to find point of contact
-                        }
-        self.event = {'nbr_random': 15,
-                      'rel_stiff': None,
-                      'rel_stiff_ctl': None}
-        self.event_list = []
-        self.event_stat = {'force': None,
-                           'lr': None,
-                           'dist': None,
-                           'stiff': None,
-                           'rel_stiff': None}
-        self.event_list_original = None
-        self.plot_who = {'Av': 1, 'Re': 0, 'Indent': 0,
-                         'PoC': 0, 'Event': 0}
-        self.exist = {'PoC': 0, 'Stiffness': 0}
-        ######################
-        # Define the arrays :
-        self.__array = dict()
-        for item in ARRAY_TYPE:
-            self.__array[item] = None
-        # special case :
-        #self.__array['Masked'] = False
-        #######################
-        self.__fdcurves = {
-                    'trace_x': None,
-                    'trace_y': None,
-                    'retrace_x': None,
-                    'retrace_y': None,
-        }
-        if type(fv_file) in [str, unicode]:
-        #if type(fv_file) == str:
-            self.name = os.path.split(fv_file)[1]
-            _data = afm_file.load(fv_file)
-            self.header = _data['header']
-            self.__array['Piezo'] = _data['piezo']
-            if self.header['data_location'] == 'local':
-                # we are in the case where the data are loaded at once
-                self.__fdcurves['trace_x'] = _data['trace_x']
-                self.__fdcurves['retrace_x'] = _data['retrace_x']
-                self.__fdcurves['trace_y'] = _data['trace_y']
-                self.__fdcurves['retrace_y'] = _data['retrace_y']
-            else:
-                self.__data_fid = _data['data_fid']
-            if self.header['Microscope'] == 'csem':
-                self.stiffness['glass'] = -0.01
-        elif type(fv_file) == dict:
-            # we are in the presence of a xml tree readed from aex file
-            self.name = fv_file['name']
-            self.header = fv_file['header']
-            self.__fdcurves['trace_y'] = fv_file['trace_array']
-            self.__fdcurves['retrace_y'] = fv_file['retrace_array']
-            self.__fdcurves['trace_x'] = fv_file['trace_x_array']
-            self.__fdcurves['retrace_x'] = fv_file['retrace_x_array']
-            self.__array['Piezo'] = fv_file['piezo_array']
-            if self.header['data_location'] not in ['local', u'local']:
-                self.__data_fid = fv_file['data_fid']
-            if len(fv_file['stiffness_header']):
-                self.stiffness = fv_file['stiffness_header']
-            # Load stiffness results
-            if fv_file['stiffness'] is not None:
-                # recover attributes...
-                self.__array['Stiffness'] = fv_file['stiffness']
-            # Load events results
-            if 'event' in fv_file and 'array' in fv_file['event']:
-                self.__array['Event'] = fv_file['event']['array']
-                self.event_list = fv_file['event']['detail']
-            if 'event_rand_array' in fv_file:
-                self.__array['Event random'] = fv_file['event_rand_array']
-            if 'poc_array' in fv_file and fv_file['poc_array'] is not None:
-                self.__array['PoCIndice'] = fv_file['poc_array']
-                self.exist['PoC'] = 1
-            if fv_file['pocnoise_array'] is not None:
-                self.__array['PoCNoise'] = fv_file['pocnoise_array']
-            if 'topo_array' in fv_file:
-                self.__array['Topography'] = fv_file['topo_array']
-            if 'mask_array' in fv_file:
-                self.__array['Mask'] = fv_file['mask_array']
-            self.set_switch('mask', eval(fv_file['switch']['mask']))
-        if self.header['pixel_size'] is None:
-            try:
-                self.header['pixel_size'] = \
-                    tuple([float(size) / nb_pix
-                        for size, nb_pix in zip(self.header['scan_size'],
-                                                self.header['size'])])
-            except (ZeroDivisionError, TypeError):
-                self.header['pixel_size'] = (None, None)
-
-    def __iter__(self):
-        self.curve_nb = -1
-        return self
-
-    def __cmp__(self, other):
-        if isinstance(other, ForceVolume):
-            return cmp(self.header['date'], other.header['date'])
-
-    def __getattribute__(self, name, **toto):
-        """
-            Control the attribute given form the object.
-        """
-        if name == 'event_list':
-            event_list = object.__getattribute__(self, name)
-            if self.get_switch('mask'):
-                # If data are masked, get only the events that are on the mask.
-                event_list = misc.remove_from_mask(event_list,
-                                                   self.__array['Mask'])
-            if self.get_switch('ev_dist'):
-                # If there is an threshold on the event distance.
-                event_list = misc.remove_from_threshold(
-                                    event_list,
-                                    'dist',
-                                    self.get_switch('ev_dist'))
-            if self.get_switch('ev_fit_length'):
-                event_list = misc.remove_from_threshold(
-                                    event_list,
-                                    'fit_length',
-                                    self.get_switch('ev_fit_length'))
-            if self.get_switch('ev_fit_plength'):
-                event_list = misc.remove_from_threshold(
-                                    event_list,
-                                    'fit_plength',
-                                    self.get_switch('ev_fit_plength'))
-            return event_list
-        elif name == 'has_stiffness':
-            if self.get_array('Stiffness') is not None:
-                return True
-            else:
-                return False
-        elif name == 'spring_constant':
-            if type(self.header['spring_constant']) is list:
-                return self.header['spring_constant'][self.pos_x]
-            else:
-                return self.header['spring_constant']
-        elif name == 'trace_x':
-            if self.header['data_location'] == 'local':
-                if self.__fdcurves['trace_x'].ndim == 1:
-                    return self.__fdcurves['trace_x']
-                else:
-                    return self.__fdcurves['trace_x'][
-                                                    self.pos_x, self.pos_y, :]
-            else:
-                # the data are loaded on the fly.
-                return afm_file.load_curve(self.__data_fid,
-                                          pos=[self.pos_x, self.pos_y],
-                                          dtype='trace_x',
-                                          header=self.header)
-        elif name == 'trace_y':
-            if self.header['data_location'] == 'local':
-                return self.__fdcurves['trace_y'][self.pos_x, self.pos_y, :]
-            else:
-                # the data are loaded on the fly.
-                return afm_file.load_curve(self.__data_fid,
-                                          pos=[self.pos_x, self.pos_y],
-                                          dtype='trace_y',
-                                          header=self.header)
-        elif name == 'retrace_x':
-            if self.header['data_location'] == 'local':
-                if self.__fdcurves['retrace_x'].ndim == 1:
-                    return self.__fdcurves['retrace_x']
-                else:
-                    return self.__fdcurves['retrace_x'][
-                                                    self.pos_x, self.pos_y, :]
-            else:
-                # the data are loaded on the fly.
-                return afm_file.load_curve(self.__data_fid,
-                                          pos=[self.pos_x, self.pos_y],
-                                          dtype='retrace_x',
-                                          header=self.header)
-        elif name == 'retrace_y':
-            if self.header['data_location'] == 'local':
-                return self.__fdcurves['retrace_y'][self.pos_x, self.pos_y, :]
-            else:
-                # the data are loaded on the fly.
-                return afm_file.load_curve(self.__data_fid,
-                                          pos=[self.pos_x, self.pos_y],
-                                          dtype='retrace_y',
-                                          header=self.header)
-        else:
-            return object.__getattribute__(self, name)
-
-    def next(self):
-        '''
-        Go to the next pixel
-        '''
-        self.go_next()
-        return [self.pos_x, self.pos_y]
-
-    def current_curve(self, what, parameters=None):
-        if what == 'Event':
-            if parameters is not None:
-                event_detect_weight = parameters[0]
-                event_fit_model = parameters[1]
-            else:
-                event_detect_weight = self.header['event_detect_weight']
-                event_fit_model = self.header['event_fit_model']
-                # event_fit_from_poc = self.header['event_fit_from_poc']
-            if event_fit_model is not None:
-                # we compute the point of contact from the current curve
-                poc = self.current_curve('poc')
-                poc['Poly Fit'][1] += (self.retrace_y[0] - self.trace_y[0])
-            else:
-                poc = {'PoC': 0, 'Poly Fit': None}
-            return curve.event_find(self.retrace_x,
-                                self.retrace_y,
-                                self.stiffness['glass'],
-                                self.spring_constant,
-                                weight=event_detect_weight,
-                                fit_model=event_fit_model,
-                                baseline=poc['Poly Fit'],
-                                poc=poc['PoC'])
-        elif what == 'poc':
-            poc = curve.find_poc(self.trace_x, self.trace_y,
-                                 threshold=self.stiffness['poc_threshold'],
-                                 method=self.stiffness['poc_method'],
-                                 limit_slide=self.stiffness['limit_slide'],
-                                 len_slice=self.stiffness['poc_len_slice'])
-            return poc
-
-    ##### Get stuffs from the object.
-    def get_parameter(self, which):
-        # TODO Put here all parameters that can be get. These parameters are
-        # not switches. Meaning that they have influences in the computation,
-        # but not in the display.
-        if which == 'poisson_ratio':
-            return self.stiffness['poisson_ratio']
-
-    def get_current_curve(self, direction='trace'):
-        """
-            Get the current trace curve.
-
-            * Parameters :
-
-                direction: str
-                    'trace' or 'retrace'
-
-            * Returns :
-
-                plotx: numpy.array
-                    The x part of the deflection curve
-                deflection: numpy.array
-                    The deflection part of the deflection curve
-        """
-        if direction == 'trace':
-            return [self.trace_x, self.trace_y]
-        elif direction == 'retrace':
-            return [self.retrace_x, self.retrace_y]
-
-    def get_switch(self, stype):
-        """
-            Get the value of the switch
-        """
-        if stype == 'list':
-            return ['mask', 'ev_dist']
-        elif stype == 'mask':
-            return self.header['Masked']
-        elif stype == 'ev_dist':
-            return self.header['event_dist_thresh']
-        elif stype == 'ev_thresh':
-            # This is a generic switch for all event thresholds.
-            return self.header['event_dist_thresh']
-        elif stype == 'ev_fit_length':
-            return self.header['thresh_event_fit_length']
-        elif stype == 'ev_fit_plength':
-            return self.header['thresh_event_fit_plength']
-        elif stype == 'restore':
-            return [self.get_switch('mask'), self.get_switch('ev_dist')]
-
-    def set_switch(self, stype, state=None):
-        """
-            Set the value of the switch.
-        """
-        if stype == 'mask':
-            if state == True and (self.__array['Mask'] is not None):
-                # Control if we have a mask
-                self.header['Masked'] = state
-            else:
-                self.header['Masked'] = False
-        elif stype == 'ev_dist':
-            if type(state) in [float, int]:
-                self.header['event_dist_thresh'] = float(state)
-            else:
-                raise AttributeError('Expecting numerical value.')
-        elif stype == 'ev_fit_length':
-            if type(state) == list and len(state) == 2:
-                if state[0] == 0:
-                    state[0] = None
-                if state[1] == 0:
-                    state[1] = None
-                self.header['thresh_event_fit_length'] = state
-            else:
-                raise AttributeError('Expecting list of length 2.')
-        elif stype == 'reset':
-            self.set_switch('mask', None)
-            self.set_switch('ev_dist', 0.0)
-        elif stype == 'restore':
-            self.set_switch('mask', state[0])
-            self.set_switch('ev_dist', state[1])
-
-    def get_array(self, atype, raw=False):
-        """
-            Get array from the forcevolume object.
-        """
-        if atype == 'keys':
-            # Return the valid keys for array.
-            return ARRAY_TYPE.keys()
-        if raw:
-            return self.__array[atype]
-        if ARRAY_TYPE[atype] == 'event':
-        #if atype in ['Event', 'Event force', 'Event length'] :
-            # A threshold is applyed on events.
-            ev_lst = self.event_list
-            #ev_lst = object.__getattribute__(self, 'event_list')
-            #ev_lst = misc.remove_from_threshold(ev_lst, 'dist',
-            #                                    self.get_switch('ev_dist'))
-
-            # Get the name in the event dictionnary that correspond to the one
-            # in array.
-            if atype == 'Event':
-                _gen_type = 'count'
-            elif atype == 'Event force':
-                _gen_type = 'force'
-            elif atype == 'Event length':
-                _gen_type = 'fit_length'
-            elif atype == 'Event distance':
-                _gen_type = 'dist'
-            array = misc.generate_array(ev_lst, _gen_type, self.header['size'])
-        elif atype == 'Piezo':
-            array = self.__array[atype]
-            if array is None: #num.array_equal(array, num.zeros(array.shape)):
-                raise NotReadyError('Topography array is not loaded')
-        else:
-            array = self.__array[atype]
-        if array is None:
-            return array
-        if self.get_switch('mask'):
-            # Return a masked array corresponding to the generated mask.
-            mask = self.__array['Mask'].copy()
-            mask = mask.astype(bool)
-            if type(array) == num.ma.core.MaskedArray:
-                if array.ndim == 3:
-                    mask = num.array([mask for i in range(array.shape[2])])
-                    mask = mask.transpose(1, 2, 0)
-                mask = ((array.mask - 1) * (mask - 1)) - 1
-                array = array.data
-            array = num.ma.masked_array(array, mask=mask)
-        return array
-
-    def force_piezo_loading(self):
-        """
-            Force the loading of the piezo array. Used in the case of AFM files
-            with no piezo arrays saved. The method is to get the coordinate of
-            the end of indentation of each curves. As this can take time, we do
-            not this automatically, but only if the user think its important.
-        """
-        arrays = afm_file.force_load_array(self.__data_fid,
-                                          header=self.header)
-        self.__array['Piezo'] = arrays['Piezo']
-
-    def set_array(self, atype, array):
-        """
-            Set the array with the new value.
-        """
-        if atype in self.__array.keys():
-            self.__array[atype] = array
-
-    def get_current_indent_curve(self, direction='trace'):
-        """
-            Get the current indentation curve.
-
-            * Parameters :
-                direction: str
-                  'trace' or 'retrace'
-
-            * Returns :
-                indent: numpy.array
-                    The indentation part of the indentation curve
-                force: numpy.array
-                    The force part of the indentation curve
-        """
-        if direction == 'trace':
-            self.compute_indentation()
-            return [self.indent, self.force]
-        elif direction == 'retrace':
-            self.compute_indentation('retrace')
-            return [self.r_indent, self.r_force]
-
-    def get_poc_display(self):
-        """
-            Get all parmeters to display the point of contact.
-
-            [poc, plotx, ploty, error, slice, deriv] = fv.get_poc_display()
-
-            * Parameters :
-                None
-
-            * Returns :
-                PoC: int
-                    The index of the point of contact.
-                plotx: numpy.array
-                    The x part of the curve.
-                ploty: numpy.array
-                    The y part of the curve.
-                error: float
-                    The standard error detected when finding the poc.
-                slice: slice
-                    The curve part that was used for the fit.
-                deriv: ??
-                    Have to find what's this...
-        """
-        ## build the curves...
-        _result = curve.find_poc(self.trace_x,
-                                self.trace_y,
-                                self.stiffness['poc_threshold'],
-                                method=self.stiffness['poc_method'],
-                                limit_slide=self.stiffness['limit_slide'],
-                                len_slice=self.stiffness['poc_len_slice'])
-        vect_y = _result['Poly Fit'][0] * self.trace_x + _result['Poly Fit'][1]
-        return[_result['PoC'], self.trace_x, vect_y, _result['Error'],
-                _result['Slice'], _result['deriv']]
-
-    def get_segments_indent(self):
-        """
-            get the segment of the indentation curve that are used to compute
-            the stiffness or the stiffness tomography.
-        """
-        if not self.exist['PoC']:
-            _result = curve.find_poc(self.trace_x,
-                                self.trace_y,
-                                self.stiffness['poc_threshold'],
-                                method=self.stiffness['poc_method'],
-                                limit_slide=self.stiffness['limit_slide'],
-                                len_slice=self.stiffness['poc_len_slice'])
-            poc_indice = _result['PoC']
-        else:
-            poc_indice = self.__array['PoCIndice'][self.pos_x, self.pos_y]
-        [x_parts, y_parts] = curve.segment_curve(self.indent[0:poc_indice],
-                                             self.force[0:poc_indice],
-                                             self.stiffness['nb_parts'],
-                                             self.stiffness['size_parts'])
-        return [x_parts, y_parts]
-
-    def get_path(self, atype, path):
-        """
-            Get the path from arrays.
-
-            * Parameters :
-                atype: str
-                    This is the array type to slice. This has to be an item
-                    from fv.get_array('keys')
-                    If atype is "all", it will return all possible values,
-                    with the corresponding label
-                pos_a: array
-                    correspond to the first point of the path[x, y]
-                pos_b: array
-                    correspond to the last point of the path [x,y]
-
-            * Returns :
-                x_slice: 1D numpy.array
-                    The x value of the path
-                y_slice: 1D numpy.array or list of numpy.array
-                    * If atype is an array type, this is the y value of the
-                      path
-                    * If atype is "all" this is a list of y value of the path
-                label: str
-                    If atype is "all", this is a list of label that desing each
-                    y_slices.
-                    Else, this is the atype as a string
-
-            >>> fv = ForceVolume(BIOSCOPE_FILE)
-            >>> #piezo_slice = fv.get_path('Piezo', [0, 14], [15, 14])
-        """
-        array_list = ['Piezo', 'PoCIndice', 'Topography']
-
-        if atype == 'all':
-            atype = array_list
-        elif atype in array_list:
-            atype = [atype]
-        else:
-            raise ValueError('Array type ' + atype + ' not known.')
-
-        self.__array['Path'] = path
-
-        y_slice = [
-                post_proc.generate_slice(self.__array['Path'],
-                                         self.__array[item])
-                for item in atype]
-        x_slice = list(num.arange(len(y_slice[0])) * self.header['pixel_size'])
-
-        return x_slice, y_slice, atype
-    #
-    #### Navigation dans le scan ####
-
-    def curve2xy(self):
-        '''
-        Conversion of the current curveNb into the x and y coordinates.
-        '''
-        if self.header['size'][1] - 1:
-            self.pos_x = (self.curve_nb) % (self.header['size'][0])
-            self.pos_y = (self.curve_nb) / (self.header['size'][0])
-        else:
-            self.pos_x = self.curve_nb
-            self.pos_y = 0
-
-    def curve2nb(self):
-        '''
-        Conversion of the current x and y coordinate into the curveNb.
-        '''
-        self.curve_nb = self.pos_x + \
-                        self.pos_y * self.header['size'][0]
-
-    def go_next(self):
-        '''
-        Go to the next pixel.
-        '''
-        if self.curve_nb == self.header['number_curves'] - 1:
-            raise StopIteration
-        self.curve_nb = self.curve_nb + 1
-        self.curve2xy()
-
-    def go_prev(self):
-        '''
-        Go to the previous pixel.
-        '''
-        if self.curve_nb == 0:
-            return
-        self.curve_nb = self.curve_nb - 1
-        self.curve2xy()
-
-    def go_up(self):
-        '''
-        Go tho the upper pixel.
-        '''
-        if self.pos_y == self.header['size'][1] - 1:
-            return
-        self.pos_y = self.pos_y + 1
-        self.curve2nb()
-
-    def go_down(self):
-        '''
-        Go to the bellow pixel.
-        '''
-        if self.pos_y <= 0:
-            return
-        self.pos_y = self.pos_y - 1
-        self.curve2nb()
-
-    def go_first(self):
-        '''
-        Go the the first pixel.
-        '''
-        self.pos_y = 0
-        self.pos_x = 0
-        self.curve_nb = 0
-
-    def go_to(self, pos_x, pos_y):
-        '''
-        Go to a defined pixel
-        '''
-        self.pos_x = int(pos_x)
-        self.pos_y = int(pos_y)
-        self.curve2nb()
-
-    # TODO: All these change should be in a single set_param function
-    #       Look if it's better or not...
-    # e.g. set_param('hertz_model', 'sphere', carac=None)
-    #       set_param('segm_depth', 50, carac='nm')
-    #       set_param('segm_nbr', 10, carac='begin')
-    #       set_param('rel_dist', 4)
-    def set_parameters(self, param, value):
-        """
-            Change the caracteristic of a parameter.
-
-            param: str
-                    Which parameter to change. Possible values are
-                    * 'tip_carac' to change the tip caracteristic (i.e. the
-                      semi-opening angle if the cone model is used, or the
-                      radius of the sphere if the sphere model is used)
-                      In this case, value is a float.
-
-                    * 'evt_fit' to change the event fit model.
-                      In this case, value is a string. 'wlc' and 'fjc' are
-                      possible strings. For more detailed information, see
-                      documentation of the event_fit function in
-                      fovea_toolbox/curve documentation.
-
-                    * 'stiff_method' to change the stiffness computation
-                      method.
-                      'Raw' indicates the use of the raw data to fit with the
-                            chosen model.
-                      'Extrema' uses the points at the extremities of the
-                                segments in order to make a simple fit. This
-                                method is faster, but less precise. This is
-                                historically the first method introduced.
-
-            value: float or str (depending on the parameters.)
-        """
-
-        if param == 'tip_carac':
-            print "Changing carac of %s from %f to %f" % (
-                                        self.name,
-                                        self.stiffness['point_carac'],
-                                        value)
-            self.stiffness['point_carac'] = value
-        elif param == 'evt_fit':
-            self.header['event_fit_model'] = value
-        elif param == 'stiffness_fit_method':
-            if value in ['Raw', 'Linear', 'Extrema', 'Median']:
-                self.stiffness['fit_method'] = value
-            else:
-                raise AttributeError(
-                    'Method %s not recognized as a stiffness method') % value
-
-    def change_poc_seg_size(self, size):
-        """
-            Change the size of the curve portion used to find the point of
-            contact. The size is expressed as a fraction of the total force
-            curve.
-        """
-        if size == 'default':
-            self.stiffness['poc_len_slice'] = 0.3
-        elif 0 < size < 1:
-            self.stiffness['poc_len_slice'] = size
-        else:
-            raise ValueError('Value must be between 0 and 1.')
-
-    def change_model(self, model, carac=None):
-        '''
-        change_model changes the model used for the stiffness computation.
-
-        model: 'Sphere' or 'Cone'.
-
-        carac: sphere radius or cone semi opening angle.
-        '''
-        if model == 'Sphere':
-            if carac == None:
-                self.stiffness['point_carac'] = 40
-            else:
-                self.stiffness['point_carac'] = carac
-            self.stiffness['hertz_model'] = 'Sphere'
-        elif model == 'Cone':
-            if carac == None:
-                self.stiffness['point_carac'] = 20 * math.pi / 180
-            else:
-                self.stiffness['point_carac'] = carac
-            self.stiffness['hertz_model'] = 'Cone'
-
-    def change_segment_depth(self, value):
-        '''
-        Changes the depth (in nm) of the force curve segmentation used to
-        compute the stiffness
-        '''
-        try:
-            self.stiffness['size_parts'] = float(value)
-        except ValueError:
-            pass
-
-    def change_segment_number(self, value):
-        '''
-        Changes the number of segment used to compute the stiffness
-        '''
-        try:
-            self.stiffness['nb_parts'] = int(value)
-        except ValueError:
-            pass
-
-    def change_relative_distance(self, value):
-        '''
-        Changes the maximum relative stiffness distance to compute.
-        '''
-        if type(value) == int or (int(value) - value == 0):
-            self.stiffness['relative_max_dist'] = int(value)
-
-    def change_poisson_ratio(self, value):
-        """
-            Changes the poisson ratio of the material.
-
-            * Parameters :
-                value: float
-                    The new poisson ratio.
-        """
-        if type(value) == float:
-            self.stiffness['poisson_ratio'] = value
-        else:
-            raise TypeError('Float value expected.')
-
-    def compute_poc(self):
-        '''
-        Computes the point of contact between the tip and the sample in the
-        whole array.
-        '''
-        self.counter['text'] = "Computing point of contact"
-        self.__array['Topography'] = num.empty(self.header['size'])
-        self.__array['PoCIndice'] = num.empty(self.header['size'])
-        self.__array['PoCNoise'] = num.empty(self.header['size'])
-
-        if self.__array['Piezo'] is None:
-            regenerate_piezo = True
-            self.__array['Piezo'] = num.empty(self.header['size'])
-        else:
-            regenerate_piezo = False
-
-        for pixels in self:
-            trace_x, trace_y = self.trace_x, self.trace_y
-            if regenerate_piezo:
-                self.__array['Piezo'][self.pos_x, self.pos_y] = trace_x[-1]
-            _result = curve.find_poc(trace_x, trace_y,
-                                    threshold=self.stiffness['poc_threshold'],
-                                    method=self.stiffness['poc_method'],
-                                    limit_slide=self.stiffness['limit_slide'],
-                                    len_slice=self.stiffness['poc_len_slice'])
-            if _result is not None:
-                self.__array['PoCIndice'][
-                                self.pos_x, self.pos_y] = _result['PoC']
-                self.__array['Topography'][self.pos_x, self.pos_y] = (
-                                self.__array['Piezo'][self.pos_x, self.pos_y] +
-                                trace_x[_result['PoC']])
-                self.__array['PoCNoise'][
-                                self.pos_x, self.pos_y] = _result['Error']
-            else:
-                self.__array['PoCIndice'][self.pos_x, self.pos_y] = 0
-                self.__array['Topography'][self.pos_x, self.pos_y] = 0
-                self.__array['PoCNoise'][self.pos_x, self.pos_y] = 0
-            self.counter['num'] += self.counter['increment']
-        self.go_first()
-        self.exist['PoC'] = 1
-
-    def compute_indentation(self, direction='trace'):
-        '''
-        Computes the indentation curves on the current position
-        '''
-        if direction == 'trace':
-            [self.indent, self.force] = curve.compute_indentation(
-                                        self.trace_x, self.trace_y,
-                                        self.stiffness['glass'],
-                                        self.spring_constant)
-        elif direction == 'retrace':
-            [self.r_indent, self.r_force] = curve.compute_indentation(
-                                        self.retrace_x, self.retrace_y,
-                                        self.stiffness['glass'],
-                                        self.spring_constant)
-
-    def compute_stiffness(self):
-        '''
-        Compute the stiffness array on the scan
-        '''
-        ## Defines the variables
-        ##
-
-        self.counter['num'] = 0
-        self.counter['text'] = "Creating matrices"
-        if self.stiffness['nb_parts'] < 0:
-            # case where we compute stiffness on whole curve instead of segments.
-            __size_array = 1
-        else:
-            __size_array = self.stiffness['nb_parts']
-        self.__array['Stiffness'] = num.zeros([
-                                    self.header['size'][0],
-                                    self.header['size'][1],
-                                    __size_array
-                                    ], num.float)
-        _number_of_curves = self.header['size'][0] * \
-                            self.header['size'][1] * 2 + 1
-        self.counter['increment'] = 1 / float(_number_of_curves - 1)
-
-        if (not self.exist['PoC']) or self.stiffness['recompute_poc']:
-            self.compute_poc()
-
-        self.counter['text'] = "Computing stiffness"
-        ## Computation begins by navigation in the array
-        for pixel in self:
-            self.compute_indentation()
-            if self.indent is None:
-                # There is no data here. We increment the counter and go to the
-                # next pixel.
-                self.counter['num'] += self.counter['increment']
-                continue
-            poc_indice = self.__array['PoCIndice'][self.pos_x, self.pos_y]
-            [x_parts, y_parts] = curve.segment_curve(
-                                    self.indent[0:poc_indice],
-                                    self.force[0:poc_indice],
-                                    self.stiffness['nb_parts'],
-                                    self.stiffness['size_parts'],
-                                    )
-            tmp = curve.compute_stiffness(
-                                x_parts,
-                                y_parts,
-                                model=self.stiffness['hertz_model'],
-                                tip_carac=self.stiffness['point_carac'],
-                                poisson_ratio=self.stiffness['poisson_ratio'],
-                                method=self.stiffness['fit_method'])
-            ## We complement the array in the case the newly computed stiffness
-            ## contains more depth. That can happend when performing stiffness
-            ## tomography.
-            if self.__array['Stiffness'].shape[2] < len(tmp):
-                array_shape = self.__array['Stiffness'].shape
-                _to_fill = num.empty((array_shape[0], array_shape[1],
-                                      len(tmp) - array_shape[2]))
-                _to_fill[:, :, :] = num.nan
-                self.__array['Stiffness'] = num.append(
-                                                self.__array['Stiffness'],
-                                                _to_fill, 2)
-            elif self.__array['Stiffness'].shape[2] > len(tmp):
-                array_shape = self.__array['Stiffness'].shape
-                _to_fill = num.empty((array_shape[2] - tmp.shape[0]))
-                _to_fill[:] = num.nan
-                tmp = num.append(tmp, _to_fill, 0)
-            ## Curves are in nm and nN. The result in tmp is then in nN/nm^2
-            ## To convert the result in Pa, we multiply by 1e9
-            self.__array['Stiffness'][self.pos_x, self.pos_y, ] = tmp * 1e9
-            self.counter['num'] += self.counter['increment']
-        ##
-        ## Stores the result in a matrix that supports the mask, to get rid
-        ## of the nan values
-        ##
-        self.counter['text'] = 'Store results'
-        self.__array['Stiffness'] = num.ma.array(
-                                    self.__array['Stiffness'],
-                                    mask=num.isnan(self.__array['Stiffness']))
-        self.exist['Stiffness'] = 1
-        self.exist['PoC'] = 1
-        self.go_first()
-        self.counter['num'] = 1
-
-    def compute_events(self):
-        '''
-        Computes the event of all the curves in the object. The event_list and
-        event matrix (in array['Event']) are refreshed.
-        '''
-        # Set the switches to 0 in order to get all event
-        _init_mask = self.get_switch('mask')
-        _init_ev_dist = self.get_switch('ev_dist')
-        self.set_switch('mask', False)
-        self.set_switch('ev_dist', 0.0)
-        self.counter['num'] = 0
-        self.counter['text'] = "Detecting events"
-        _number_of_curves = self.header['size'][0] * \
-                            self.header['size'][1] + 1
-        self.event_list = []
-        self.__array['Event'] = num.zeros((self.header['size'][0],
-                                        self.header['size'][0]))
-        self.__array['Event force'] = num.zeros((self.header['size'][0],
-                                                self.header['size'][0]))
-        for pixels in self:
-            det_event = self.current_curve('Event')
-            if det_event:
-                for event in det_event:
-                    event['pos_x'] = self.pos_x
-                    event['pos_y'] = self.pos_y
-                    self.event_list.append(event)
-                    self.__array['Event'][self.pos_x, self.pos_y] += 1
-            self.counter['num'] = float(self.curve_nb) / _number_of_curves
-        self.go_first()
-        # Generate the random matrix.
-        self.generate_random_event()
-        self.counter['num'] = 1
-
-        # Set back the original switches...
-        self.set_switch('mask', _init_mask)
-        self.set_switch('ev_dist', _init_ev_dist)
-
-    def generate_random_event(self, nbr_event=None):
-        if nbr_event is not None:
-            self.event['nbr_random'] = nbr_event
-        self.__array['Event random'] = rand_dot(self.__array['Event'],
-                                              self.event['nbr_random'])
-
-    def generate_mask(self, mtype, mdata, depth=0):
-        """
-            Generate a mask for the arrays.
-
-            * Parameters :
-                mtype: string
-                    'Piezo': generate mask based to the piezo image array.
-                    'Topography': generate mask based on the topography array.
-                    'Stiffness': generate mask based on the stiffness array.
-                    'Array': generate mask based on the mdata array.
-                mdata: float | 2D numpy.array
-                    float if mtype is 'piezo', 'topography', 'stiffness'
-                    2D numpy.array if mtype is 'array'
-                depht: int
-                    In the case the array is 3d. It generates the mask from the
-                    specified depth, array[:,:,depth].
-                    Default value: 0
-        """
-        if mtype == 'Array':
-            self.__array['Mask'] = mdata
-        else:
-            if self.__array[mtype].ndim == 3:
-                self.__array['Mask'] = self.__array[mtype][:, :, depth] < mdata
-            else:
-                self.__array['Mask'] = self.__array[mtype] < mdata
-        # Creating a mask automatically switch it on.
-        self.set_switch('mask', True)
-
-    def compute_relative_stiffness(self, exclude=0):
-        '''
-        Computes the relative stiffness of the events
-        '''
-        if self.__array['Event'] is None:
-            raise NotReadyError('Event is not yet computed.')
-        if self.__array['Stiffness'] is None:
-            raise NotReadyError('Stiffness is not yet computed.')
-        # event and stiffness have to be computed
-        # TODO: change self.event_list to self.event['list']
-        [self.event['rel_stiff'], coordinate] = rel_values(
-                                        self.__array['Stiffness'][:, :, 0],
-                                        self.__array['Event'],
-                                        self.stiffness['relative_max_dist'],
-                                        coord=True)
-        self.event['rel_stiff_ctl'] = rel_values(
-                                        self.__array['Stiffness'][:, :, 0],
-                                        self.__array['Event random'],
-                                        self.stiffness['relative_max_dist'])
-        # Is it really necessary ??
-        self.event_list = add_stiffness_to_event(self.event_list,
-                                                 self.event['rel_stiff'],
-                                                 coordinate)
-
-    def compute_average_stiffness(self):
-        """
-            Computes the average stiffness in function of the depth.
-
-            returns a dictionary with the deep, mean, std and count.
-
-            >>> fv = ForceVolume(BIOSCOPE_FILE)
-            >>> fv.compute_stiffness()
-            >>> result = fv.compute_average_stiffness()
-            >>> result.keys()
-            ['std', 'count', 'deep', 'mean']
-        """
-        if self.__array['Stiffness'] is None:
-            start = 0
-            data_count = 0
-        else:
-            step = self.stiffness['size_parts']
-            start = (self.__array['Stiffness'].shape[2] - 1) * step
-            #raise NotReadyError, 'Stiffness is not yet computed'
-            #start = (self.__array['Stiffness'].shape[2] -1) * step
-            deep = range(start, -step, -step)
-            stiffness = self.get_array('Stiffness')
-            data_count = stiffness.count()
-        if data_count:
-            _result = [[deep.pop(), i.mean(), i.std(), i.count()] for i in
-                                self.get_array('Stiffness').transpose(2, 0, 1)]
-        else:
-            _result = [[0, num.nan, num.nan, 0]]
-        _result = num.ma.asarray(_result)
-        return dict([(key, value) for key, value in
-                                    zip(['deep', 'mean', 'std', 'count'],
-                                         _result.transpose(1, 0))])
-
-    def event_force_list(self, dtype='rel'):
-        '''
-        Returns the list of the event force
-        '''
-        force_list = []
-        if dtype == 'rel':
-            prop = 'force'
-        elif dtype == 'baseline':
-            prop = 'force_base'
-        else:
-            raise TypeError('dtype ' + prop + ' is not supported.')
-        for event in self.event_list:
-            force_list.append(event[prop])
-        return force_list
-
-    def number_event(self):
-        return len(self.event_list)
-
-    def event_lr_list(self):
-        '''
-        Returns the list of the loading rates
-        '''
-        lr_list = []
-        for event in self.event_list:
-            lr_list.append(event['loading_rate'])
-        return lr_list
-
-    def event_dist_list(self):
-        '''
-        Returns the list of the distance of the events
-        '''
-        dist_list = []
-        for event in self.event_list:
-            dist_list.append(event['dist'])
-        return dist_list
-
-    def event_stiff_list(self):
-        '''
-        Returns the list of the stiffness of the events
-        '''
-        stiff_list = []
-        if self.__array['Stiffness'] is None:
-            return [num.nan for i in range(self.number_event())]
-        for event in self.event_list:
-            if not self.__array['Stiffness'].mask[event['pos_x'],
-                                                event['pos_y'], 0]:
-                stiff_list.append(
-                            self.__array['Stiffness'].data[event['pos_x'],
-                            event['pos_y'],
-                            0])
-            else:
-                stiff_list.append(num.nan)
-        return stiff_list
-
-    def event_rel_stiff_list(self, dist=1):
-        '''
-        Returns the list of the relative stiffness of the events
-        '''
-        stiff_list = []
-        if self.event_list is None:
-            return stiff_list
-        elif not 'Stiffness' in self.event_list[0]:
-            return [num.nan for i in range(self.number_event())]
-        for event in self.event_list:
-            if event['Stiffness'].size and not event['Stiffness'].mask[dist]:
-                stiff_list.append(event['Stiffness'].data[dist])
-            else:
-                stiff_list.append(num.nan)
-        return stiff_list
-
-    def event_rand_rel_stiff_list(self, dist=1):
-        '''
-            Returns the list of the relative stiffness of the events.
-        '''
-        _list = []
-        for item in self.event['rel_stiff_ctl'][dist]:
-            if isinstance(item, num.ma.core.MaskedArray):
-                _list.append(num.nan)
-            else:
-
-                _list.append(item)
-        return _list
-
-    def event_pos_list(self, dim=None):
-        """
-            Returns the position list of the events.
-        """
-        if dim in ['x', 'X']:
-            pos_list = [event['pos_x'] for event in self.event_list]
-        elif dim in ['y', 'Y']:
-            pos_list = [event['pos_y'] for event in self.event_list]
-        else:
-            pos_list = [self.event_pos_list('x'), self.event_pos_list('y')]
-        return pos_list
-
-    def event_nbr_per_curve(self):
-        """
-            Returns the list of number of event per curves.
-
-            >>> fv = ForceVolume(BIOSCOPE_FILE)
-            >>> fv.compute_events()
-            >>> nbr_event = fv.event_nbr_per_curve()
-            >>> print nbr_event
-            [79, 86, 55, 26, 10]
-
-            This means that 79 pixels (or force curves) have 0 events, 85 have
-            1, 56 have 2 26 have 3 and 10 force curves contains 4 events.
-
-            * Parameters: None
-
-            * Returns :
-                nbr_events_list: list
-                    The number of force curves that contains 0, 1, ... events.
-        """
-
-        _list = []
-        for nbr_ev in range(int(self.__array['Event'].max()) + 1):
-            with_current = num.nonzero(self.get_array('Event') == nbr_ev)
-            _list.append(len(with_current[0]))
-        return _list
-
-    def get_event_prop(self, data_type, dist=1):
-        """
-            Get the specified properties of the event.
-
-            * Parameters :
-                data_type: str
-                    Describe the event property to get.
-                    'force': return the list of event forces.
-                    'force_base': return the list of event forces, computed
-                        relative to the baseline.
-                    'lr': the loading rate.
-                    'dist': the distance from the end of the indentation.
-                    'stiff': the stiffness, computed from the corresponding
-                        trace curve.
-                    'stiff_ev': same as stiff, but not ordered, and one per
-                        pixel. If a pixel contain two event, it will be
-                        reported once.
-                    'stiff_notev': list of stiffness on pixels with no event.
-                    'relstiff': the list of relative stiffness on event.
-                    'pos_x': the list of the x position in the array.
-                    'pos_y': the list of the y position in the array.
-                    'nbr_ev_per_curve': the list of the number of events per
-                        force curves. From 0 event to the maximum detected.
-
-                    'all': A dictionnary of list with all the parameters
-                        related to events. This will not return list from
-                        "stiff_ev" and "stiff_notev" as they are different.
-                    'label': the label corresponding to "all". Usefull to have
-                        an ordered label.
-        """
-        if data_type is 'force':
-            return self.event_force_list()
-        elif data_type is 'force_base':
-            return self.event_force_list('baseline')
-        elif data_type is 'lr':
-            return self.event_lr_list()
-        elif data_type is 'dist':
-            return self.event_dist_list()
-        elif data_type is 'stiff':
-            return self.event_stiff_list()
-        elif data_type is 'stiff_ev':
-            return self.stiff_list('event')
-        elif data_type is 'stiff_notev':
-            return self.stiff_list('not event')
-        elif data_type is 'relstiff':
-            return [self.event_rel_stiff_list(dist) \
-                    for dist in range(self.stiffness['relative_max_dist'] + 1)]
-        elif data_type is 'nbr_ev_per_curve':
-            return self.event_nbr_per_curve()
-        elif data_type is 'length':
-            return [event['fit_length'][0] for event in self.event_list]
-        elif data_type is 'plength':
-            return [event['fit_plength'][0] for event in self.event_list]
-        elif data_type is 'label':
-            return ['pos_x', 'pos_y', 'force', 'lr',
-                    'dist', 'stiff', 'relstiff']
-        elif data_type is 'all':
-            return {'force': self.event_force_list(),
-                    'lr': self.event_lr_list(),
-                    'dist': self.event_dist_list(),
-                    'stiff': self.event_stiff_list(),
-                    'relstiff': self.event_rel_stiff_list(),
-                    'pos_x': self.event_pos_list('x'),
-                    'pos_y': self.event_pos_list('y')}
-
-    def stiff_list(self, dtype, depth=0):
-        """
-            Get the list of the stiffness at the given depth.
-
-            dtype = string
-                'all'
-                    to have stiffness of all pixels
-                'event'
-                    to have stiffness of event pixels
-                'not event'
-                    to have stiffness of pixels with no event
-                'random'
-                    to have stiffness of randomly selected no event pixels
-
-            The difference between event_stiff_list() and stiff_list('event')
-            is that for the first, there is the list of stiffness for each
-            events. Which means there can be two stiffness that belongs to the
-            same pixel. For the second (stiff_list('event')), the list does not
-            contain twice the same pixel value.
-
-            For example :
-
-            >>> fv = ForceVolume(BIOSCOPE_FILE)
-            >>> fv.compute_events()
-            >>> fv.compute_stiffness()
-
-            To get stiffness of pixels where no event were detected :
-
-            >>> stiffness_list = fv.stiff_list('not event')
-
-            To get stiffness of pixels with event :
-
-            >>> event_stiffness_list = fv.stiff_list('event')
-
-            To get stiffness of all pixels :
-
-            >>> all_stiffness_list = fv.stiff_list('all')
-
-            Just to verify that the sum of list with and without event give the
-            correct length :
-
-            >>> len(event_stiffness_list) + len(stiffness_list) == \
-                                                        len(all_stiffness_list)
-            True
-
-            ... and so on.
-        """
-        array = self.get_array('Stiffness')
-
-        depth = int(depth)
-        #print('Line 1165 class.py Depth = %f, type')%depth
-        if array is None:
-            return []
-        else:
-            try:
-                array = array[:, :, depth]
-            except IndexError:
-                array = num.ma.array(num.zeros(array.shape[:2]),
-                                       mask=num.ones(array.shape[:2]))
-                array[:] = num.nan
-        if dtype == 'all':
-            cache = num.ones(array.shape)
-        elif dtype == 'event':
-            cache = self.get_array('Event') > 0
-        elif dtype == 'random':
-            cache = self.get_array('Event random') > 0
-        elif dtype == 'not event':
-            cache = self.get_array('Event') == 0
-        else:
-            raise TypeError(dtype + ' is not recognized.')
-        # Want's negative mask (initially, 1 is masked and 0 is visible)
-        mask = array.mask == False
-        # * is the same as 'and' but 'and' operator does not work
-        mask = cache * mask
-        pix_indice = num.nonzero(mask)
-        stiffness_list = [array[x, y] for x, y in zip(pix_indice[0],
-                                                      pix_indice[1])]
-
-        return stiffness_list
-
-    def event_gauss_fit(self, data_type, min_val, max_val, dist=1):
-        '''
-        Automatically finds the best gaussian fit of the event properties.
-
-        data_type can be :
-
-            * 'force' to considere the event forces.
-            * 'lr' to considere the event loading rates.
-            * 'distance' to considere the event distance in the curve
-            * 'stiff' to considere the stiffness in the trace curve where event
-              was detected.
-            * 'relstiff' to considere the relative stiffness of the pixel where
-              event was detected.
-
-        Results are stored in event_stat[data_type] attribute.
-
-        For example :
-
-        >>> fv = ForceVolume(BIOSCOPE_FILE)
-        >>> fv.compute_events()
-        >>> fv.event_gauss_fit('force', min_val=0, max_val=1)
-        >>> fv.event_stat['force'].keys()
-        ['std', 'kde', 'maxima', 'count', 'mean']
-
-        * kde is the kernel density estimation. This is an array composed of
-          two vector, respectively the x and y coordinate.
-        * 'mean' is the list of detected gaussian mean
-        * 'std' is the corresponding standard deviation.
-        * 'count' is the corresponding number of elements for the mean and std.
-        * 'maxima' is the detected maxima from the kde.
-        '''
-
-        fit, mean, std, count = None, None, None, None
-        if data_type == 'force':
-            values = num.asanyarray(self.event_force_list())
-        elif data_type == 'lr':
-            values = num.asanyarray(self.event_lr_list())
-        elif data_type == 'distance':
-            values = num.asanyarray(self.event_dist_list())
-        elif data_type == 'stiff':
-            values = num.asanyarray(self.event_stiff_list())
-        elif data_type == 'relstiff':
-            values = num.asanyarray(self.event_rel_stiff_list(dist))
-        else:
-            raise StandardError(data_type + ' is not recognize.')
-        index = (min_val < values) * (values < max_val)
-        self.event_stat[data_type] = post_proc.find_gauss_fit(values[index])
-
-    def to_plot(self, curve_type):
-        '''
-        Returns the curves to plot
-        '''
-        if curve_type in self.plot_who:
-            return self.plot_who[curve_type]
-        else:
-            raise KeyError
-
-    def set_to_plot(self, curve_type, value):
-        '''
-        Sets the plotting status of the curve type
-        '''
-        if curve_type in self.plot_who:
-            self.plot_who[curve_type] = value
-        else:
-            raise KeyError
-
-    def stiffness_tomography_array(self):
-        '''
-        Generates the stiffness tomography array
-        '''
-        floor = num.floor(self.__array['Piezo'] / self.stiffness['size_parts'])
-
-        self.__array['Stiffness tomo'] = post_proc.tomography_array(
-                                                self.__array['Stiffness'],
-                                                floor=floor)
-
-    def add_point(self, fdcurves, piezo):
-        '''
-        Add a force distance curve to the file.
-        '''
-        # Calculate the shape of the new array, after we add a new point.
-        nbr_line = num.round(num.sqrt(self.header['number_curves'] + 1))
-        nbr_col = num.ceil(num.sqrt(self.header['number_curves'] + 1))
-        if (nbr_line != self.header['size_x']) or (nbr_col !=
-                                                   self.header['size_y']):
-            self.__fdcurves['trace_y'] = resize_array(
-                                self.__fdcurves['trace_y'],
-                                (nbr_line, nbr_col,
-                                 self.header['force_samples_per_curve']))
-            self.__fdcurves['retrace_y'] = resize_array(
-                                self.__fdcurves['retrace_y'],
-                                 (nbr_line, nbr_col,
-                                  self.header['force_samples_per_curve']))
-            if self.__fdcurves['trace_x'].ndim == 3:
-                self.__fdcurves['trace_x'] = resize_array(
-                                self.__fdcurves['trace_x'],
-                                (nbr_line, nbr_col,
-                                 self.header['force_samples_per_curve']))
-                self.__fdcurves['retrace_x'] = resize_array(
-                                self.__fdcurves['retrace_x'],
-                                (nbr_line, nbr_col,
-                                 self.header['force_samples_per_curve']))
-            self.__array['Piezo'] = resize_array(self.__array['Piezo'],
-                                               (nbr_line, nbr_col))
-
-        # The coordinate of the added point.
-        pos_x = (self.header['number_curves']) % nbr_line
-        pos_y = (self.header['number_curves']) / nbr_line
-        # Add the new point.
-        self.__fdcurves['trace_y'][pos_x, pos_y] = fdcurves['trace_y'][0, 0]
-        self.__fdcurves['retrace_y'][pos_x, pos_y] = \
-                                                    fdcurves['retrace_y'][0, 0]
-        if self.__fdcurves['trace_x'].ndim == 3:
-            self.__fdcurves['trace_x'][pos_x, pos_y] = \
-                                                    fdcurves['trace_x'][0, 0]
-            self.__fdcurves['retrace_x'][pos_x, pos_y] = \
-                                                    fdcurves['retrace_x'][0, 0]
-        self.__array['Piezo'][pos_x, pos_y] = piezo
-        # Update the data.
-        self.header['number_curves'] += 1
-        self.header['matrix_length'] = int(nbr_line)
-        self.header['size_x'] = int(nbr_line)
-        self.header['size_y'] = int(nbr_col)
-
-    def export_map_stiffness(self, file_name, depth=None):
-        title = 'Stiffness File ' + self.name
-        plot_array = plot.Array(title=title)
-        if depth == None:
-            #export all depth
-            plot_array.color_scale['min'] = 0
-            plot_array.color_scale['max'] = self.__array['Stiffness'].max()
-            depth = 0
-            for item in self.__array['Stiffness'].transpose(2, 0, 1):
-                plot_array.plot(item, scan_size=self.header['scan_size'])
-                plot_array.title = '%s, depth %03f nm' % (title,
-                                                self.stiffness['size_parts'])
-                plot_array.save('%s%03i.png' % (file_name, depth))
-                depth += 1
-
-    def export_curve(self, file_name, direction='trace'):
-        """
-            Export the current curve to a csv file.
-
-            * Parameters :
-                file_name: str
-                    The complete path and file name to save the curve in.
-                direction: str
-                    The direction of the curve. This can be: 'trace',
-                    'retrace', 'both'. Default is 'trace'
-
-            * Returns :
-                None
-
-            >>> file_name = EXPORT_FOLDER + '/export_curve.csv'
-            >>> fv_file = ForceVolume(BIOSCOPE_FILE)
-            >>> fv_file.export_curve(file_name, 'trace')
-            >>> file_name = EXPORT_FOLDER + '/export_curve_both.csv'
-            >>> fv_file.export_curve(file_name, 'both')
-        """
-        legend = []
-        curves = []
-        if direction in ['trace', 'both']:
-            legend.append('trace x')
-            curves.append(self.trace_x)
-            legend.append('trace y')
-            curves.append(self.trace_y)
-        if direction in ['retrace', 'both']:
-            legend.append('retrace x')
-            curves.append(self.retrace_x)
-            legend.append('retrace y')
-            curves.append(self.retrace_y)
-
-        preambule = ['Force distance curve of file :' + self.name,
-                    'Curve [' + str(self.pos_x) + ': ' + str(self.pos_y) + ']']
-        curves = misc.export_list(file_name, curves,
-                                  legend, preambule, transpose=True)
-
-    def export_events(self, to_file, firstfile=False):
-        """
-            Export the event properties to a csv file.
-
-            * Parameters :
-                to_file: str or csv.writer object
-                    If str, it describes the file pathname.
-                    If csv.writer object, the function just adds events
-                    properties of this ForceVolume object at the end of the
-                    file.
-                firstfile: bool (default: False)
-                    If True, will add labels to the first line. This has
-                    incidence only whith csv.writer object as to_file.
-
-            * Retruns :
-                None.
-
-            >>> file_name = EXPORT_FOLDER + '/export_event.csv'
-            >>> fv_file = ForceVolume(BIOSCOPE_FILE)
-            >>> fv_file.compute_events()
-            >>> fv_file.export_events(file_name)
-        """
-        nbr_evt = self.number_event()
-        evt_list = self.get_event_prop('all')
-        legend = self.get_event_prop('label')
-        if type(to_file) == str:
-            # Create the file.
-            fid = open(to_file, 'wb')
-            fcsv = csv.writer(fid)
-        elif str(type(to_file)) == "<type '_csv.writer'>":
-            # we got a csv writer, then directly write on it.
-            fcsv = to_file
-        if type(to_file) == str or firstfile:
-            fcsv.writerow(['filename'] + legend)
-        # Now, complement the fcsv...
-        for item in range(nbr_evt):
-            fcsv.writerow([self.name] + [evt_list[leg][item]
-                                                        for leg in legend])
-        if type(to_file) == str():
-            fid.close()
-
-    def export_nbr_events(self, to_file, firstfile=False):
-
-        nbr_evt = self.get_event_prop('nbr_ev_per_curve')
-        legend = ['nbr_evt', 'nbr_curves']
-        if type(to_file) == str:
-            # Create the file
-            fid = open(to_file, 'wb')
-            fcsv = csv.writer(fid)
-        elif str(type(to_file)) == "<type '_csv.writer'>":
-            # we got a csv writer, then, directly write on it.
-            fcsv = to_file
-        if type(to_file) == str or firstfile:
-            fcsv.writerow(['filename'] + legend)
-        # Now, complement the fcsv...
-        for nbr_curve, nbr_evt in zip(nbr_evt, range(len(nbr_evt))):
-            fcsv.writerow([self.name, nbr_evt, nbr_curve])
-        if type(to_file) == str():
-            fid.close()
-
-    def test_fct(self):
-        pass
-
-
-class FVFolder(object):
-    '''
-    In this class are stored all the ForceVolume files of a single experiment.
-
-    Important attribute that are read-write accessible :
-
-        filename
-            Stores the name of the original aex file.
-        short_name
-            Same as filename, but without the tree.
-        file
-            Dictionnary that contains informations about the stored files :
-
-            'list'
-                is the list of stored files.
-            'name'
-                is the name of stored files.
-            'group'
-                is the group to which files respectively belongs to.
-        data_hist
-            Is a PlotData instance. Used to plot histograms and scatter with
-            plot_generic module.
-        author
-            String informing about the author of the experiment.
-        comment
-            String that contains information usefull for user.
-        date
-            Datetime instance. Stores the creation date.
-        counter, counter_text
-            Integer and string to be displayed in the progressbar for the gui.
-        parameters
-            Dictionnary that contains informations about some parameters :
-
-            'event_detect_weight'
-                Float. [0:inf] How much the noise has to be considered for the
-                event detection. 0 means no influence (detection won't work)
-            'rel_stiff_dist'
-                Integer. Is the maximum distance to consider for the relative
-                stiffness computation.
-            'PoC_threshold'
-                Float. [0:inf] Threshold to detect the point of contact.
-            'spring_constant'
-                Float. Is the spring constant of the used cantilever.
-            'glass'
-                Float. Is the correction for the slope recorded on stiff
-                substrate.
-            'injection_index' [Deprecated]
-                Integer. Is the index of the first file after injection of
-                chemical.
-            'number_curves'
-                Integer. The total number of curves in the experiment.
-        event_stat
-            Dictionnary that contais event properties, ordered.
-
-            'force', 'lr', 'dist', 'stiff', 'rel_stiff'
-                Are list containing the computed force, loading rate, distance
-                from the end of indentation, stiffness and relative stiffness
-                respectively
-        relative_stiffness
-            Dictionnary that contains information about relative stiffness.
-
-            'data'
-                List containing the relative stiffness of event.
-            'data_ctl'
-                List containing the relative stiffness of randomly selected
-                pixels
-            'indice'
-                First file after chemical injection.
-
-    >>> #fv_folder = FVFolder()
-    >>> #fv_folder.load()
-    '''
-
-    def __init__(self):
-        # TODO eliminate self.relative_stiffness['mean'] or use it...
-
-        self.filename = None  # stores the filename of aex file where it is
-                              # saved
-        self.short_name = None  # the short name to display
-        self.file = {'list': [],
-                     'name': [],
-                     'group': [],
-                     'current': 0}  # Stores the indice of the current used
-                                    # file.
-        self.group = {'id': [],  # List of int. The id of the group.
-                      'label': [],  # List of str. Label corresponding to
-                                    # group to be displayed in the plots.
-                      'display': []}  # List of bool. Informs wether to display
-                                      # or not the correspinding group.
-        self.data_hist = PlotData()
-        self.author = 'Author name'
-        self.comment = 'Your comment'
-        self.date = datetime.now()
-        self.counter = {'num': 0,
-                        'text': 'Please wait ...'}
-        self.parameters = {
-            'event_detect_weight': 2,
-            # The fit use for the events (can be wlc, fjc or None)
-            'event_fit_model': None,
-            'rel_stiff_dist': 3,
-            'PoC_threshold': 2,
-            'spring_constant': None,
-            'glass': None,
-            'injection_index': 0,
-            'number_curves': 0,
-            'histo_y_rel': False,  # The y axis in histogram. If False, the
-            # histogram y axis reflects the number of data. If true, it
-            # reflects the frequency of the data.
-            'plot_size': [800, 600],  # The size, in pixel, of the plot to
-                                      # save.
-            'plot_hist_gauss': True,
-        }
-        self.event_stat = {'force': None,
-                           'lr': None,
-                           'dist': None,
-                           'stiff': None,
-                           'rel_stiff': None}
-        self.relative_stiffness = {'data': None,
-                                    'data_ctl': None,
-                                    'indice': None}
-        # The list of switch to enable or disable functions. Use self.switch()
-        # to change the state.
-        self.switch_dict = {'mask': 'No',
-                            'all': 'No'}
-
-    def __setattr__(self, att, value):
-        if att is 'PoC_threshold':
-            for fv in self.file['list']:
-                fv.stiffness['poc_threshold'] = value
-            self.parameters['PoC_threshold'] = value
-        else:
-            self.__dict__[att] = value
-
-    def __getattr__(self, att):
-        '''
-        Called if requested attribute does not exist.
-        '''
-        if att == 'event_force':
-            __list = []
-            for force_volume in self.file['list']:
-                __list = __list + force_volume.event_force_list()
-            self.event_force = __list
-            return self.event_force
-        elif att == 'event_distance':
-            __list = []
-            for force_volume in self.file['list']:
-                __list = __list + force_volume.event_dist_list()
-            self.event_distance = __list
-            return self.event_distance
-        elif att == 'event_lr':
-            __list = []
-            for force_volume in self.file['list']:
-                __list = __list + force_volume.event_lr_list()
-            self.event_lr = __list
-            return self.event_lr
-        elif att == 'event_stiffness':
-            __list = []
-            for force_volume in self.file['list']:
-                __list = __list + force_volume.event_stiff_list()
-            self.event_stiffness = __list
-            return self.event_stiffness
-        elif att == 'event_relstiff':
-            __list = []
-            for dist in range(self.parameters['rel_stiff_dist'] + 1):
-                __dist = []
-                for force_volume in self.file['list']:
-                    __dist = __dist + force_volume.event_rel_stiff_list(dist)
-                __list.append(__dist)
-            self.event_relstiff = __list
-            return self.event_relstiff
-        elif att == 'average_stiffness':
-            """
-                This is the average stiffness in function of the depth
-            """
-            return [fv.compute_average_stiffness() for fv in self.file['list']]
-        else:
-            print att
-            raise AttributeError
-
-    def get_file(self, nbr):
-        """
-            Get the forcevolume file from the list.
-
-            * Parameters :
-                nbr: int
-                    The index number of the force volume object.
-        """
-        self.file['current'] = nbr
-        self.update_switch()
-        return self.file['list'][nbr]
-
-    def get_masked_list(self):
-        """
-            Get the list of masked switch for each forcevolume files.
-
-            fvfolder.get_masked_list()
-            [True, False, False, False, True, True]
-        """
-
-        return [fv.get_switch('mask') for fv in self.file['list']]
-
-    def get_event_att(self, att):
-        if att in ['force', 'force_base', 'dist', 'stiff_ev', 'stiff_notev',
-                   'lr', 'stiff', 'length', 'plength']:
-            __list = []
-            __group = []
-            __fid = []
-            __coord = None  # to be done...
-            for force_volume, group in zip(self.file['list'],
-                                           self.file['group']):
-                __add_to_list = force_volume.get_event_prop(att)
-                __add_to_group = [group for i in range(len(__add_to_list))]
-
-                __this_fid = self.file['list'].index(force_volume)
-                __add_to_fid = [__this_fid for i in range(len(__add_to_list))]
-
-                __list = __list + __add_to_list
-                __group = __group + __add_to_group
-                __fid = __fid + __add_to_fid
-        if att in ['force', 'force_base']:
-            self.event_force = __list
-        elif att == 'dist':
-            self.event_distance = __list
-        elif att == 'lr':
-            self.event_lr = __list
-        elif att == 'stiff':
-            self.event_stiffness = __list
-        elif att == 'length':
-            self.event_length = __list
-        elif att == 'plength':
-            self.event_plength = __list
-        elif att in ['relstiff', 'relstiffctl']:
-            __list = []
-            __group = []
-            __fid = []
-            __coord = None  # to be done...
-            for dist in range(self.parameters['rel_stiff_dist'] + 1):
-                __dist = []
-                __dist_group = []
-                __dist_fid = []
-                # __dist_coord = []
-                for force_volume, group in zip(self.file['list'],
-                                               self.file['group']):
-                    if att == 'relstiff':
-                        __add_to_list = force_volume.event_rel_stiff_list(dist)
-                    elif att == 'relstiffctl':
-                        __add_to_list = \
-                                   force_volume.event_rand_rel_stiff_list(dist)
-                        __add_to_list = list(__add_to_list)
-                    __add_to_group = [group for i in range(len(__add_to_list))]
-                    __this_fid = self.file['list'].index(force_volume)
-                    __add_to_fid = [__this_fid
-                                    for i in range(len(__add_to_list))]
-                    __dist = __dist + __add_to_list
-                    __dist_group = __dist_group + __add_to_group
-                    __dist_fid = __dist_fid + __add_to_fid
-                __list.append(__dist)
-                __group.append(__dist_group)
-            self.event_relstiff = __list
-            __fid = __dist_fid
-        return [__list, __group, __fid, __coord]
-
-    def load_file(self, fv_file):
-        '''
-        Loads the file specified
-        '''
-        self.file['list'].append(ForceVolume(fv_file))
-        self.file['list'].sort()
-        self.__regenerate_filename_list()
-        self.parameters['spring_constant'] = \
-                            self.file['list'][0].header['spring_constant']
-        self.parameters['glass'] = \
-                            self.file['list'][0].stiffness['glass']
-
-    def load_folder(self, fv_folder):
-        '''
-        Loads all the files in a folder
-        '''
-        list_files = os.listdir(fv_folder)
-        self.counter['num'] = 0
-        counter_total = len(list_files) + 1
-        counter_this = 0
-        for files in list_files:
-            self.counter['text'] = 'Loading ' + files + '...'
-            try:
-                self.load_file(os.path.join(fv_folder, files))
-            except TypeError as detail:
-                if detail.args[0] == "Not a supported AFM file format.":
-                    pass
-                elif 'asylum' in detail.args[0]:
-                    pass
-                else:
-                    raise TypeError(detail)
-                counter_this += 1
-            finally:
-                counter_this += 1
-                self.counter['num'] = float(counter_this) / counter_total
-        self.file['list'].sort()
-        try:
-            self.convert_v6()
-        except KeyError:
-            pass
-        self.__regenerate_filename_list()
-        self.__regenerate_comment()
-        self.counter['num'] = 1
-
-    def convert_v6(self):
-        new_file_list = []
-        container = None
-        self.counter['text'] = 'Reshaping data from V6...'
-        for counter_this in range(1, len(self.file['list'])):
-            if (6100000 <
-                self.file['list'][counter_this].header['di_version'] <
-                6200000):
-                name0 = os.path.splitext(self.file['list']
-                                                    [counter_this - 1].name)[0]
-                name1 = os.path.splitext(self.file['list']
-                                                    [counter_this].name)[0]
-                if name0 == name1:
-                    if container is None:
-                        container = self.file['list'][counter_this - 1]
-                    container = self.merge_single(container,
-                                            self.file['list'][counter_this])
-                else:  # A new serie is comming
-                    new_file_list.append(container)
-                    container = self.file['list'][counter_this]
-        new_file_list.append(container)
-        new_file_list.sort()
-        if container is not None:
-            self.file['list'] = new_file_list
-
-    def merge_single(self, container, fv_file):
-        '''
-        Merge force volume files that contains only one fv curve.
-        The first fv_file is the container that can contain already several
-        force curve.
-        The second is the force curve that will be added.
-        '''
-        ## Variable to update :
-        ##
-        if fv_file._ForceVolume__fdcurves['trace_y'].shape[0:2] == (1, 1):
-            container.add_point(fv_file._ForceVolume__fdcurves,
-                                fv_file.get_array('Piezo')[0, 0])
-        return container
-
-    def load_aex(self, aex_file):
-        '''
-        Loads a AFM Experiment XML file
-        '''
-        self.filename = aex_file
-        self.short_name = os.path.split(aex_file)[1]
-        self.counter['num'] = None
-        self.counter['text'] = 'Uncompressing files ...'
-        [experiment, file_tree] = aex.load(aex_file)
-        self.author = experiment['author']
-        self.comment = experiment['comment']
-        self.date = experiment['date']
-        self.parameters = experiment['parameters']
-        self.counter['text'] = 'Loading files ...'
-        for item in file_tree:
-            self.load_file(item)
-        self.file['list'].sort()
-        self.__regenerate_filename_list
-        self.counter['num'] = 1
-        self.update_switch()
-        if len(experiment['group']['id']):
-            self.group = experiment['group']
-
-    def save(self, file_name):
-        self.filename = file_name
-        self.short_name = os.path.split(file_name)[1]
-        self.counter['num'] = None
-        self.counter['text'] = 'Saving files ...'
-        aex.save(self, file_name)
-        self.counter['num'] = 1
-
-    def set_parameters(self, param, value):
-        """
-            Change the parameters of the force volume files in the experiments.
-
-            * Parameters :
-                param: str
-                    Defines which parameter to change.
-                    'spring_constant'
-                    'glass'
-                    'poisson_ratio'
-                value: depending on the parameters.
-                    float if 'spring_constant', 'glass' or 'poisson_ratio'
-        """
-        if param == 'spring_constant':
-            for fc in self.file['list']:
-                fc.header['spring_constant'] = value
-            self.parameters['spring_constant'] = value
-        elif param == 'glass':
-            for fv in self.file['list']:
-                fv.stiffness['glass'] = value
-            self.parameters['glass'] = value
-        elif param == 'poisson_ratio':
-            if self.get_switch('all') == 'Yes':
-                [fv.change_poisson_ratio(value) for fv in self.file['list']]
-            else:
-                self.file['list'][self.file['current']].change_poisson_ratio(
-                                                                        value)
-        elif param == 'tip_carac':
-            if self.get_switch('all') == 'Yes':
-                [fv.set_parameters('tip_carac', value)
-                                                for fv in self.file['list']]
-            else:
-                self.file['list'][self.file['current']].set_parameters(
-                                                            'tip_carac', value)
-        elif param == 'plot_size':
-            self.parameters['plot_size'] = [int(value[0]), int(value[1])]
-        elif param == 'plot_hist_gauss':
-            # bool to display gauss fit on histograms.
-            if isinstance(value, bool):
-                self.parameters['plot_hist_gauss'] = value
-            elif isinstance(eval(value), bool):
-                self.parameters['plot_hist_gauss'] = eval(value)
-            else:
-                raise AttributeError(
-                        '%s is not a correct type for this parameter' %
-                        type(value))
-
-    def set_group(self, group_list):
-        """
-            Change the group appartenance for the fv files, and update the
-            group list.
-        """
-
-        for fv, group in zip(self.file['list'], group_list):
-            fv.header['group'] = group
-        self.__regenerate_filename_list()
-
-    def set_group_prop(self, prop, which, value):
-        """
-            Change the properties of the group.
-
-            * Parameters :
-                prop: str
-                    'label': to change the label
-                    'visible': to switch the visibility of the group
-                which: int
-                    The group id to change. if -1, will change all the label
-                value: str or bool
-                    if prop is label: str
-                    if prop is visible: True or False
-                    if which is -1, need a list of prop. the length has to be
-                                    the same as the number of groups.
-        """
-        if prop not in ['label', 'display']:
-            raise TypeError('%s is not recognized property.' % prop)
-        if which is not -1:
-            if prop == 'label' and type(value) is not str:
-                raise TypeError('Property %s expect string value.' % prop)
-            if prop == 'display' and type(value) is not bool:
-                raise TypeError('Property %s expect boolean value' % prop)
-            # we change only one group property
-            index = self.group['id'].index(which)
-            self.group[prop][index] = value
-        if which == -1:
-            if type(value) is not list:
-                raise TypeError('Expect list of values.')
-            for [gid, gval] in zip(self.group['id'], value):
-                self.set_group_prop(prop, gid, gval)
-
-    def compute_relative_stiffness(self, exclude=0):
-        # initialize temporary variables
-        tmp_indice = num.zeros(len(self.file['list']))
-        max_dot = 0
-        max_rand = 0
-        for fvfile in self.file['list']:
-            max_dot = max((fvfile.get_array('Event') > 0).sum(), max_dot)
-            max_rand = max((fvfile.get_array('Event random') > 0).sum(),
-                           max_dot)
-
-        array_shape = (len(self.file['list']),
-                       self.parameters['rel_stiff_dist'] + 1,
-                       max_dot)
-        self.relative_stiffness['data'] = num.ma.array(
-                                                num.empty(array_shape),
-                                                mask=num.ones(array_shape))
-        array_shape = (len(self.file['list']),
-                       self.parameters['rel_stiff_dist'] + 1,
-                       max_rand)
-        self.relative_stiffness['data_ctl'] = num.ma.array(
-                                                num.empty(array_shape),
-                                                mask=num.ones(array_shape))
-        file_nbr = 0
-        for fvfile in self.file['list']:
-            fvfile.change_relative_distance(self.parameters['rel_stiff_dist'])
-            fvfile.compute_relative_stiffness(exclude)
-            t_shape = fvfile.event['rel_stiff'].shape
-
-            self.relative_stiffness['data'].data[file_nbr,
-                                                 :t_shape[0],
-                                                 :t_shape[1]] = \
-                                            fvfile.event['rel_stiff'].data
-            self.relative_stiffness['data'].mask[file_nbr,
-                                                 :t_shape[0],
-                                                 :t_shape[1]] = \
-                                            fvfile.event['rel_stiff'].mask
-
-            t_shape = fvfile.event['rel_stiff_ctl'].shape
-            self.relative_stiffness['data_ctl'].data[file_nbr,
-                                                     :t_shape[0],
-                                                     :t_shape[1]] = \
-                                            fvfile.event['rel_stiff_ctl'].data
-            self.relative_stiffness['data_ctl'].mask[file_nbr,
-                                                     :t_shape[0],
-                                                     :t_shape[1]] = \
-                                            fvfile.event['rel_stiff_ctl'].mask
-            if file_nbr < self.parameters['injection_index']:
-                tmp_indice[file_nbr] = 0
-            else:
-                tmp_indice[file_nbr] = 0
-            file_nbr += 1
-        self.relative_stiffness['indice'] = num.array(tmp_indice)
-        self.relative_stiffness['data'] = \
-                            self.relative_stiffness['data'].transpose(0, 2, 1)
-        self.relative_stiffness['data_ctl'] = \
-                        self.relative_stiffness['data_ctl'].transpose(0, 2, 1)
-
-    def generate_mask(self, mtype, mdata):
-        """
-            See FV classe.
-        """
-
-        for fvfile in self.file['list']:
-            fvfile.generate_mask(mtype, mdata)
-
-    def update_switch(self):
-        """
-            Update the switches.
-        """
-
-        convbool = {True: 'Yes', False: 'No'}
-        if self.switch_dict['all'] == 'Yes':
-            # We update other switches to reflect the whole experiment.
-            #
-            ## First the mask :
-            mask = [fv.get_switch('mask') for fv in self.file['list']]
-            if mask.count(True) == len(mask):
-                self.switch_dict['mask'] = 'Yes'
-            elif mask.count(False) == len(mask):
-                self.switch_dict['mask'] = 'No'
-            else:
-                self.switch_dict['mask'] = 'Some'
-            ## Second, the event distance threshold :
-            ev_dist = [fv.get_switch('ev_dist') for fv in self.file['list']]
-            if ev_dist.count(ev_dist[0]) == len(mask):
-                self.switch_dict['ev_dist'] = ev_dist[0]
-            else:
-                self.switch_dict['ev_dist'] = '~~'
-            ## Third, the event lenght computed from the fit :
-            curr_switch = [fv.get_switch('ev_fit_length')
-                                for fv in self.file['list']]
-            if curr_switch.count(curr_switch[0]) == len(curr_switch):
-                self.switch_dict['ev_fit_length'] = curr_switch[0]
-            else:
-                self.switch_dict['ev_fit_length'] = '~~'
-        if self.switch_dict['all'] == 'No':
-            mask = self.file['list'][self.file['current']].get_switch('mask')
-            self.switch_dict['mask'] = convbool[mask]
-            self.switch_dict['ev_dist'] = \
-                self.file['list'][self.file['current']].get_switch('ev_dist')
-            self.switch_dict['ev_fit_length'] = \
-                self.file['list'][self.file['current']].get_switch(
-                                                            'ev_fit_length')
-
-    def get_switch(self, what):
-        if what == 'all':
-            return self.switch_dict['all']
-        elif what == 'mask':
-            self.update_switch()
-            return self.switch_dict['mask']
-        elif what == 'ev_dist':
-            self.update_switch()
-            return self.switch_dict['ev_dist']
-        elif what == 'ev_fit_length':
-            self.update_switch()
-            return self.switch_dict[what]
-
-    def set_switch(self, stype, state):
-        """
-            Switch to True or False several stuffs or indicate the state of
-            internal components.
-
-            * Parameters:
-                stype: str
-                    'all': Switch the FVFolder to consider one or all the
-                            forcevolume object.
-                    'ev_dist': Threshold on the distance where event occured.
-                    'ev_fit_length': Threshold on the length of event.
-                state: str
-                    if stype is 'all' :
-                        'Yes' if the feature is enabled.
-                        'No' if not.
-                    if stype is 'ev_dist':
-                        float
-                    if stype is 'ev_fit_length' :
-                        [float, float]: first is the min, second is the max.
-        """
-        if not stype in ['all', 'ev_dist', 'ev_fit_length']:
-            raise AttributeError(stype +
-                                 ' is not recognized as a FVFolder switch.')
-
-        if stype == 'all':
-            convbool = {True: 'Yes', False: 'No'}
-            state = convbool[state]
-            self.switch_dict[stype] = state
-        elif stype in ['ev_dist', 'ev_fit_length']:
-            if self.get_switch('all') == 'Yes':
-                [fv.set_switch(stype, state) for fv in self.file['list']]
-            else:
-                self.file['list'][self.file['current']].set_switch(stype,
-                                                                   state)
-        self.update_switch()
-
-    def set_data_hist(self, dtype, drange=None, depth=0):
-        """
-            Sets the plot data type and refresh it.
-
-            * Parameters :
-                dtype: str
-                    The data type that has to be set on the plot_data instance.
-                depth: int
-                    For data dependent to depth. Specify the depth at which the
-                    data has to be taken.
-
-            >>> exp = FVFolder()
-            >>> exp.load_aex(STIFFNESS_COMPUTED_FILE)
-            >>> #fv = exp.get_file(1)
-            >>> exp.set_data_hist('young_modulus', \
-                                  drange=[0, 100000000, 10000000])
-            >>> exp.set_data_hist('young_modulus', drange=[0, 1000000, 100000])
-        """
-        self.__regenerate_filename_list()
-        if dtype == 'young_modulus':
-            flat_list = []
-            flat_group = []
-            if self.get_switch('all') == 'Yes':
-                stiff_list = self.get_stiffness_list('all', depth)
-                file_group = self.file['group']
-                for i in range(len(stiff_list)):
-                    flat_list += stiff_list[i]
-                    flat_group += [num.unique(file_group)[i] \
-                                   for nb in range(len(stiff_list[i]))]
-                self.data_hist.set_group_prop('all', self.group)
-            else:
-                fvfile = self.file['list'][self.file['current']]
-                flat_list = fvfile.stiff_list('all', depth)
-                flat_group = [0 for i in range(len(flat_list))]
-                self.data_hist.set_group_prop('all', None)
-            self.data_hist.set_data('stiff', flat_list)
-            self.data_hist.set_group('stiff', flat_group)
-            if drange == None:
-                drange = [0, max(flat_list) / 10, max(flat_list) / 500]
-            self.data_hist.set_range('stiff', drange)
-            self.data_hist.set_type('stiff')
-            self.event_gauss_fit('stiff')
-            self.data_hist.nbr_curves = self.parameters['number_curves']
-
-    def get_rel_stiff(self, dist):
-        """
-            Returns the dictionnary of relative stiffness at the desired
-            distance. It gives it in a format that is friendly to plot with
-            plot_generic.
-        """
-        rl_dict = self.relative_stiffness
-        to_return = dict()
-        for key in rl_dict.keys():
-            to_return[key] = rl_dict[key][dist]
-        return to_return
-
-    def get_relative_stiffness_random(self, dist):
-        """
-            Returns the dictionnary of relative stiffness at the desired
-            distance. It gives it in a format that is friendly to plot with
-            plot_generic.
-        """
-        to_return = dict()
-        rl_dict = self.relative_stiffness_random
-        for key in rl_dict.keys():
-            to_return[key] = rl_dict[key][dist]
-        return to_return
-
-    def get_arrays(self, which):
-        '''
-        Returns the list of the desired arrays:
-
-        which :
-          String definding the array to get. Possible values are :
-
-          * 'Event' to get the event array
-          * 'Topography' to get the topography array
-        '''
-        if which not in self.file['list'][0].get_array('keys'):
-            raise TypeError('"' + which + '" is not supported')
-        array_list = list()
-        for fvfile in self.file['list']:
-            array_list.append(fvfile.get_array(which))
-        return array_list
-
-    def get_stiffness_list(self, dtype, depth=0):
-        """
-            Get the list of the stiffness of the files contain in the
-            experiment.
-
-            It takes advantage of the group definition.
-
-            Returned list is a 2d list which look like this :
-            [Stiffness list group 1, Stiffness list group 2, ...]
-
-            Files belonging to group 0 are not
-            considered.
-
-            >>> exp = FVFolder()
-            >>> exp.load_aex(ALL_COMPUTED_FILE)
-            >>> stiff_list = exp.get_stiffness_list('event')
-            >>> stiff_list2 = exp.get_stiffness_list('not event')
-
-            In our example file, we have 5 + 191 pixels with no computed
-            stiffness for the first depth. Then, we would expect
-            (16 * 16) + (32 * 32) - 5 - 191 = 1078 number of points
-
-            >>> len(stiff_list[0]) + len(stiff_list2[0])
-            1084
-
-        """
-        if sum(self.file['group']) == 0:
-            # no group was defined, so do not consider it.
-            group = [1 for item in self.file['group']]
-        else:
-            group = self.file['group']
-        glist = list(num.unique(group))
-        stiff_list = [[] for item in glist]
-        for fvfile, gid in zip(self.file['list'], group):
-            # gid means group id...
-            index = glist.index(gid)
-            for item in fvfile.stiff_list(dtype, depth):
-                stiff_list[index].append(item)
-            #stiff_list[index].append(fvfile.get_stiffness_list(dtype))
-        return stiff_list
-
-    def event_nbr_list(self):
-        '''
-        Retuns a list containing the number of detected event per files.
-        '''
-
-        event_list = []
-        for fv in self.file['list']:
-            event_list.append(fv.number_event())
-        return event_list
-
-    def clear_event_prop_list(self):
-        '''
-        Clear the event properties.
-        To do to refresh the list if a new computation was done.
-        '''
-
-        att_list = ['event_force', 'event_distance', 'event_lr',
-                    'event_stiffness', 'event_relstiff']
-        for item in att_list:
-            if hasattr(self, item):
-                delattr(self, item)
-
-    def event_gauss_fit(self, data_type=None, min_val=None, max_val=None,
-                        dist=1):
-        '''
-            Automatically finds the best gaussian fit of the event properties.
-
-            data_type can be :
-
-                * 'force' to considere the event forces.
-                * 'lr' to considere the event loading rates.
-                * 'distance' to considere the event distance in the curve
-                * 'stiff' to considere the stiffness in the trace curve where
-                  event was detected.
-                * 'relstiff' to considere the relative stiffness of the pixel
-                  where event was detected.
-
-            Results are stored in event_stat[data_type] attribute.
-
-            For example :
-
-            >>> exp = FVFolder()
-            >>> exp.load_aex(EVENT_COMPUTED_FILE)
-            >>> exp.data_hist.set_range('force', [0, 1, 0.1])
-            >>> exp.data_hist.set_type('force')
-            >>> [data, group, fid, coord] = exp.get_event_att('force')
-            >>> exp.data_hist.set_data('force', data)
-            >>> exp.event_gauss_fit(data_type='force')#, min_val=0, max_val=1)
-            >>> exp.event_stat['force'].keys()
-            ['std', 'kde', 'maxima', 'count', 'mean']
-
-            * kde is the kernel density estimation. This is an array composed
-              of two vector, respectively the x and y coordinate.
-            * 'mean' is the list of detected gaussian mean
-            * 'std' is the corresponding standard deviation.
-            * 'count' is the corresponding number of elements for the mean and
-              std.
-            * 'maxima' is the detected maxima from the kde.
-
-            To fit loading rate, distance, stiffness and relative stiffness :
-
-            >>> exp.data_hist.set_range('lr', [0, 1, 0.1])
-            >>> exp.data_hist.set_type('lr')
-            >>> [data, group, fid, coord] = exp.get_event_att('lr')
-            >>> exp.data_hist.set_data('lr', data)
-            >>> exp.event_gauss_fit(data_type='lr')
-
-            >>> exp.data_hist.set_range('dist', [0, 1000, 10])
-            >>> exp.data_hist.set_type('dist')
-            >>> [data, group, fid, coord] = exp.get_event_att('dist')
-            >>> exp.data_hist.set_data('dist', data)
-            >>> exp.event_gauss_fit(data_type='dist')
-        '''
-        # defines the groups to be displayed.
-        group = num.array(self.group['id'])[
-                            num.array(self.group['display'])]
-        fit, mean, std, count = None, None, None, None
-        if data_type in ['force', 'force_base', 'lr', 'dist', 'stiff',
-                         'relstiff', 'length', 'plength']:
-            min_val = self.data_hist.get_range(data_type).min
-            max_val = self.data_hist.get_range(data_type).max
-            values = self.data_hist.get_data(data_type, group)
-        index = (min_val < values) * (values < max_val)
-        self.event_stat[data_type] = post_proc.find_gauss_fit(values[index])
-
-    def export_stiffness(self, filename):
-        """
-            Export the stiffness in a set of csv file. Each file contain the
-            stiffness at
-
-            >>> exp = FVFolder()
-            >>> exp.load_aex(STIFFNESS_COMPUTED_FILE)
-            >>> exp.export_stiffness(os.path.join(EXPORT_FOLDER, \
-                                     'stiffness_export'))
-        """
-        # Get all the stiffness
-        #stiffness_list = list()
-        split_filename = os.path.splitext(filename)
-        if split_filename[1] in ['.csv', '.txt']:
-            filename = split_filename[0]
-        else:
-            # It is probably not an extention, then restore it
-            filename = split_filename[0] + split_filename[1]
-        old_masked_print_option = num.ma.masked_print_option.display()
-        num.ma.masked_print_option.set_display('')
-        shapes = list()
-        size_parts = list()
-        for fv in self.file['list']:
-            if fv.has_stiffness:
-                shapes.append(fv.get_array('Stiffness').shape)
-                size_parts.append(fv.stiffness['size_parts'])
-        # The shape are in the forme :
-        # (size_x, size_y, depth)
-        # to take the max depth: shape[:,2].max()
-        shapes = num.array(shapes)
-        max_depth = shapes[:, 2].max()
-        max_size = max(shapes[:, 0] * shapes[:, 1])
-        for depth in range(max_depth):
-            this_file = filename + '_Deep_' + str(depth) + '.csv'
-            this_array = num.ma.array(
-                                num.empty((max_size, len(self.file['list']))),
-                                           mask=num.ones((max_size,
-                                                    len(self.file['list']))))
-            # this_averate will contain 1) mean, 2) std and 3) count.
-            this_average = num.empty((3, len(self.file['list'])))
-            for fv in self.file['list']:
-                if fv.has_stiffness:
-                    if fv.get_array('Stiffness').shape[2] >= depth:
-                        # Get the data and create the mask according to it.
-                        try:
-                            vector = fv.get_array(
-                                            'Stiffness')[:, :, depth].flatten()
-                        except IndexError:
-                            print "SHIT"
-                            vector = num.ma.array(num.empty(5),
-                                                  mask=num.ones(5))
-                        # Put the data in the masked array.
-                        index = self.file['name'].index(fv.name)
-                        this_array[:vector.shape[0], index] = vector
-                        this_array.mask[:vector.shape[0], index] = vector.mask
-                        this_average[0, index] = vector.mean()
-                        this_average[1, index] = vector.std()
-                        this_average[2, index] = vector.count()
-            # Write the file.
-            fid = open(this_file, 'wb')
-            fcsv = csv.writer(fid)
-            fcsv.writerow(['Stiffness data of file :', self.filename])
-            fcsv.writerow(['Injection time : ',
-                            self.parameters['injection_index']])
-            fcsv.writerow(self.file['name'])
-            fcsv.writerow(['Group'])
-            fcsv.writerow(self.file['group'])
-            fcsv.writerow(['Depth size : [nm]'])
-            fcsv.writerow(num.array(size_parts))
-            fcsv.writerow(['Global: mean'])
-            fcsv.writerow(this_average[0, :])
-            fcsv.writerow(['Global: std'])
-            fcsv.writerow(this_average[1, :])
-            fcsv.writerow(['Global: number'])
-            fcsv.writerow(this_average[2, :])
-            fcsv.writerow(['Global: all values'])
-            fcsv.writerows(this_array)
-            fid.close()
-        # restore the old display option of masked arrays
-        num.ma.masked_print_option.set_display(old_masked_print_option)
-
-    def export_average_stiffness_tomo(self, filename):
-        """
-            Exports the average stiffness tomography to the specified file.
-
-            * Parameters :
-                filename: str
-                    path-name to save the file.
-
-            * Output :
-                None
-        """
-
-        ## generate the filename
-        split_filename = os.path.splitext(filename)
-        if split_filename[1] in ['.csv', '.txt']:
-            filename = split_filename[0]
-        else:
-            # It is probably not an extention, then restore it
-            filename = split_filename[0] + split_filename[1]
-        filename = filename + '.csv'
-        old_masked_print_option = num.ma.masked_print_option.display()
-        num.ma.masked_print_option.set_display('')
-
-        # get the data to export
-        mean_stiffness = self.average_stiffness
-        # the data are [{'deep': [], 'mean': [], 'std': [], 'count': []}]
-        # Rearrange the data to be an array...
-        deep = [i['deep'] for i in mean_stiffness]
-        mean = [i['mean'] for i in mean_stiffness]
-        std = [i['std'] for i in mean_stiffness]
-        count = [i['count'] for i in mean_stiffness]
-
-        sizes = [len(i) for i in deep]
-        max_size = max(sizes)
-        max_index = sizes.index(max_size)
-
-        array_size = (3 * len(mean_stiffness) + 1, max_size)
-
-        this_array = num.ma.array(num.empty(array_size),
-                                  mask=num.ones(array_size))
-
-        # Fill the array with the data
-        this_array[0][:len(deep[max_index])] = deep[max_index]
-        this_array[0].mask[:len(deep[max_index])] = 0
-        add = 1
-        for i, this_mean in zip(range(len(mean_stiffness)), mean):
-            this_array[i + add][:len(this_mean)] = this_mean
-            this_array[i + add].mask[:len(this_mean)] = 0
-        add = 1 + len(mean_stiffness)
-        for i, this_std in zip(range(len(mean_stiffness)), std):
-            this_array[i + add][:len(this_std)] = this_std
-            this_array[i + add].mask[:len(this_std)] = 0
-        add = 1 + 2 * len(mean_stiffness)
-        for i, this_count in zip(range(len(mean_stiffness)), count):
-            this_array[i + add][:len(this_count)] = this_count
-            this_array[i + add].mask[:len(this_count)] = 0
-        #this_array = this_array.transpose(1,0)
-        label = ['deep'] + \
-                ['mean of file ' + fvname for fvname in self.file['name']] +\
-                ['std of file' + fvname for fvname in self.file['name']] +\
-                ['count of file' + fvname for fvname in self.file['name']]
-        # Write the csv
-        fid = open(filename, 'wb')
-        fcsv = csv.writer(fid)
-        fcsv.writerow(['Stiffness data of file :', self.filename])
-        fcsv.writerow(label)
-        fcsv.writerows(this_array.transpose(1, 0))
-        num.ma.masked_print_option.set_display(old_masked_print_option)
-
-    def export_events(self, filename):
-        """
-            Export the events of all files.
-
-            * Parameters :
-                filename: str
-                    The file pathname to store the data
-
-            * Retruns :
-                None.
-
-            >>> exp = FVFolder()
-            >>> exp.load_aex(EVENT_COMPUTED_FILE)
-            >>> exp.export_events(EXPORT_FOLDER + '/experiment_events.csv')
-        """
-
-        fid = open(filename, 'wb')
-        fcsv = csv.writer(fid)
-        firstfile = True
-        for fv in self.file['list']:
-            fv.export_events(fcsv, firstfile=firstfile)
-            firstfile = False
-        fid.close()
-
-    def export_nbr_events(self, filename):
-        """
-            Export the number of events per curves of all files.
-
-            * Parameters :
-                filename: str
-                    The file pathname to store the data
-
-            * Retruns :
-                None.
-
-            >>> exp = FVFolder()
-            >>> exp.load_aex(EVENT_COMPUTED_FILE)
-            >>> exp.export_nbr_events(EXPORT_FOLDER + \
-                                      '/experiment_nbr_events.csv')
-        """
-        fid = open(filename, 'wb')
-        fcsv = csv.writer(fid)
-        firstfile = True
-        for fv in self.file['list']:
-            fv.export_nbr_events(fcsv, firstfile=firstfile)
-            firstfile = False
-        fid.close()
-
-    def __regenerate_filename_list(self):
-        '''
-        Regenerates the filename list
-        '''
-        self.file['name'] = []
-        self.file['group'] = []
-        nbr_curves = 0
-        for item in self.file['list']:
-            self.file['name'].append(item.name)
-            self.file['group'].append(item.header['group'])
-            nbr_curves = nbr_curves + item.header['number_curves']
-        self.parameters['number_curves'] = nbr_curves
-        self.data_hist.total_nbr_curves = nbr_curves
-        # For the group labels and display...
-        unique_group = num.unique(self.file['group'])
-        if len(self.group['label']) > len(unique_group):
-            _to_remove = [item not in unique_group
-                                for item in self.group['id']]
-            self.__remove_group(_to_remove)
-        elif len(self.group['label']) < len(unique_group):
-            _to_add = [item not in self.group['id'] for item in unique_group]
-            self.__add_group(_to_add)
-
-    def __remove_group(self, to_remove):
-        """
-            Remove item from group.
-
-            * Parameter :
-                to_remove: list
-                    list of boolean to tell which remove and which one to keep.
-        """
-        for item in range(len(to_remove)):
-            if to_remove[item]:
-                self.group['label'].pop(item)
-                self.group['id'].pop(item)
-                self.group['display'].pop()
-
-    def __add_group(self, _to_add):
-        """
-            Add object from group.
-
-            * Parameter :
-                to_add: list
-                    list of boolean to tell which group to add.
-        """
-
-        new_id = []
-        new_label = []
-        new_disp = []
-        unique_group = num.unique(self.file['group'])
-        for i in range(len(unique_group)):
-            if _to_add[i]:
-                _add = unique_group[i]
-                # Adds this group and put default value.
-                new_id.append(_add)
-                new_label.append('Groupe %i' % _add)
-                new_disp.append(True)
-            else:
-                # This group exist. Recover the user defined value.
-                _gr = unique_group[i]
-                index = self.group['id'].index(_gr)
-                new_id.append(self.group['id'][index])
-                new_label.append(self.group['label'][index])
-                new_disp.append(self.group['display'][index])
-        self.group['id'] = new_id
-        self.group['label'] = new_label
-        self.group['display'] = new_disp
-
-    def __regenerate_comment(self):
-        if self.comment == 'Your comment':
-            comment = ''
-            for fvfile in self.file['list']:
-                if fvfile.header['note'] != '\n':
-                    comment = comment + fvfile.name + '\n' + \
-                              fvfile.header['note'] + '\n'
-            if comment != '':
-                # We update only if there was a comment in the file headers,
-                # and if it's the first (i.e. self.comment == 'Your comment')
-                comment = comment[:-1]  # we erase the last \n
-                self.comment = comment
-
-
-class NotReadyError(Exception):
-    pass
-
-ARRAY_TYPE = {'Piezo': 'topo',
-              'PoCIndice': 'topo',
-              'PoCNoise': 'topo',
-              'Topography': 'topo',
-              'Stiffness': 'topo',
-              'Stiffness tomo': '3d',
-              'Event': 'event',
-              'Event force': 'event',
-              'Event length': 'event',
-              'Event distance': 'event',
-              'Event random': 'revent',
-              'Relative pos': 'rel',
-              'Relative rand pos': 'rel',
-              'Path': 'misc',  # This defines a path to display info.
-              'Masked': 'misc',  # This option is to apply or not a mask to the
-                                 # array.
-              'Mask': 'misc'}
-
-if __name__ == '__main__':  # pragma: no cover
-#    import plot_generic
-#    test_file = '/home/charles/AFM/Macrophages/Living_cytB2.aex'
-#    exp_1 = FVFolder()
-#    exp_1.load_aex(test_file)
-#    win_plot = plot_generic.ErrorBar()
-#    win_plot.average_stiffness(exp_1.average_stiffness,
-#                               group=exp_1.file['group'],
-#                               group_info=exp_1.group,
-#                               style = 'isol')
-#    win_plot.save('test.png')
-
-    import doctest
-    BIOSCOPE_FILE2 = '../docs/data/files/FR20074A.001'
-#    fvfile = ForceVolume(BIOSCOPE_FILE2)
-    BIOSCOPE_FILE = '../docs/data/files/FR2310B.004'
-    BIOSCOPE_FOLDER = '../docs/data/files/'
-    STIFFNESS_COMPUTED_FILE = '../docs/data/Stiffness_computed.aex'
-    EVENT_COMPUTED_FILE = '../docs/data/Event_computed.aex'
-    ALL_COMPUTED_FILE = '../docs/data/Stiffness_and_Event_computed.aex'
-    EXPORT_FOLDER = '../docs/data/Garbage'
-    doctest.testmod()
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/common.py b/debian/openfovea/usr/share/pyshared/openfovea/common.py
deleted file mode 100644
index 37db88e..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/common.py
+++ /dev/null
@@ -1,3 +0,0 @@
-APP_NAME = "OpenFovea"
-DEB_NAME = "openfovea"
-APP_VERSION = "0.1a160"
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/dialog_experiment_properties.py b/debian/openfovea/usr/share/pyshared/openfovea/dialog_experiment_properties.py
deleted file mode 100644
index b7dcf94..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/dialog_experiment_properties.py
+++ /dev/null
@@ -1,267 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-
-from math import log10, floor
-
-import pygtk
-import gtk
-# for script installation
-from pkg_resources import resource_filename
-##############
-## Graphic library ##
-##############
-try:
-    matplotlib.__version__
-except NameError:
-    import matplotlib
-    matplotlib.use('Agg', warn=False)
-from matplotlib.figure import Figure
-from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas
-from matplotlib.backends.backend_gtkagg import NavigationToolbar2GTKAgg as NavigationToolbar
-
-from fovea_toolbox import curve
-
-class main_win():
-    def __init__(self, author=None, comment=None, spring_constant=None,
-                 inject_index=None, stiff_glass=None, trace_curve=None, 
-                 plot_size=None, group=None, _glade_filename=None,
-                 linewidth=1.5, histo_y_rel=True, plot_hist_gauss=False,
-                 plot_color=None):
-        builder = gtk.Builder()
-        if _glade_filename == None:
-            try:
-                _glade_filename = resource_filename(
-                                    'openfovea',
-                                    'glade/dialog_experiment_properties.glade')
-            except NotImplementedError:
-                _glade_filename = 'openfovea/glade/dialog_experiment_properties.glade'
-        builder.add_from_file(_glade_filename)
-        self.window = builder.get_object('ExpProp')
-        self.widget = {
-            # General tab
-            'text_author' : builder.get_object('text_author'),
-            'text_description' : builder.get_object('text_description'),
-            ## Configuration tab
-            # Time Lapse (This is outdated, I should clean it...)
-            'spin_inject_index' : builder.get_object('entry_injection_index'),
-            # System
-            'entry_spring_cst' : builder.get_object('entry_spring_constant'),
-            'spin_stiff_glass' : builder.get_object('spin_stiff_glass'),
-            # Plot area...
-            'plot_area' : builder.get_object('plot_area'),
-            'box_nav_tool' : builder.get_object('box_nav_tool'),
-            ## Graphs
-            # Saved size
-            'spin_save_plot_width' : builder.get_object('spin_save_plot_width'),
-            'spin_save_plot_height' : builder.get_object('spin_save_plot_height'),
-            # Plot options
-            'spin_linewidth' : builder.get_object('spin_linewidth'),
-            'check_bw_plot' : builder.get_object('check_bw_plot'),
-            # Histogram options
-            'check_plot_hist_gauss' : builder.get_object('check_plot_hist_gauss'),
-            'histo_y_rel' : builder.get_object('histo_y_rel'),
-            # Group managment.
-            'table_group' : builder.get_object('table_group'),
-            'gid' : [], # List of group id
-            'glabel' : [], # List of gtk label for group
-            'gdisplay' : [], # List of gtk checkbutton for group
-        }
-        self.widget['spin_stiff_glass'].connect(
-                                'value_changed',
-                                self.on_stiff_glass_changed)
-        adj = gtk.Adjustment(value=800, lower=0, upper=1600, step_incr=1, page_incr=100, page_size=0)
-        self.widget['spin_save_plot_width'].set_adjustment(adj)
-        adj = gtk.Adjustment(value=800, lower=0, upper=1600, step_incr=1, page_incr=100, page_size=0)
-        self.widget['spin_save_plot_height'].set_adjustment(adj)
-        adj = gtk.Adjustment(value=linewidth, lower=0.1, upper=5, step_incr=0.1, page_incr=1, page_size=0)
-        self.widget['spin_linewidth'].set_adjustment(adj)
-        
-        builder.connect_signals(self)
-        self.author = author
-        self.comment = comment
-        self.spring_cst = spring_constant
-        self.inject_index = inject_index
-        self.stiff_glass = stiff_glass
-        self.trace_curve = trace_curve
-        self.save_size = plot_size
-        ### The plotting part :
-        self.figure = Figure(figsize=(100, 100), dpi=75, facecolor=(0.93,0.92,0.9,1))
-        self.axis = self.figure.add_subplot(111) 
-        self.axis.grid(True)
-        self.canvas = FigureCanvas(self.figure) # a gtk.DrawingArea 
-        self.canvas.show() 
-        self.graphview = self.widget['plot_area']
-        self.graphview.pack_start(self.canvas, True, True)
-        # below is optional if you want the navigation toolbar
-        self.navToolbar = NavigationToolbar(self.canvas, self.window)
-        self.navToolbar.lastDir = '/var/tmp/'
-        self.widget['box_nav_tool'].pack_start(self.navToolbar)
-        self.navToolbar.show()
-        self.group = None
-        # About the groups...
-        if group is not None:
-            table = builder.get_object('table_group')
-            text = gtk.Label('ID')
-            text.show()
-            table.attach(text, 0, 1, 0, 1)
-            text = gtk.Label('Label')
-            text.show()
-            table.attach(text, 1, 2, 0, 1)
-            text = gtk.Label('Display')
-            text.show()
-            text = table.attach(text, 2, 3, 0, 1)
-            self.group_widget = {
-                'label' : [],
-                'display' : []
-            }
-            _id_gp = 1
-            for gp_id, gp_label, gp_disp in zip(
-                                group['id'], group['label'], group['display']):
-                self.widget['gid'].append(gp_id)
-                text = gtk.Label(gp_id)
-                text.show()
-                table.attach(text, 0, 1, _id_gp, _id_gp+1)
-                text = gtk.Entry(0)
-                text.set_text(gp_label)
-                text.show()
-                table.attach(text, 1, 2, _id_gp, _id_gp+1)
-                self.widget['glabel'].append(text)
-                check = gtk.CheckButton('Show')
-                check.set_active(gp_disp)
-                check.show()
-                table.attach(check, 2,3,_id_gp, _id_gp+1)
-                self.widget['gdisplay'].append(check)
-                _id_gp += 1
-           #Display Options
-        self.linewidth = linewidth
-        self.histo_y_rel = histo_y_rel
-        self.plot_hist_gauss = plot_hist_gauss
-        self.plot_color = plot_color
-        self.update()
-    def update(self):
-        '''
-        Update the informations in the window.
-        '''
-        if self.author is not None:
-            self.widget['text_author'].set_text(self.author)
-        if self.comment is not None:
-            text_buffer = self.widget['text_description'].get_buffer()
-            text_buffer.set_text(self.comment)
-        if self.spring_cst is not None:
-            self.widget['entry_spring_cst'].set_text(str(self.spring_cst))
-        if self.inject_index is not None:
-            index_adjustment = self.widget['spin_inject_index'].get_adjustment()
-            index_adjustment.set_all(value=int(self.inject_index[0]),
-                                     upper=int(self.inject_index[1])
-                                    )
-        if self.stiff_glass is not None:
-            self.on_stiff_glass_changed(None)
-        if self.save_size is not None:
-            self.widget['spin_save_plot_width'].set_value(self.save_size[0])
-            self.widget['spin_save_plot_height'].set_value(self.save_size[1])
-        if self.histo_y_rel is not None:
-            self.widget['histo_y_rel'].set_active(self.histo_y_rel)
-        if self.plot_hist_gauss is not None:
-            self.widget['check_plot_hist_gauss'].set_active(self.plot_hist_gauss)
-        if self.plot_color is not None:
-            if self.plot_color is 'bw':
-                self.widget['check_bw_plot'].set_active(True)
-            else:
-                self.widget['check_bw_plot'].set_active(False)
-            
-    def on_stiff_glass_changed(self, widget):
-        stiff_glass_val = self.widget['spin_stiff_glass'].get_value()
-        if stiff_glass_val:
-            self.stiff_glass = stiff_glass_val
-        stiff_glass_adjustment = self.widget['spin_stiff_glass'].get_adjustment()
-        lower = self.stiff_glass*2
-        if self.stiff_glass:
-            n_digits = int(floor(log10(abs(self.stiff_glass))))
-        if n_digits < 0:
-            self.widget['spin_stiff_glass'].set_digits(-n_digits+2)
-        step_increment = -lower / 100
-        stiff_glass_adjustment.set_all(value=self.stiff_glass,
-                                       upper=0,
-                                         lower=lower,
-                                         step_increment = step_increment, 
-                                         page_increment = step_increment / 4, 
-                                         page_size = 0)
-        self.display_plot()#update_curve()
-    def on_spin_save_plot_width_value_changed(self, widget):
-        self.save_size[0] = widget.get_value()
-        adjustment = widget.get_adjustment()
-        adjustment.set_upper(widget.get_value() + 800)
-    def on_spin_save_plot_height_value_changed(self, widget):
-        self.save_size[1] = widget.get_value()
-        adjustment = widget.get_adjustment()
-        adjustment.set_upper(widget.get_value() + 800)
-    def on_spin_linewidth_value_changed(self, widget):
-        self.linewidth = widget.get_value()
-        adjustment = widget.get_adjustment()
-    def on_button_validate_clicked(self, widget):
-        '''
-        Get the information from the window and store them in the following
-        attributes :
-            self.author
-            self.comment
-            self.spring_constant
-            self.inject_index
-            self.save_size
-        '''
-        self.author = self.widget['text_author'].get_text()
-        text_buffer = self.widget['text_description'].get_buffer()
-        self.comment = text_buffer.get_text(text_buffer.get_start_iter(),
-                                            text_buffer.get_end_iter())
-        self.spring_cst = eval(self.widget['entry_spring_cst'].get_text())
-        self.inject_index[0] = int(self.widget['spin_inject_index'].get_value())
-        # Get values for groups
-        self.group = {
-                'id' : self.widget['gid'],
-                'label' : [it.get_text() for it in self.widget['glabel']],
-                'display' : [it.get_active() for it in self.widget['gdisplay']]
-                    }
-        #Get display options
-        self.linewidth = self.widget['spin_linewidth'].get_value()
-        self.histo_y_rel = self.widget['histo_y_rel'].get_active()
-        self.plot_hist_gauss = self.widget['check_plot_hist_gauss'].get_active()
-        if self.widget['check_bw_plot'].get_active():
-            self.plot_color = 'bw'
-        else:
-            self.plot_color = 'color'
-        self.validate()
-    def on_button_cancel_clicked(self, widget):
-        self.destroy(self, widget)
-    def display_plot(self):
-        if type(self.spring_cst) == list:
-            sc = self.spring_cst[0]
-        else:
-            sc = self.spring_cst
-        [iX, iY] = curve.compute_indentation(self.trace_curve[0],
-                                             self.trace_curve[1],
-                                             self.stiff_glass,
-                                             sc)
-        self.axis.cla()
-        self.axis.grid(True)
-        self.axis.plot(iX, iY, 'k-', linewidth=1.5)
-        self.canvas.draw_idle()
-    def destroy(self, *widget):
-        '''
-        Pretty quit the dialog.
-        '''
-        self.window.destroy()
-    def validate(self):
-        '''
-        This function is here to be overriden by the caller in order to send the
-        signal through the classes.
-        '''
-        pass
-if __name__ == '__main__':
-    group = {'id' : [0, 1, 2],
-             'label' : ['First', 'Second', 'Third'],
-             'display' : [True, True, True]}
-    test = main_win(author='Charles Roduit', comment='I like it...',
-                    spring_constant=[0.06, 0.04], inject_index=[0, 3], plot_size=[800, 800],
-                    group=group,
-                    _glade_filename='glade/dialog_experiment_properties.glade')
-    test.window.show()
-    gtk.main()
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/dialog_export_map.py b/debian/openfovea/usr/share/pyshared/openfovea/dialog_export_map.py
deleted file mode 100644
index 0f6661f..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/dialog_export_map.py
+++ /dev/null
@@ -1,478 +0,0 @@
-"""
-    This is the module to display the dialog export map.
-"""
-
-
-import pygtk
-pygtk.require('2.0')
-import gtk
-import os
-from pkg_resources import resource_filename # pylint: disable-msg=E0611
-
-    
-from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as \
-                                               FigureCanvas
-import numpy
-from scipy import interpolate, ndimage
-import plot_generic
-    
-class MapDisplay(object):
-    """
-        Displays the map with all the button to tune the exportation.
-    """
-    
-    def __init__(self, array, folder=None, depth=1, fvname='', scan_size=None):
-        self.array = {'dict' : array,
-                      'plot' : None, # contain the current array to plot
-                      'type' : None, # contains the type of the current array 
-                                     # (correspond to the dict key)
-                      'indice' : 0,
-                      'depth' : depth, # is the depth between slice
-                      'size' : scan_size,
-                      'scale' : [0, 0],
-                      'do_interp' : 0, # check if we interpolate or not
-                      'interp_max' : 0, # Is the maximum value to be displayed in case of interpolation
-                      }
-                      
-        if folder is None:
-            folder = os.path.expanduser('~')
-        self.file = {'folder' : folder,
-                     'name' : 'File_%f_%t_slice_%n_depth_%d.png',
-                     'fv_name' : fvname}
-        self.dialog = gtk.Dialog(title='Export Maps',
-                                 buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
-                                          gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
-                                 )
-        self.dialog.set_default_size(500, 350)
-        try:
-            export_image = resource_filename('openfovea','Icon/export.png')
-        except NotImplementedError:
-            export_image = 'openfovea/Icon/export.png'
-        self.dialog.set_icon(gtk.gdk.pixbuf_new_from_file(export_image))
-        
-        # The plot
-        self.plot_array = plot_generic.Array()
-        self.canvas = FigureCanvas(self.plot_array.figure) # a gtk.DrawingArea 
-        self.canvas.show() 
-        
-        self.widget = {'but_folder' : gtk.Button(label=self.file['folder']),
-                       'entry_filename' : gtk.Entry(),
-                       'entry_title' : gtk.Entry(),
-                       'plot_area' : gtk.VBox(),
-                       'combo_array' : gtk.ComboBox(),
-                       'combo_cmap' : gtk.ComboBox(),
-                       'check_auto_filename' : gtk.CheckButton(label='auto'),
-                       'check_axis' : gtk.CheckButton(label='show axis label'),
-                       'check_cmap' : gtk.CheckButton(label='show color scale'),
-                       'check_title' : gtk.CheckButton(label='show title'),
-                       'check_interp' : gtk.CheckButton(label='interpolate'),
-                       'scale_max' : gtk.HScrollbar(),
-                       'scale_min' : gtk.HScrollbar(),
-                       'scale_interp' : gtk.HScrollbar(),
-                       'size_x' : gtk.SpinButton(),
-                       'size_y' : gtk.SpinButton(),
-                        }
-        self._init_widgets()
-        # Everything is displayed, plot the grid:
-        self.change_array(self.array['dict'].keys()[0])
-        self.change_scale()
-        self.plot()
-    def _init_scales(self):
-        if self.array['plot'] is not None:
-            ar_min = self.array['plot'].min()
-            ar_max = self.array['plot'].max()
-        else:
-            ar_min = 0
-            ar_max = 0
-        interp_max = ar_max + ar_max * 0.1
-        # The colorscale
-        self.widget['scale_min'].set_adjustment(
-                                gtk.Adjustment(ar_min,  ar_min, 
-                                               ar_max, 
-                                               (ar_max-ar_min) / 100, 
-                                               (ar_max-ar_min) / 25, 
-                                               0))
-        self.widget['scale_max'].set_adjustment(
-                                gtk.Adjustment(ar_max,  ar_min, 
-                                               ar_max, 
-                                               (ar_max-ar_min) / 100, 
-                                               (ar_max-ar_min) / 25, 
-                                               0))
-        self.widget['scale_interp'].set_adjustment(
-                                gtk.Adjustment(interp_max,  ar_min, 
-                                               interp_max, 
-                                               (interp_max-ar_min) / 100, 
-                                               (interp_max-ar_min) / 25, 
-                                               0))
-        self.widget['scale_min'].connect_object("change-value", 
-                                                    self.change_scale,
-                                                    None)
-        self.widget['scale_max'].connect_object("change-value", 
-                                                    self.change_scale,
-                                                    None)
-        self.widget['scale_interp'].connect_object("change-value", 
-                                                    self.change_scale,
-                                                    None)
-    def change_scale(self, widget=None, toto=None, tata=None):
-        self.array['scale'] = [self.widget['scale_min'].get_value(),
-                               self.widget['scale_max'].get_value()]
-        self.array['interp_max'] = self.widget['scale_interp'].get_value()
-        self.plot()
-    def _init_widgets(self):
-        """
-            Initialization of the widgets
-        """
-        # Create the table.
-        table = [gtk.Table(2, 2), gtk.Table(2, 5)]
-        table[0].set_border_width(5)
-        table[0].set_col_spacings(5)
-        table[0].set_row_spacings(5)
-        table[0].show()
-        
-        # Button folder
-        self.widget['but_folder'].connect('clicked', self.change_folder)
-        self.widget['but_folder'].show()
-        table[0].attach(self.widget['but_folder'],
-                             0, 1, 0, 1, xoptions=0, yoptions=0)
-        # Text filename
-        self.widget['entry_filename'].set_text(self.file['name'])
-        self.widget['entry_filename'].show()
-        table[0].attach(self.widget['entry_filename'],
-                             1, 2, 0, 1, yoptions=0)
-        self.widget['check_auto_filename'].set_active(True)
-        self.widget['check_auto_filename'].connect('toggled', self.change_filename)
-        table[0].attach(self.widget['check_auto_filename'],
-                             2, 3, 0, 1, xoptions=0, yoptions=0)
-        # Table which will contain the display and the control of the display
-        table[1].set_border_width(5)
-        table[1].set_col_spacings(5)
-        table[1].set_row_spacings(5)
-        table[1].show()
-        # The area to plot
-        table[1].attach(self.canvas, 0, 1, 0, 5)
-        #######
-        # The scale bars :
-        grid = gtk.Table(rows=3, columns=2, homogeneous=False)
-        self.widget['scale_min'].show()
-        self.widget['scale_max'].show()
-        #self.widget['scale_interp'].show()
-        grid.attach(self.widget['scale_max'], 1, 2, 0, 1)
-        grid.attach(self.widget['scale_min'], 1, 2, 1, 2)
-        grid.attach(self.widget['scale_interp'], 1, 2, 2, 3)
-        # the labels
-        self.widget['label_scale_min'] = gtk.Label(str='color scale max : ')
-        self.widget['label_scale_min'].set_alignment(0,0)
-        self.widget['label_scale_min'].show()
-        grid.attach(self.widget['label_scale_min'], 0, 1, 0, 1, xoptions=gtk.FILL, yoptions=gtk.FILL)
-        self.widget['label_scale_max'] = gtk.Label(str='color scale min : ')
-        self.widget['label_scale_max'].set_alignment(0,0)
-        self.widget['label_scale_max'].show()
-        grid.attach(self.widget['label_scale_max'], 0, 1, 1,2, xoptions=gtk.FILL, yoptions=gtk.FILL)
-        self.widget['label_scale_interp'] = gtk.Label(str='crop stiffness : ')
-        self.widget['label_scale_interp'].set_alignment(0,0)
-        #self.widget['label_scale_interp'].show()
-        grid.attach(self.widget['label_scale_interp'], 0, 1, 2,3, xoptions=gtk.FILL, yoptions=gtk.FILL)
-        grid.show()
-        table[1].attach(grid, 0, 1, 5, 6)
-        
-        # button for the title
-        self.widget['entry_title'].set_text('Title')
-        self.widget['entry_title'].show()
-        self.widget['entry_title'].connect('changed', self.change_title)
-        table[1].attach(self.widget['entry_title'],
-                             1, 2, 0, 1, xoptions=0, yoptions=0)
-        self.plot_array.title = self.widget['entry_title'].get_text()
-        # button to choose the item to plot
-        list_arr = gtk.ListStore(str)
-        for key in self.array['dict']:
-            list_arr.append([key])
-        self.widget['combo_array'].set_model(list_arr)
-        cell = gtk.CellRendererText()
-        self.widget['combo_array'].pack_start(cell, True)
-        self.widget['combo_array'].add_attribute(cell, 'text', 0)
-        self.widget['combo_array'].set_active(0)
-        self.widget['combo_array'].show()
-        self.widget['combo_array'].connect('changed', self.change_array)
-        table[1].attach(self.widget['combo_array'],
-                             1, 2, 1, 2, xoptions=0, yoptions=0)
-        # button to choose the scale
-        list_cmap = gtk.ListStore(str)
-        list_cmap.append(['gray'])
-        list_cmap.append(['jet'])
-        list_cmap.append(['copper'])
-        self.widget['combo_cmap'].set_model(list_cmap)
-        cell = gtk.CellRendererText()
-        self.widget['combo_cmap'].pack_start(cell, True)
-        self.widget['combo_cmap'].add_attribute(cell, 'text', 0)
-        self.widget['combo_cmap'].set_active(0)
-        self.widget['combo_cmap'].show()
-        self.widget['combo_cmap'].connect('changed', self.change_cmap)
-        table[1].attach(self.widget['combo_cmap'],
-                             1, 2, 2, 3, xoptions=0, yoptions=0)
-        # Display the scale ?
-        self.widget['check_axis'].show()
-        self.widget['check_axis'].set_active(True)
-        self.widget['check_axis'].connect('toggled', self.change_axis_label)
-        table[1].attach(self.widget['check_axis'],
-                             1, 2, 3, 4, xoptions=0, yoptions=0)
-        # Display the color map ?
-        self.widget['check_cmap'].show()
-        self.widget['check_cmap'].set_active(False)
-        self.widget['check_cmap'].connect('toggled', self.change_cmap)
-        table[1].attach(self.widget['check_cmap'],
-                             1, 2, 4, 5, xoptions=0, yoptions=0)
-        
-        # Interpolate the data ?
-        self.widget['check_interp'].show()
-        self.widget['check_interp'].set_active(False)
-        self.widget['check_interp'].connect('toggled', self.toggle_interp)
-        table[1].attach(self.widget['check_interp'],
-                            1, 2, 5, 6, xoptions=0, yoptions=0)
-        
-        # button to choose the size of the image.
-        _size_table = gtk.Table(2, 2)
-        label = gtk.Label('Width')
-        label.show()
-        _size_table.attach(label, 1, 2, 0, 1, xoptions=0, yoptions=0)
-        label = gtk.Label('Height')
-        label.show()
-        _size_table.attach(label, 1, 2, 1, 2, xoptions=0, yoptions=0)
-        
-        adjustment = gtk.Adjustment(value=800, lower=0, upper=1600, step_incr=1, page_incr=100, page_size=0)
-        self.widget['size_x'].set_adjustment(adjustment)
-        adjustment.connect('value_changed', self.spin_val_changed, 'size_x')
-        self.widget['size_x'].show()
-        _size_table.attach(self.widget['size_x'],
-                            0, 1, 0, 1, xoptions=0, yoptions=0)
-        adjustment = gtk.Adjustment(value=800, lower=0, upper=1600, step_incr=1, page_incr=100, page_size=0)
-        self.widget['size_y'].set_adjustment(adjustment)
-        adjustment.connect('value_changed', self.spin_val_changed, 'size_y')
-        self.widget['size_y'].show()
-        _size_table.attach(self.widget['size_y'],
-                            0, 1, 1, 2, xoptions=0, yoptions=0)
-        _size_table.show()
-        table[1].attach(_size_table, 1, 2, 6, 7)
-        table[0].attach(table[1], 0, 2, 1, 2)
-        
-        self.dialog.vbox.pack_start(table[0], True, True, 0)
-    def spin_val_changed(self, event, wtype):
-        """
-            Catch the spin val changed.
-        """
-        adjustment = self.widget[wtype].get_adjustment()
-        adjustment.set_upper(event.get_value() + 800)
-    def change_folder(self, widget):
-        """
-            Interface to change the export folder.
-        """
-        
-        chooser = gtk.FileChooserDialog(
-                                title='Choose folder',
-                                action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
-                                buttons=(gtk.STOCK_CANCEL,
-                                         gtk.RESPONSE_CANCEL,
-                                         gtk.STOCK_OPEN,
-                                         gtk.RESPONSE_OK)
-                                        )
-        chooser.set_select_multiple(False)
-        chooser.set_default_response(gtk.RESPONSE_OK)
-        chooser.set_local_only(False)
-        chooser.set_filename(self.file['folder'])
-        response = chooser.run()
-        # Analyse the answer
-        if response == gtk.RESPONSE_OK:
-            self.file['folder'] = chooser.get_filenames()[0]
-            self.widget['but_folder'].set_label(self.file['folder'])
-        elif response == gtk.RESPONSE_CANCEL:
-            chooser.destroy()
-            return
-        else:
-            return
-        chooser.destroy()
-    def change_title(self, widget=None):
-        """
-            Change the title of the plot.
-        """
-        self.__update_title()
-        self.plot()
-    def __update_title(self):
-        title = self.generate_text(self.widget['entry_title'].get_text())
-        self.plot_array.title = title
-    def change_filename(self, widget):
-        auto = widget.get_active()
-        
-    def change_cmap(self, widget):
-        """
-            Modify the colormap of the plot. Displays or not the colorscale
-            depending on the state of the checkbutton.
-        """
-        
-        self.plot_array.cmap = self.widget['combo_cmap'].get_active_text()
-        self.plot_array.color_scale['colorbar'] = \
-                                        self.widget['check_cmap'].get_active()
-        self.plot()
-    def change_axis_label(self, widget):
-        """
-            Modify the axis label.
-        """
-        self.plot_array.scale['show'] = self.widget['check_axis'].get_active()
-        self.plot()
-    def change_array(self, array=None):
-        """
-            Modify the array to display.
-        """
-        if type(array) == str:
-            key = array
-        elif type(array) == gtk.ComboBox:
-            key = array.get_active_text()
-        self.array['plot'] = self.array['dict'][key]
-        self.array['type'] = key
-        self._init_scales()
-        self.plot()
-    def toggle_interp(self, widget):
-        """
-            Toogle between interpolate or not.
-        """
-        self.array['do_interp'] = widget.get_active()
-        if self.array['do_interp']:
-            self.widget['scale_interp'].show()
-            self.widget['label_scale_interp'].show()
-        else:
-            self.widget['scale_interp'].hide()
-            self.widget['label_scale_interp'].hide()
-        self.plot()
-    
-    def plot(self):
-        """
-            Plot the result.
-        """
-        if self.array['plot'] is not None:
-            if self.array['plot'].ndim == 3:
-                data = self.array['plot'][:,:,0]
-            else:
-                data = self.array['plot']
-            if self.array['do_interp']:
-                data = compute_interp(data, self.array['interp_max'])
-            self.__update_title()
-            self.plot_array.plot(data,
-                                 scan_size=self.array['size'])
-            self.plot_array.vmin = self.array['scale'][0]
-            self.plot_array.vmax = self.array['scale'][1]
-            self.show()
-    def show(self):
-        """
-            Show the result in the window.
-        """
-        labels = self.widget['check_cmap'].get_active() + \
-               self.widget['check_axis'].get_active() + \
-               len(self.widget['entry_title'].get_text())
-        if labels:
-            self.plot_array.figure.subplots_adjust(left=0.5, bottom=0.5)
-        else:
-            self.plot_array.figure.subplots_adjust(left=0, bottom=0)
-        self.canvas.draw_idle()
-    def run(self):
-        """
-            Runs the dialog.
-        """
-        response = self.dialog.run()
-        self.file['name'] = self.widget['entry_filename'].get_text()
-        if response == gtk.RESPONSE_OK:
-            # Runs the code if button OK is clicked
-            [name, ext] = os.path.splitext(self.file['name'])
-            if not len(ext):
-                ext = '.png'
-            self.export_map(name, ext)
-        self.destroy()
-    def export_map(self, name, ext):
-        """
-            Export the maps.
-        """
-        # Get the size of the image.
-        width = self.widget['size_x'].get_value()
-        height = self.widget['size_y'].get_value()
-        self.plot_array.set_size(width, height, deep=True)
-        # Get the displayed item.
-        if len(self.array['plot'].shape) == 3:
-            # block the min and max
-            self.plot_array.vmin = self.array['scale'][0]
-            self.plot_array.vmax = self.array['scale'][1]
-            for index in range(self.array['plot'].shape[2]):
-                self.array['indice'] = index
-                self.__update_title()
-                arr_to_export = self.array['plot'][:, :, index]
-                if self.array['do_interp']:
-                    arr_to_export = compute_interp(arr_to_export, self.array['interp_max'])
-                self.plot_array.plot(arr_to_export)
-                newname = self.generate_text(name)
-                f_name = newname + ext
-                self.plot_array.save(os.path.join(self.file['folder'], f_name))
-        else:
-            newname = self.generate_text(name)
-            f_name = newname + ext
-            self.plot_array.plot(self.array['plot'])
-            self.plot_array.save(os.path.join(self.file['folder'], f_name))
-    def generate_text(self, pattern):
-        """
-            Generate the filename from the pattern.
-            
-            %d means depth
-            %n means number
-            %f means the filename
-            %t means the type
-        """
-        
-        while pattern.find('%d') is not -1:
-            indice = pattern.find('%d')
-            part_1 = pattern[:indice]
-            part_2 = pattern[indice+2:]
-            pattern = part_1 + str(self.array['indice']*self.array['depth']) + part_2
-        while pattern.find('%n') is not -1:
-            indice = pattern.find('%n')
-            part_1 = pattern[:indice]
-            part_2 = pattern[indice+2:]
-            pattern = part_1 + str(self.array['indice']) + part_2
-        while pattern.find('%f') is not -1:
-            indice = pattern.find('%f')
-            part_1 = pattern[:indice]
-            part_2 = pattern[indice+2:]
-            pattern = part_1 + self.file['fv_name'] + part_2
-        while pattern.find('%t') is not -1:
-            indice = pattern.find('%t')
-            part_1 = pattern[:indice]
-            part_2 = pattern[indice+2:]
-            pattern = part_1 + self.array['type'] + part_2
-        return pattern
-    def destroy(self):
-        """
-            Destroy the window.
-        """
-        self.dialog.destroy()
-def compute_interp(array, interp_max):
-        try:
-            _inf = array.max()
-            _array = array.filled(_inf)
-        except AttributeError:
-            _array = array
-        x, y = array.shape
-        x = complex(0, x)
-        y = complex(0, y)
-        coords = numpy.mgrid[
-                        0 : array.shape[0] - 1 : x*10,
-                        0 : array.shape[1] - 1 : y*10]
-        interp_arr = ndimage.map_coordinates(
-                                        _array, coords)
-        interp_arr = numpy.ma.array(interp_arr,
-                                mask=interp_arr>=interp_max)
-        return interp_arr
-if __name__ == '__main__':
-    import numpy
-    TEST = {'Stiffness' : numpy.random.randn(10, 10, 5),
-            'Piezo' : numpy.random.randn(10,10),
-            'masked' : numpy.ma.array(numpy.random.randn(20,20),
-                                      mask=numpy.random.randn(20,20)>0.5,
-                                      fill_value=numpy.nan)
-            }
-    DISPLAY_IT = MapDisplay(TEST, depth=50, scan_size=2000)
-    DISPLAY_IT.generate_text('Deep %d is now %d')
-    DISPLAY_IT.run()
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/dialog_flatten.py b/debian/openfovea/usr/share/pyshared/openfovea/dialog_flatten.py
deleted file mode 100644
index a95b6a6..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/dialog_flatten.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-import pygtk
-"""
-    The gui to flatten the images.
-"""
-
-import gtk
-import pygtk
-# for script installation
-from pkg_resources import resource_filename
-##############
-## Graphic library ##
-##############
-try:
-    matplotlib.__version__
-except NameError:
-    import matplotlib
-    matplotlib.use('Agg', warn=False)
-from matplotlib.figure import Figure
-from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas
-from matplotlib.backends.backend_gtkagg import NavigationToolbar2GTKAgg as NavigationToolbar
-
-from fovea_toolbox import misc
-
-class FlattenDialog():
-    def __init__(self, array, _glade_filename=None):
-    
-        self.array = [array, misc.flatten(array)]
-        
-        builder = gtk.Builder()
-        if _glade_filename == None:
-            try:
-                _glade_filename = resource_filename(
-                                    'openfovea',
-                                    'glade/dialog_flatten.glade')
-            except NotImplementedError:
-                _glade_filename = 'openfovea/glade/dialog_flatten.glade'
-        builder.add_from_file(_glade_filename)
-        self.window = builder.get_object('FlattenDialog')
-        self.widget = {
-            'button_apply' : builder.get_object('button_apply'),
-            'button_cancel' : builder.get_object('button_cancel'),
-            'plot_before_flatten' : builder.get_object('view_before_flatten'),
-            'plot_after_flatten' : builder.get_object('view_after_flatten'),
-            }
-        # The plots
-        self.flatten = {'figure' : None,
-                        'axis' : None,
-                        'canvas' : None}
-                        
-        self.flatten['figure'] = [
-                Figure(figsize=(100, 100), dpi=75, facecolor=(0.93,0.92,0.9,1)),
-                Figure(figsize=(100, 100), dpi=75, facecolor=(0.93,0.92,0.9,1))
-                ]
-        self.flatten['axis'] = [
-                self.flatten['figure'][0].add_subplot(111),
-                self.flatten['figure'][1].add_subplot(111)
-        ]
-        self.flatten['canvas'] = [
-                FigureCanvas(self.flatten['figure'][0]), # a gtk.DrawingArea 
-                FigureCanvas(self.flatten['figure'][1]) # a gtk.DrawingArea 
-        ]
-        self.flatten['canvas'][0].show() 
-        self.flatten['canvas'][1].show() 
-        self.widget['plot_before_flatten'].pack_start(self.flatten['canvas'][0], True, True)
-        self.widget['plot_after_flatten'].pack_start(self.flatten['canvas'][1], True, True)
-        self.plot()
-    def plot(self):
-        #vmin = min([self.array[0].min(), self.array[1].min()])
-        #vmax = max([self.array[0].max(), self.array[1].max()])
-        self.flatten['axis'][0].pcolormesh(self.array[0].transpose(), cmap='copper')
-        self.flatten['axis'][0].axis([0, self.array[0].shape[0], 0, self.array[0].shape[0]])
-        self.flatten['axis'][0].set_xticks([])
-        self.flatten['axis'][0].set_yticks([])
-        self.flatten['axis'][1].pcolormesh(self.array[1].transpose(), cmap='copper')
-        self.flatten['axis'][1].axis([0, self.array[1].shape[0], 0, self.array[1].shape[0]])
-        self.flatten['axis'][1].set_xticks([])
-        self.flatten['axis'][1].set_yticks([])
-    def run(self):
-        self.window.show()
-        response = self.window.run()
-        if response == 1:
-            return self.array[1]
-        else:
-            return self.array[0]
-    def destroy(self):
-        self.window.destroy()
-if __name__ == '__main__':
-    import numpy
-    test = main_win(numpy.array([range(10) for i in range(10)]), 
-                    _glade_filename='glade/dialog_flatten.glade')
-    toto = test.run()
-    print toto
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/dialog_mask_properties.py b/debian/openfovea/usr/share/pyshared/openfovea/dialog_mask_properties.py
deleted file mode 100644
index 474cfa6..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/dialog_mask_properties.py
+++ /dev/null
@@ -1,294 +0,0 @@
-"""
-    This is the module to display the dialog export map.
-"""
-
-
-import pygtk
-pygtk.require('2.0')
-import gtk
-import os
-#from pkg_resources import resource_filename # pylint: disable-msg=E0611
-
-    
-from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as \
-                                               FigureCanvas
-import numpy
-#from scipy import interpolate, ndimage
-import plot_generic
-
-# Graphic library
-
-import matplotlib
-matplotlib.use('Agg')
-from matplotlib.figure import Figure
-from matplotlib.axes import Subplot
-from matplotlib.backends.backend_gtkagg import FigureCanvasGTK
-from matplotlib import cm # colormap
-from matplotlib import pylab
-pylab.hold(False) # This will avoid memory leak
-
-class BoolUnit(object):
-    """
-    Looks like this :
-    
-    ::
-    +------------------------------------------+
-    |                .                         |
-    |                . +--------------------+  |
-    |                . |                    |  |
-    |                . |                    |  |
-    | +-------------+. |                    |  |
-    | | Select Map  |. |     Display Map    |  |
-    | +-------------+. |                    |  |
-    |................. |                    |  |
-    | +-------------+. |                    |  |
-    | | 0 Invert    |..+--------------------+..|
-    | +-------------+. | Numerical value    |  |
-    |                . +--------------------+  |
-    |................:.........................|
-    |            +-------------+               |
-    |            | Add or bool |               |
-    |            +-------------+               |
-    +------------------------------------------+
-    """
-    def __init__(self, fvfile):
-        self.fvfile = fvfile
-        self.array = {'data' : None, # Store the data array used to generate mask.
-                      'mask' : None, # Store the mask itself.
-                      'invert' : False} # Invert the mask (or not).
-        # Creates the GUI.
-        self.map_select = gtk.ComboBox()
-        self.map_display = gtk.VBox()
-        self.map_display.set_size_request(250,250)
-        self.add_bool = gtk.ComboBox()
-        self.num_val = gtk.Entry()
-        self.invert = gtk.CheckButton(label='Invert')
-        self.box = gtk.VBox()
-        self.box.show()
-        map_box = gtk.HBox()
-        map_box.show()
-        __box1 = gtk.VBox() # Contains the combobox for mapselect and the invert toggle
-        __box1.show()
-        
-        viz_box = gtk.VBox()
-        viz_box.show()
-
-        self.map_select.show()
-        self.add_bool.show()
-        self.num_val.show()
-        self.invert.show()
-
-        viz_box.pack_start(self.map_display)#, expand=False)
-        viz_box.pack_start(self.num_val, expand=False)
-        __box1.pack_start(self.map_select, expand=False)
-        __box1.pack_start(self.invert, expand=False)
-        map_box.pack_start(__box1, expand=False)
-        #ap_box.pack_start(self.map_select, expand=False)
-        map_box.pack_start(viz_box, expand=True)
-        self.box.pack_start(map_box, expand=True)
-        self.box.pack_start(self.add_bool, expand=False)
-
-        # Create graphics
-        self.figure = Figure(figsize=(100, 100), dpi=75)
-        self.axis = self.figure.add_subplot(111, axisbg='red')
-        self.canvas = FigureCanvas(self.figure)
-        self.canvas.show()
-        self.map_display.pack_start(self.canvas, True, True)
-        self.map_display.show()
-        self.canvas.mpl_connect('button_press_event', self.on_array_click)
-
-        # Connect buttons.
-        self.map_select.connect('changed', self.change_array)
-        self.num_val.connect('activate', self.on_num_val_changed)
-        self.invert.connect('toggled', self.on_invert_toggled)
-        # bool_list has to be connected in the caller class.
-        # Fill the list.
-        list_arr = gtk.ListStore(str)
-        __list = list()
-        for key in self.fvfile.get_array('keys'):
-            if type(self.fvfile.get_array(key)) in [numpy.ndarray, numpy.ma.core.MaskedArray]:
-                list_arr.append([key])
-                __list.append(key)
-        self.map_select.set_model(list_arr)
-        __cell = gtk.CellRendererText()
-        self.map_select.pack_start(__cell, True)
-        self.map_select.add_attribute(__cell, 'text', 0)
-        self.map_select.set_active(__list.index('Piezo'))
-        
-        bool_list = gtk.ListStore(str)
-        [bool_list.append([key]) for key in ['Add', 'AND','OR','XOR']]
-        self.add_bool.set_model(bool_list)
-        __cell = gtk.CellRendererText()
-        self.add_bool.pack_start(__cell, True)
-        self.add_bool.add_attribute(__cell, 'text', 0)
-        self.add_bool.set_active(0)
-    
-    def on_invert_toggled(self, event):
-        self.array['invert'] = event.get_active()
-        mask = self.array['data'].mask
-        mask = numpy.logical_not(mask)
-        self.apply_mask(mask)
-        self.plot()
-    def on_num_val_changed(self, event):
-        height = float(event.get_text())
-        self.generate_mask(height)
-        self.plot()
-
-    def on_array_click(self, event):
-        try:
-            height = self.array['data'].data[event.ydata, event.xdata]
-        except TypeError:
-            height = self.array['data'][event.ydata, event.xdata]
-        self.generate_mask(height)
-        self.plot()
-        self.num_val.set_text(str(height))
-
-    def generate_mask(self, height):
-        if type(self.array['data']) == numpy.ndarray:
-            mask = self.array['data'] < height
-        else:
-            mask = self.array['data'].data < height
-        if self.array['invert']:
-            mask = numpy.logical_not(mask)
-        self.apply_mask(mask)
-    
-    def apply_mask(self, mask):
-        try:
-            self.array['data'].mask = mask
-        except AttributeError:
-            self.array['data'] = numpy.ma.masked_array(self.array['data'], mask=mask)
-
-    def change_array(self, event):
-        self.array['name'] = event.get_active_text()
-        self.array['data'] = self.fvfile.get_array(self.array['name'], raw=True)
-        if self.array['data'].ndim > 2:
-            self.array['data'] = self.array['data'][:,:,0]
-        self.plot()
-
-    def plot(self):
-        self.axis.pcolor(self.array['data'], cmap=cm.copper)
-        self.axis.axis([0, self.array['data'].shape[0],
-                        0, self.array['data'].shape[1]])
-        self.axis.set_aspect('equal')
-        self.canvas.draw_idle()
-        
-    def get_op(self):
-        return self.add_bool.get_active_text()
-
-    def get_mask(self):
-        try:
-            return self.array['data'].mask
-        except:
-            return numpy.ones_like(self.array['data'], dtype=bool)
-    def destroy(self):
-        self.box.destroy()
-        return
-
-class MaskProperties(object):
-    """
-    
-    """
-    def __init__(self, FVFile):
-        self.fvfile = FVFile
-        self.mask = None
-        self.dialog = gtk.Dialog(title='Mask Propreties',
-                                 buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
-                                          gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
-        self.dialog.set_default_size(700, 350)
-
-        self.bool_win = list() # This contains the window where each boolean operators are stored
-        # Create the first one.
-        self.box = {'left' : gtk.HBox(),
-                    'bool_view' : gtk.VBox(homogeneous=True),
-                    'center' : gtk.HBox()}
-        self.bool_win.append(BoolUnit(self.fvfile))
-        self.bool_win[0].add_bool.connect('changed', self.add_bool)
-        self.bool_win[0].canvas.mpl_connect('button_press_event', self.disp_result)
-        self.box['bool_view'].pack_start(self.bool_win[0].box)
-        self.scroll_window = gtk.ScrolledWindow()
-        self.scroll_window.set_border_width(10)
-        self.scroll_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
-        self.scroll_window.show()
-        self.scroll_window.add_with_viewport(self.box['bool_view'])
-        self.box['left'].pack_start(self.scroll_window, True, True, 0)
-        self.box['center'].pack_start(self.box['left'])#, True, True, 0)
-        self.box['center'].show()
-        self.box['left'].show()
-        self.box['bool_view'].show()
-        self.dialog.vbox.pack_start(self.box['center'], True, True, 0)
-
-        # Create graphics
-        self.figure = Figure(figsize=(200, 200), dpi=75)
-        self.axis = self.figure.add_subplot(111, axisbg='red')
-        self.canvas = FigureCanvas(self.figure)
-        self.canvas.show()
-        self.box['center'].pack_start(self.canvas)#, True, True, 0)
-        self.box['center'].set_homogeneous(True)
-        
-    def add_bool(self, event):
-        for bool_unit in self.bool_win:
-            if bool_unit.add_bool == event:
-                index = self.bool_win.index(bool_unit)
-        selected = event.get_active_text()
-        print selected
-        if selected == 'Add':
-            self.bool_win[index].destroy()
-            self.bool_win.pop(index)
-            return
-        if index+1 == len(self.bool_win):
-            self.bool_win.append(BoolUnit(self.fvfile))
-            self.box['bool_view'].pack_start(self.bool_win[-1].box)
-            self.bool_win[-1].add_bool.connect('changed', self.add_bool)
-        #self.compute_result()
-            self.bool_win[-1].canvas.mpl_connect('button_press_event', self.disp_result)
-        self.disp_result()
-
-    def compute_result(self):
-        bool_list = [item.get_op() for item in self.bool_win]
-        mask_list = [item.get_mask() for item in self.bool_win]
-        result = numpy.logical_not(mask_list[0])
-        for item in range(len(bool_list)-1):
-            if bool_list[item] == 'AND':
-                result = numpy.logical_and(result, numpy.logical_not(mask_list[item+1]))
-            elif bool_list[item] == 'OR':
-                result = numpy.logical_or(result, numpy.logical_not(mask_list[item+1]))
-            elif bool_list[item] == 'XOR':
-                result = numpy.logical_xor(result, numpy.logical_not(mask_list[item+1]))
-        self.mask = numpy.logical_not(result)
-
-    def disp_result(self, event=None):
-        self.compute_result()
-        self.axis.pcolor(self.mask, cmap=cm.gray)
-        self.axis.axis([0, self.mask.shape[0],
-                        0, self.mask.shape[1]])
-        self.axis.set_aspect('equal')
-        self.canvas.draw_idle()
-
-    def run(self):
-        """
-        Runs the dialog.
-        """
-        response = self.dialog.run()
-        if response == gtk.RESPONSE_OK:
-            # Runs the code if button OK is clicked
-            self.fvfile.set_array('Mask', self.mask)
-            self.fvfile.set_switch('mask', True)
-            return True
-        else:
-            self.fvfile.set_switch('mask', False)
-            return False
-    def destroy(self):
-        """
-        Destroy the window.
-        """
-        self.dialog.destroy()
-        return False
-
-if __name__ == '__main__':
-    import numpy
-    import classes
-    FVFOLDER = classes.FVFolder()
-    FVFOLDER.load_aex('../docs/data/Stiffness_and_Event_computed.aex')
-    DISPLAY_IT = MaskProperties(FVFOLDER.file['list'][1])
-    answer = DISPLAY_IT.run()
-    print answer
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/__init__.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/__init__.py
deleted file mode 100644
index 01678e9..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__all__ = ['curve', 'file']
\ No newline at end of file
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/curve.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/curve.py
deleted file mode 100644
index ebde392..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/curve.py
+++ /dev/null
@@ -1,1174 +0,0 @@
-#! /usr/bin/env python
-#-*- coding: iso-8859-1 -*-
-'''
-The curve module contains function that are usefull for curve data processing
-'''
-
-## Fonctions pour Open Fovea.
-#import pdb
-import csv
-#import warnings
-#warnings.simplefilter("ignore")
-#warnings.filterwarnings('error', category=Warning)
-
-import numpy as num
-#from scipy.optimize import leastsq
-from scipy import odr
-from copy import deepcopy
-CURVE_TEST = '../../docs/data/bugged_curve/curve_bug_1.csv'
-CURVE_EVENT = ['../../docs/data/curves/event_1.csv',
-               '../../docs/data/curves/event_2.csv',
-               '../../docs/data/curves/event_3.csv',
-               '../../docs/data/curves/WLC.csv']
-FIGURE_FOLDER = 'tests/'
-
-
-def open_csv_curve(file_name):
-    """
-        Open the curve in csv file.
-    """
-    fid = open(file_name)
-    temp_file = csv.reader(fid)
-    # The two first lines are descripion.
-    temp_file.next()
-    temp_file.next()
-    # Get the datas
-    arr_list = [item for item in temp_file]
-    curves = [num.asarray(
-                    [item[place] for item in arr_list if len(item[place])],
-                    dtype=num.float)
-             for place in range(len(arr_list[0]))]
-    return curves
-
-
-def find_poc(curve_x, curve_y, threshold=1, method='curve_fit',
-             limit_slide=False, len_slice=0.3):
-    """
-    Finds the point of contact of a force curve.
-
-    >>> curve = open_csv_curve(CURVE_TEST)
-    >>> result = find_poc(curve[0], curve[1], threshold=1, method='curve_fit')
-    >>> result.keys()
-    ['deriv', 'Poly Fit', 'Slice', 'PoC', 'Error']
-
-    curve_x and curve_y = array
-
-    threshold : integer
-                how much the curve has to diverge from the fit to be a point
-                of contact. (threshold * noise)
-
-    method : string
-             Defines the method used to detect the point of contact.
-
-            * 'deriv' (default) : uses the derivative method.
-                                When the derivative of the curve is zero (then
-                                it's linear), the point of contact is detected.
-                                The advantage of this method is to get rid of
-                                irregularities observed in the off-contact part
-                                of the curve.
-
-            * 'curve_fit' : uses the curve fit method.
-                          A linear fit is computed from the off-contact part of
-                          the curve. The point of contact is then detected at
-                          the point when the curve deviates from this linear
-                          fit. The advantage of this method is that it does not
-                          depend on the shape of the on contact part of the
-                          curve.
-    """
-    if len(curve_x) <= 2:
-        return None
-    if curve_x == None or curve_y == None:
-        return None
-    if method == 'deriv':
-        return find_poc_deriv(curve_x, curve_y, threshold, limit_slide,
-                              len_slice)
-    elif method == 'curve_fit':
-        try:
-            result = find_poc_curve_fit(curve_x, curve_y, threshold,
-                                    limit_slide, len_slice)
-        except TypeError as detail:
-            if 'expected non-empty vector' in detail.message:
-                # This error occurs when a too small curve is given.
-                return None
-            else:
-                raise detail
-        else:
-            result['deriv'] = None
-        return result
-
-
-def platgliti(curve):
-    """
-        Return the slice of the first non flat part. This is usefull when a
-        curve is complemented with the identical values at the end.
-    """
-
-    indice = 0
-    prev_val = curve[indice]
-    indice += 1
-    next_val = curve[indice]
-    while prev_val == next_val and indice + 1 < len(curve):
-        indice += 1
-        next_val, prev_val = curve[indice], next_val
-    return indice
-
-
-def true_data_indice(curve_x):
-    """
-        Return the true length curve. It removes all similar values that are at
-        the beginning or at the end of the curve.
-    """
-    new_curve_x = curve_x[:-1] - curve_x[1:]
-    non_zero = new_curve_x.nonzero()[0]
-    start_indice = non_zero[0]
-    stop_indice = non_zero[-1] + 2
-
-    return start_indice, stop_indice
-
-
-def find_poc_curve_fit(curve_x, curve_y, threshold, limit_slide=False,
-                       len_slice=0.3):
-    '''
-    Finds the point of contact, using the method of curve fit.
-
-    This methods makes a first order fits the off contact part of the curve.
-    The point of contact is then detected when the force curve deviates from
-    the linear fit. The deviation is related to the error measured during the
-    fit.
-    '''
-    loop = {'slope_negative': 1,
-            'step': 0}
-    reversed_curve = 0
-    if curve_y[0] > curve_y[-1]:
-        reversed_curve = 1
-        curve_y = curve_y[::-1]
-        curve_x = curve_x[::-1]
-    # Linear fit of the segment slice
-    _ind = platgliti(curve_y)
-    _true_indice = true_data_indice(curve_x)
-    #_true_indice = (0, len(curve_x))
-    #print _true_indice
-    #print _ind
-    _length = _true_indice[1] - _true_indice[0]
-
-    seg_slice = slice(_ind, int(_length * len_slice + _ind))
-    # the fit is :
-    # p(x) = coeff[0]*x + coeff[1]
-    coeff = num.polyfit(curve_x[seg_slice],
-                        curve_y[seg_slice], 1, full=True)[0]
-    #
-    # We make a loop by testing the slope of the fit.
-    # If this slope is negative, we look a little bit forward in the curve
-    # until the slope becomes positive
-    #
-    fit = num.polyfit(curve_x[seg_slice], curve_y[seg_slice], 1, full=True)
-    # Look in the curve slope was positive at the beginning
-    # i.e. :
-    # \
-    #  \     _.-
-    #   \̣.-`
-    if fit[0][0] >= 0:
-        fall_off = 1
-    else:
-        fall_off = 0
-    while loop['slope_negative'] and (seg_slice.stop + 1 < len(curve_x)):
-        new_seg_slice = slice(seg_slice.start + 2, seg_slice.stop + 2)
-        fit = num.polyfit(curve_x[new_seg_slice], curve_y[new_seg_slice],
-                          1, full=True)
-        if coeff[0] < fit[0][0] and fit[0][0] <= 0:
-            loop['step'] = 0
-            if limit_slide and (seg_slice.stop + 1 >= len(curve_x) / 2):
-                # The slice is going farer than the half of the curve. Then,
-                # if we choosed to limit the sliding, stop at this step.
-                loop['slope_negative'] = 0
-            if seg_slice.stop > len(curve_x):
-                # The slice is going outside the curve, then stop anyway.
-                loop['slope_negative'] = 0
-        elif fall_off and fit[0][0] >= 0:
-            loop['step'] = 0
-        elif fall_off and fit[0][0] < 0:
-            # we directly stop here and go back
-            loop['slope_negative'] = 0
-            [new_seg_slice, fit] = go_back(curve_x, curve_y, seg_slice)
-#            new_seg_slice = slice(seg_slice.start - 4, seg_slice.stop - 4)
-#            fit = num.polyfit(curve_x[new_seg_slice], curve_y[new_seg_slice],
-#                              1, full = True)
-        else:
-            loop['step'] = loop['step'] + 1
-        coeff = fit[0]
-        if loop['step'] > 2:
-            coeff[0] = fit[0][0]
-            coeff[1] = fit[0][1]
-            loop['slope_negative'] = 0
-        seg_slice = new_seg_slice
-    #
-    # We take the selected slice to detect the point of contact
-    #
-    error = (num.sqrt(fit[1]) / 5) * threshold
-    # Find when the curve goes away from the fit
-    #pdb.set_trace()
-    if not len(error):
-        error = num.array([0])
-    _ind = num.polyval([coeff[0], coeff[1] + error], curve_x)
-    point_of_contact = 0
-
-    for item_nbr in xrange(len(curve_y)):
-        if _ind[item_nbr] >= curve_y[item_nbr]:
-            point_of_contact = item_nbr
-
-    if reversed_curve:
-        curve_y = curve_y[::-1]
-        point_of_contact = len(curve_y) - point_of_contact - 1
-        seg_slice = slice(len(curve_y) - seg_slice.stop,
-                          len(curve_y) - seg_slice.start)
-    return {'PoC': point_of_contact,
-            'Poly Fit': [coeff[0], coeff[1]],
-            'Error': error,
-            'Slice': seg_slice}
-
-
-def go_back(curve_x, curve_y, seg_slice):
-    """
-        Go back in the fit to find the best place to find poc.
-    """
-    fit = num.polyfit(curve_x[seg_slice], curve_y[seg_slice], 1,
-                      full=True)
-    better = 0
-    while not better:
-        new_seg_slice = slice(seg_slice.start - 2, seg_slice.stop - 2)
-        new_fit = num.polyfit(curve_x[seg_slice], curve_y[seg_slice], 1,
-                      full=True)
-        if new_fit[1] > fit[1]:
-            better = 1
-        else:
-            seg_slice = new_seg_slice
-            fit = new_fit
-        if seg_slice.start <= 2:
-            better = 1
-    return seg_slice, fit
-
-
-def compute_derivative(curve_x, curve_y, delta=10):
-    '''
-        Computes the derivative of a curve
-    '''
-    _my = num.zeros_like(curve_y)
-    _mx = num.zeros_like(curve_y)
-    for item in range(len(curve_y)):
-        t_slice = slice(item, item + delta)
-        _my[item] = curve_y[t_slice].mean()
-        _mx[item] = curve_x[t_slice].mean()
-    d_y = (_my[1:] - _my[:-1])
-    return[curve_x[:-1], d_y]
-
-
-def find_poc_deriv(curve_x, curve_y, threshold=1, limit_slide=False,
-    len_slice=0.3):
-    '''
-        Finds the point of contact, using the derivative of the curve.
-    '''
-    seg = {'slice': None,  # Contains the slice of the segment
-            'coef': None}  # Contains the coefficient of the fit
-    # We slips on the curve. Then, we define the same for the next portion of
-    # curve
-    next_seg = {'slice': None,  # Contains the slice of the segment
-            'coef': None}  # Contains the coefficient of the fit
-
-    deriv = compute_derivative(curve_x, curve_y, delta=10)
-    # define the slice to compute the fit
-    seg['slice'] = slice(int(len(deriv[1]) - len(deriv[1]) * len_slice) - 1,
-                      len(deriv[1]) - 1)
-    # and compute the fit...
-    seg['coef'] = num.polyfit(deriv[0][seg['slice']], deriv[1][seg['slice']],
-                           1, full=True)
-    # make the slice slips on the curve, untill we find the one with the lower
-    # error.
-    # Indeed, some curves begin with a big noise that prevent a good point of
-    # contact detection.
-    loop = {'ok': 0,
-            'i': 0,
-            'step': 0}
-    while not loop['ok']:
-        next_seg['slice'] = slice(seg['slice'].start - loop['step'],
-                               seg['slice'].stop - loop['step'])
-        next_seg['coef'] = num.polyfit(deriv[0][next_seg['slice']],
-                                    deriv[1][next_seg['slice']],
-                                    1, full=True)
-        if seg['coef'][1] <= next_seg['coef'][1]:
-            loop['ok'] = 1
-        #else:
-        #    i = 0
-        if limit_slide and (next_seg['slice'].start < len(deriv[1]) / 2):
-            loop['ok'] = 1
-        if next_seg['slice'].start < loop['step']:
-            loop['ok'] = 1
-        seg['coef'] = next_seg['coef']
-        loop['i'] += 1
-        if loop['i'] > 10:
-            seg['slice'] = next_seg['slice']
-            loop['ok'] = 1
-    # Now, we apply the threshold on the error and find the first point that
-    # deviates from the fit (same idea as the old curve_fit algorythm)
-    error = seg['coef'][1] * threshold
-    seg['coef'] = seg['coef'][0]
-    polynom = num.polyval(seg['coef'], deriv[0]) - error
-    on_contact = (deriv[1] <= polynom) - 1  # True are the points that are
-                                            # close to the fit
-    indice = num.asarray(num.nonzero(on_contact)[0])
-    # Sometimes, in the on-contact part of the curve, the tips slips on the
-    # surface that is indented. The resulting curve looks like this :
-    # \
-    #  \  /\
-    #   `v  \
-    #        "_
-    #          `¬___________________
-    #    |      |
-    #    V      V
-    # 000100000011111111111111111111 Resulting on_contact
-    # 123456789012345678901234567890
-    # [4, 11, 12, 13, 14, 15, 16, 17, ...] Resulting indice
-    # [7, 1, 1, 1, 1, 1, 1, ...] Resulting diff_indice
-    #
-    # With the diff_indice, we can then detect such holes. I arbitrary choose
-    # 40. It could be nice to set this as a parameter. Will see later.
-    diff_indice = indice[1:] - indice[:-1]
-    hole = num.nonzero(diff_indice > 40)[0]
-    if len(hole):
-        i_poc = hole[-0] + 1
-    else:
-        i_poc = 0
-    non_zero_list = num.nonzero(on_contact)[0]
-    if len(non_zero_list):
-        point_of_contact = num.nonzero(on_contact)[0][i_poc]
-    else:
-        point_of_contact = 0
-    return {'PoC': point_of_contact,
-            'Poly Fit': [0, seg['coef'][0]],
-            'Error': error,
-            'Slice': seg['slice'],
-            'deriv': deriv}
-
-
-def compute_indentation(curve_x, curve_y,
-                        deflection_sensitivity, spring_constant):
-    '''
-    Compute the indentation curve.
-
-    * Parameters :
-        curve_x : 1d array
-            Values of the x coordinate.
-        curve_y : 1d array
-            Values of the y coordinates.
-        deflection_sensitivity : float
-            Parameter of the glass indentation.
-        spring_constant : float
-            sping constant of the cantilever.
-
-    * Returns :
-        indentation : 1d array
-            Value of the x coordinate.
-        force : 1d array
-            Value of the y coordinate.
-    '''
-    #deflection_sensitivity=1
-    if curve_x == None or curve_y == None or len(curve_x) <= 1:
-        return [None, None]
-    indice = true_data_indice(curve_x)
-    length = len(curve_x)
-
-    curve_x = curve_x[indice[0]:indice[1]]
-    curve_y = curve_y[indice[0]:indice[1]]
-    if curve_x[0] < curve_x[-1]:
-        indent_curve = curve_x[::-1]
-    else:
-        indent_curve = curve_x
-
-    indent_curve = indent_curve + num.polyval([deflection_sensitivity, 0],
-                                              curve_y)
-    force_curve = curve_y * spring_constant
-
-    force_curve = num.r_[force_curve,
-                         [force_curve[-1]] * (length - len(force_curve))]
-    indent_curve = num.r_[indent_curve,
-                          [indent_curve[-1]] * (length - len(indent_curve))]
-    return [indent_curve, force_curve]
-
-
-def correct_curve_drop(curve_y):
-    '''
-    Corrects the drops that occurs at the beginning of some force-distance
-    curves. This function corrects a bug from Veeco AFM.
-    '''
-    first_non_zero = curve_y.nonzero()[0][1] + 1
-    for indice in range(first_non_zero, len(curve_y)):
-        curve_y[indice] = curve_y[first_non_zero - 1]
-
-
-def segment_curve(curve_x, curve_y, segment_number, segment_deep):
-    """
-    Segmentation of curve.
-
-    Parameters : 
-        * curve_x : 1d array
-                Values of the x coordinate.
-        * curve_y : 1d array
-                Values of the y coordinate.
-        * segment_number : int
-                specifies the number of segments to generate
-                -1 : create one segment from the begining to
-                     the end of the curve.
-                0 : create as many segment as possible.
-                >0 : specifies the exact number of segment. If the
-                     curve is smaller, less segment is created.
-        * segment_deep : int
-                specifies the deep (curve_x value) of each segment.
-                in case segment_number = -1, this parameter is not
-                considered.
-
-    Returns :
-        * parts_x : 1d array
-              segment_number+1 array containing the curve_x values that
-              correspond to each segment
-        * parts_y : 1d array
-              segment_number+1 array containing the curve_y values that
-              correspond to each segment
-
-        for example : segment n is made of parts_x[n-1],parts_x[n]
-                      and parts_y[n-1],parts_y[n]
-    """
-    ## Initialisation des valeurs
-    ##
-    #
-    if not len(curve_y):
-        if segment_number == 0:
-            return [[num.nan], [num.nan]]
-        else:
-            return [num.zeros(segment_number) * num.nan,
-                    num.zeros(segment_number) * num.nan]
-    if curve_y[0] > curve_y[-1]:
-        curve_x = curve_x[::-1]  # We invert the curve to be more convenient
-        curve_y = curve_y[::-1]
-
-    meta_parts_x = []
-    meta_parts_y = []
-
-    if segment_number == -1:
-        # We create one segment that correspond to the whole curve.
-        meta_parts_y.append(curve_y)
-        meta_parts_x.append(curve_x)
-        return [meta_parts_x, meta_parts_y]
-    elif segment_number == 0:
-        segment_number = num.inf
-    if len(curve_x):
-        curve_size = curve_x.max() - curve_x.min()
-    else:
-        curve_size = 0
-    size_done = segment_deep
-    nbr_selection = 1
-    ## Element zero
-    parts_x = []
-    parts_y = []
-    if curve_size:
-        parts_x.append(curve_x.min())
-        parts_y.append(curve_y[num.nonzero(curve_x == parts_x[0])[0][0]])
-    else:
-        parts_x.append(num.nan)
-        parts_y.append(num.nan)
-    ## From the first to the last segment
-    all_indexes = [0]
-    while curve_size > size_done and nbr_selection <= segment_number:
-        parts_x.append(parts_x[-1] + segment_deep)
-        # Let's find the next point
-        indexes = num.nonzero(curve_x >= parts_x[nbr_selection])[0]
-        indexes = indexes[0]
-        if indexes == 0:
-            indexes = 1
-        all_indexes.append(indexes)
-        # The point stands between index-1 and index. We then make a linear fit
-        # and we'll find the value. Done between index-1 and index+1 'cause it
-        # does _not_ take the last value.
-        polynome = num.polyfit(curve_x[indexes - 1:indexes + 1],
-                               curve_y[indexes - 1:indexes + 1],
-                               1)
-        parts_y.append(num.polyval(polynome, parts_x[nbr_selection]))
-        this_slice = slice(all_indexes[nbr_selection - 1],
-                           all_indexes[nbr_selection])
-        if parts_x[-2] != curve_x[this_slice.start]:
-            tmp_x = [parts_x[-2]]
-            tmp_y = [parts_y[-2]]
-        else:
-            tmp_x = []
-            tmp_y = []
-        tmp_x.extend(curve_x[this_slice])
-        tmp_x.append(parts_x[-1])
-        #print tmp_x
-        #tmp_y = [parts_x[-1]]
-        tmp_y.extend(curve_y[this_slice])
-        tmp_y.append(parts_y[-1])
-        meta_parts_x.append(tmp_x)
-        meta_parts_y.append(tmp_y)
-        nbr_selection = nbr_selection + 1
-        size_done = size_done + segment_deep
-    if nbr_selection <= segment_number and segment_number is not num.inf:
-        ## adding NAN values
-        while nbr_selection <= segment_number:
-            meta_parts_x.append([num.nan])
-            meta_parts_y.append([num.nan])
-            nbr_selection += 1
-    return [meta_parts_x, meta_parts_y]
-
-
-def compute_stiffness(indent_curve, force_curve, model='Sphere', tip_carac=40,
-                      poisson_ratio=0.3, method='Raw'):
-    """
-    Compute : the stiffness of the different depth.
-
-    indent_curve and force_curve : the verctors return by segment_curve.
-
-    model : describe the Hertz model used and can be 'Sphere' or 'Cone'.
-
-    tip_carac : the characteristic of the tip. Radius and Semi-opening angle in
-            radian for Sphere or Cone model respectively.
-    poisson_ratio : the poisson ratio of the indented substrate.
-                    Common values : 0.3 for normal cells
-                                    0.5 for rubber
-    method : string
-             'Raw' for a fit of the raw data with the model.
-             'Linear' for a linearized fit.
-             'Extrema' for a linearized fit from the extrem points.
-             'Median' for a computation of the ym from the median point in the
-                      segment.
-    """
-    if indent_curve == None or force_curve == None:
-        return num.ones(1) * num.nan
-    ## The indentation and force have to begin from 0...
-    stop = False
-    if not len(indent_curve):
-        stop = True
-    elif type(indent_curve[0]) == list:
-        stop = len(indent_curve[0]) == 1 and num.isnan(indent_curve[0][0])
-    elif type(indent_curve[0]) in [num.float64, float]:
-        stop = num.isnan(indent_curve[0])
-    if stop:
-        return num.ones(len(indent_curve)) * num.nan
-    # Make the point of contact being at zero:
-    zero_point = indent_curve[0][0]
-    indent_curve = [item - zero_point for item in indent_curve]
-    zero_point = force_curve[0][0]
-    force_curve = [item - zero_point for item in force_curve]
-    # Now, we prepare the fit
-    young_modulus = []
-    for indent, force in zip(indent_curve, force_curve):
-        if num.isnan(indent[0]):
-            young_modulus.append(num.nan)
-        elif method == 'Raw':
-            # Choose the initial parameters :
-            p = [100]
-
-            def ym_model(p, indent):
-                if model == 'Sphere':
-                    force = 4 / 3. * p[0] / (1 - poisson_ratio ** 2) *\
-                            num.sqrt(tip_carac) * indent ** 1.5
-                elif model == 'Cone':
-                    force = 2. / num.pi * p[0] / (1 - poisson_ratio ** 2) *\
-                            num.tan(tip_carac) * indent ** 2
-                return force
-
-            try:
-                fit_it = odr.ODR(odr.Data(indent, force),
-                                 odr.Model(ym_model), p)
-                # And we run it
-                out = fit_it.run()
-                # Get the result and rescale it.
-                young_modulus.append(out.beta[0])
-                if out.beta[0] == 100:
-                    print indent
-                    out.pprint()
-            except IndexError, message:
-                if type(indent) in [float, num.float64] and num.isnan(indent):
-                    young_modulus.append(num.nan)
-                else:
-                    raise IndexError(message)
-        elif method == 'Linear':
-            # Choose the initial parameters :
-            p = [100]
-
-            def ym_model(p, d_indent):
-                #slope = (force[1:] - force[:-1]) /(indent[1:] - indent[:-1])
-                if model == 'Sphere':
-                    d_force = 4 / 3. * p[0] / (1 - poisson_ratio ** 2) *\
-                            num.sqrt(tip_carac) * d_indent
-                elif model == 'Cone':
-                    d_force = 2. / num.pi * p[0] / (1 - poisson_ratio ** 2) *\
-                            num.tan(tip_carac) * d_indent
-                return d_force
-            try:
-                if model == 'Sphere':
-                    indent = indent ** (3 / 2.)
-                elif model == 'Cone':
-                    indent = indent ** 2
-                d_force = num.diff(force)
-                d_indent = num.diff(indent)
-                fit_it = odr.ODR(odr.Data(d_indent, d_force),
-                                 odr.Model(ym_model), p)
-                # And we run it
-                out = fit_it.run()
-                # Get the result and rescale it.
-                young_modulus.append(out.beta[0])
-            except IndexError, message:
-                if type(indent) in [float, num.float64] and num.isnan(indent):
-                    young_modulus.append(num.nan)
-                else:
-                    raise IndexError(message)
-        elif method == 'Extrema':
-            # Modification of the axes ...
-            if model == 'Sphere':
-                indent = indent ** (3 / 2.)
-            elif model == 'Cone':
-                indent = indent ** 2
-            # Compute slopes
-            try:
-                slope = (force[-1] - force[0]) / (indent[-1] - indent[0])
-            except IndexError, message:
-                if type(indent) in [float, num.float64] and num.isnan(indent):
-                    young_modulus.append(num.nan)
-                else:
-                    raise IndexError(message)
-            finally:
-                ## Compute the young modulus according to the models
-                if model == 'Sphere':
-                    young_modulus.append((1 - poisson_ratio ** 2) *
-                                         slope *
-                                         3 / (4 * num.sqrt(tip_carac)))
-                elif model == 'Cone':
-                    young_modulus.append((1 - poisson_ratio ** 2) *
-                                         slope *
-                                         num.pi / (2 * num.tan(tip_carac)))
-        elif method == 'Median':
-            # Modification of the axes ...
-            if model == 'Sphere':
-                indent = indent ** (3 / 2.)
-            elif model == 'Cone':
-                indent = indent ** 2
-            m_force = num.median(force)
-            m_indent = num.median(indent)
-            if model == 'Sphere':
-                young_modulus.append((1 - poisson_ratio ** 2) *
-                                         (m_force / m_indent) *
-                                         3 / (4 * num.sqrt(tip_carac)))
-            elif model == 'Cone':
-                young_modulus.append((1 - poisson_ratio ** 2) *
-                                         (m_force / m_indent) *
-                                         num.pi / (2 * num.tan(tip_carac)))
-    return num.array(young_modulus)
-
-
-def event_find(curve_x, curve_y, deflection_sensitivity, spring_constant,
-               weight=2.5, fit_model=None, poc=0, baseline=None, debug=0):
-    '''
-        This function finds the protein - protein unbinding events from a
-        retraction curve.
-
-        * Parameters :
-            curve_x : 1d array
-                Values of the x coordinate.
-            curve_y : 1d array
-                Values of the y coordinates.
-            deflection_sensitivity : float
-                The deflection sensitivity is used to compute properties of the
-                event.
-            spring_constant : float
-                The property of the cantilever to compute the force of the
-                event.
-            weight : float
-                Threshold to detect the event. Smallest is more sensitive.
-            fit_model : str
-                'wlc' for worm like chain model
-                'fjc' for freely jointed chain model
-            poc : int
-                The index of the point of contact in the curve. Used for the
-                fit.
-            baseline : [a, b] -> y = ax + b
-                The indices of the baseline of the off contact part of the
-                curve. Used to compute the fit.
-
-        * Returns :
-            event_list : list
-                List of events as returned by event_properties.
-    '''
-    if curve_x == None or curve_y == None:
-        return None
-    # find curve jumps...
-    [curve_pos, curve_mean, curve_std] = find_curve_jump(curve_y)
-    indent = compute_indentation(curve_x, curve_y, deflection_sensitivity,
-                                   spring_constant)
-    distances = -indent[0] + max(indent[0])
-    threshold = weight * curve_pos * curve_std
-    positions = threshold > 1
-    event_list = None
-    # Find the point of contac
-    poc_xy = [curve_x[poc], curve_y[poc]]
-    if baseline is not None:
-        f_y = baseline[0] * curve_x + baseline[1]
-        try:
-            new_poc = num.nonzero(curve_y < f_y)[0][0] - 1
-        except:
-            new_poc = poc
-        poc_xy = [curve_x[new_poc], curve_y[new_poc]]
-    if sum(positions):
-        event_list = event_complete(curve_x, curve_y, positions)
-        for event in event_list:
-            event = event_properties(curve_x, curve_y, event, spring_constant,
-                                 distances, fit_model, poc_xy=poc_xy)
-    if not debug:
-        return event_list
-    else:
-        return [event_list, threshold]
-
-
-def event_complete(curve_x, curve_y, position):
-    '''
-    from a vector which points the putative events position, this function
-    extracts and sort and adds some informations like force,...
-    '''
-    point_list = position.nonzero()[0]
-    # Finds adjascent points that defines in fact a single event...
-    event_list = list()
-    first_pos = 0
-    to_remove = list()
-    for i in xrange(len(point_list) - 1):
-        if point_list[i] + 1 != point_list[i + 1]:
-            event_list.append({'X': point_list[i],
-                               'Slice': slice(point_list[first_pos],
-                                              point_list[i] + 1)})
-            first_pos = i + 1
-        if i + 1 == len(point_list) - 1:
-            event_list.append({'X': point_list[i],
-                               'Slice': slice(point_list[first_pos],
-                                              point_list[i + 1] + 1)})
-            first_pos = i + 1
-    if len(point_list) == 1:
-        event_list = [{'X': point_list[0],
-                       'Slice': slice(point_list[0],
-                                      point_list[0] + 1)}]
-    # Complete all the events.
-    for event_nbr in xrange(len(event_list)):
-        event = event_list[event_nbr]
-        # Complete the events to the right
-        next_is_higher = 1
-        right_pos = event['Slice'].stop
-        while next_is_higher and right_pos + 1 < len(curve_y):
-            if curve_y[right_pos + 1] >= curve_y[right_pos]:
-                right_pos = right_pos + 1
-            else:
-                right_pos = right_pos + 1
-                next_is_higher -= 1
-        # And complete to the left.
-        previous_is_lower = 1
-        left_pos = event['Slice'].start
-        while previous_is_lower:
-            if curve_y[left_pos - 1] < curve_y[left_pos]:
-                left_pos = left_pos - 1
-                #previous_is_lower = 1
-            elif curve_y[left_pos - 1] < curve_y[left_pos + 1]:
-                left_pos = left_pos - 1
-                #previous_is_lower = 1
-            else:
-                #print curve_y[left_pos]
-                #print curve_y[left_pos + 1]
-                left_pos = left_pos - 1
-                previous_is_lower -= 1
-        # We are at the bottom of the event. Let's see the event jump...
-        nbr_test = round(len(curve_y) / 130)
-        previous_is_higher = nbr_test
-        while previous_is_higher and left_pos > 0:
-            if curve_y[left_pos - 1] >= curve_y[left_pos]:
-                left_pos = left_pos - 1
-#                previous_is_higher = 1
-            elif curve_y[left_pos - 1] >= curve_y[left_pos + 3]:
-                left_pos = left_pos - 1
-                #previous_is_lower =
-            else:
-                left_pos = left_pos - 1
-                previous_is_higher = previous_is_higher - 1
-        left_pos = left_pos + nbr_test
-        #print curve_x[left_pos]
-        if left_pos <= nbr_test or curve_x[left_pos] <= 5:
-            # This is a jump off contact
-            to_remove.append(event_nbr)
-        event['Slice'] = slice(left_pos, right_pos + 1)
-    for rm_nb in range(len(to_remove)):
-        #print(to_remove[rm_nb] - rm_nb)
-        event_list.pop(to_remove[rm_nb] - rm_nb)
-    return event_list
-
-
-def event_properties(curve_x, curve_y, event, spring_constant, distances,
-                     fit_method=None, poc_xy=None):
-    '''
-    Given an event, event_properties computes the properties of the events. The
-    result is returned as a dictionnary with the following keys :
-    'min' : the minimum of the event, just before the bound break
-    'max' : the maximum of the event, just after the bound break
-    'slope' : the slope of the curve that defins the bound breaking
-    'force' : the unbinding force of the event
-    'loading_rate' : the loading rate of the event
-    'fit_length' : the length of the protein found via the fit.
-    'fit_plength' : the persistent length of the protein.
-    '''
-    # Finds minimum
-    value = min(curve_y[event['Slice']])
-    event['min'] = int(list(curve_y[event['Slice']]).index(value) + \
-                   event['Slice'].start)
-    if event['min'] - event['Slice'].start == 1:
-        # Minimum and start are too close. Increase the slice size of the event
-        # to the left.
-        event['Slice'] = slice(event['Slice'].start - 1, event['Slice'].stop)
-    # Finds maximum
-    value = max(curve_y[event['min']:event['Slice'].stop])
-    event['max'] = list(curve_y[event['min']:
-                        event['Slice'].stop]).index(value) + event['min']
-    if event['max'] > len(curve_x):
-        event['max'] = len(curve_x)
-    # Find jumpSlope
-    event['slope'] = ((curve_y[event['max']] - curve_y[event['min']]) /
-                       (curve_x[event['max']] - curve_x[event['min']]))
-    # Find loading rage
-    if event['Slice'].start == event['min']:
-        event['loading_rate'] = num.nan
-    else:
-        event['loading_rate'] = -((curve_y[event['Slice'].start] -
-                                                    curve_y[event['min']]) /
-                              (curve_x[event['Slice'].start] -
-                                                    curve_x[event['min']]))
-    # Find force
-    event['force'] = (curve_y[event['max']] - curve_y[event['min']]) * \
-                     spring_constant
-    event['force_base'] = (curve_y[-1] - curve_y[event['min']]) * \
-                          spring_constant
-    #print('Force : %f, Force_base : %f')%(event['force'], event['force_base'])
-    #print('Curve 0 : %f, Curve -1 : %f, ')%(curve_y[0], curve_y[-1])
-    #print('Event max : %f')%(curve_y[event['max']])
-    # find distance
-    event['dist'] = distances[event['min']]
-    ## integrate with PoCposition
-    # Perfor the fit on the event.
-    if event_fit:
-        [length, plength, fit_x, fit_y] = event_fit(curve_x, curve_y, event,
-                                            method=fit_method,
-                                            spring_constant=spring_constant,
-                                            poc_xy=poc_xy)
-    else:
-        [length, plength, fit_x, fit_y] = [None, None, None, None]
-
-    event['fit_length'] = length
-    event['fit_plength'] = plength
-    event['fit_x'] = fit_x
-    event['fit_y'] = fit_y
-    return event
-
-
-def find_curve_jump(curve):
-    '''
-    This function finds jumps in a curve. It returns three vectors of the same
-    size of the input vector.
-    curve_jump : filled with zeros and ones. Ones depicted position of jumps.
-    curve_mean : contain the flatten curve
-    curve_std  : contain the standard deviation measured along the curve.
-    '''
-    window_size = 10
-    curve_jump = num.zeros(len(curve))
-    curve_mean = deepcopy(curve)
-    curve_std = num.zeros(len(curve))
-    portion_std = num.std(curve)
-    for point_nbr in xrange(len(curve) - window_size):
-        curve_portion = curve[point_nbr:point_nbr + window_size]
-        indice = 0
-        middle_point = curve_portion[indice]
-        portion_mean = num.mean(curve_portion)
-        portion_std = num.std(curve_portion)
-        curve_mean[point_nbr] = portion_mean
-        curve_std[point_nbr] = portion_std
-        if middle_point < portion_mean - portion_std * 2:
-            if point_nbr + indice:
-                curve_jump[point_nbr + indice] = \
-                curve_jump[point_nbr + indice - 1] + 1
-            else:
-                curve_jump[point_nbr + indice] = 1
-    return curve_jump, curve_mean, curve_std
-
-
-def event_fit(curve_x, curve_y, event, method,
-              spring_constant=0.06, poc_xy=None):
-    '''
-        Fit the event with the correct method.
-
-        * Parameters :
-            curve_x : 1d array
-                Values of the x coordinate.
-            curve_y : 1d array
-                Values of the y coordinates.
-            event : dict
-                dictionnary as returned by event_find function.
-            method : str
-                'wlc' for worm like chain model
-                'fjc' for freely jointed chain model
-            spring_constant : float
-                The spring constant of the used cantilever
-            poc : int
-                The indice of the point of contact as detected in the approach
-                curve.
-
-        * Returns :
-            length : 1d vector
-                length[0] = length in nm.
-                lenght[1] = error in nm.
-            plength : 1d vector
-                plength[0] = persistent length in nm.
-                plenght[1] = error in nm.
-            fit_x : 1d array
-                contains the x values of the fit on the curve.
-            fit_y : 1d array
-                contains the y values of the fit on the curve.
-
-        As an example, we can get a curve with event and find event with
-        event_find :
-
-        >>> curve = open_csv_curve(CURVE_EVENT[0])
-        >>> events = event_find(curve[2], curve[3], 0, 0.06)
-
-        In order to fit with the worm like chain model :
-
-        >>> [length, plength, fit_x, fit_y] = \
-                event_fit(curve[2], curve[3], events[1], method='wlc',\
-                spring_constant=0.0554)
-
-        The result are the length and the persistent length :
-
-        >>> print('Length : %.5f, error : %.5f')%(length[0], length[1])
-        Length : 282.42567, error : 1.19537
-        >>> print('Plength : %.5f, error : %.5f')%(plength[0], plength[1])
-        Plength : 0.26088, error : 0.01271
-
-        Let's plot the result :
-
-        >>> import pylab
-        >>> wlc_plot = pylab.plot(curve[2], curve[3])
-        >>> wlc_plot = pylab.plot(fit_x, fit_y)
-        >>> pylab.savefig(FIGURE_FOLDER + 'wlc_plot.png')
-
-        Here is the same for the free joint chain model :
-
-        >>> [length, plength, fit_x, fit_y] = \
-                event_fit(curve[2], curve[3], events[1], method='fjc',\
-                spring_constant=0.0554)
-
-        You can see, in that case, that the result are close to the wlc model :
-
-        >>> print('%.3f, %.3f')%(length[0],length[1])
-        263.263, 0.865
-        >>> print('%.3f, %.3f')%(plength[0],plength[1])
-        0.253, 0.010
-
-        Let's plot the result :
-
-        >>> pylab.cla()
-        >>> fjc_plot = pylab.plot(curve[2], curve[3])
-        >>> fjc_plot = pylab.plot(fit_x, fit_y)
-        >>> pylab.savefig(FIGURE_FOLDER + 'fjc_plot.png')
-    '''
-    # extract the portion of the curve that contains the event
-    ar_event = [curve_x[event['Slice']], curve_y[event['Slice']]]
-    if poc_xy is None:
-        poc_xy = [curve_x[0], None]
-        #max_y = None
-    if method == 'wlc':
-        result, fit, p_eval, maxy = __wlc_fit(ar_event[0], ar_event[1],
-                                    poc=poc_xy[0],
-                                    spring_constant=spring_constant,
-                                    max_y=poc_xy[1])
-        # prepare the array for the fit
-        poc_indice = num.nonzero(curve_x >= poc_xy[0])[0][0]
-        new_slice = slice(poc_indice, event['Slice'].stop)  # event['min'])
-        fit_x = curve_x[new_slice]
-        fit_y = p_eval(result.beta, fit_x)
-    elif method == 'fjc':
-        result, fit, p_eval, maxy = __fjc_fit(ar_event[0], ar_event[1],
-                                    poc=poc_xy[0],
-                                    spring_constant=spring_constant,
-                                    max_y=poc_xy[1])
-#        # prepare the array for the fit
-        min_y = min(ar_event[1])
-#        if baseline is not None:
-#            max_y = baseline_y[0]
-#        else:
-#            max_y = max(ar_event[1])
-        fit_y = num.arange(min_y, maxy, (maxy - min_y) / 100)
-        fit_x = p_eval(result.beta, fit_y) + poc_xy[0]
-        #fit_x, fit_y = None, None
-    elif method in [None, 'None']:
-        return [None, None, None, None]
-    else:
-        raise TypeError('Method %s is not known.' % method)
-    return [[result.beta[0] * 1e9, result.sd_beta[0] * 1e9],
-            [result.beta[1] * 1e9, result.sd_beta[1] * 1e9],
-            fit_x, fit_y]
-
-
-def __wlc_fit(x, y, poc=0, spring_constant=0.06, baseline_y=None, max_y=None):
-    '''
-        Perform Worm Like Chain fit on the curve portion.
-
-        It's better to use "event_fit" with the option "method=wlc" as it
-        returns more comprehensive results.
-
-        * Parameters :
-            curve_x : 1d array
-                Values of the x coordinate.
-            curve_y : 1d array
-                Values of the y coordinates.
-            poc : int
-                The index of the point of contact.
-            spring_constant : float
-                The spring constant of the cantilever (in N/m)
-
-        * Returns :
-            out : odr.ODR object
-                The object from which you can get the parameters of the fit.
-            result : The parameter of the fit # we can remove it...
-
-            pevalr : fct
-                function to evaluate the fit.
-            rec_maxy
-                A conversion value to evaluate the fit.
-    '''
-    # First, we take the beginning to the lowest point.
-    new_x, new_y, rec_maxy = __prepare_event_for_fit(x, y, spring_constant,
-                                                     poc=poc, max_y=max_y)
-    # The initial condition
-    T = 285
-    L = new_x[-1] + (new_x[-1] * 0.1)
-    Lp = 0.16e-9
-    p0 = [L, Lp]
-
-    def peval(p, x):
-        """
-            Define the function to fit
-        """
-        # p[0] = L
-        # p[1] = Lp
-        Kb = 1.381e-23  # Boltzmann constant
-
-        old_settings = num.seterr(all='ignore')
-        _peval_result = ((Kb * T / p[1]) *
-                    (((x) / p[0]) + 1 / (4 * (1 - (x) / p[0]) ** 2) - 1 / 4))
-        num.seterr(**old_settings)  # restore settings
-        return _peval_result
-
-    def pevalr(p, x):
-        """
-            This is the function that will be return in order to complete the
-            fit. Usefull for pretty plots.
-        """
-        # Lp = 1e-9
-        new_x = (x - poc) * 1e-9
-        result = peval(p, new_x)
-        result = -result * 1e9 / spring_constant + rec_maxy
-        return result
-
-    # Now, we prepare the fit
-    fit_it = odr.ODR(odr.Data(new_x, new_y), odr.Model(peval), p0)
-    # And we run it
-    out = fit_it.run()
-    # Get the result and rescale it.
-    result = [new_x, peval(out.beta, new_x)]
-    result[0] = result[0] * 1e9 + poc
-    result[1] = -(result[1] * 1e9 / spring_constant) + rec_maxy
-    return [out, result, pevalr, rec_maxy]
-
-
-def __prepare_event_for_fit(x, y, spring_constant, poc=0, max_y=None):
-    min_index = num.where(y == min(y))[0][0]
-    if max_y is not None:
-        rec_maxy = max_y
-    else:
-        rec_maxy = max(y)
-    new_x = x[0:min_index + 1] - poc  # - x[poc]
-    new_y = y[0:min_index + 1]
-    # Then, we rescale to be in the metric system (we were in nm)
-    new_x = (new_x) * 1e-9
-    new_y = -(new_y - rec_maxy) * 1e-9 * spring_constant  # * 0.06
-    return new_x, new_y, rec_maxy
-
-
-def __fjc_fit(x, y, poc=0, spring_constant=0.06, max_y=None):
-    '''
-        Perform Worm Like Chain fit on the curve portion.
-
-        It's better to use "event_fit" with the option "method=fjc" as it
-        returns more comprehensive results.
-
-        * Parameters :
-            curve_x : 1d array
-                Values of the x coordinate.
-            curve_y : 1d array
-                Values of the y coordinates.
-            poc : int
-                The index of the point of contact.
-            spring_constant : float
-                The spring constant of the cantilever (in N/m)
-
-        * Returns :
-            out : odr.ODR object
-                The object from which you can get the parameters of the fit.
-            result : The parameter of the fit # we can remove it...
-
-            pevalr : fct
-                function to evaluate the fit.
-            rec_maxy
-                A conversion value to evaluate the fit.
-    '''
-    # First, we get only the part of the curve that should be fitted.
-    new_x, new_y, rec_maxy = __prepare_event_for_fit(x, y, spring_constant,
-                                                     poc, max_y=max_y)
-    # The initial condition
-    T = 285
-    L = new_x[-1] + (new_x[-1] * 0.1)
-    Lp = 0.4e-9
-    p0 = [L, Lp]
-
-    def peval(p, y):
-        # p[0] = L
-        # p[1] = Lp
-        Kb = 1.381e-23  # Boltzmann constant
-        # Avoid zero elements in y. As force should be positive, if zero is
-        # given, it's the minimum one. Then replace by the non-zero minimum
-        # value, which should be little bit higher value.
-        y[num.nonzero(y == 0)] = min(y[num.nonzero(y != 0)])
-        return (p[0] * (1 / num.tanh((y * p[1]) / (Kb * T)) -
-                            (Kb * T) / (y * p[1])))
-
-    def pevalr(p, y):
-        """
-            This is the function that will be return in order to complete the
-            fit. Usefull for pretty plots.
-        """
-        new_y = -(y - rec_maxy) * 1e-9 * spring_constant
-        result = peval(p, new_y)
-        result = result * 1e9
-        return result
-    # Prepare the fit
-    fit_it = odr.ODR(odr.Data(new_y, new_x), odr.Model(peval), p0)
-    # And we run it
-    out = fit_it.run()
-    # Get the result and rescale it.
-    result = [new_y, peval(out.beta, new_y)]
-    result[0], result[1] = result[1], result[0]
-    result[0] = result[0] * 1e9
-    result[1] = -(result[1] * 1e9 / 0.06 - rec_maxy)
-    return [out, result, pevalr, rec_maxy]
-
-
-if __name__ == '__main__':
-    import doctest
-    doctest.testmod()
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/__init__.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/aex.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/aex.py
deleted file mode 100644
index 465b3e1..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/aex.py
+++ /dev/null
@@ -1,710 +0,0 @@
-from xml.dom.minidom import Document, parse
-import os
-import commands
-import tempfile
-import zipfile
-from datetime import datetime
-from distutils.version import StrictVersion
-import pdb
-
-import numpy
-from numpy import array, Inf, inf, NaN, nan
-
-import succellus_import
-
-from common import Variables
-GLOB_VARS = Variables()
-
-version = '0.1a68'
-
-###
-# 0.1a68 : Add PoCNoise array.
-# 0.1a67 : Add event length and persistent length.
-
-
-# TODO correct the small error while saving the event force. I get an error of
-# ~2e-12 between original and saved data (see aexTest, I had to change a
-# assertEqual to assertAlmostEqual)
-def save(fv_folder_object, file_name):
-    '''
-    Save a FVFolder object to an aex file.
-    '''
-    tmp_dir = tempfile.mkdtemp()
-    if not os.path.splitext(file_name)[1] == '.aex':
-        file_name = file_name + '.aex'
-    save_exp(fv_folder_object, tmp_dir, version)
-    start_path = os.path.split(file_name)[0]
-    for fv_object in fv_folder_object.file['list']:
-        if fv_object.header['data_location'] not in ['local', u'local']:
-            curr_path = os.path.split(fv_object.header['data_location'])[0]
-            rel_path = os.path.relpath(curr_path, start_path)
-            fv_object.header['data_location'] = os.path.join(
-                           rel_path,
-                           os.path.split(fv_object.header['data_location'])[1])
-        save_fv(fv_object, tmp_dir, version)
-    mime_type = open(os.path.join(tmp_dir,'mimetype'), 'wb')
-    mime_type.write('application/afm.aex.data')
-    mime_type.close()
-    # Compress all files in the zip
-    aex_file = zipfile.ZipFile(file_name,'w')
-    
-    for item in os.listdir(tmp_dir):
-        if os.path.isfile(os.path.join(tmp_dir, item)):
-            aex_file.write(os.path.join(tmp_dir, item), item)
-            os.remove(os.path.join(tmp_dir, item))
-    for item in os.listdir(os.path.join(tmp_dir, 'data')):
-        aex_file.write(os.path.join(tmp_dir, 'data', item), 
-                       os.path.join('data', item))
-        os.remove(os.path.join(tmp_dir, 'data', item))
-    aex_file.close()
-    os.rmdir(os.path.join(tmp_dir, 'data'))
-    os.rmdir(tmp_dir)
-    
-def save_exp(fv_folder, base_dir, version):
-    exp_tree = Document()
-    exp_node = exp_tree.createElement('fvfolder')
-    exp_node.setAttribute('xmlns:openfovea','initiator_software')
-    exp_node.setAttribute('openfovea:version', version)
-    
-    info_node = exp_tree.createElement('info')
-    #####
-    # Date node
-    date_node = exp_tree.createElement('date')
-    date_element = exp_tree.createTextNode(str(fv_folder.date))
-    date_node.appendChild(date_element)
-    exp_node.appendChild(date_node)
-    # End of date node
-    #####
-    # Author node
-    author_node = exp_tree.createElement('author')
-    author_element = exp_tree.createTextNode(fv_folder.author)
-    author_node.appendChild(author_element)
-    exp_node.appendChild(author_node)
-    # End of author node
-    #####
-    # Comment node
-    comment_node = exp_tree.createElement('comment')
-    comment_element = exp_tree.createTextNode(fv_folder.comment)
-    comment_node.appendChild(comment_element)
-    exp_node.appendChild(comment_node)
-    # End of comment node
-    #####
-    # Parameters node
-    parameters_node = exp_tree.createElement('parameters')
-    for key in fv_folder.parameters:
-        parameters_node.setAttribute(key, str(fv_folder.parameters[key]))
-    exp_node.appendChild(parameters_node)
-    # End of parameters node
-    #####
-    # Group node
-    group_node = exp_tree.createElement('group')
-    for key in fv_folder.group:
-        group_node.setAttribute(key, str(fv_folder.group[key]))
-    exp_node.appendChild(group_node)
-    # End of group node
-    #####
-    exp_tree.appendChild(exp_node)
-    
-    xml_id = open(os.path.join(base_dir, 'experiment.xml'), 'wb')
-    xml_id.write(exp_tree.toprettyxml())
-    xml_id.close()
-
-def load_exp(file_name):
-    xmldoc=parse(file_name)
-    child=xmldoc.firstChild
-    #exp_dict['OF_version'] = child.getAttribute('openfovea:version')
-    exp_dict = {'date' : '',
-                'author' : '',
-                'comment': '',
-                'parameters' : {'event_detect_weight' : None,
-                                'event_fit_model' : None,
-                                'rel_stiff_dist' : None,
-                                'injection_index' : 0,
-                                'PoC_threshold' : 2,
-                                'histo_y_rel' : False,
-                                'plot_size' : [800, 600],
-                                'plot_hist_gauss' : True,
-                                },
-                'group' : { 'id' : [],
-                            'label' : [],
-                            'display' : []},
-                'OF_version' : child.getAttribute('openfovea:version')
-                }
-    for elm in child.childNodes:
-        if elm.nodeName in exp_dict.keys():
-            if elm.nodeName == 'parameters':
-                for key in exp_dict['parameters'].keys():
-                    string = elm.getAttribute(key)
-                    if len(string):
-                        try:
-                            exp_dict['parameters'][key] = eval(string)
-                        except NameError:
-                            exp_dict['parameters'][key] = str(string)
-            elif elm.nodeName == 'group':
-                for key in exp_dict['group'].keys():
-                    exp_dict['group'][key] = eval(elm.getAttribute(key))
-            else:
-                string = elm.childNodes[0].data
-                string = string.replace('\n\t\t','')
-                string = string.replace('\n\t','')
-                #for key in exp_dict.keys:
-                if elm.nodeName == 'date':
-                    exp_dict['date'] = datetime.strptime(string, 
-                                                        '%Y-%m-%d %H:%M:%S.%f')
-                else:
-                    exp_dict[elm.nodeName] = string      
-    exp_dict['parameters']['rel_stiff_dist'] = int(exp_dict['parameters']['rel_stiff_dist'])
-    return exp_dict
-    
-def save_fv(fv_object, base_dir, version):
-    '''
-    Save a single force volume file to an xml file.
-    '''
-    fv_tree = Document()
-    
-    force_volume_node = fv_tree.createElement('fvfile')
-    force_volume_node.setAttribute('xmlns:array','numpy_array')
-    force_volume_node.setAttribute('xmlns:openfovea','initiator_software')
-    force_volume_node.setAttribute('openfovea:version', version)
-    force_volume_node.setAttribute('filename', fv_object.name)
-    
-    header_node = fv_tree.createElement('header')
-    for key in fv_object.header:
-        if key == 'x_factor':
-            header_node.setAttribute(key, '%.15f'%fv_object.header[key])
-        elif key == 'date':
-            header_node.setAttribute(key, str(fv_object.header[key]))
-        elif key == 'note':
-            header_node.setAttribute(key, fv_object.header[key].__repr__())
-        elif key == 'index_array':
-            _node = __node_array(fv_tree.createElement('index_array'),
-                                 fv_object.header[key],
-                                 'index',
-                                 fv_object.name,
-                                 base_dir)
-            if _node is not None:
-                force_volume_node.appendChild(_node)
-        else:
-            header_node.setAttribute(key, str(fv_object.header[key]))
-    force_volume_node.appendChild(header_node)
-
-    ## Save the switches
-    switch_node = fv_tree.createElement('switch')
-    for key in fv_object.get_switch('list'):
-        switch_node.setAttribute(key, str(fv_object.get_switch(key)))
-    force_volume_node.appendChild(switch_node)
-    original_switches = fv_object.get_switch('restore')
-    # Force switches to be null in order to save all the data
-    fv_object.set_switch('reset')
-    ## Piezo array
-    try:
-        __array = fv_object.get_array('Piezo')
-    except Exception as inst:
-        if 'Topography array is not loaded' in inst.message:
-            pass
-        else:
-            raise inst
-    else:
-        _node = __node_array(fv_tree.createElement('piezo_array'),
-                             __array,
-                             'piezo',
-                             fv_object.name,
-                             base_dir)
-        if _node is not None:
-            force_volume_node.appendChild(_node)
-    ## Stiffness header
-    stiffness_header_node = fv_tree.createElement('stiffness_header')
-    for key in fv_object.stiffness:
-        stiffness_header_node.setAttribute(key, str(fv_object.stiffness[key]))
-    force_volume_node.appendChild(stiffness_header_node)
-    ## Stiffness array
-    st_array = fv_object.get_array('Stiffness')
-    if type(st_array) == numpy.ma.core.MaskedArray:
-        stiffness_node = fv_tree.createElement('stiffness')
-        #stiffness_node.setAttribute('shape',str(st_array.shape))
-#        for key in fv_object.stiffness:
-#            stiffness_node.setAttribute(key, str(fv_object.stiffness[key]))
-        
-        stiff_data_node = fv_tree.createElement('data')
-        rel_name = 'data/' + fv_object.name + '_stiffness.data'
-        abs_name = os.path.join(base_dir, 'data', fv_object.name + '_stiffness.data')
-        stiff_data_node.setAttribute('shape', str(st_array.data.shape))
-        stiff_data_node.setAttribute('array:href', rel_name)
-        __save_array(st_array.data, abs_name)
-        stiffness_node.appendChild(stiff_data_node)
-        
-        stiff_mask_node = fv_tree.createElement('mask')
-        rel_name = 'data/' + fv_object.name + '_stiffness_mask.data'
-        abs_name = os.path.join(base_dir, 'data', fv_object.name + '_stiffness_mask.data')
-        stiff_mask_node.setAttribute('shape', str(st_array.mask.shape))
-        stiff_mask_node.setAttribute('array:href', rel_name)
-        __save_array(st_array.mask.astype(float), abs_name)
-        stiffness_node.appendChild(stiff_mask_node)
-        
-        force_volume_node.appendChild(stiffness_node)
-        
-    # Mask array
-    _node = __node_array(fv_tree.createElement('mask_array'),
-                             fv_object.get_array('Mask'),
-                             'mask', fv_object.name, base_dir)
-    if _node is not None:
-        force_volume_node.appendChild(_node)
-    ## PoC array
-    _node = __node_array(fv_tree.createElement('poc_array'),
-                             fv_object.get_array('PoCIndice'),
-                             'poc_indice', fv_object.name, base_dir)
-    if _node is not None:
-        force_volume_node.appendChild(_node)
-    ## PoC Noise array
-    _node = __node_array(fv_tree.createElement('pocnoise_array'),
-                            fv_object.get_array('PoCNoise'),
-                            'poc_noise', fv_object.name, base_dir)
-    if _node is not None:
-        force_volume_node.appendChild(_node)
-    ## Topography array
-    _node = __node_array(fv_tree.createElement('topo_array'),
-                             fv_object.get_array('Topography'),
-                             'topography', fv_object.name, base_dir)
-    if _node is not None:
-        force_volume_node.appendChild(_node)
-    ## Event array
-    _node = __node_array(fv_tree.createElement('event'),
-                             fv_object.get_array('Event'),
-                             'event', fv_object.name, base_dir)
-    if _node is not None:
-        # Save the parameters of the events.
-        for key in fv_object.event:
-            if fv_object.event[key] is not None:
-                _node.setAttribute(key, str(fv_object.event[key]))
-            else:
-                pass
-        # Save also the details of the events.
-        for event in fv_object.event_list:
-            det_event_node = fv_tree.createElement('detail')
-            for key in event:
-                # TODO Putative dead code : find out when it is necessary
-#                if key == 'Stiffness':
-#                    det_event_node.setAttribute('Stiffness_data', str(list(event[key].data)))
-#                    det_event_node.setAttribute('Stiffness_mask', str(list(event[key].mask)))
-                det_event_node.setAttribute(key, str(event[key]))
-            _node.appendChild(det_event_node)
-        force_volume_node.appendChild(_node)
-    ## Random array
-    _node = __node_array(fv_tree.createElement('event_rand_array'),
-                             fv_object.get_array('Event random'),
-                             'event_random', fv_object.name, base_dir)
-    if _node is not None:
-        force_volume_node.appendChild(_node)
-    
-    # The force-distance curve :
-    curve_dict = fv_object._ForceVolume__fdcurves
-
-    data_location = fv_object.header['data_location']
-    if data_location not in ['local', u'local']:
-        pass
-    else:
-        # trace x
-        trace_x = fv_tree.createElement('trace_x_array')
-        rel_name = 'data/' + fv_object.name + '_trace_x.data'
-        abs_name = os.path.join(base_dir, 'data', fv_object.name + '_trace_x.data')
-        __save_array(curve_dict['trace_x'], abs_name)
-        trace_x.setAttribute('array:href', rel_name)
-        trace_x.setAttribute('shape',str(curve_dict['trace_x'].shape))
-        force_volume_node.appendChild(trace_x)
-        # retrace x
-        retrace_x = fv_tree.createElement('retrace_x_array')
-        rel_name = 'data/' + fv_object.name + '_retrace_x.data'
-        abs_name = os.path.join(base_dir, 'data', fv_object.name + '_retrace_x.data')
-        __save_array(curve_dict['retrace_x'], abs_name)
-        retrace_x.setAttribute('array:href', rel_name)
-        retrace_x.setAttribute('shape',str(curve_dict['retrace_x'].shape))
-        force_volume_node.appendChild(retrace_x)
-        
-        # Trace force curves
-        trace_array = fv_tree.createElement('trace_array')
-        rel_name = 'data/' + fv_object.name + '_trace.data'
-        abs_name = os.path.join(base_dir, 'data', fv_object.name + '_trace.data')
-        __save_array(curve_dict['trace_y'], abs_name)
-        trace_array.setAttribute('array:href', rel_name)
-        trace_array.setAttribute('shape',str(curve_dict['trace_y'].shape))
-        force_volume_node.appendChild(trace_array)
-            
-        # Retrace force curves
-        retrace_array = fv_tree.createElement('retrace_array')
-        rel_name = 'data/' + fv_object.name + '_retrace.data'
-        abs_name = os.path.join(base_dir, 'data', fv_object.name + '_retrace.data')
-        __save_array(curve_dict['retrace_y'], abs_name)
-        retrace_array.setAttribute('array:href', rel_name)
-        retrace_array.setAttribute('shape',str(curve_dict['retrace_y'].shape))
-        force_volume_node.appendChild(retrace_array)
-        
-    fv_tree.appendChild(force_volume_node)
-    xml_id = open(os.path.join(base_dir, fv_object.name + '.xml'), 'wb')
-    xml_id.write(fv_tree.toprettyxml())
-    xml_id.close()
-    fv_object.set_switch('restore', original_switches)
-def __node_array(array_node, array, array_name, object_name, base_dir):
-    """
-        Save the array.
-        
-        * Parameters :
-            array_node : xml node
-                The node where to put these information.
-            array : 2d numpy.array
-                The array to save.
-            array_name : str
-                The name of the array. This will be saved in the xml tree
-            object_name : str
-                The name of the fv object. This is used to relate the array to
-                the correct object when loading.
-            parent_node : xml node
-                The parent node where to put the array node.
-            base_dir : str
-                The base directory to save the data.
-    """
-    
-    if type(array) == numpy.ndarray:
-        rel_name = 'data/' + object_name + '_' + array_name + '.data'
-        abs_name = os.path.join(base_dir, 'data', object_name + '_' + array_name + '.data')
-        array_node.setAttribute('shape',str(array.shape))
-        array_node.setAttribute('array:href', rel_name)
-        __save_array(array, abs_name)
-        return array_node
-    else:
-        return None
-
-def __save_array(array, c_file_name):
-    """
-        Saves the array to a binary format.
-        
-        * Parameters :
-            array : numpy.ndarray
-                The array to save.
-            c_file_name : str
-                The filename to save it.
-                
-        * Returns :
-            None
-    """
-    
-    [directory, file_name] = os.path.split(c_file_name)
-    if not os.path.exists(directory):
-        os.makedirs(directory)
-    file_id = open(c_file_name, 'wb')
-    if type(array) == numpy.ndarray:
-        array = array.astype('float64')
-        file_id.write(array.tostring('C'))
-    file_id.close()
-
-def __load_array(elm, folder_name):
-    """
-        Loads the array from an xml node of the array type
-        
-        * Parameters :
-            elm : xml node
-                xml node with 'shape' and 'array:href' attributes.
-            folder_name : str
-                The path to the file.
-        
-        * Returns :
-            array : numpy.ndarray
-                The dimension of the array accords with 'shape' attribute of the
-                elm xml node.
-    """
-    target = os.path.join(folder_name, elm.getAttribute('array:href'))
-    shape = eval(elm.getAttribute('shape'))
-    array_id = open(target, 'rb')
-    array_str = array_id.read()
-    array = numpy.fromstring(array_str, dtype=numpy.float64)
-    return array.reshape(shape)
-def convert2current(xmldoc):
-    """
-        Convert a previous version tree in current.
-    """
-    child = xmldoc.firstChild
-    fv_dict = {'OF_version' : child.getAttribute('openfovea:version')}
-    if StrictVersion(fv_dict['OF_version']) <= StrictVersion('0.1a63'):
-        # There is no stiffness_header element.
-        # This element is in stiffness with the arrays.
-        elem = child.getElementsByTagName('stiffness')
-        if len(elem):
-            stiffness_node = elem[0]
-            stiff_header = xmldoc.createElement('stiffness_header')
-            # get the stiffness properties
-            stiff_prop = {'HertzModel' : '', 'PointCarac' : '',  'calibSens' : '',
-                          'glass' : '', 'nbParts' : '', 'sizeParts' : '',
-                          'relativeMaxDist' : '', 'PoCThreshold' : '',
-                          'PoCMethod' : u'deriv', 'recomputePoC' : u'False',
-                          'limitSlide' : u'False', 'poisson_ratio' : u'0.3', 
-                          'poc_len_slice' : u'0.33'
-                          }
-            for key in stiff_prop.keys():
-                if stiffness_node.hasAttribute(key):
-                    val = stiffness_node.getAttribute(key)
-                else:
-                    val = stiff_prop[key]
-                stiff_prop[key] = val
-            for item in S_HEADER_064_2_CURRENT:
-                val = stiff_prop[S_HEADER_064_2_CURRENT[item]]
-                stiff_header.setAttribute(item, val)
-            stiff_header.setAttribute('poc_len_slice', 0.33)
-            child.appendChild(stiff_header)
-    if StrictVersion(fv_dict['OF_version']) == StrictVersion('0.1a64'):
-        stiff_header = child.getElementsByTagName('stiffness_header')[0]
-        for item in S_HEADER_064_2_CURRENT:
-            value = stiff_header.getAttribute(S_HEADER_064_2_CURRENT[item])
-            stiff_header.removeAttribute(S_HEADER_064_2_CURRENT[item])
-            stiff_header.setAttribute(item, value)
-        stiff_header.setAttribute('poc_len_slice', 0.33)
-    if StrictVersion(fv_dict['OF_version']) <= StrictVersion('0.1a65'):
-        # The change is in the curve_x. Before it was always a 1d vector. Now,
-        # it can be also 3d vector. The node name changed from 'curve_x_array'
-        # to 'trace_x_array' and 'retrace_y_array' for the trace and retrace
-        # curve respectively.
-        node = child.getElementsByTagName('curve_x_array')[0]
-        target = node.getAttribute('array:href')
-        shape = node.getAttribute('shape')
-        trace_x = xmldoc.createElement('trace_x_array')
-        trace_x.setAttribute('array:href', target)
-        trace_x.setAttribute('shape', shape)
-        retrace_x = xmldoc.createElement('retrace_x_array')
-        retrace_x.setAttribute('array:href', target)
-        retrace_x.setAttribute('shape', shape)
-        child.appendChild(trace_x)
-        child.appendChild(retrace_x)
-    if StrictVersion(fv_dict['OF_version']) <= StrictVersion('0.1a66'):
-        # The change is in the presence of a wlc fit for events.
-        pass
-    return xmldoc
-def load_fv(file_name, curdir=''):
-    '''
-    Loads the force volume xml file and returns a dictionnary that contains the
-    datas.
-    '''
-    folder_name = os.path.split(file_name)[0]
-    xmldoc=parse(file_name)
-    child=xmldoc.firstChild
-    fv_dict = {'name' : None,
-               'header' : {},
-               'stiffness_header' : {},
-               'piezo_array' : None,
-               'topo_array' : None,
-               'poc_array' : None,
-               'pocnoise_array' : None,
-               'trace_x_array' : None,
-               'retrace_x_array' : None,
-               'trace_array' : None,
-               'retrace_array' : None,
-               'event_rand_array' : None,
-               'stiffness' : None,
-               'mask_array' : None,
-               'index_array' : None,
-               'switch' : {'mask' : 'False'},
-               'event' : {}}
-    fv_dict['name'] = child.getAttribute('filename')
-    fv_dict['OF_version'] = child.getAttribute('openfovea:version')
-    if StrictVersion(fv_dict['OF_version']) < StrictVersion(version):
-        xmldoc = convert2current(xmldoc)
-        child = xmldoc.firstChild
-    for elm in child.childNodes:
-        if elm.nodeName in fv_dict.keys():
-            if 'array' in elm.nodeName:
-                fv_dict[elm.nodeName] = __load_array(elm, folder_name)
-                if elm.nodeName == 'event_rand_array':
-                    nbr_random = elm.getAttribute('nbr_random')
-                    if len(nbr_random):
-                        ev_prop = {'nbr_random' : int(nbr_random)}
-                if elm.nodeName == 'mask_array' and fv_dict[elm.nodeName] is not None:
-                    fv_dict[elm.nodeName] = fv_dict[elm.nodeName].astype('bool')
-            elif elm.nodeName == 'stiffness_header':
-                stiff_prop = {}
-                for key, fct in zip(STIFFNESS_HEADER.keys(), STIFFNESS_HEADER.values()):
-                    fv_dict['stiffness_header'][key] = fct(elm.getAttribute(key))
-            elif elm.nodeName == 'stiffness':
-                # get the data and mask
-                for array_node in elm.childNodes:
-                    if array_node.nodeName == 'data':
-                        stiff_data = __load_array(array_node, folder_name)
-                    elif array_node.nodeName == 'mask':
-                        stiff_mask = __load_array(array_node, folder_name)
-                stiff_array = numpy.ma.MaskedArray(stiff_data,
-                                                   mask = stiff_mask)
-                fv_dict['stiffness'] = stiff_array
-            elif elm.nodeName == 'event':
-                if StrictVersion(fv_dict['OF_version']) < StrictVersion('0.1a62'):
-                    # Loading rate wasn't computed...
-                    pass
-                else:
-                    # get the event array
-                    fv_dict['event']['array'] = __load_array(elm, folder_name)
-                    # get the detail of the events
-                    detail = list()
-                    
-                    for array_node in elm.childNodes:
-                        if array_node.nodeName == 'detail':
-                            ev_det = {}
-                            ev_det['Slice'] = array_node.getAttribute('Slice')
-                            ev_det['X'] = int(array_node.getAttribute('X'))
-                            ev_det['force'] = float(array_node.getAttribute('force'))
-                            ev_det['max'] = int(array_node.getAttribute('max'))
-                            ev_det['min'] = int(array_node.getAttribute('min'))
-                            ev_det['pos_x'] = int(array_node.getAttribute('pos_x'))
-                            ev_det['pos_y'] = int(array_node.getAttribute('pos_y'))
-                            ev_det['slope'] = float(array_node.getAttribute('slope'))
-                            ev_det['loading_rate'] = float(array_node.getAttribute('loading_rate'))
-                            ev_det['dist'] = float(array_node.getAttribute('dist'))
-                            if StrictVersion(fv_dict['OF_version']) > StrictVersion('0.1a66'):
-                                ev_det['fit_length'] = eval(array_node.getAttribute('fit_length'))
-                                ev_det['fit_plength'] = eval(array_node.getAttribute('fit_plength'))
-                            else:
-                                ev_det['fit_length'] = None
-                                ev_det['fit_plength'] = None
-                            # TODO Putative dead code : find when it's necessary
-    #                        if array_node.hasAttribute('Stiffness_mask'):
-    #                            mask = eval(array_node.getAttribute('Stiffness_mask'))
-    #                            data = eval(array_node.getAttribute('Stiffness_data'))
-    #                            ev_det['Stiffness'] = numpy.ma.array(data, mask=mask)
-                            detail.append(ev_det)
-                    fv_dict['event']['detail'] = detail
-            elif elm.nodeName == 'header':
-                header_dict = GLOB_VARS.common_header
-                for key in header_dict.keys():
-                    if elm.getAttribute(key) is not '':
-                        header_dict[key] = elm.getAttribute(key)
-                    try:
-                        header_dict[key] = eval(header_dict[key])
-                    except:
-                        pass
-                try:
-                    header_dict['date'] = datetime.strptime(header_dict['date'], 
-                                                        '%Y-%m-%d %H:%M:%S.%f')
-                except ValueError:
-                    header_dict['date'] = datetime.strptime(header_dict['date'], 
-                                                        '%Y-%m-%d %H:%M:%S')
-                except TypeError:
-                    header_dict['date'] = None
-                if StrictVersion(fv_dict['OF_version']) < StrictVersion('0.1a63') :
-                    header_dict['number_curves'] = header_dict['matrix_length'] ** 2
-                if StrictVersion(fv_dict['OF_version']) < StrictVersion('0.1a64') :
-                    header_dict['event_dist_thresh'] = 0.0
-                if type(header_dict['size']) not in [list, tuple]:
-                    header_dict['size'] = (header_dict['size_x'], header_dict['size_y'])
-                if type(header_dict['scan_size']) not in [list, tuple]:
-                    header_dict['scan_size'] = (header_dict['scan_size'],
-                                                header_dict['scan_size'])
-                fv_dict['header'] = header_dict
-            elif elm.nodeName == 'switch':
-                fv_switch = {}
-                for key_nb in range(elm.attributes.length):
-                    fv_dict['switch'][elm.attributes.item(key_nb).name] = \
-                                            elm.attributes.item(key_nb).value
-
-    if fv_dict['header']['data_location'] not in ['local', u'local']:
-        data_location = fv_dict['header']['data_location']
-
-        # Get the correct path.
-        try_path = [fv_dict['header']['data_location'],
-                    os.path.join(curdir, os.path.split(fv_dict['header']['data_location'])[-1]),
-                    os.path.join(curdir, fv_dict['header']['data_location'].split('\\')[-1])]
-        
-        correct_path = [os.path.exists(__itpath) for __itpath in try_path]
-        data_location = try_path[correct_path.index(True)]
-
-        if os.path.isdir(data_location):  # Asylum case
-            fv_dict['data_fid'] = data_location
-        else :  # JPK case
-            fv_dict['data_fid'] = zipfile.ZipFile(data_location, 'r')
-
-        fv_dict['header']['data_location'] = data_location
-        fv_dict['header']['index_array'] = fv_dict['index_array']
-    return fv_dict
-    
-def load(aex_name):
-    # first unzip the file to a tmp folder
-    compressed_file = zipfile.ZipFile(aex_name)
-    tmp_dir = tempfile.mkdtemp()
-    file_list = []
-    directory_list = []
-    file_tree = []
-    for file_in in compressed_file.filelist:
-        directory = os.path.split(file_in.filename)[0]
-        if not directory == '':
-            if not os.path.isdir(os.path.join(tmp_dir,directory)):
-                directory_list.append(directory)
-                os.makedirs(os.path.join(tmp_dir, directory))
-        outfile = open(os.path.join(tmp_dir, file_in.filename), 'wb')
-        outfile.write(compressed_file.read(file_in.filename))
-        outfile.close()
-        file_list.append(file_in.filename)
-    
-    if 'mimetype' in file_list:
-        # OpenFovea version of aex
-        for file_name in file_list:
-            c_file_name = os.path.join(tmp_dir, file_name)
-            if file_name == 'experiment.xml':
-                experiment = load_exp(c_file_name)
-            elif os.path.splitext(file_name)[1] == '.xml':
-                file_tree.append(load_fv(c_file_name, curdir=os.path.split(aex_name)[0]))
-            os.remove(c_file_name)
-        for directory in directory_list:
-            os.rmdir(os.path.join(tmp_dir,directory))
-    else:
-        # Succellus version of aex, designed to disapear...
-        for file_name in file_list:
-            c_file_name = os.path.join(tmp_dir, file_name)
-            if file_name == 'experiment.xml':
-                experiment = succellus_import.xmlExtractExperiment(c_file_name)
-                os.remove(c_file_name)
-            else :
-                file_tree.append(succellus_import.xmlExtractFV(c_file_name))
-                os.remove(c_file_name)
-    os.rmdir(tmp_dir)
-    return [experiment, file_tree]
-
-STIFFNESS_HEADER_0_64 = {
- 'HertzModel' : lambda x: x,
- 'PoCMethod' : lambda x: x,
- 'PoCThreshold' : lambda x: float(x),
- 'PointCarac' : lambda x: float(x),
- 'calibSens' : lambda x: float(x),
- 'glass' : lambda x: float(x),
- 'limitSlide' : lambda x: eval(x),
- 'nbParts' : lambda x: int(x),
- 'poisson_ratio' : lambda x: float(x),
- 'recomputePoC' : lambda x: eval(x),
- 'relativeMaxDist' : lambda x: int(x),
- 'sizeParts' : lambda x: int(x)}
-
-S_HEADER_064_2_CURRENT = {
- 'hertz_model' : 'HertzModel',
- 'poc_method' : 'PoCMethod',
- 'poc_threshold' : 'PoCThreshold',
- 'point_carac' : 'PointCarac',
- 'calib_sens' : 'calibSens',
- 'glass' : 'glass',
- 'limit_slide' : 'limitSlide',
- 'nb_parts' : 'nbParts',
- 'poisson_ratio' : 'poisson_ratio',
- 'recompute_poc' : 'recomputePoC',
- 'relative_max_dist' : 'relativeMaxDist',
- 'size_parts' : 'sizeParts'}
-
-STIFFNESS_HEADER = {
- 'hertz_model' : lambda x: x,
- 'fit_method' : lambda x: x,
- 'poc_method' : lambda x: x,
- 'poc_threshold' : lambda x: float(x),
- 'point_carac' : lambda x: float(x),
- 'calib_sens' : lambda x: float(x),
- 'glass' : lambda x: float(x),
- 'limit_slide' : lambda x: eval(x),
- 'nb_parts' : lambda x: int(x),
- 'poisson_ratio' : lambda x: float(x),
- 'recompute_poc' : lambda x: eval(x),
- 'relative_max_dist' : lambda x: int(x),
- 'size_parts' : lambda x: int(x),
- 'poc_len_slice' : lambda x: float(x),
-}
-
-if __name__ == '__main__':
-    load_fv('../../../docs/data/files/aex_xml/0.1a64/fvfile.xml')
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/afm_file.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/afm_file.py
deleted file mode 100644
index 0f2b23b..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/afm_file.py
+++ /dev/null
@@ -1,353 +0,0 @@
-#! /usr/bin/python
-# -*- coding: utf-8 -*-
-'''
-This module is used to parse the files form Digital Instrument AFM
-'''
-__author__ = "Charles Roduit <charles.roduit at gmail.com>"
-__date__ = "01.07.2007"
-__license__ = "GNU Public License (GPL) version 3"
-__version__ = "0.1"
-
-import os
-import csv
-import zipfile
-
-import numpy
-from struct import unpack
-import re
-
-import nanoscope
-import jpk
-import asylum
-import csem
-
-
-def load(file_name):
-    """
-        Get the type of the file.
-
-        >>> [header, deflection_av, deflection_re, plotx, piezo] = \
-        load(ASYLUM5_FILE)
-        >>> print plotx.shape
-        (42622,)
-        >>> print deflection_av.shape
-        (1, 1, 42622)
-        >>> [header, deflection_av, deflection_re, plotx, piezo] = \
-        load(ASYLUM5_DIR)
-        >>> print deflection_av.shape
-        (8, 8, 301)
-
-        * Parameters :
-            file_name : str
-                The file name (with the complete path) to load.
-
-        * Returns :
-            header : dict
-                The header dictionnary.
-            trace : 3D numpy.array
-                Contains the 3d array of the trace deflection.
-                trace[0,0,:] is the curve at pos_x = 0, pos_y = 0
-            retrace : 3D numpy.array
-                Contains the 3d array of the retrace deflection.
-                retrace[0,0,:] is the curve at pos_x = 0, pos_y = 0
-            plotx : 1D numpy.array
-                Contains the piezo positions (x scale).
-            piezo : 2D array
-                The height of the piezo at the end of the indentation.
-    """
-
-    value = {
-        'header': None,
-        'trace_x': None,
-        'retrace_x': None,
-        'trace_y': None,
-        'retrace_y': None,
-        'piezo': None,
-        'data_fid': None}
-    if os.path.isdir(file_name):
-        #print('directory')
-        # User wants to load a directory...
-        # Perhaps it's better to choose a single file...
-        if is_asylum_dir(file_name):
-            # This is an asylum directory.
-
-            __value = asylum.load(file_name)
-            value['piezo'] = __value['piezo']
-            value['data_fid'] = __value['fid']
-            value['header'] = __value['header']
-            header = __value['header']
-            #[trace, retrace, value['piezo'], header] = asylum.load(file_name)
-            #value['trace_y'] = trace[1]
-            #value['retrace_y'] = retrace[1]
-            #piezo = numpy.zeros(deflection_av.shape[0:2])
-            #value['trace_x'] = trace[0]
-            #value['retrace_x'] = retrace[0]
-        else:
-            raise TypeError('Not a supported AFM file format.')
-    elif is_nanoscope(file_name):
-        #print('Nanoscope')
-        header = nanoscope.lect_header(file_name)
-        [value['trace_y'], value['retrace_y']] = nanoscope.load_force_curves(
-                                                            file_name, header)
-        value['piezo'] = nanoscope.load_image(file_name, header)
-        # Creates the x vector
-        value['trace_x'] = numpy.arange(header['force_samples_per_curve']) * \
-                               header['x_factor']
-        value['retrace_x'] = value['trace_x']
-        header = nanoscope.clean_header(header)
-    elif is_jpk(file_name):
-        #print('jpk')
-        __value = jpk.load(file_name)
-        value['data_fid'] = __value['fid']
-        header = __value['header']
-#        print header
-#        trace_x = trace[0]
-#        retrace_x = retrace[0]
-#        trace_y = trace[1]
-#        retrace_y = retrace[1]
-        #value['piezo'] = jpk.load_piezo(header, value['data_fid'])
-        #piezo = numpy.zeros(trace_y.shape[0:2])
-        value['piezo'] = __value['piezo']
-    elif is_jpk_single(file_name):
-#        print('jpk_single')
-        [trace, retrace, header] = jpk.load_single(file_name)
-        value['trace_x'] = trace[0]
-        value['retrace_x'] = retrace[0]
-        value['trace_y'] = trace[1]
-        value['retrace_y'] = retrace[1]
-        value['piezo'] = numpy.zeros(value['trace_y'].shape[0:2])
-    elif is_asylum(file_name):
-        #print('asylum')
-        [trace, retrace, value['piezo'], header] = asylum.load(file_name)
-        value['trace_x'] = trace[0]
-        value['retrace_x'] = retrace[0]
-        value['trace_y'] = trace[1]
-        value['retrace_y'] = retrace[1]
-        value['piezo'] = numpy.zeros(value['trace_y'].shape[0:2])
-    elif csem.is_csem(file_name):
-        [trace, retrace, header, piezo] = csem.load(file_name)
-        value['trace_x'] = trace[0]
-        value['retrace_x'] = retrace[0]
-        value['trace_y'] = trace[1]
-        value['retrace_y'] = retrace[1]
-        value['piezo'] = piezo
-    else:
-        #print ('Not recognize')
-        raise TypeError('Not a supported AFM file format.')
-    # Add header for OpenFovea
-    header['event_dist_thresh'] = 0.0
-    header['thresh_event_fit_length'] = [None, None]
-    header['thresh_event_fit_plength'] = [None, None]
-    header['event_fit_model'] = None
-
-    value['header'] = header
-    #print value['piezo']
-    return value
-
-
-def is_nanoscope(file_name):
-    """
-    Test if the file comes from a veeco di nanoscope microscope
-
-    >>> is_nanoscope(NANOSCOPE_FILE)
-    True
-    >>> is_nanoscope(JPK_FILE)
-    False
-    """
-
-    file_id = open(file_name, 'rb')
-    line_in_mem = file_id.readline()
-    if not '\*Force file list' in line_in_mem:
-        # This is not a nanoscoe file
-        return False
-    else:
-        return True
-
-
-def is_jpk(file_name):
-    '''
-    Test if the file comes from a jpk microscope.
-
-    >>> is_jpk(JPK_FILE)
-    True
-    >>> is_jpk(ASYLUM5_FILE)
-    False
-    '''
-    this_file = open(file_name)
-    this_csv = csv.reader(this_file, delimiter=' ')
-    ftype = None
-    try:
-        first_line = this_csv.next()
-        ftype = 'csv'
-    except:  # [csv.Error, StopIteration], reason:
-        pass
-    #    return False
-    try:
-        fid = zipfile.ZipFile(file_name)
-        ftype = 'zip'
-    except:
-        pass
-    if ftype == 'csv':
-        if len(first_line) == 1:
-            return False
-        if not 'scanner:' in first_line[1]:
-            return False
-        else:
-            return True
-    elif ftype == 'zip':
-        if 'header.properties' in fid.namelist():
-            return True
-    else:
-        return False
-
-
-def is_jpk_zip(file_name):
-    '''
-    Test if the file is a zipped jpk
-    '''
-
-
-def is_jpk_single(file_name):
-    """
-        Test if the file comes from a jpk microscope and is made of a single
-        fc.
-    """
-    this_file = open(file_name)
-    this_csv = csv.reader(this_file, delimiter=' ')
-    try:
-        first_line = this_csv.next()
-    except csv.Error:
-        return False
-    if len(first_line) == 1:
-        return False
-    if not 'xPosition:' in first_line[1]:
-        return False
-    else:
-        return True
-
-
-def is_asylum(file_name):
-    """
-        Test if the file comes from an asylum microscope.
-
-        >>> is_asylum(ASYLUM5_FILE)
-        True
-        >>> is_asylum(NANOSCOPE_FILE)
-        False
-    """
-    if os.path.isdir(file_name):
-        return False
-    file_id = open(file_name)
-    ver_igor = unpack('h', file_id.read(2))[0]
-    if ver_igor in [1, 2, 3, 5]:
-        return True
-    else:
-        return False
-
-
-def is_asylum_dir(file_name):
-    """
-        Test if the directory is from asylum.
-
-        >>> is_asylum_dir(ASYLUM5_DIR)
-        True
-    """
-    if not os.path.isdir(file_name):
-        return False
-    dir_list = asylum.get_dir_list(file_name)
-    if len(dir_list) == 0:
-        return False
-    file_list = os.listdir(os.path.join(file_name, dir_list[0]))
-    _good_shape = [bool(re.match("Line\d+Point\d+.ibw", x)) for x in file_list]
-    if True in _good_shape:
-        file_list[0]
-        file_name = os.path.join(file_name, dir_list[0],
-                                 file_list[0])
-        return is_asylum(file_name)
-    else:
-        return False
-
-
-def load_curve(fid, pos, dtype, header, origin='relative'):
-    """
-        Load the curve on the fly.
-
-        * Parameters :
-            fid : instance of file id (obtained when opening a file)
-
-            pos : list : [pos_x, pos_y]
-                  The position of the curve to load.
-
-            dtype : str
-                    the curve data type to load.
-                    'trace_x', 'trace_y', 'retrace_x', 'retrace_y'
-            header : dict
-                  The microscope type.
-                  Currently supported values are : 'JPK', 'Asylum'
-            origin : str
-                     If the origin is 'relative', the curve beginns at 0.
-                     If the origin is 'absolute', the curve is not modified.
-
-        * Returns :
-            curve : array
-    """
-
-    if header['Microscope'] == 'JPK':
-        curve = jpk.load_curve(fid, pos, dtype)
-        #return jpk.load_curve(fid, pos, dtype, header['index_array'])
-    elif header['Microscope'] == 'Asylum':
-        curve = asylum.load_curve(fid, pos, dtype, header['index_array'])
-    else:
-        raise TypeError('The microscope type %s is not supported.' %
-                        header['Microscope'])
-#    if origin == 'relative':
-#        if 'x' in dtype:
-#            curve = curve - curve[0]
-#        elif 'y' in dtype:
-#            curve = curve - curve[-1]
-    if curve is None:
-        return curve
-#    if 'x' in dtype and curve[0] > curve[-1]:
-#        curve = curve[::-1]
-#    elif 'y' in dtype and curve[0] < curve[-1]:
-#        curve = curve[::-1]
-    return curve
-
-
-def force_load_array(fid, header):
-    """
-    This function loads the arrays from the NanoWizard3 zipped files.
-
-            * Parameters :
-                fid : instance of file id (obtained when opening a file)
-
-                header : dict
-                         The microscope type.
-                         Currently supported values are : 'JPK'
-
-            * Returns :
-                dictionnary with :
-                    'Index' : The index array (i.e. the folder name in the
-                              corresponding pixel) This index is generated from
-                              the coordinate in the header of each curve. This
-                              is useful if the index array automatically
-                              generated is wrong.
-                    'Piezo' : The piezo array. This is the height of the piezo
-                              at the end of the indentation. This array is used
-                              to generate the "zero force image" or "Topography
-                              image".
-    """
-
-    if header['Microscope'] == 'JPK':
-        return jpk.load_arrays(fid)
-
-if __name__ == '__main__':
-    ASYLUM5_FILE = '../../../docs/data/files/ASYLUM/Cell0005.ibw'
-    NANOSCOPE_FILE = '../../../docs/data/files/FR2310B.004'
-    JPK_FILE = \
-        '../../../docs/data/files/JPK/mappp-data-2008.11.07-11.43.24.map_txt'
-    ASYLUM5_DIR = '/home/charles/AFM/Asylum Files/Figures/Archive'
-    ASYLUM5_DIR = \
-        '/home/charles/AFM/Robert_Ross/cropstack cell1/cell100-Cropped fmap'
-    import doctest
-    doctest.testmod()
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/asylum.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/asylum.py
deleted file mode 100644
index 41e28c3..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/asylum.py
+++ /dev/null
@@ -1,524 +0,0 @@
-#! /usr/bin/env python
-#-*- coding: iso-8859-1 -*-
-
-"""
-    This module imports files from asylum microscopes. To use it make as 
-    follow :
-    
-    >>> [trace, retrace, header, piezo] = load(ASYLUM5_FILE)
-    >>> len(trace)
-    2
-    >>> len(trace[0]) == len(retrace[0])
-    True
-    
-    Trace[0] is the curve x and trace[1] is the array containing the y values
-    for all the force distance curves.
-    
-    >>> len(trace[0]) == len(trace[1][0][0])
-    True
-    
-    If you want to load a complete force spectroscopy data set :
-    
-    >>> [trace, retrace, header, piezo] = load(ASYLUM5_DIR)
-    >>> print trace[1].shape # The y arrays
-    (8, 8, 301)
-    >>> print trace[0].shape # The x array
-    (301,)
-"""
-
-__author__  = "Charles Roduit <charles.roduit at gmail.com>"
-__date__ = "20.07.2010"
-__license__ = "GNU Public License (GPL) version 3"
-__version__ = "0.1"
-
-from struct import unpack
-import os
-from datetime import datetime
-import numpy
-import re
-
-from common import Variables
-import afm_file
-#from afm_file import, is_asylum, is_asylum_dir
-GLOB_VARS = Variables()
-
-def load(file_name):
-    """
-        Load asylum file. It detects automatically if the given path is a file
-        or is an asylum path.
-        
-        * Parameters :
-            file_name : str
-                The complete path to open. The path contains the file or the
-                asylum path to open.
-        
-        * Returns :
-            trace : 3D numpy.array
-                Contains the 3d array of the trace deflection.
-                trace[0,0,:] is the curve at pos_x = 0, pos_y = 0
-            retrace : 3D numpy.array
-                Contains the 3d array of the retrace deflection.
-                retrace[0,0,:] is the curve at pos_x = 0, pos_y = 0
-            header : dict
-                Contains usefull information to understand the curves.
-            piezo : 2D numpy.array
-                The piezo position at the end of the indentation.
-        
-        To detect the type of the file see is_asylum and is_asylum_dir in
-        afm_file module.
-    """
-    value = {
-        'trace_x' : None,
-        'trace_y' : None,
-        'retrace_x' : None,
-        'retrace_y' : None,
-        'header' : None,
-        'fid' : None
-    }
-    if afm_file.is_asylum(file_name):
-        piezo = None
-        trace, retrace, header, piezo = get_file(file_name)
-        # reshape arrays to be a 3d array.
-        for key in trace:
-            trace[key].shape = (1, 1, trace[key].shape[0])
-        for key in retrace:
-            retrace[key].shape = (1, 1, retrace[key].shape[0])
-        value['trace_x'] = trace['lvdt']
-        value['trace_y'] =  trace['defl']
-        value['retrace_x'] = retrace['lvdt']
-        value['retrace_y'] =  retrace['defl']
-        value['header'] = header
-        value['piezo'] = piezo
-    elif afm_file.is_asylum_dir(file_name):
-        value['fid'], value['header'], value['piezo'] = load_dir(file_name)
-        #trace, retrace, header, piezo = load_dir(file_name)
-    value['piezo'] = value['piezo'] - value['piezo'].min()
-    return value
-    
-def load_dir(dir_name):
-    """
-        Load asylum file contained in a directory.
-        
-        * Parameters :
-            dir_name : str
-                The complete path to open.
-        
-        * Returns :
-            trace : 3D numpy.array
-                Contains the 3d array of the trace deflection.
-                trace[0,0,:] is the curve at pos_x = 0, pos_y = 0
-            retrace : 3D numpy.array
-                Contains the 3d array of the retrace deflection.
-                retrace[0,0,:] is the curve at pos_x = 0, pos_y = 0
-            header : dict
-                Contains usefull information to understand the curves.
-            piezo : 2D numpy.array
-                The piezo position at the end of the indentation.
-    """
-    dir_list = get_dir_list(dir_name)
-    size = [len(dir_list), 
-            len(get_file_list(os.path.join(dir_name, dir_list[0])))]
-    piezo = numpy.zeros((size[0], size[1]))
-    file_index = [['' for y in xrange(size[1])] for x in xrange(size[0])]#numpy.zeros((size[0], size[1]), dtype=str)
-    #trace = []
-    #retrace = []
-    header = []
-    for _item in dir_list:
-        folder_name = os.path.join(dir_name, _item)
-        file_list = get_file_list(folder_name)
-        
-        #pos_x = list(dir_list).index(_item)
-        for _f_item in file_list:
-            # File names are LineXXXXPointYYYY.ibw.
-            # We extract the pos_x and pos_y :
-            pos_x = int(_f_item[_f_item.rindex('e')+1:_f_item.rindex('P')])
-            pos_y = int(_f_item[_f_item.rindex('t')+1:_f_item.rindex('.')])
-            file_index[pos_x][pos_y] = os.path.join(folder_name, _f_item)
-            # load the file...
-            # _item[0] is trace, _item[1] is retrace, _item[2] is header and
-            # _itme[3] is piezo
-            _item = get_file(os.path.join(folder_name, _f_item))
-            #pos_y = list(file_list).index(_f_item)
-            #trace.append(_item[0])
-            #retrace.append(_item[1])
-            header.append(_item[2])
-            piezo[int(pos_x), int(pos_y)] = _item[3]
-    #length = max([len(item.values()[0]) for item in trace] + 
-    #                [len(item.values()[0]) for item in retrace])
-    #trace = reorder_curves(trace, size[0], size[1], length)
-    #retrace = reorder_curves(retrace, size[0], size[1], length)
-    header = header[0]
-    header['size_x'] = size[0]
-    header['size_y'] = size[1]
-    header['size'] = (size[0], size[1])
-    header['scan_size'] = (header['scan_size'], header['scan_size'])
-    header['number_curves'] = size[0] * size[1]
-    header['data_location'] = dir_name
-    #return [trace, retrace, header, piezo]
-    return file_index, header, piezo
-
-def reorder_curves(data, size_x, size_y, length):
-    """
-        Reorder the curves to be in two 3d array, one for the trace and one for
-        the retrace curve.
-        
-        * Parameters :
-            data : dict
-                contains a list of dictionnaries which contains at least 'lvdt'
-                and 'defl'.
-                e.g. data[0]['defl'] = array_like
-            size_x : int
-                The x size of the final array.
-            size_y : int
-                The y size of the final array.
-            length : int
-                The z size of the final array (the length of the curves).
-        
-        * Returns :
-            data : dict
-                data['lvdt'] : numpy.array
-                    Contains the 3d array of the piezo position
-                    data['lvdt'][0,0,:] is the curve at pos_x = 0, pos_y = 0
-                data['defl'] : numpy.array
-                    Contains the 3d array of the deflection
-                    data['lvdt'][0,0,:] is the curve at pos_x = 0, pos_y = 0
-    """
-    # Create the dictionnary that will contain arrays of the correct size
-    out = {}
-    for key in ['lvdt', 'defl']:#data[0].keys():
-        out[key] = numpy.empty((size_x, size_y+1, length))
-    # Fill them with the complete curves
-    pos = -1
-    for item in data:
-        pos += 1
-        for key in out:
-            if key == 'lvdt':
-                out[key][pos/size_x, pos % size_x, :] = complete_array(
-                                                                item[key],
-                                                                length,
-                                                                'add')
-            else:
-                out[key][pos/size_x, pos % size_x, :] = complete_array(
-                                                                item[key],
-                                                                length)
-    return out
-
-def complete_array(array, length, add_type='idem'):
-    """
-        Complete the array with arbitrary values at the end.
-        
-        * Parameters :
-            array : array_like
-                The array to be completed.
-            length : int
-                The final length
-            add_type : str
-                The type of completion (*default* : 'idem')
-            
-                * 'idem' : adds the same values at the end of the array
-                * 'add' : adds cummulative (n = n-1 + (n-2 - n-1)) so that the
-                          arrays increase linearly at the end.
-        
-        * Returns :
-            array : numpy array
-                The completed array.
-    """
-    array = list(array)
-    if add_type == 'idem':
-        array = numpy.r_[array, [array[-1]] * (length - len(array))]
-    elif add_type == 'add':
-        step = array[-1] - array[-2]
-        start = array[-1] + step
-        stop = start + step * (length - len(array))
-        array = numpy.r_[array, numpy.arange(start, stop, step)]
-    return array
-    
-def get_file(file_name):
-    """
-        Get the raw data and header. Need to be ordered to be incorporated in
-        OpenFovea.
-        
-        * Parameters :
-            file_name : str
-                The complete path for the file to open.
-        
-        * Returns :
-            trace : dict
-                Contains the arrays for the trace curve. This dictionnary is
-                composed of two 1D numpy array.
-                
-                * trace['lvdt'] for the x axis
-                * trace['defl'] for the deflection
-            retrace : dict
-                Contains the arrays for the retrace curve. This dictionnary is
-                composed of two 1D numpy array.
-                
-                * retrace['lvdt'] for the x axis
-                * retrace['defl'] for the deflection
-            header : dict
-                The note dictionnary
-            piezo : float
-                The height of the piezo at the end of the indentation
-    """
-    header = {}
-    file_id = open(file_name, 'rb')
-    ver_igor = unpack('=' + 'h', file_id.read(2))[0]
-    # Currently, only version 5 is supported.
-    if ver_igor == 5:
-        order = GLOB_VARS.asylum5_order
-        header_list = GLOB_VARS.asylum5_header
-    # Get the headers
-    for item in order:
-        _ud = header_list[item]
-        header[item] = _ud[2](unpack('='+_ud[0], file_id.read(_ud[1])))
-    # Some more information from the headers
-    if header['type'] != 0:
-        _ud = TYPE[header['type']]
-        data = unpack('=' + str(header['nbr_points']) + _ud[0],
-                      file_id.read(header['nbr_points'] * _ud[1]))
-        if ver_igor == 5:
-            _len = header['formula_size']
-            header['formula_data'] = unpack('=' + str(_len)+'s',
-                                            file_id.read(_len))[0]
-            _len = header['note_size']
-            note = unpack('=' + str(_len)+'s', file_id.read(_len))
-            _len = header['data_eunit_size']
-            header['extended_data_units'] = unpack('=' + str(_len) + 's',
-                                                   file_id.read(_len))[0]
-            header['dimension_units'] = [
-                        unpack('=' + str(_len) + 'c', file_id.read(_len)) 
-                        for _len in header['dim_eunit_size']
-                        ]
-            header['dimension_label'] = [
-                        unpack('=' + str(_len) + 's', file_id.read(_len))
-                        for _len in header['dim_label_size']
-                        ]
-            _len = header['string_indice_size']
-            header['string_indice'] = unpack('=' + str(_len) + 'l',
-                                             file_id.read(_len * 4))
-    data = numpy.asanyarray(data)
-    if header['n_dim'][2]:
-        raise TypeError('Problem in asylum file.\n'+
-                        'Want to reshape from array : %s to %s' %
-                        (data.shape, (header['n_dim'][1], header['n_dim'][0])))
-        
- #       data.shape = (header['n_dim'][1], header['n_dim'][0], header['n_dim'][2])
-    else:
-        data.shape = (header['n_dim'][1], header['n_dim'][0])
-    # I should reorder the header to have the minimal.
-    header = parse_note(note[0])
-    file_id.close()
-    average = average_signal(data[1], data[2], final_length=512)
-    # Get the middle point to separate the trace from the retrace curve
-    middle_point = numpy.nonzero(average[0] == average[0].max())[0][0]
-    trace = {
-             'defl' : average[1][:middle_point][::-1] * 1e9,
-             'lvdt' : average[0][:middle_point][::-1] * -1e9,
-             }
-    retrace = {
-             'defl' : average[1][middle_point:]* 1e9,
-             'lvdt' : average[0][middle_point:]* -1e9,
-             }
-    return [trace, retrace, header, data[2].max() * -1e9]
-    
-def parse_note(note):
-    """
-        Extracts the usefull data from the note.
-        
-        * Parameters :
-            note : dict
-                The note extracted from asylum file.
-            
-        * Returns :
-            extracted : dict
-                The usefull note.
-    """
-    # Usefull data, and the way to extract them are contained in the global
-    # variable NOTE_INDEX.
-    extracted = GLOB_VARS.common_header
-    for key in NOTE_INDEX:
-        _text = NOTE_INDEX[key][0]
-        _extract = NOTE_INDEX[key][1]
-        _index = note.index(_text)
-        _end = note[_index+1:].index('\r') + _index + 1
-        sub_note = note[_index:_end]
-        extracted[key] = _extract(sub_note)
-    try:
-        extracted['date'] = datetime.strptime(
-                                extracted['strdate'] + extracted['strtime'],
-                                '%a, %b %d, %Y%I:%M:%S %p')
-    except ValueError:
-        extracted['date'] = datetime.strptime(
-                                extracted['strdate'] + extracted['strtime'],
-                                '%Y-%m-%d%I:%M:%S %p')
-    extracted['Microscope'] = 'Asylum'
-    return extracted
-
-def get_dir_list(folder):
-    """
-        
-        Gets the folder list of an asylum foler.
-        
-        Asylum folders are organized like this :
-        
-        $ ls FMLine000
-        Line0000Point0000.ibw   Line0000Point0001.ibw
-        $ ls FMLine001
-        Line0001Point0000.ibw   Line0001Point0001.ibw 
-        
-        get_asylum_folder_list simply returns the ordered folder list that match
-        this organization.
-        
-        * Parameters :
-            folder : string
-                The path for the folder.
-        
-        * Returns :
-            folder_list : list
-                The list of the folders.
-    """
-    folder_list = os.listdir(folder)
-    # we should have the first folder being filenameNNNN
-    f_index = [bool(re.match("FMLine\d+", x)) for x in folder_list]
-    try:
-        basename =  folder_list[f_index.index(True)][:-4]
-    except ValueError:
-        # There is no True elements in this folder...
-        folder_list = []
-    else:
-        f_index = [bool(x.find(basename) + 1) for x in folder_list]
-        f_index = numpy.asarray(f_index)
-        folder_list = numpy.asarray(folder_list)
-        # Get only the correct items
-        folder_list = folder_list[f_index]
-        folder_list.sort()
-    return folder_list
-
-def get_file_list(folder):
-    """
-        Gets the file list from an asylum folder.
-        
-        * Parameters :
-            folder : string
-                The path for the folder.
-            
-        * Returns :
-            file_list : list
-                The list of the files.
-    """
-    # Sort the file list
-    file_list = numpy.asarray(os.listdir(folder))
-    file_index = numpy.asarray([bool(x.find('.ibw')) for x in file_list])
-    file_list = file_list[file_index]
-    file_list.sort()
-    return file_list
-
-def load_curve(fid, pos, dtype, curve_index):
-    """
-        Load the curve on the fly.
-        
-        * Parameters :
-            fid : instance of file id (obtained when opening a file)
-            
-            pos : list : [pos_x, pos_y]
-                  The position of the curve to load.
-            
-            dtype : str
-                    'trace_x', 'trace_y', 'retrace_x', 'retrace_y'
-                  
-        * Returns :
-            curve : arraytrace['lvdt']
-    """
-    if type(fid) == list:
-        data = get_file(fid[pos[0]][pos[1]])
-    else:
-        fcfolder = os.path.join('FMLine%04i'%pos[0], 'Line%04iPoint%04i.ibw'%(pos[0], pos[1]))
-        file_path = os.path.join(fid, fcfolder)
-        data = get_file(file_path)
-    if 'retrace' in dtype:
-        data = data[1]
-    elif 'trace' in dtype:
-        data = data[0]
-    if 'x' in dtype:
-        data = data['lvdt']
-    elif 'y' in dtype:
-        data = data['defl']
-    #print fid[pos[0]][pos[1]]
-    #print pos
-    #print dtype
-    #print curve_index
-    return data
-def average_signal(signal, x_scale, win_size=100, final_length=None):
-    """
-        Average the signal versus time.
-        
-        * Parameters :
-            signal : array_like
-                the array which contains the signal
-            x_scale : array_like
-                The array which contains the x scale.
-            win_size : int
-                The size (in pixel) of the window (*Default* = 100)
-            
-        * Returns :
-            average_x : array_like
-                The array that contains the new x scale.
-            average : array_like
-                The array that contains the averaged signal
-    """
-    begin = 0
-    end = len(signal)
-    if final_length is not None:
-        win_size = int(end / final_length)
-    t_slice = numpy.arange(begin, end, win_size)
-    average = []
-    average_x = []
-    for begin, end in zip(t_slice[:-1], t_slice[1:]):
-        average.append(signal[begin:end].mean())
-        average_x.append(x_scale[begin])
-        
-    return [numpy.array(average_x), numpy.array(average)]
-
-
-NOTE_INDEX = {'spring_constant' : ['\rSpringConstant:',
-                                    lambda x : float(x[16:])],
-              'scan_size' : ['\rScanSize:', lambda x : float(x[10:]) * 1e6],
-              'size_x' : ['\rScanPoints:', lambda x : int(x[12:])],
-              'size_y' : ['\rScanLines:', lambda x : int(x[11:])],
-              'sensit_deflection' : ['\rTriggerDeflection:',
-                                     lambda x : float(x[19:])],
-              'strdate' : ['\rDate', 
-                        lambda x : x[6:]],
-              'strtime' : ['\rTime', 
-                        lambda x : x[6:]],
-              'piezo_pos' : ['\rExtendZ:', lambda x : float(x[9:]) * 1e6],
-              'number_curves': ['\rXOPVersion', lambda x : 1], # just to force 1
-              }
-MIN_HEADER = ['scan_size', 'number_curves', 'size_x', 'size_y',
-              'spring_constant', 'sensit_deflection', 'date']
-TYPE = {2 : ['f', 4], #'float',
-        8 : ['c', 1], #'char',
-        16 : ['i', 4], #'int16',
-        32 : ['l', 4],#'int32',
-        72 : None, #'ubit8',
-        80 : None, #'uint16',
-        96 : None, #'uint',
-        }
-
-if __name__ == '__main__':
-#    import sys
-#    sys.path.append(os.path.abspath('./'))
-    ASYLUM5_FILE = '../../../docs/data/files/Asylum/Cell0005.ibw'
-    ASYLUM5_DIR = '/home/charles/AFM/Asylum Files/Figures/Archive'
-    ASYLUM5_DIR2 = '/home/charles/AFM/Asylum Files/Figures/remove/CPA22_00'
-#    import pylab
-#    TRACE, RETRACE, HEADER, PIEZO = load(ASYLUM5_DIR2)
-#    pylab.plot(TRACE[0], TRACE[1][0][0], 'ro')
-#    pylab.hold(True)
-#    pylab.plot(RETRACE[0], RETRACE[1][0][0], 'bo')
-#    pylab.xlabel('Scanner extention [nm]')
-#    pylab.ylabel('Cantilever deflection [nm]')
-#    pylab.show()
-#    print header
-    import doctest
-    doctest.testmod()
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/common.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/common.py
deleted file mode 100644
index 2e52d0d..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/common.py
+++ /dev/null
@@ -1,288 +0,0 @@
-# The header of a force volume file
-from datetime import datetime
-import re
-
-
-class Variables(object):
-
-    def __init__(self):
-        pass
-
-    def __getattribute__(self, key):
-        if key == 'common_header':
-            return {
-                'data_location': 'local',  # The location of the data. If
-                # local, all the data are in memory. Otherwise, the relative
-                # path to the data file is specified here.
-                'index_array': None,  # The index array. If the data are not
-                # local, the fd curves are located in separate folders. This
-                # index array contains the location for each fd curve.
-                'Microscope': None,  # The type of the microscope used.
-                'spring_constant': None,  # The spring constant of the
-                # cantilever. If the data needs no conversion, value is 1.
-                'scan_size': None,  # The size of the scan (in nm).
-                # Tuple (x, y)
-                'sensit_deflection': None,  # The sensitivity deflection
-                'number_curves': None,  # The number of curves that the file
-                # contains
-                'size_x': 0,  # The size in x direction.
-                'size_y': 0,  # The size in y direction.
-                'size': None,  # The tuple size (x, y). Goal is to replace the
-                # two previous.
-                'pixel_size': None,  # The size of the pixel.
-                'date': None,  # The date of the exeperiment.
-                'note': '/n',  # Some notes that appears on the original file.
-                'event_detect_weight': 2,  # The weight of the event
-                # detection.
-                'group': 0,  # To which group this file belongs.
-                'event_dist_thresh': 0.0,  # The event distance threshold.
-                'thresh_event_fit_length': [None, None],
-                'thresh_event_fit_plength': [None, None],
-                # The event fit model. Look at curve.event_fit to see the
-                # available models.
-                'event_fit_model': None,
-                # Tell if the event fit has to be aware or not about the point
-                # of contact.
-                'event_fit_from_poc': False,
-                'Masked': False}  # A switch to mask or not the data.}
-        if key == 'fv_header':
-            return {'Microscope': None,  # The type of the microscope used.
-                'di_version': None,  # TODO Nanoscope Specific
-                'spring_constant': None,  # The spring constant of the
-                                           # cantilever. If the data needs no
-                                           # conversion, value is 1.
-                'force_bytes_per_pixel': None,  # TODO Nanoscope Specific
-                'hard_z_scale': None,  # TODO Nanoscope Specific
-                'image_mode': 0,  # TODO Nanoscope Specific
-                # The mode. Only force volume is understood.
-                'image_scale': None,  # TODO Nanoscope Specific
-                'scan_size': None,  # The size of the scan (in nm)
-                'sensit_deflection': None,  # The sensitivity deflection
-                'sens_z_scan': None,  # TODO Nanoscope Specific
-                'force_samples_per_curve': None,  # TODO Nanoscope Specific
-                'image_number_lines': None,  # TODO Nanoscope Specific
-                'number_curves': None,  # The number of curves that the file
-                 # contains
-                'ramp_size': None,  # TODO Nanoscope Specific
-                'size_x': None,  # The size in x direction.
-                'size_y': None,  # The size in y direction.
-                # 'pixel_size': None,  # The size of the pixel.
-                'date': None,  # The date of the exeperiment.
-                'force_data_length': None,  # TODO Nanoscope Specific
-                'force_data_offset': None,  # TODO Nanoscope Specific
-                'image_length': None,  # TODO Nanoscope Specific
-                'image_offset': None,  # TODO Nanoscope Specific
-                'image_samps_per_line': None,  # TODO Nanoscope Specific
-                'matrix_length': None,  # TODO Nanoscope Specific
-                'x_factor': 1,  # TODO Nanoscope Specific
-                'note': '/n',  # Some notes that appears on the original file.
-                'event_detect_weight': 2,  # The weight of the event detection.
-                'group': 0,  # To which group this file belongs.
-                'event_dist_thresh': 0.0,   # The event distance threshold.
-                'thresh_event_fit_length': [None, None],
-                'thresh_event_fit_plength': [None, None],
-                # The event fit model. Look at curve.event_fit to see the
-                # available models.
-                'event_fit_model': None,
-                # Tell if the event fit has to be aware or not about the point
-                # of contact.
-                'event_fit_from_poc': False,
-                'Masked': False}  # A switch to mask or not the data.
-        if key == 'jpk_connector':
-            return {'fastSize:': ('scan_size', lambda x: eval(x) * 1E6),
-                    'numPoints:': ('number_curves', eval),
-                    'iLength:': ('size_x', eval),
-                    'jLength:': ('size_y', eval),
-                    'springConstant:': ('spring_constant', eval),
-                    'sensitivity:': ('sensit_deflection', eval),
-                    'date:': ('date', lambda x: datetime.strptime(x,
-                                            '%a %b %d %H:%M:%S %Z %Y'))}
-        if key == 'jpk_zip_connector':
-            return {
-        'quantitative-imaging-map.position-pattern.grid.ilength': 'size_x',
-        'quantitative-imaging-map.position-pattern.grid.jlength': 'size_y',
-        'force-scan-map.position-pattern.grid.ilength': 'size_x',
-        'force-scan-map.position-pattern.grid.jlength': 'size_y'}
-        if key == 'jpk_fc_connector':
-            return {'zRelativeEnd:': ('z_end', lambda x: eval(x)),
-                    'zRelativeStart:': ('z_start', lambda x: eval(x)),
-                    'direction:': ('direction', lambda x: x)
-                    }
-        if key == 'jpk_header':
-            return {'scanner': None,
-                    'gridPattern': None,
-                    'fastSize': None,
-                    'slowSize': None,
-                    'xOffset': None,
-                    'yOffset': None,
-                    'iLength': None,
-                    'jLength': None,
-                    'theta': None,
-                    'reflect': None,
-                    'numPoints': None,
-                    'forceSettings': None,
-                    'zRelativeStart': None,
-                    'zRelativeEnd': None,
-                    'forceBaseline': None,
-                    'forceBaselineMeasured': None,
-                    'forceRelativeSetpoint': None,
-                    'setpoint': None,
-                    'kLength': None,
-                    'zStartPauseOption': None,
-                    'zEndPauseOption': None,
-                    'tipsaverPauseOption': None,
-                    'feedbackMode': None,
-                    'traceScanTime': None,
-                    'retraceScanTime': None,
-                    'pauseBeforeFirst': None,
-                    'pauseAtStart': None,
-                    'pauseAtEnd': None,
-                    'pauseOnTipsaver': None,
-                    'scanner': None,
-                    'date': None}
-        if key == 'asylum5_header':
-            # The following is inspired from the file read_wave.m from ...
-            return {
-                    'checksum': ['h', 2, lambda x: x],  # Check sum of header
-                    # and wave header.
-                    'wfm_size': ['l', 4, lambda x: x],  # Size of wave header.
-                    'formula_size': ['l', 4, lambda x: x[0]],  # Size of the
-                    # dependency formula (0 if none).
-                    'note_size': ['l', 4, lambda x: x[0]],  # Size of the
-                    # notes...
-                    'data_eunit_size': ['l', 4, lambda x: x[0]],  # Size of the
-                    # extended data units.
-                    'dim_eunit_size': ['4l', 16, lambda x: x],  # Size of the
-                    # extended dimension unit. Need all data
-                    'dim_label_size': ['4l', 16, lambda x: x],  # Size of the
-                    # dimension labels.
-                    'string_indice_size': ['l', 4, lambda x: x[0]],  # Size of
-                    # the indices if it's a text.
-                    'option1': ['l', 4, lambda x: x],
-                    'option2': ['l', 4, lambda x: x],
-                    'next': ['l', 4, lambda x: x],
-                    'creation_date': ['l', 4, lambda x: x],
-                    'modification_date': ['l', 4, lambda x: x],
-                    'nbr_points': ['l', 4, lambda x: x[0]],
-                    'type': ['h', 2, lambda x: x[0]],  # The type of the data.
-                    # See TYPE global.
-                    'd_lock': ['h', 2, lambda x: x],  # ??
-                    'whpad1': ['c', 1, lambda x: x],
-                    'wh_version': ['h', 2, lambda x: x],
-                    'fseek': ['5c', 5, lambda x: x],
-                    'b_name': ['32c', 32, lambda x: x],
-                    'whpad2': ['l', 4, lambda x: x],
-                    'd_folder': ['l', 4, lambda x: x],
-                    'n_dim': ['4l', 16, lambda x: x],
-                    'sfa': ['4d', 32, lambda x: x],
-                    'sfb': ['4d', 32, lambda x: x],
-                    'data_units': ['4c', 4, lambda x: x],
-                    'dim_units0': ['4c', 4, lambda x: x],
-                    'dim_units1': ['4c', 4, lambda x: x],
-                    'dim_units2': ['4c', 4, lambda x: x],
-                    'dim_units3': ['4c', 4, lambda x: x],
-                    'fs_valid': ['h', 2, lambda x: x],
-                    'whpad3': ['h', 2, lambda x: x],
-                    'top_full_scale': ['d', 8, lambda x: x],  # The max and
-                    # max full scale value for wave.
-                    'bottom_full_scale': ['d', 8, lambda x: x],  # The max and
-                    # max full scale value for wave.
-                    'data_eunit': ['l', 4, lambda x: x],  # Ignore...
-                    'dim_eunits': ['4l', 16, lambda x: x],  # Ignore...
-                    'dim_labels': ['4l', 16, lambda x: x],  # Ignore...
-                    'wave_note_h': ['l', 4, lambda x: x],  # Ignore...
-                    'wh_unused': ['16l', 64, lambda x: x],  # Ignore...
-                    'a_modified': ['h', 2, lambda x: x],  # Ignore...
-                    'w_modified': ['h', 2, lambda x: x],  # Ignore...
-                    'sw_modified': ['h', 2, lambda x: x],  # Ignore...
-                    'use_bits': ['c', 1, lambda x: x],  # Ignore...
-                    'kind_bits': ['c', 1, lambda x: x],  # Ignore...
-                    'formula': ['l', 4, lambda x: x],  # Ignore...
-                    'dep_id': ['l', 4, lambda x: x],  # Ignore...
-                    'whpad4': ['h', 2, lambda x: x],  # Ignore...
-                    'src_folder': ['h', 2, lambda x: x],  # Ignore...
-                    'file_name': ['l', 4, lambda x: x],  # Ignore...
-                    's_indices': ['l', 4, lambda x: x],  # Ignore...
-                    }
-        if key == 'asylum5_order':
-            # This is the order where the header must be readen.
-            return ['checksum', 'wfm_size', 'formula_size', 'note_size',
-                    'data_eunit_size', 'dim_eunit_size', 'dim_label_size',
-                    'string_indice_size', 'option1', 'option2', 'next',
-                    'creation_date', 'modification_date', 'nbr_points', 'type',
-                    'd_lock', 'whpad1', 'wh_version', 'fseek', 'b_name',
-                    'whpad2', 'd_folder', 'n_dim', 'sfa', 'sfb', 'data_units',
-                    'dim_units0', 'dim_units1', 'dim_units2', 'dim_units3',
-                    'fs_valid', 'whpad3', 'top_full_scale',
-                    'bottom_full_scale', 'data_eunit', 'dim_eunits',
-                    'dim_labels', 'wave_note_h', 'wh_unused', 'a_modified',
-                    'w_modified', 'sw_modified', 'use_bits', 'kind_bits',
-                    'formula', 'dep_id', 'whpad4', 'src_folder', 'file_name',
-                    's_indices']
-
-# For informations:
-"""
-+===========+=======================+=======================+=================+
-| Format    | C Type                | Python type           | Standard size   |
-+===========+=======================+=======================+=================+
-| x         | pad byte              | no value              |                 |
-+-----------+-----------------------+-----------------------+-----------------+
-| c         | char                  | string of length 1    | 1               |
-+-----------+-----------------------+-----------------------+-----------------+
-| b         | signed char           | integer               | 1               |
-+-----------+-----------------------+-----------------------+-----------------+
-| B         | unsigned char         | integer               | 1               |
-+-----------+-----------------------+-----------------------+-----------------+
-| ?         | _Bool                 | bool                  | 1               |
-+-----------+-----------------------+-----------------------+-----------------+
-| h         | short                 | integer               | 2               |
-+-----------+-----------------------+-----------------------+-----------------+
-| H         | unsigned short        | integer               | 2               |
-+-----------+-----------------------+-----------------------+-----------------+
-| i         | int                   | integer               | 4               |
-+-----------+-----------------------+-----------------------+-----------------+
-| I         | unsigned int          | integer               | 4               |
-+-----------+-----------------------+-----------------------+-----------------+
-| l         | long                  | integer               | 4               |
-+-----------+-----------------------+-----------------------+-----------------+
-| L         | unsigned long         | integer               | 4               |
-+-----------+-----------------------+-----------------------+-----------------+
-| q         | long long             | integer               | 8               |
-+-----------+-----------------------+-----------------------+-----------------+
-| Q         | unsigned long long    | integer               | 8               |
-+-----------+-----------------------+-----------------------+-----------------+
-| f         | float                 | float                 | 4               |
-+-----------+-----------------------+-----------------------+-----------------+
-| d         | double                | float                 | 8               |
-+-----------+-----------------------+-----------------------+-----------------+
-| s         | char[]                | string                |                 |
-+-----------+-----------------------+-----------------------+-----------------+
-| p         | char[]                | string                |                 |
-+-----------+-----------------------+-----------------------+-----------------+
-| P         | void *                | integer               |                 |
-+-----------+-----------------------+-----------------------+-----------------+
-"""
-
-
-def extract_num(file_id, pos=0):
-    '''
-    Etract number from a string
-    '''
-    number = re.findall('([0-9]+[.0-9]*)', file_id)[pos]
-    try:
-        number = int(number)
-    except ValueError:
-        number = float(number)
-    return number
-
-
-def extract_num_rev(file_id):
-    '''
-    Etract number from a string
-    '''
-    number = re.findall('([0-9]+[.0-9]*)', file_id)[-1]
-    try:
-        number = int(number)
-    except ValueError:
-        number = float(number)
-    return number
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/csem.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/csem.py
deleted file mode 100644
index a6e4f12..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/csem.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#! /usr/bin/python
-# -*- coding: utf-8 -*-
-
-import csv
-import numpy
-
-from common import Variables
-GLOB_VARS = Variables()
-
-'''
-    Read file for the csem home made microscope.
-'''
-
-
-def is_csem(file_name):
-    this_file = open(file_name)
-    this_csv = csv.reader(this_file, delimiter='\t')
-    try:
-        line = this_csv.next()
-    except:
-        return False
-    else:
-        if line[0] == '':
-            return True
-        else:
-            return False
-
-
-def load(file_name):
-    '''
-        Test if the file is from csem.
-    '''
-    header = GLOB_VARS.common_header
-    header['Microscope'] = 'csem'
-    this_file = open(file_name)
-    this_csv = csv.reader(this_file, delimiter='\t')
-    array = []
-    for line in this_csv:
-        try:
-            float(line[0])
-        except:
-            if line[0] == '':
-                # list of the cantilever
-                cantilever = line
-                array_x = []
-                array_y = numpy.empty
-            elif line[0] in ['rad/nm']:
-                convertion = [1] + [float(item) for item in line[1:]]
-            elif line[0] == 'cste raideur levier N/m':
-                spring_cst = [float(item) for item in line[1:]]
-            elif line[0] == 'position scanner':
-                pos = line
-            else:
-                print('Unknown line :')
-                print line
-        else:
-            array.append([float(item) * conv
-                          for item, conv in zip(line, convertion)])
-    # Make headers
-    header['spring_constant'] = spring_cst
-    header['number_curves'] = len(cantilever) - 1
-    # Rearange the arrays
-    array_all = numpy.asanyarray(array)
-    array_x = -array_all[:, 0]
-    array_y = array_all[:, 1:]
-    cut = array_x.argmin()
-    trace_x = array_x[:cut][::-1]
-    retrace_x = array_x[cut:]
-    trace_y = array_y[:cut, :][::-1]
-    retrace_y = array_y[cut:, :]
-    trace_y = trace_y.transpose(1, 0)
-    trace_y.shape = (trace_y.shape[0], 1, trace_y.shape[1])
-    retrace_y = retrace_y.transpose(1, 0)
-    retrace_y.shape = (retrace_y.shape[0], 1, retrace_y.shape[1])
-    # Add last header informations
-    header['size_x'] = trace_y.shape[0]
-    header['size_y'] = trace_y.shape[1]
-    header['size'] = [header['size_x'], header['size_y']]
-    header['scan_size'] = [header['size_x'], header['size_y']]
-    piezo = numpy.ones(trace_y.shape[0:2])
-    piezo = piezo * array_x[-1]
-    return [trace_x, trace_y], [retrace_x, retrace_y], header, piezo
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/jpk.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/jpk.py
deleted file mode 100644
index 33b341e..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/jpk.py
+++ /dev/null
@@ -1,1376 +0,0 @@
-import csv
-import os
-import zipfile
-import tempfile
-from copy import deepcopy
-#from datetime import datetime
-from dateutil import parser as date_parser
-
-import numpy
-import Image
-
-from common import Variables
-GLOB_VARS = Variables()
-
-#CHANNEL_X = 'vDeflection'
-#CHANNEL_X = 'capacitiveSensorHeight' #
-CHANNEL_X = 'height'  # 'capacitiveSensorHeight'
-
-def load(file_name):
-    '''
-    Loads jpk force volume files
-    '''
-    ftype = get_file_type(file_name)
-    value = {
-        'adv_mat' : None,
-        'ret_mat' : None,
-        'header' : None,
-        'fid' : None
-    }
-    
-    if ftype == 'txt':
-        value['adv_mat'], value['ret_mat'], value['header'] = load_csv(file_name)
-        value['piezo'] = numpy.zeros(value['header']['size'])
-    elif ftype == 'zip':
-        value['fid'], value['header'] = load_zip(file_name)
-        value['piezo'] = None
-    return value
-
-def load_csv(file_name):
-    
-    this_file=open(file_name)
-    header = get_header_csv(this_file)
-    this_file.seek(0)
-    this_csv=csv.reader(this_file, delimiter=' ')
-    index=-1
-    for line in this_csv:
-        if len(line) == 3:
-            # We are in the header
-            if line[1] == 'iLength:':
-                x_size = int(line[2])
-            elif line[1] == 'jLength:':
-                y_size = int(line[2])
-            elif line[1] == 'kLength:':
-                curve_length = int(line[2])
-            elif line[1] == 'index:':
-                index = int(line[2])
-            elif line[1] == 'iIndex:':
-                x_pos = int(line[2])
-            elif line[1] == 'jIndex:':
-                y_pos = int(line[2])
-            elif line[1] == 'direction:':
-                direction = line[2]
-        elif len(line) == 1:
-            # We are between headers
-            if index == -1:
-                # We are at the very beginning and have to build the matrices
-                # that will be used to store the data.
-                shape = (x_size, y_size, curve_length)
-                adv_mat = [numpy.zeros(shape) for i in range(4)]
-                ret_mat = [numpy.zeros(shape) for i in range(4)]
-            else:
-                data_pos = 0
-            pass
-        elif len(line) == 4:
-            # We are in the datas
-            if direction == 'trace':
-                (adv_mat[0][x_pos, y_pos, data_pos],
-                 adv_mat[1][x_pos, y_pos, data_pos],
-                 adv_mat[2][x_pos, y_pos, data_pos],
-                 adv_mat[3][x_pos, y_pos, data_pos]) = line
-            elif direction == 'retrace':
-                (ret_mat[0][x_pos, y_pos, data_pos],
-                 ret_mat[1][x_pos, y_pos, data_pos],
-                 ret_mat[2][x_pos, y_pos, data_pos],
-                 ret_mat[3][x_pos, y_pos, data_pos]) = line
-            data_pos += 1
-    
-    # reorder the force curves...
-    adv_mat[0] = reorder_array(adv_mat[0], 1)
-    adv_mat[1] = reorder_array(adv_mat[1], header['spring_constant'])
-    adv_mat[2] = reorder_array(adv_mat[2], 1)
-    adv_mat[3] = reorder_array(adv_mat[3], 1)
-    ret_mat[0] = reorder_array(ret_mat[0], 1)
-    ret_mat[1] = reorder_array(ret_mat[1], header['spring_constant'])
-    ret_mat[2] = reorder_array(ret_mat[2], 1)
-    ret_mat[3] = reorder_array(ret_mat[3], 1)
-    return [adv_mat, ret_mat, header]
-
-def load_single(file_name):
-    """
-        Load jpk file made of a single force curve.
-    """
-    global_header = get_header_csv(file_name)
-    this_file=open(file_name)
-    this_csv=csv.reader(this_file, delimiter=' ')
-    index=-1
-    jpk_fv_con = GLOB_VARS.jpk_fc_connector
-    header = {}
-    vec_trace = [[],[],[],[]]
-    vec_retrace = [[],[],[],[]]
-    for line in this_csv:
-        if len(line) <= 1:
-            pass
-        elif line[0] == '#': # It's a header
-            if jpk_fv_con.has_key(line[1]):
-                key = jpk_fv_con[line[1]][0]
-                fct = jpk_fv_con[line[1]][1]
-                header[key] = fct(line[2])
-        else: # It's a data point
-            if header['direction'] == 'trace':
-                for item, vect in zip(line, vec_trace):
-                    vect.append(item)
-            if header['direction'] == 'retrace':
-                for item, vect in zip(line, vec_retrace):
-                    vect.append(item)
-    shape = (1,1,len(vec_trace[0]))
-    arr_trace = [numpy.zeros(shape) for i in range(4)]
-    
-    shape = (1,1,len(vec_retrace[0]))
-    arr_retrace = [numpy.zeros(shape) for i in range(4)]
-    
-    for i in range(4):
-        arr_trace[i][0,0,:] = numpy.asarray(vec_trace[i])
-        arr_retrace[i][0,0,:] = numpy.asarray(vec_retrace[i])
-    global_header['scan_size'] = (0, 0)
-    global_header['number_curves'] = 1
-    return [arr_trace, arr_retrace, global_header]
-
-def reorder_array(this_array, factor):
-    for x in range(this_array.shape[0]):
-        for y in range(this_array.shape[1]):
-            this_array[x,y,:] = this_array[x,y,::-1] * 1e9 / factor
-            this_array[x,y,:] = this_array[x,y,:] - min(this_array[x,y,:])
-    return this_array
-    
-def get_header_csv(file_name):
-    """
-        Get the header from files that have headers and data in the same file.
-    """
-    this_file = file_name
-    this_csv=csv.reader(this_file, delimiter=' ')
-    jpk_con = GLOB_VARS.jpk_connector
-    header = GLOB_VARS.common_header
-    for line in this_csv:
-        if len(line) > 4:
-            d_string = ''
-            for x in line[2:]: d_string = d_string + str(x) + ' '
-            d_string = d_string[:-1] # erase the last space
-            line = [line[0], line[1], d_string]
-        if len(line) == 3:
-            # We are in the header
-            if jpk_con.has_key(line[1]):
-                key = jpk_con[line[1]][0]
-                fct = jpk_con[line[1]][1]
-                
-                header[key] = fct(line[2])
-    header['matrix_length'] = header['size_x']
-    header['size'] = (header['size_x'], header['size_y'])
-    header['scan_size'] = (header['scan_size'], header['scan_size'])
-    return header
-
-
-def load_arrays(fid):
-    """
-        This function loads the arrays from the NanoWizard3 zipped files.
-
-            * Parameters :
-                None
-
-            * Returns :
-                dictionnary with :
-                    'Index' : The index array (i.e. the folder name in the
-                              corresponding pixel) This index is generated from
-                              the coordinate in the header of each curve. This
-                              is useful if the index array automatically
-                              generated is wrong.
-                    'Piezo' : The piezo array. This is the height of the piezo
-                              at the end of the indentation. This array is used
-                              to generate the "zero force image" or "Topography
-                              image".
-        If the index of curves were missgenerated or lost, we can regenerate
-        them from the headers. This take long time.
-    """
-    
-    main_header = get_header_zip(fid.open('header.properties'), htype='main')
-    shared_header = get_header_zip(fid.open('shared-data/header.properties'),
-                                            htype='shared')
-#    ############################################################################ 
-#    # Generate an index array :
-#    #
-#    index_array = numpy.empty((main_header['size_x'], main_header['size_y']),
-#                              dtype=int)
-#    index_array[:]=-1
-    piezo_array = numpy.zeros((main_header['size_x'], main_header['size_y']),
-                              dtype=float)
-#    
-#    pixel_size = [main_header['msize_x'] / main_header['size_x'],
-#                  main_header['msize_y'] / main_header['size_y']]
-#    # works if center of array is [0, 0]. Here is to modify if we have
-#    # different files. 
-#    center = [(-main_header['mcenter_x'] +
-#               (main_header['msize_x'] / 2))/pixel_size[0],
-#              (-main_header['mcenter_y'] + 
-#               (main_header['msize_y'] / 2))/pixel_size[1]]
-    for index_nb in range(main_header['index_min'], main_header['index_max']+1):
-        f_name = 'index/%s/header.properties'%index_nb
-        index_header = get_header_zip(fid.open(f_name),
-                                      htype='index')#, stop='position')
-        # Current pixel position :
-        pos = pos_from_index(index_nb,
-                             size=[main_header['size_x'], main_header['size_y']],
-                             mode=main_header['file_type'])
-#        pos = [round(index_header['mpos_x'] / pixel_size[0] + center[0]
-#                    - 0.5),
-#              round(index_header['mpos_y'] / pixel_size[1] + center[1]
-#                    - 0.5)]
-#        index_array[pos[0], pos[1]] = index_nb
-        gf = _global_factor(shared_header, CHANNEL_X)
-        
-        f_name = 'index/%i/segments/%i/'%(index_nb, 0)
-        
-        sgmt_header = get_header_zip(fid.open(f_name+'segment-header.properties'),
-                                 htype='segment')
-        sgmt_name = sgmt_header['%s.fname' % CHANNEL_X]
-        
-        curve = load_zip_curve(fid.open(f_name + sgmt_name),
-                                dtype='signedinteger',
-                                factor=gf)
-        piezo_array[pos[0], pos[1]] = curve[-1]*1e9
-    return {#'Index' : index_array,
-            'Piezo' : piezo_array}
-
-
-def load_zip(file_name):
-    """
-        Load file from zipped JPK.
-        
-        This will return only a header, as the FD curves will be loaded on
-        demand.
-    """
-    
-    header = GLOB_VARS.common_header
-    fid = zipfile.ZipFile(file_name, 'r')
-    
-    main_header = get_header_zip(fid.open('header.properties'), htype='main')
-    shared_header = get_header_zip(fid.open('shared-data/header.properties'),
-                                            htype='shared')
-    if main_header['size_unit'] == 'm':
-        main_header['msize_x'] = main_header['msize_x']*1e9
-        main_header['msize_y'] = main_header['msize_y']*1e9
-    
-    
-    header['number_curves'] = main_header['index_max'] - \
-                              main_header['index_min'] + 1
-    header['scan_size'] = [main_header['msize_x'], main_header['msize_y']]
-    header['size'] = [main_header['size_x'], main_header['size_y']]
-    header['size_x'] = main_header['size_x']
-    header['size_y'] = main_header['size_y']
-    header['data_location'] = file_name
-    header['Microscope'] = 'JPK'
-    header['sensit_deflection'] = 1
-    header['spring_constant'] = shared_header['spring_constant']
-    return [fid, header]
-
-
-def _get_lambda_factor(offset, factor):
-    return lambda x: (x+offset)*factor
-
-
-def _global_factor(header, dtype):
-    """
-        Header should be the shared header.
-        dtype : str
-                Is the type of curve you want to load.
-                'height', 'vDeflection'
-    """
-    n_index = header['name'].index(dtype) 
-    convert_list = header['conversion_list'][n_index].split(' ')
-    gf = header['encode_multiplier'][n_index]
-    of = header['encode_offset'][n_index]
-    fct = [_get_lambda_factor(of, gf)]
-    for conv_item in convert_list:
-#        t_fact = header[conv_item+'_multiplier'][n_index]
-#        t_off = header[conv_item+'_offset'][n_index]
-        if conv_item+'_multiplier' in header:
-            if type(header[conv_item+'_multiplier']) == list:
-                #print shared_header[conv_item+'_multiplier'][n_index]
-                t_fact = header[conv_item+'_multiplier'][n_index]
-            else:
-                t_fact = header[conv_item+'_multiplier']
-        else:
-            t_fact=1
-        if conv_item+'_offset' in header:
-            if type(header[conv_item+'_offset']) == list:
-                #print shared_header[conv_item+'_multiplier'][n_index]
-                t_off = header[conv_item+'_offset'][n_index]
-            else:
-                t_off = header[conv_item+'_offset']
-        else:
-            t_off=0
-        fct.append(_get_lambda_factor(t_off, t_fact))
-    return fct
-
-
-def index_from_pos(pos, size, mode):
-    """
-        Generate the curve index in function of the curve position.
-        This can differ corresponding to the imaging mode used.
-
-          qi-map         force-map
-            ...             ...
-        ---------->     ----------->
-        ---------->     <-----------
-        ---------->     ----------->
-    """
-    index = 0
-    if mode == 'force-scan-map':
-        if pos[1] % 2:
-            index = pos[1] * size[0] + (size[0] - pos[0] - 1)
-        else:
-            index = pos[1] * size[0] + pos[0]
-    elif mode == 'quantitative-imaging-map':
-        index = pos[1] * size[0] + pos[0]
-    else:
-        raise TypeError('Mode %s is not known' % mode)
-    return index
-
-def pos_from_index(index, size, mode):
-    """
-        Generate the curve position in function of the curve index.
-        This can differ corresponding to the imaging mode used.
-
-          qi-map         force-map
-            ...             ...
-        ---------->     ----------->
-        ---------->     <-----------
-        ---------->     ----------->
-    """
-    pos = [0, 0]
-    if mode == 'force-scan-map':
-        pos[1] = int(index/(size[0]))
-        if pos[1] % 2:
-            pos[0] = size[0] - (index) % (size[0]) - 1
-        else:
-            pos[0] = index % (size[0])
-    elif mode == 'quantitative-imaging-map':
-        pos[1] = int(index/(size[0]))
-        pos[0] = index % (size[0])
-    else:
-        raise TypeError('Mode %s is not known' % mode)
-    return pos
-
-def load_curve(fid, index, dtype):
-    """
-        Load the curve on the fly.
-        
-        * Parameters :
-            fid : instance of file id (obtained when opening a file)
-
-            mode : str
-                   The imaging mode used (see index_from_pos for more details).
-
-            dtype : str
-                    'trace_x', 'trace_y', 'retrace_x', 'retrace_y'
-                  
-        * Returns :
-            curve : array
-        
-    """
-
-    header = get_header_zip(fid.open('header.properties'), htype='main')
-    
-    c_index = index_from_pos(index,
-                       size=[header['size_x'], header['size_y']],
-                       mode=header['file_type'])
-    # read the shared header...
-    shared_header = get_header_zip(fid.open('shared-data/header.properties'),
-                                            htype='shared')
-    
-    # Read the header for this pixel...
-    if c_index < 0:
-        return None
-    sh_name = 'index/%i/header.properties'%c_index
-    segment_header=get_header_zip(fid.open(sh_name), htype='index')
-    if 'retrace' in dtype:
-        sgmt_nbr = 1
-    elif 'trace' in dtype:
-        sgmt_nbr = 0
-    f_name = 'index/%i/segments/%i/'%(c_index, sgmt_nbr)
-    sgmt_header = get_header_zip(fid.open(f_name+'segment-header.properties'),
-                                 htype='segment')
-    if 'x' in dtype:
-        sgmt_type = CHANNEL_X
-    elif 'y' in dtype:
-        sgmt_type = 'vDeflection'
-    # Creates the conversion factors :
-    gf = _global_factor(shared_header, sgmt_type)
-    sgmt_name = sgmt_header[sgmt_type+'.fname']
-    sgmt_format = sgmt_header[sgmt_type + '.format']
-    curve = load_zip_curve(fid.open(f_name + sgmt_name),
-                                dtype='signedinteger',
-                                factor=gf)
-    #curve = curve - min(curve)
-    curve = curve*1e9
-    return curve[::-1]
-    
-
-def load_zip_curve(fid, stype='raw', dtype='signedinteger', factor=[lambda x:x]):
-    '''
-    load the curve in the file.
-    
-    * Parameters :
-        fid : file object
-              curve file extracted from the zip file.
-        stype : str
-                save type. 'raw', 'ascii'
-                default set to 'raw'
-    * Returns :
-        curve : list
-                list of point that are loaded.
-    '''
-    dtype = '>' + DTYPES[dtype]
-    array_str = fid.read()
-    array = numpy.fromstring(array_str, dtype=dtype)
-    test = 10
-    for item in factor:
-        array = item(array)
-        test = item(test)
-    
-    return array
-def get_header_zip(header_file, htype='main', stop=None):
-    '''
-    Get the headers from zip file.
-    
-    * Parameters :
-        header_file : file object
-                      header file extracted from the zip file.
-        htype : str
-                header type. 'main', 'index' or 'segment'.
-                default set to 'main'
-        
-        stop : str or None
-                if define, the execution will stop as soon as the information
-                wanted is found.
-                values are : 'position'
-    
-    * Returns :
-        header : dict
-                 dictionnary with the header with the usefull key - value pair.
-                 Values that are not usefull for OpenFovea are lost.
-    '''
-    # Every header has its first line as a date
-    date = date_parser.parse(header_file.readline()[1:])
-    if htype == 'main':
-        __header = ZIP_MAIN_HEADER
-    elif htype == 'index':
-        __header = ZIP_INDEX_HEADER
-    elif htype == 'segment':
-        __header = ZIP_SEGMENT_HEADER
-    elif htype == 'shared':
-        __header = ZIP_SHARED_HEADER
-    header = {}
-    header['date'] = date
-        
-    for line in header_file.readlines():
-        line_parse = line.split('=')
-        if htype == 'shared':
-            head_parse = line_parse[0].split('.')
-            if head_parse[1].isdigit():
-                canal_nb = head_parse[1]
-                head_parse[1] = 'xx'
-            line_parse[0] = '.'.join(head_parse)
-        
-        param = __header[line_parse[0]]
-        if htype == 'shared':
-            head_parse = param[0].split('.')
-            if len(head_parse) > 1 and (head_parse[1] == 'xx' or head_parse[1].isdigit()):
-                head_parse[1] = canal_nb
-                head_parse = '.'.join(head_parse)
-                param[0] = head_parse
-        if 'time' in line_parse[0]:
-            line_parse[1] = ''.join(line_parse[1].split('\\'))
-        if line_parse[1] in ['NaN', 'NaN\n']:
-            header[param[0]] = numpy.nan
-        else:
-            header[param[0]] = param[1](line_parse[1])
-        del(param)
-    if htype == 'shared':
-        # We reorder the header, so that we have one 'name' list, which
-        # contains the name of the channels and the converters as a 'multiplier'
-        # list which contains the corresponding converters.
-        new_header = {}
-        channel_list = {}
-        for item in header:
-            splitted = item.split('.')
-            if len(splitted) > 1 and splitted[1].isdigit():
-                if not new_header.has_key(splitted[0]):
-                    new_header[splitted[0]] = \
-                                    [1 for i in range(header['channel_count'])]
-                new_header[splitted[0]][eval(splitted[1])] = header[item]
-                if splitted[0] == 'name':
-                    channel_list[splitted[1]]=header[item]
-            else:
-                new_header[item] = header[item]
-        keys = channel_list.keys()
-        keys.sort()
-        new_header['channel_list'] = [channel_list[i] for i in keys]
-        header = new_header
-    header_file.close()
-    return header
-    
-def get_file_type(file_name):
-    if zipfile.is_zipfile(file_name):
-        ftype = 'zip'
-    else:
-        ftype = 'txt'
-    return ftype
-
-DTYPES = {'signedinteger' : 'i',
-         'unsignedinteger' : 'I'}
-
-ZIP_MAIN_HEADER = {"jpk-data-file" : ['trash', lambda x: str(x).strip('\n')],
-"file-format-version" : ['trash', lambda x: str(x).strip('\n')],
-"file-format-features" : ['trash', lambda x: str(x).strip('\n')],
-"type" : ['file_type', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.indexes.type" : ['trash', eval],
-"quantitative-imaging-map.indexes.min" : ['index_min', eval],
-"quantitative-imaging-map.indexes.max" : ['index_max', eval],
-"quantitative-imaging-map.scan-number" : ['trash', eval],
-"quantitative-imaging-map.start-time" :
-                                    ['trash',
-                                     lambda x: date_parser.parse(x)],
-"quantitative-imaging-map.end-time" : 
-                                    ['trash',
-                                    lambda x: date_parser.parse(x)],
-"quantitative-imaging-map.description.comment" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.description.name" : 
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.description.probe" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.description.user-name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.description.instrument" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.description.source-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.description.modification-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.relative-setpoint" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.control-settings.control-settings-type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.control-settings.next-line-additional-delay" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.control-settings.next-line-additional-retract" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.control-settings.max-retries-per-position" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.control-settings.max-bad-adjecent-pixels" :
-                                    ['trash', eval],
-# Next, we capitalize the first letter => 'false' -> 'False' or 'true' -> 'True'
-"quantitative-imaging-map.settings.force-settings.control-settings.closed-loop" :
-                                    ['trash', lambda x: eval(x.title())],
-"quantitative-imaging-map.settings.force-settings.control-settings.start-option.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.control-settings.start-option.additional-retract" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.control-settings.start-option.start-time" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.control-settings.start-option.motion-time" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.control-settings.ttl-outputs.pins.list" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.control-settings.baseline-adjust-settings.enabled" :
-                                    ['trash', lambda x: eval(x.title())],
-"quantitative-imaging-map.settings.force-settings.control-settings.baseline-adjust-settings.interval" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.extend.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.extend.identifier.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.extend.identifier.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.extend.style" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.extend.duration" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.extend.num-points" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.extend.z-start" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.extend.z-end" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.extend.setpoint" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.retract.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.retract.identifier.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.retract.identifier.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.retract.style" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.retract.duration" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.retract.num-points" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.retract.z-start" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.retract.z-end" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.retract.setpoint" :
-                                    ['trash', eval],
-"quantitative-imaging-map.settings.force-settings.data-description.comment" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.data-description.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.data-description.probe" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.data-description.user-name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.data-description.instrument" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.data-description.source-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.settings.force-settings.data-description.modification-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.position-pattern.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.position-pattern.back-and-forth" :
-                                    ['trash', lambda x: eval(x.title())],
-"quantitative-imaging-map.position-pattern.grid.xcenter" :
-                                    ['mcenter_x', eval],
-"quantitative-imaging-map.position-pattern.grid.ycenter" :
-                                    ['mcenter_y', eval],
-"quantitative-imaging-map.position-pattern.grid.ulength" :
-                                    ['msize_x', eval],
-"quantitative-imaging-map.position-pattern.grid.vlength" :
-                                    ['msize_y', eval],
-"quantitative-imaging-map.position-pattern.grid.theta" :
-                                    ['trash', eval],
-"quantitative-imaging-map.position-pattern.grid.reflect" :
-                                    ['trash', lambda x: eval(x.title())],
-"quantitative-imaging-map.position-pattern.grid.unit.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.position-pattern.grid.unit.unit" :
-                                    ['size_unit', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.position-pattern.grid.ilength" :
-                                    ['size_x', eval],
-"quantitative-imaging-map.position-pattern.grid.jlength" :
-                                    ['size_y', eval],
-"quantitative-imaging-map.feedback-mode.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.spm-scanner-mode.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.spm-scanner-mode.software-linearized" :
-                                    ['trash', lambda x: eval(x.title())],
-"quantitative-imaging-map.spm-scanner-mode.xy-scanner.scanner" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.spm-scanner-mode.xy-scanner.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.spm-scanner-mode.xy-scanner.fancy-name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"quantitative-imaging-map.spm-scanner-mode.xy-scanner.description" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.indexes.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.indexes.min" :
-                                    ['index_min', eval],
-"force-scan-map.indexes.max" :
-                                    ['index_max', eval],
-"force-scan-map.scan-number" :
-                                    ['trash', eval],
-"force-scan-map.start-time" :
-                                    ['trash', lambda x: date_parser.parse(x)],
-"force-scan-map.end-time" :
-                                    ['trash', lambda x: date_parser.parse(x)],
-"force-scan-map.comment" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.description.comment" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.description.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.description.probe" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.description.user-name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.description.instrument" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.description.source-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.description.modification-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.extend-k-length" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.retract-k-length" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.extended-pause-k-length" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.retracted-pause-k-length" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.z-start-pause-option.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.z-end-pause-option.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.extend-scan-time" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.retract-scan-time" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.retracted-pause-time" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.extended-pause-time" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.data-description.comment" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.data-description.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.data-description.probe" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.data-description.user-name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.data-description.instrument" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.data-description.source-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.data-description.modification-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.start-with-retract" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-map.settings.force-settings.control-settings-type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.closed-loop" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-map.settings.force-settings.start-option.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.ttl-outputs.pins.list" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.pause-before-first.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.pause-before-first.identifier.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.pause-before-first.identifier.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.pause-before-first.style" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.pause-before-first.duration" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.pause-before-first.num-points" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.pause-before-first.pause-option.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.settings.force-settings.pause-before-first.height-limit" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.force-baseline-adjust-settings.enabled" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-map.settings.force-settings.force-baseline-adjust-settings.interval" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.force-baseline-adjust-settings.beginOfLine" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-map.settings.force-settings.force-baseline-adjust-settings.deadtimeBeforeSamples" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.force-baseline-adjust-settings.averageSamples" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.line-clock.active.extend" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-map.settings.force-settings.line-clock.active.retract" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-map.settings.force-settings.relative-setpoint" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.relative-z-start" :
-                                    ['trash', eval],
-"force-scan-map.settings.force-settings.relative-z-end" :
-                                    ['trash', eval],
-"force-scan-map.position-pattern.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.position-pattern.back-and-forth" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-map.position-pattern.grid.xcenter" :
-                                    ['mcenter_x', eval],
-"force-scan-map.position-pattern.grid.ycenter" :
-                                    ['mcenter_y', eval],
-"force-scan-map.position-pattern.grid.ulength" :
-                                    ['msize_x', eval],
-"force-scan-map.position-pattern.grid.vlength" :
-                                    ['msize_y', eval],
-"force-scan-map.position-pattern.grid.theta" :
-                                    ['trash', eval],
-"force-scan-map.position-pattern.grid.reflect" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-map.position-pattern.grid.unit.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.position-pattern.grid.unit.unit" :
-                                    ['size_unit', lambda x: str(x).strip('\n')],
-"force-scan-map.position-pattern.grid.ilength" :
-                                    ['size_x', eval],
-"force-scan-map.position-pattern.grid.jlength" :
-                                    ['size_y', eval],
-"force-scan-map.feedback-mode.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.spm-scanner-mode.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.spm-scanner-mode.software-linearized" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-map.spm-scanner-mode.xy-scanner.scanner" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.spm-scanner-mode.xy-scanner.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.spm-scanner-mode.xy-scanner.fancy-name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-map.spm-scanner-mode.xy-scanner.description" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-}
-
-ZIP_INDEX_HEADER = {
-"type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.force-segments.count" :
-                                    ['count', eval],
-"force-scan-series.header.type" :
-                                    ['trash' , lambda x: str(x).strip('\n')],
-"force-scan-series.header.position.x" :
-                                    ['mpos_x', eval],
-"force-scan-series.header.position.y" :
-                                    ['mpos_y', eval],
-"force-scan-series.header.position-index" :
-                                    ['pos_index', eval],
-"force-scan-series.header.force-settings.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.extend-k-length" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.retract-k-length" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.extended-pause-k-length" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.retracted-pause-k-length" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.z-start-pause-option.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.z-end-pause-option.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.extend-scan-time" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.retract-scan-time" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.retracted-pause-time" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.extended-pause-time" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.data-description.comment" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.data-description.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.data-description.probe" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.data-description.user-name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.data-description.instrument" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.data-description.source-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.data-description.modification-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.start-with-retract" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-series.header.force-settings.control-settings-type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.closed-loop" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-series.header.force-settings.start-option.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.ttl-outputs.pins.list" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.pause-before-first.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.pause-before-first.identifier.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.pause-before-first.identifier.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.pause-before-first.style" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.pause-before-first.duration" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.pause-before-first.num-points" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.pause-before-first.pause-option.type" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.header.force-settings.pause-before-first.height-limit" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.force-baseline-adjust-settings.enabled" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-series.header.force-settings.force-baseline-adjust-settings.interval" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.force-baseline-adjust-settings.beginOfLine" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-series.header.force-settings.force-baseline-adjust-settings.deadtimeBeforeSamples" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.force-baseline-adjust-settings.averageSamples" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.line-clock.active.extend" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-series.header.force-settings.line-clock.active.retract" :
-                                    ['trash', lambda x: eval(x.title())],
-"force-scan-series.header.force-settings.relative-setpoint" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.relative-z-start" :
-                                    ['trash', eval],
-"force-scan-series.header.force-settings.relative-z-end" :
-                                    ['trash', eval],
-"force-scan-series.description.comment" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.description.name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.description.probe" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.description.user-name" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.description.instrument" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.description.source-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-"force-scan-series.description.modification-software" :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.force-segments.count' :
-                                    ['count', eval],
-'quantitative-imaging-series.header.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.position.x' :
-                                    ['mpos_x', eval],
-'quantitative-imaging-series.header.position.y' :
-                                    ['mpos_y', eval],
-'quantitative-imaging-series.header.position-index' :
-                                    ['pos_index', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.relative-setpoint' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.control-settings-type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.next-line-additional-delay' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.next-line-additional-retract' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.max-retries-per-position' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.max-bad-adjecent-pixels' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.closed-loop' :
-                                    ['trash', lambda x: eval(x.title())],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.start-option.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.start-option.additional-retract' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.start-option.start-time' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.start-option.motion-time' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.ttl-outputs.pins.list' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.baseline-adjust-settings.enabled' :
-                                    ['trash', lambda x: eval(x.title())],
-'quantitative-imaging-series.header.quantitative-imaging-settings.control-settings.baseline-adjust-settings.interval' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.extend.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.extend.identifier.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.extend.identifier.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.extend.style' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.extend.duration' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.extend.num-points' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.extend.z-start' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.extend.z-end' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.extend.setpoint' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.retract.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.retract.identifier.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.retract.identifier.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.retract.style' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.retract.duration' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.retract.num-points' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.retract.z-start' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.retract.z-end' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.retract.setpoint' :
-                                    ['trash', eval],
-'quantitative-imaging-series.header.quantitative-imaging-settings.data-description.comment' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.data-description.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.data-description.probe' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.data-description.user-name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.data-description.instrument' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.data-description.source-software' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.header.quantitative-imaging-settings.data-description.modification-software' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.description.comment' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.description.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.description.probe' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.description.user-name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.description.instrument' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.description.source-software' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'quantitative-imaging-series.description.modification-software' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-}
-
-ZIP_SEGMENT_HEADER = {
-#Fri Dec 16 13:09:06 CET 2011
-'force-segment-header.force-segment-header-info.*' :
-                                    ['trash', eval],
-'force-segment-header.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header.num-points' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.duration' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.time-stamp' :
-                                    ['trash', lambda x: date_parser.parse(x)],
-'force-segment-header.baseline.baseline' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.baseline.measured' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.force-scan-flags.series-done' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.force-scan-flags.done-scanning' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.force-scan-flags.aborted' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.force-scan-flags.data-segment' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.force-scan-flags.z-start-out-of-range' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.force-scan-flags.z-end-out-of-range' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.force-scan-flags.setpoint-out-of-range' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.force-scan-flags.surface-incorrect' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.force-scan-flags.tipsaver-limit-exceeded' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.environment.xy-scanner-position-map.xy-scanners.position-index' :
-                                    ['trash', eval],
-'force-segment-header.environment.xy-scanner-position-map.xy-scanner.tip-scanner.position.x' :
-                                    ['mpos_x', lambda x: eval(x.title())],
-'force-segment-header.environment.xy-scanner-position-map.xy-scanner.tip-scanner.position.y' :
-                                    ['mpos_y', lambda x: eval(x.title())],
-'force-segment-header.environment.xy-scanner-position-map.xy-scanner.motorstage.position.x' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header.environment.xy-scanner-position-map.xy-scanner.motorstage.position.y' :
-                                    ['trash', lambda x: eval(x.title())],
-'channels.list' :
-                                    ['channel_list', lambda x: str(x).strip('\n').split(' ')],
-'channel.vDeflection.lcd-info.*' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.vDeflection.data.file.name' :
-                                    ['vDeflection.fname', lambda x: str(x).strip('\n')],
-'channel.vDeflection.data.file.format' :
-                                    ['vDeflection.format', lambda x: str(x).strip('\n')],
-'channel.vDeflection.data.num-points' :
-                                    ['vDeflection.num-points', lambda x: eval(x.title())],
-'channel.error.lcd-info.*' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.error.data.file.name' :
-                                    ['error.fname', lambda x: str(x).strip('\n')],
-'channel.error.data.file.format' :
-                                    ['error.format', lambda x: str(x).strip('\n')],
-'channel.error.data.num-points' :
-                                    ['error.num-points', lambda x: eval(x.title())],
-'channel.hDeflection.lcd-info.*' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.hDeflection.data.file.name' :
-                                    ['hDeflection.fname', lambda x: str(x).strip('\n')],
-'channel.hDeflection.data.file.format' :
-                                    ['hDeflection.format', lambda x: str(x).strip('\n')],
-'channel.hDeflection.data.num-points' :
-                                    ['hDeflection.num-points', lambda x: eval(x.title())],
-'channel.capacitiveSensorHeight.lcd-info.*' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.capacitiveSensorHeight.data.file.name' :
-                                    ['capacitiveSensorHeight.fname', lambda x: str(x).strip('\n')],
-'channel.capacitiveSensorHeight.data.file.format' :
-                                    ['capacitiveSensorHeight.format', lambda x: str(x).strip('\n')],
-'channel.capacitiveSensorHeight.data.num-points' :
-                                    ['capacitiveSensorHeight.num-points', lambda x: eval(x.title())],
-'channel.height.lcd-info.*' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.height.data.file.name' :
-                                    ['height.fname', lambda x: str(x).strip('\n')],
-'channel.height.data.file.format' :
-                                    ['height.format', lambda x: str(x).strip('\n')],
-'channel.height.data.num-points' :
-                                    ['height.num-points', lambda x: eval(x.title())],
-'channel.time.lcd-info.*' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.time.data.num-points' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.time.data.start' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.time.data.step' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.seriesTime.lcd-info.*' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.seriesTime.data.num-points' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.seriesTime.data.start' :
-                                    ['trash', lambda x: eval(x.title())],
-'channel.seriesTime.data.step' :
-                                    ['trash', lambda x: eval(x.title())],
-}
-ZIP_SHARED_HEADER = {
-'force-segment-header-infos.count' :
-                                    ['segment_count', eval],
-'lcd-infos.count' :
-                                    ['channel_count', eval],
-'force-segment-header-info.xx.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.approach-id' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.name.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.name.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.settings.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.settings.style' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.settings.feedback-mode.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.settings.segment-settings.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.settings.segment-settings.identifier.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.settings.segment-settings.identifier.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.settings.segment-settings.style' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.settings.segment-settings.duration' :
-                                    ['trash', eval],
-'force-segment-header-info.xx.settings.segment-settings.num-points' :
-                                    ['trash', eval],
-'force-segment-header-info.xx.settings.segment-settings.z-start' :
-                                    ['trash', eval],
-'force-segment-header-info.xx.settings.segment-settings.z-end' :
-                                    ['trash', eval],
-'force-segment-header-info.xx.settings.segment-settings.setpoint' :
-                                    ['trash', eval],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.defined' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanners.active-xy-scanner.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.tip-scanner.xy-scanner.scanner' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.tip-scanner.xy-scanner.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.tip-scanner.xy-scanner.fancy-name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.tip-scanner.xy-scanner.description' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.tip-scanner.xy-scanner-mode.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.tip-scanner.xy-scanner-mode.software-linearized' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.motorstage.xy-scanner.scanner' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.motorstage.xy-scanner.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.motorstage.xy-scanner.fancy-name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.motorstage.xy-scanner.description' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.motorstage.xy-scanner-mode.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanner.motorstage.xy-scanner-mode.software-linearized' :
-                                    ['trash', lambda x: eval(x.title())],
-'force-segment-header-info.xx.environment.xy-scanner-position-map.xy-scanners.list' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.channel.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.channel.name' :
-                                    ['name.xx', lambda x: str(x).strip('\n')],
-'lcd-info.xx.unit.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.unit.unit' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversions.list' :
-                                    ['conversion_list.xx', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversions.default' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversions.base' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.volts.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.volts.defined' :
-                                    ['trash', lambda x: eval(x.title())],
-'lcd-info.xx.conversion-set.conversion.distance.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.distance.defined' :
-                                    ['trash', lambda x: eval(x.title())],
-'lcd-info.xx.conversion-set.conversion.distance.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.distance.comment' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.distance.base-calibration-slot' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.distance.calibration-slot' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.distance.scaling.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.distance.scaling.style' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.distance.scaling.offset' :
-                                    ['distance_offset', eval],
-'lcd-info.xx.conversion-set.conversion.distance.scaling.multiplier' :
-                                    ['distance_multiplier', eval],
-'lcd-info.xx.conversion-set.conversion.distance.scaling.unit.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.distance.scaling.unit.unit' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.force.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.force.defined' :
-                                    ['trash', lambda x: eval(x.title())],
-'lcd-info.xx.conversion-set.conversion.force.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.force.comment' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.force.base-calibration-slot' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.force.calibration-slot' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.force.scaling.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.force.scaling.style' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.force.scaling.offset' :
-                                    ['force_offset.xx', eval],
-'lcd-info.xx.conversion-set.conversion.force.scaling.multiplier' :
-                                    ['spring_constant', eval],
-'lcd-info.xx.conversion-set.conversion.force.scaling.unit.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.force.scaling.unit.unit' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.absolute.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.absolute.defined' :
-                                    ['trash', lambda x: eval(x.title())],
-'lcd-info.xx.conversion-set.conversion.absolute.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.absolute.comment' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.absolute.base-calibration-slot' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.absolute.calibration-slot' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.absolute.scaling.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.absolute.scaling.style' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.absolute.scaling.offset' :
-                                    ['force_offset.xx', eval],
-'lcd-info.xx.conversion-set.conversion.absolute.scaling.multiplier' :
-                                    ['force_offset.xx', eval],
-'lcd-info.xx.conversion-set.conversion.absolute.scaling.unit.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.absolute.scaling.unit.unit' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.nominal.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.nominal.defined' :
-                                    ['trash', lambda x: eval(x.title())],
-'lcd-info.xx.conversion-set.conversion.nominal.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.nominal.comment' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.nominal.base-calibration-slot' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.nominal.calibration-slot' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.nominal.scaling.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.nominal.scaling.style' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.nominal.scaling.offset' :
-                                    ['nominal_offset.xx', eval],
-'lcd-info.xx.conversion-set.conversion.nominal.scaling.multiplier' :
-                                    ['nominal_multiplier.xx', eval],
-'lcd-info.xx.conversion-set.conversion.nominal.scaling.unit.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.nominal.scaling.unit.unit' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.calibrated.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.calibrated.defined' :
-                                    ['trash', lambda x: eval(x.title())],
-'lcd-info.xx.conversion-set.conversion.calibrated.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.calibrated.file' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.calibrated.comment' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.calibrated.base-calibration-slot' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.calibrated.calibration-slot' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.calibrated.scaling.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.calibrated.scaling.style' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.calibrated.scaling.offset' :
-                                    ['calibrated_offset.xx', eval],
-'lcd-info.xx.conversion-set.conversion.calibrated.scaling.multiplier' :
-                                    ['calibrated_multiplier.xx', eval],
-'lcd-info.xx.conversion-set.conversion.calibrated.scaling.unit.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.calibrated.scaling.unit.unit' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.elapsed.name' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.conversion-set.conversion.elapsed.defined' :
-                                    ['trash', lambda x: eval(x.title())],
-'lcd-info.xx.encoder.type' :
-                                    ['encoder_type.xx', lambda x: str(x).strip('\n')],
-'lcd-info.xx.encoder.scaling.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.encoder.scaling.style' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.encoder.scaling.offset' :
-                                    ['encode_offset.xx', eval],
-'lcd-info.xx.encoder.scaling.multiplier' :
-                                    ['encode_multiplier.xx', eval],
-'lcd-info.xx.encoder.scaling.unit.type' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-'lcd-info.xx.encoder.scaling.unit.unit' :
-                                    ['trash', lambda x: str(x).strip('\n')],
-}
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/nanoscope.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/nanoscope.py
deleted file mode 100644
index fd78e23..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/nanoscope.py
+++ /dev/null
@@ -1,305 +0,0 @@
-#! /usr/bin/python
-# -*- coding: utf-8 -*-
-'''
-This module is used to parse the files form Digital Instrument AFM
-'''
-__author__  = "Charles Roduit <charles.roduit at gmail.com>"
-__date__ = "01.07.2007"
-__license__ = "GNU Public License (GPL) version 3"
-__version__ = "0.1"
-
-import os
-from struct import unpack
-from datetime import datetime #strptime
-import zipfile
-
-import numpy as num
-
-from common import Variables, extract_num, extract_num_rev
-
-GLOB_VARS = Variables()
-
-
-def clean_header(header):
-    new_header = dict()
-    for item in GLOB_VARS.common_header:
-        try:
-            new_header[item] = header[item]
-        except KeyError:
-            # This key will keep the default value...
-            new_header[item] = GLOB_VARS.common_header[item]
-    return new_header
-        
-def lect_header(file_name):
-    """
-    Cette fonction lit le fichier d'entete du bioscope
-    Elle demande le nom du fichier
-    Elle retourne un dictionnaire repetroriant toutes
-    les information utiles pour traiter les courbes
-    forces-volumes ou/et l'image topologique.
-    
-    >>> header=lect_header(fileName)
-    """
-    
-    file_id = open(file_name,'rb')
-    line_in_mem = file_id.readline()
-
-    one_image = 0
-    header = GLOB_VARS.fv_header
-    header_pos = 'None'
-    version = {8.0: 0,
-               7.0: 0,
-               6.1: 0}
-    if not '\*Force file list' in line_in_mem:
-        # This is not a nanoscoe file
-        raise TypeError
-    while not '\*File list end' in line_in_mem:
-        ###### Determiner la postition dans l'entete ######
-        if '\*Force file list' in line_in_mem:
-            header_pos = 'File Description'
-        elif '\*Equipment list' in line_in_mem:
-            header_pos = 'Equipment list'
-        elif '\*Ciao scan list' in line_in_mem:
-            header_pos = 'Scan list'
-        elif '\*Ciao force list' in line_in_mem:
-            header_pos = 'Force list'
-        elif '\*Ciao image list' in line_in_mem:
-            header_pos = 'Image list'
-        elif '\*Ciao force image lis' in line_in_mem:
-            header_pos = 'Force image'
-        elif header_pos == 'File Description':
-            if line_in_mem.find('\Version:') + 1:
-                header['di_version'] = extract_num_rev(line_in_mem)
-                if 6130000 < header['di_version'] < 6200000:
-                    version[6.1] = 1
-                elif 7000000 < header['di_version'] < 8000000:
-                    version[7.0] = 1
-                elif 8000000 < header['di_version'] < 9000000:
-                    version[8.0] = 1
-            elif line_in_mem.find('\Date:') + 1:
-                #find the last digit
-                for place, item in enumerate(line_in_mem):
-                    if item.isdigit():
-                        last=place+1
-                date = line_in_mem[7:last]
-                
-                header['date'] = datetime.strptime(date, 
-                                                   '%I:%M:%S %p %a %b %d %Y')
-                
-        ######### Description de l'equipement ############
-        elif header_pos == 'Equipment list':
-            if line_in_mem.find('\@Sens. Zscan: V') + 1:
-                header['sens_z_scan'] = float(extract_num(line_in_mem))
-            elif (version[6.1] or version[7.0] or version[8.0]) and \
-                                    line_in_mem.find('\@Sens. Zsens: V') + 1:
-                                    
-                header['sens_z_scan'] = float(extract_num(line_in_mem))
-        ######### des parametres du scan ##################
-        elif header_pos == 'Scan list':
-            if line_in_mem.find('\Operating mode') + 1:
-                if line_in_mem.find('Force Volume') + 1:
-                    header['image_mode'] = 'Force Volume'
-            elif line_in_mem.find('\Scan size') + 1:
-                _ssize = extract_num(line_in_mem)
-                header['scan_size'] = (_ssize, _ssize)
-            elif (version[7.0] or version[8.0]) and line_in_mem.find('\Scan Size') + 1:
-                _ssize = extract_num(line_in_mem)
-                header['scan_size'] = (_ssize, _ssize)
-            elif line_in_mem.find('\@Sens. Deflection: V') + 1:
-                header['sensit_deflection'] = extract_num(line_in_mem)
-            elif (version[6.1] or version[7.0] or version[8.0] or version[6.1]) and \
-                    line_in_mem.find('\@Sens. DeflSens: V') + 1:
-                    
-                header['sensit_deflection'] = extract_num(line_in_mem)
-                
-        ####### Parametre de l'acquisition des courbes de force ######
-        elif header_pos == 'Force list':
-            if line_in_mem.find('\\force/line') + 1:
-                header['matrix_length'] = extract_num(line_in_mem)
-                #header['size_x'] = header['matrix_length']
-                #header['size_y'] = header['matrix_length']
-                header['size'] = (header['matrix_length'], header['matrix_length'])
-        ########## Parametres de l'image ########################
-        elif header_pos == 'Image list':
-            if line_in_mem.find('\Number of lines') + 1:
-                header['image_number_lines'] = extract_num(line_in_mem)
-            elif line_in_mem.find('\@2:Z scale') + 1:
-                header['image_scale'] = extract_num_rev(line_in_mem)
-            elif line_in_mem.find('\Samps/line') + 1:
-                header['image_samps_per_line'] = extract_num(line_in_mem)
-            elif line_in_mem.find('\Data length') + 1:
-                header['image_length'] = extract_num(line_in_mem)
-            elif line_in_mem.find('\Data offset') + 1:
-                if not one_image:
-                    header['image_offset'] = extract_num(line_in_mem)
-                    one_image = 1
-            elif line_in_mem.find('\Note:') + 1:
-                header['note'] = line_in_mem[7:]
-                while line_in_mem[-3:]=='\r\r\n':
-                    line_in_mem = file_id.readline()
-                    try:
-                        line_in_mem = u'' + line_in_mem
-                        header['note'] = header['note'] + line_in_mem
-                    except UnicodeDecodeError:
-                        line_in_mem = line_in_mem.decode('cp1251')
-                        header['note'] = header['note'] + line_in_mem
-                header['note'] = header['note'].replace('\r', '')
-
-        ######### Parametre des courbes de force ###############
-        elif header_pos == 'Force image':
-            if line_in_mem.find('\Data offset:') + 1:
-                header['force_data_offset'] = extract_num(line_in_mem)
-                
-            elif line_in_mem.find('\Data length:') + 1:
-                header['force_data_length'] = extract_num_rev(line_in_mem)
-                
-            elif line_in_mem.find('\Bytes/pixel:') + 1:
-                header['force_bytes_per_pixel'] = extract_num_rev(line_in_mem)
-                
-            elif line_in_mem.find('\Samps/line') + 1:
-                header['force_samples_per_curve'] = extract_num(line_in_mem)
-                
-            elif line_in_mem.find('\Data type: FORCE') + 1:
-                pass
-                ## Dans la version originale, il y avait un NFJflag=1...
-            elif line_in_mem.find('\@4:Z scale: V') + 1:
-                #header['z_scale'] = extract_num_rev(file_id)
-                header['hard_z_scale'] = extract_num(line_in_mem, pos=1)
-                
-            #elif line_in_mem.find('\@4:FV scale: V') + 1:
-            #    header['fv_scale'] = extract_num_rev(file_id)
-                
-            elif line_in_mem.find('\@4:Ramp size: V') + 1:
-                header['ramp_size'] = extract_num_rev(line_in_mem)
-            
-            elif line_in_mem.find('\Spring constant') + 1:
-                header['spring_constant'] = extract_num_rev(line_in_mem)
-                
-            elif (version[6.1] or version[7.0] or version[8.0] or version[6.1]) and \
-                            line_in_mem.find('\Spring Constant:') + 1:
-                header['spring_constant'] = extract_num_rev(line_in_mem)
-                
-        #####################################################
-        line_in_mem = file_id.readline()
-    header['x_factor'] = header['ramp_size'] * \
-                         header['sens_z_scan'] / header['force_samples_per_curve']
-
-    if header['force_data_length'] != (2 * (header['matrix_length'] ** 2) * 
-                                       header['force_bytes_per_pixel'] * 
-                                       header['force_samples_per_curve']):
-        header['matrix_length'] = int(num.sqrt(header['force_data_length'] /
-                                    (header['force_bytes_per_pixel'] * 
-                                     header['force_samples_per_curve'] * 
-                                     2)))
-#        header['size'] = (header['matrix_length'], header['matrix_length'])
-#        header['size_x'] = header['matrix_length']
-#        header['size_y'] = header['matrix_length']
-    header['number_curves'] = header['matrix_length'] ** 2
-    return header
-def load_force_curves(file_name, header):
-    '''
-    This function reads the AFM file (file_name) with the help of header 
-    information. The header is the dictionnary returned by the function 
-    lect_header.It returns the force curves contained in the file in two
-    3D numpy arrays. The first one contain the advance force curves and the 
-    second one the retraction force curves.
-
-    >>> [im_3d_av,3d_re]=load_force_curves(file_name,header)
-    >>> print(im_3d_av[0,0,:])   # print the values of the first advance 
-    >>>                          # force curve 
-    '''
-    
-    file_id = open(file_name, 'rb')
-    file_id.seek(header['force_data_offset'], 0)
-    
-    curve_av = num.zeros([header['force_samples_per_curve']])
-    curve_re = num.zeros([header['force_samples_per_curve']])
-    
-    im_3d_av = num.zeros([header['matrix_length'],
-                          header['matrix_length'],
-                          header['force_samples_per_curve']], num.float)
-                          
-    im_3d_re = num.zeros([header['matrix_length'],
-                          header['matrix_length'],
-                          header['force_samples_per_curve']], num.float)
-    pos_y = 0
-    pos_x = 0
-    while pos_y < header['matrix_length']:
-        while pos_x < header['matrix_length']:
-            # charger la courbe x, y
-            curve_av[:] = unpack(str(header['force_samples_per_curve']) + 'h',
-                            file_id.read(2 * header['force_samples_per_curve']))
-            curve_re[:] = unpack(str(header['force_samples_per_curve']) + 'h',
-                            file_id.read(2 * header['force_samples_per_curve']))
-            # mettre le minimun a 0
-            curve_av = curve_av - min(curve_av)
-            curve_re = curve_re - min(curve_re)
-            # Correction des echelles
-            # (http://web.mit.edu/cortiz/www/MultimodeInstructions.doc)
-            curve_av = curve_av * header['hard_z_scale'] * \
-                                  header['sensit_deflection']
-            curve_re = curve_re * header['hard_z_scale'] * \
-                                  header['sensit_deflection']
-                                  
-            im_3d_av[pos_x, pos_y, ] = correct_curve_drop(curve_av)
-            im_3d_re[pos_x, pos_y, ] = correct_curve_drop(curve_re)
-            pos_x += 1
-        pos_x = 0
-        pos_y += 1
-    return [im_3d_av, im_3d_re]
-    
-def correct_curve_drop(curve_y):
-    '''
-    Corrects the drops that occurs at the beginning of some force-distance
-    curves. This function corrects a bug from Veeco AFM.
-    '''
-    try:
-        first_non_zero = curve_y.nonzero()[0][-1]
-    except IndexError:
-        # The vector is full of zero, then do nothing
-        return curve_y
-    if not first_non_zero == len(curve_y)-1:
-        first_non_zero = curve_y.nonzero()[0][-1]
-        for indice in range(first_non_zero, len(curve_y)):
-            curve_y[indice] = curve_y[first_non_zero]
-        curve_y = curve_y - min(curve_y)
-    return curve_y
-    
-def load_image(file_name, header):
-    '''
-    This function returns the piezo height image contained in the AFM file
-    as a numpy matrix
-    
-    >>> imageMatrix=load_image(fileName,header)
-    '''
-    if header.has_key('image_offset') and header['image_offset'] is not None:
-        file_id = open(file_name, 'rb')
-        im_matrix = num.zeros([header['matrix_length'],
-                               header['matrix_length']], num.float)
-        pos_y = 0
-        pos_x = 0
-        while pos_y < header['matrix_length']:
-            while pos_x < header['matrix_length']:
-                temp_offset = header['image_offset'] + (
-                        2 * pos_x * (header['image_number_lines'] / 
-                                   header['matrix_length']) * 
-                                   header['image_number_lines'] + 
-                        2 * pos_y * (header['image_samps_per_line'] / 
-                                   header['matrix_length']))
-                file_id.seek(temp_offset, 0)
-                im_matrix[pos_y, pos_x] = unpack('h', file_id.read(2))[0]
-                pos_x += 1
-            pos_x = 0
-            pos_y += 1
-        ## Scale the image
-        im_matrix = im_matrix * (header['image_scale'] *
-                                 header['sens_z_scan'] / 
-                                 (2. ** (2 * 8)))
-        pos_x = 0
-        minimum = im_matrix.min()
-        im_matrix = im_matrix - minimum
-    else:
-        im_matrix = num.zeros([header['matrix_length'],
-                               header['matrix_length']])
-    return im_matrix
-    
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/succellus_import.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/succellus_import.py
deleted file mode 100644
index 022b1b6..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/file_util/succellus_import.py
+++ /dev/null
@@ -1,323 +0,0 @@
-#!/usr/bin/env python
-
-from xml.dom import minidom
-import time
-import pylab
-import numpy
-
-def parse(file_name):
-    xmldoc=minidom.parse("C050614A.002.xml")
-    child=xmldoc.firstChild
-    FVTags=["fileName", "mainExpIndice", "date", "header", "image",
-            "pointOfContact", "topography", "StiffnessesList", "events",
-            "CurveX", "CurveYAv", "CurveYRe"]
-    dateTag=["year", "month", "day", "hour", "minute", "second"]
-    headerTag=["SensZScan", "OpMode", "ScanSize", "NFL", "ScanListScanRate",
-               "SensitDeflection", "ScanRate", "ForceListForwVeloc>",
-               "ForceListRevVeloc", "NumberCurvesPerLines",
-               "ForceListFVScanRate", "Z_SCAN_START", "Z_SCAN_SIZE", "TTD",
-               "ImageOffset", "ImageLength", "ImageSampsPerLine",
-               "ImageNumberLines", "ImageScale", "ForceOffset",
-               "NumberPointsPerCurves", "SpringConstant", "Z_SCALE",
-               "HARD_Z_SCALE", "FV_SCALE", "RAMP_SIZE"]
-    imageTag=["data"]
-    imageAtt=["Contrast"]
-    pocTag=["data"]
-    pocAtt=["Contrast","Method"]
-    topoTag=["data"]
-    topoAtt=["Contrast"]
-    stiffListAtt=["Contrast","Deep","GlassFit","HertzModel","SegmentNumber",
-                 "TipCar-Radius","TipCar-SemiAngle"]
-    stiffListTag=["StiffnessMatrix"]
-    stiffMatrixAtt=["DeepNbr"]
-    stiffMatrixTag=["data"]
-    eventAtt=["Type"]
-    eventTag=["EventDetail","EventMatrix"]
-    eventDetAtt=["PosX","PosY","XValues","YValues","force","jumpSlope","maxX",
-                 "maxY","minX","minY"]
-    EventMatrixTag=["data"]
-    CurveYAvTag=["data"]
-    CurveYReTag=["data"]
-    result=dict()
-
-def xmlExtractImage(elm):
-    nodeDic=dict()
-    attDic=dict()
-    for att in ["Contrast","Method","DeepNbr"]:
-        if elm.hasAttribute(att):
-            attDic[att]=elm.getAttribute(att)
-    nodeDic["attributes"]=attDic
-    matrix=[]
-    for data in elm.childNodes:
-        if data.nodeName=="data":
-            matrix.append([float(s) for s in
-                                data.childNodes[0].data.split(",")[0:-1]])
-    nodeDic["matrix"]=numpy.array(matrix)
-    return nodeDic
-    
-def xmlExtractVector(elm):
-    vectors=list()
-    for data in elm.childNodes:
-        if data.nodeName=="data":
-            vectors.append([float(s) for s in
-                                data.childNodes[0].data.split(",")[0:-1]])
-    vectors=numpy.array(vectors)
-    return vectors
-
-def restructure_header(old_header, version):
-    header = dict()
-    if not version:
-        # we come from the succellus version
-        header['FVSCALE']=old_header['FV_SCALE']
-        header['ForceListFVScanRate']=old_header['ForceListFVScanRate']
-        ## miss ForceListForwVeloc
-        header['ForceListForwVeloc']=old_header['ForceListForwVeloc']
-        header['ForceListRevVeloc']=old_header['ForceListRevVeloc']
-        header['Force Data offset']=old_header['ForceOffset']
-        #header[]=old_header['HARD_Z_SCALE']
-        header['ImageLength']=old_header['ImageLength']
-        header['ImageNumberLines']=old_header['ImageNumberLines']
-        #header['ImageOffset']=old_header['ImageOffset']
-        header['ImageSampsPerLine']=old_header['ImageSampsPerLine']
-        header['ImageScale']=old_header['ImageScale']
-        #header['NFL']=old_header['NFL']
-        header['matrix_length']=old_header['NumberCurvesPerLines']
-        header['size_x'] = header['matrix_length']
-        header['size_y'] = header['matrix_length']
-        header['ImageSampsPerLine']=old_header['NumberPointsPerCurves']
-        header['image mode']=old_header['OpMode']
-        header['RAMPSIZE']=old_header['RAMP_SIZE']
-        header['ScanListScanRate']=old_header['ScanListScanRate']
-        #header['scan rate']=old_header['ScanRate']
-        header['scan size']=old_header['ScanSize']
-        header['sens z scan']=old_header['SensZScan']
-        header['sensit deflection']=old_header['SensitDeflection']
-        header['spring_constant']=old_header['SpringConstant']
-        header['TTD']=old_header['TTD']
-        header['ZSCALE']=old_header['Z_SCALE']
-        header['Z_SCAN_SIZE']=old_header['Z_SCAN_SIZE']
-        header['ZSCANSTART']=old_header['Z_SCAN_START']
-    header['matrix_length'] = int(header['matrix_length'])
-    header['size_x'] = int(header['size_x'])
-    header['size_y'] = int(header['size_y'])
-    header['spring_constant'] = float(header['spring_constant'])
-    return header
-    
-def restructure_stiffness(old_stiffness, version):
-    stiffness = dict()
-    if not version:
-        for key in old_stiffness.keys():
-            if key == 'GlassFit':
-                stiffness['glass'] = -float(old_stiffness[key][0])
-                #print type(stiffness['glass'])
-            elif key == 'SegmentNumber':
-                stiffness['nbParts'] = int(old_stiffness[key])
-                #TODO introduce the stiffness tomography...
-                if not stiffness['nbParts']:
-                    stiffness['nbParts'] = 4
-            elif key == 'Deep':
-                stiffness['sizeParts'] = float(old_stiffness[key])
-            else:
-                stiffness[key] = old_stiffness[key]
-    #print stiffness
-    return stiffness
-            
-def restructure_event(old_event, version):
-    event = list()
-    if not version:
-        # we come from the succellus version
-        for old_item in old_event:
-            item = dict()
-            item['pos_x'] = old_item['PosX']-1
-            item['pos_y'] = old_item['PosY']-1
-            item['slice'] = slice(old_item['XValues'][0],
-                                  old_item['XValues'][-1])
-            item['min'] = None
-            item['max'] = None
-            item['slope'] = old_item['jumpSlope']
-            item['force'] = old_item['force']
-            event.append(item)
-    return event
-    
-def restructure_curves(old_curve_matrix, version):
-    if not version:
-        #curve_matrix = old_curve_matrix[:,:,::-1]
-        pass
-    pass
-    #return curve_matrix
-
-def xmlExtractFV(fileName):
-    xmldoc=minidom.parse(fileName)
-    child=xmldoc.firstChild
-    FVTags=["fileName","mainExpIndice","date","header","image","pointOfContact",
-            "topography","StiffnessesList","events","CurveX","CurveYAv",
-            "CurveYRe"]
-    dateTag=["year","month","day","hour","minute","second"]
-    headerTag=["SensZScan","OpMode","ScanSize","NFL","ScanListScanRate",
-               "SensitDeflection","ScanRate","ForceListForwVeloc",
-               "ForceListRevVeloc","NumberCurvesPerLines","ForceListFVScanRate",
-               "Z_SCAN_START","Z_SCAN_SIZE","TTD","ImageOffset","ImageLength",
-               "ImageSampsPerLine","ImageNumberLines","ImageScale","ForceOffset",
-               "NumberPointsPerCurves","SpringConstant","Z_SCALE","HARD_Z_SCALE",
-               "FV_SCALE","RAMP_SIZE"]
-    imageTag=["data"]
-    imageAtt=["Contrast"]
-    pocTag=["data"]
-    pocAtt=["Contrast","Method"]
-    topoTag=["data"]
-    topoAtt=["Contrast"]
-    stiffListAtt=["Contrast","Deep","GlassFit","HertzModel","SegmentNumber",
-                 "TipCar-Radius","TipCar-SemiAngle"]
-    stiffListTag=["StiffnessMatrix"]
-    stiffMatrixAtt=["DeepNbr"]
-    stiffMatrixTag=["data"]
-    eventAtt=["Type"]
-    eventTag=["EventDetail","EventMatrix"]
-    eventDetAtt=["PosX","PosY","XValues","YValues","force","jumpSlope","maxX",
-                 "maxY","minX","minY"]
-    EventMatrixTag=["data"]
-    CurveYAvTag=["data"]
-    CurveYReTag=["data"]
-    result=dict()
-    if child.hasAttribute('openfovea:version'):
-        aex_version = child.getAttribute('openfovea:version')
-    else:
-        aex_version = 0
-    for elm in child.childNodes:
-        if elm.nodeName==FVTags[0]:#fileName
-            result["name"]=elm.childNodes[0].data
-            
-        elif elm.nodeName==FVTags[1]:#mainExpIndice
-            result["indice"]=int(elm.childNodes[0].data)
-            
-        elif elm.nodeName==FVTags[2]:#date
-            date=dict()
-            for dateElm in elm.childNodes:
-                if dateElm.nodeName in dateTag:
-                    date[str(dateElm.nodeName)]=int(dateElm.childNodes[0].data)
-            result["date"]=date
-            del(date)
-            
-        elif elm.nodeName==FVTags[3]:#header
-            header=dict()
-            for headerElm in elm.childNodes:
-                if headerElm.nodeName in headerTag:
-                    header[str(headerElm.nodeName)]=headerElm.childNodes[0].data
-            header = restructure_header(header, aex_version)
-            result["header"]=header
-            del(header)
-            
-        elif elm.nodeName==FVTags[4]:#Piezo Image
-            result['piezo_array']=xmlExtractImage(elm)['matrix']
-        elif elm.nodeName==FVTags[5]:#Point of contact
-            result["poc_array"]=xmlExtractImage(elm)['matrix']
-        elif elm.nodeName==FVTags[6]:#zero force image
-            result["topography"]=xmlExtractImage(elm)
-            
-        elif elm.nodeName==FVTags[7]:#StiffnessesList
-            attDic=dict()
-            nodeDic=dict()
-            #TODO Pretty import values
-            for att in stiffListAtt:
-                if elm.hasAttribute(att):
-                    attDic[att]=elm.getAttribute(att)
-            attDic = restructure_stiffness(attDic, aex_version)
-            nodeDic["properties"]=attDic
-            matrixList=[]
-            for childElm in elm.childNodes:
-                if childElm.nodeName=="StiffnessMatrix":
-                    matrixList.append(xmlExtractImage(childElm))
-            matrix=[]
-            for depthMatrix in matrixList:
-                matrix.append(depthMatrix['matrix'])
-            nodeDic["array"]=numpy.array(matrix)
-            nodeDic["array"] = nodeDic["array"].transpose(2,1,0)
-            nodeDic["array"] = numpy.ma.MaskedArray(
-                                        nodeDic["array"], 
-                                        mask = nodeDic["array"] == 0)
-            result["stiffness"]=nodeDic
-            del(attDic,nodeDic,matrix,matrixList)
-            
-        elif elm.nodeName==FVTags[8]:#events
-            events_det=list()
-            #TODO Pretty import values
-            matrix = None
-            for childElm in elm.childNodes:
-                if childElm.nodeName=="EventDetail":
-                    thisEvt=dict()
-                    for att in eventDetAtt:
-                        if childElm.hasAttribute(att):
-                            thisEvt[att]=childElm.getAttribute(att)
-                            if att in ["XValues","YValues"]:
-                                thisEvt[att]=[float(s) for s in 
-                                            thisEvt[att][0:-1].split(",")]
-                            else:
-                                thisEvt[att]=float(thisEvt[att])
-                    events_det.append(thisEvt)
-                elif childElm.nodeName=="EventMatrix":
-                    matrix=xmlExtractImage(childElm)
-                    matrix=matrix["matrix"]
-            events=dict()
-            events_det = restructure_event(events_det, aex_version)
-            events["detail"]=events_det
-            events["matrix"]=matrix
-            result["events"]=events
-            del(events,matrix)
-            
-        elif elm.nodeName==FVTags[9]:#CurveX
-            result["curve_x_array"]=[float(s) for s in 
-                                    elm.childNodes[0].data.split(",")[0:-1]]
-            result['curve_x_array'] = numpy.asarray(result['curve_x_array'][::-1])
-            
-        elif elm.nodeName==FVTags[10]:#CurveYAv
-            result["trace_array"]=xmlExtractVector(elm)
-            if result.has_key("header"):
-                nbLines=int(result["header"]["matrix_length"])
-                nbPoints=result["trace_array"].shape[1]
-                result["trace_array"]=result["trace_array"].reshape(nbLines,nbLines,nbPoints)
-                #result['trace_array'] = result['trace_array'].transpose(1,0,2)
-            #result['trace_array'] = restructure_curves(result['trace_array'], 
-            #                                           aex_version)
-            
-        elif elm.nodeName==FVTags[11]:#CurveYRe
-            result["retrace_array"]=xmlExtractVector(elm)
-            if result.has_key("header"):
-                nbLines=int(result["header"]["matrix_length"])
-                nbPoints=result["retrace_array"].shape[1]
-                result["retrace_array"]=result["retrace_array"].reshape(nbLines,nbLines,nbPoints)
-                #result['retrace_array'] = result['retrace_array'].transpose(1,0,2)
-            #result['retrace_array'] = restructure_curves(result['retrace_array'], 
-            #                                             aex_version)
-    result['header']['date'] = result['date']
-    return result
-    
-def xmlExtractExperiment(fileName):
-    xmldoc=minidom.parse(fileName)
-    child=xmldoc.firstChild
-    node=["date","auteur","description","NumberForceVolumeFiles","ForceVolumeNames"]
-    result=dict()
-    description=list()
-    result["ForceVolumeNames"]=list()
-    for elm in child.childNodes:
-        if elm.nodeName==node[0]:
-            result["date"]=time.strptime(elm.childNodes[0].data,'%d-%b-%Y')
-        elif elm.nodeName==node[1]:
-            result["author"]=elm.childNodes[0].data
-        elif elm.nodeName==node[2]:
-            description.append(elm.childNodes[0].data)
-        elif elm.nodeName==node[3]:
-            result["numberFiles"]=int(elm.childNodes[0].data)
-        elif elm.nodeName==node[4]:
-            for child in elm.childNodes:
-                if child.nodeName=='data':
-                    result["ForceVolumeNames"].append(child.childNodes[0].data)
-    strDesc=str()
-    for line in description:
-        strDesc=strDesc+line+'\n'
-    result['comment']=strDesc[0:-1]
-    return result
-if __name__=="__main__":
-    result=xmlExtractExperiment("experiment.xml")
-    
-    #result=xmlExtractFV("C050614A.002.xml")
-    print result
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/misc.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/misc.py
deleted file mode 100644
index 8aecc9b..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/misc.py
+++ /dev/null
@@ -1,365 +0,0 @@
-#! /usr/bin/python
-# -*- coding: utf-8 -*-
-'''
-This module contains the second stage posprocessing tools.
-'''
-__author__  = "Charles Roduit <charles.roduit at gmail.com>"
-__date__ = "28.12.2008"
-__license__ = "GNU Public License (GPL) version 3"
-__version__ = "0.1"
-
-from warnings import warn
-import os
-import csv
-
-import numpy
-import urllib2
-import datetime
-
-def remove_from_mask(data, mask):
-    """
-        Remove data from the mask.
-        
-        Let's have a data of this kind :
-        
-        >>> import numpy
-        >>> data = [{'pos_x' : 0, 'pos_y' : 0, 'item' : 0},\
-                    {'pos_x' : 0, 'pos_y' : 1, 'item' : 1},\
-                    {'pos_x' : 0, 'pos_y' : 2, 'item' : 2},\
-                    {'pos_x' : 0, 'pos_y' : 3, 'item' : 3},\
-                    {'pos_x' : 1, 'pos_y' : 3, 'item' : 4},\
-                    {'pos_x' : 2, 'pos_y' : 0, 'item' : 5},\
-                    {'pos_x' : 2, 'pos_y' : 3, 'item' : 6},\
-                    ]
-        
-        And let's have a mask of this kind :
-        
-        >>> mask = numpy.array([[True, True, False, False],\
-                    [True, True, False, False],\
-                    [True, True, False, False],\
-                    [True, True, False, False]])
-        
-        Now, let's apply the remove from mask :
-        
-        >>> new_list = remove_from_mask(data, mask)
-    """
-    # Data can be from event structure.
-    # In the data structure, we have info about the position on the array. We
-    # then exclude data that are in the mask. data['pos_x'] and data['pos_y']
-    new_list = []
-    for item in data:
-        if not mask[item['pos_x'], item['pos_y']]:
-            new_list.append(item)
-    return new_list
-
-def generate_mask(array, value):
-    mask = array < mdata
-    return mask
-
-def mask_bool(mask_1, mask_2, fct):
-    """
-    Make boolean operation on mask arrays.
-
-    Boolean operation can be AND, OR, XOR, NOT
-
-    >>> array_1 = [True, True, False, False]
-    >>> array_2 = [False, True, False, True]
-    >>> mask_bool(array_1, array_2, "AND")
-    array([False,  True, False, False], dtype=bool)
-    >>> mask_bool(array_1, array_2, "OR")
-    array([ True,  True, False,  True], dtype=bool)
-    >>> mask_bool(array_1, array_2, "XOR")
-    array([ True, False, False,  True], dtype=bool)
-    >>> mask_bool(array_1, array_2, "NOT")
-    >>> mask_bool(array_1, array_2, "NOT")
-    array([ True, False, False, False], dtype=bool)
-    """
-
-    # If the two arrays does not have the same shape, raise exception
-    #if numpy.shape(mask_1) != numpy.shape(mask_2):
-    #    raise ValueError, "operands could not be broadcast together with shapes {0} {1}".format(numpy.shape(mask_1), numpy.shape(mask_2))
-    #__mask_1 = check_bool(mask_1)
-    #__mask_2 = check_bool(mask_2)
-    if fct == "AND":
-        return numpy.logical_and(mask_1, mask_2)
-    elif fct == "OR":
-        return numpy.logical_or(mask_1, mask_2)
-    #elif fct == "NOT":
-    #    return numpy.logical_and(mask_1, mask_2)
-    elif fct == "XOR":
-        return numpy.logical_xor(mask_1, mask_2)
-    else:
-        raise ValueError, "function %s is not known"%(fct)
-    
-def check_bool(array):
-    """
-    Check if array is boolean and change it if not.
-    """
-
-    try:
-        mtype = array.dtype
-    except:
-        __array = numpy.array(array, dtype=bool)
-    else:
-        if mtype is not bool:
-            __array = numpy.array(array, dtype=bool)
-        else:
-            __array = array
-    return array
-
-def generate_array(data, dtype, shape):
-    """
-        Generates the array corresponding to the data. Data is a list of
-        dictionnary. These dictionnaries should, at least, contain the following
-        keys : 'pos_x' and 'pos_y' to inform on the position on the array and
-        dtype for the value that should come in the array (with some exeptions,
-        see parameters below).
-        
-        Parameters :
-            data : list
-                List of dictionnaries. All dictionnaries should contain the
-                following keys :
-                    'pos_x' and 'pos_y' : position in the array
-                    ttype : the threshold type
-                    dtype : the data to insert in the array
-            dtype : str
-                The data type to insert in the array. This should be one key
-                present in the dictionnaries or :
-                'count' : The number of data that are in each array position.
-            shape : tuple
-                The shape of the returned array.
-        
-        Returns :
-            new_array : 2D numpy.array
-                The array generated with the parameters.
-        >>> data = [{'pos_x' : 0, 'pos_y' : 0, 'item' : 2},\
-                    {'pos_x' : 0, 'pos_y' : 1, 'item' : 2},\
-                    {'pos_x' : 0, 'pos_y' : 1, 'item' : 1},\
-                    {'pos_x' : 0, 'pos_y' : 2, 'item' : 2},\
-                    {'pos_x' : 0, 'pos_y' : 3, 'item' : 2},\
-                    {'pos_x' : 1, 'pos_y' : 3, 'item' : 3},\
-                    {'pos_x' : 2, 'pos_y' : 0, 'item' : 1},\
-                    {'pos_x' : 2, 'pos_y' : 3, 'item' : 2},\
-                    ]
-        >>> new_data = remove_from_threshold(data, 'item', 1)
-        >>> narray = generate_array(new_data, 'count', (4,4))
-        >>> print narray
-        [[ 1.  2.  1.  1.]
-         [ 0.  0.  0.  1.]
-         [ 1.  0.  0.  1.]
-         [ 0.  0.  0.  0.]]
-    """
-    new_array = numpy.zeros(shape)
-    for item in data:
-        res = False
-        if dtype == 'count':
-            new_array[item['pos_x'], item['pos_y']] += 1
-        else:
-            # Get the correct value to fill the array
-            if dtype in ['fit_length']:
-                try:
-                    value = item[dtype][0]
-                except TypeError:
-                    value = None
-            else:
-                value = item[dtype]
-            # If there is no value, nothing to do.
-            if value is None:
-                res = False
-            else:
-                res = value > new_array[item['pos_x'], item['pos_y']]
-            if res:
-                new_array[item['pos_x'], item['pos_y']] = value
-    return new_array
-
-def remove_from_threshold(data, atype, avalue):
-    """
-        Remove from the data the type that are below a value.
-        
-        >>> import numpy
-        >>> data = [{'min' : -0.5, 'max' : 0,'loading_rate' : 0.1, 'dist' : 10 },\
-                    {'min' : -0.6, 'max' : -0.1,'loading_rate' : 0.2, 'dist' : 11 },\
-                    {'min' : -0.5, 'max' : 0,'loading_rate' : 0.15, 'dist' : 12 },\
-                    {'min' : -0.4, 'max' : 0.1,'loading_rate' : 0.12, 'dist' : 9 },\
-                    {'min' : -0.3, 'max' : 0.2,'loading_rate' : 0.11, 'dist' : 11 },\
-                    {'min' : -0.5, 'max' : 0,'loading_rate' : 0.09, 'dist' : 10 },\
-                    {'min' : -0.6, 'max' : -0.1,'loading_rate' : 0.11, 'dist' : 12 },\
-                    ]
-        >>> new_list = remove_from_threshold(data, 'dist', 10)
-        >>> #new_list = remove_from_threshold(data, 'distance', 10)
-        >>> new_list = remove_from_threshold([], 'dist', 10)
-    """
-    if type(avalue) in [float, int]:
-        # before, avalue was a single string.
-        avalue = [avalue, None]
-    if data is None or len(data) == 0:
-        return data
-    if atype not in data[0].keys():
-        raise AttributeError, atype + ' not a valid key for your data.'
-    if atype in ['fit_length', 'fit_plength']:
-        # In those cases, the data is in a list where the first is the value and
-        # the second is the standard deviation like : [value, stdev]
-        try:
-            if avalue[0] is not None:
-                data = [item for item in data if item[atype][0] >= avalue[0]]
-        except TypeError:
-            pass
-        try:
-            if avalue[1] is not None:
-                data = [item for item in data if item[atype][0] <= avalue[1]]
-        except TypeError:
-            pass
-    else:
-        if avalue[0] is not None:
-            data = [item for item in data if item[atype] >= avalue[0]]
-        if avalue[1] is not None:
-            data = [item for item in data if item[atype] <= avalue[1]]
-    return data
-
-def flatten(data):
-    """
-        Flatten an image.
-        
-        >>> import numpy
-        >>> data = numpy.array([range(10) for i in range(10)])
-        >>> flatten_data = flatten(data)
-        
-    """
-    vect_x = numpy.arange(data.shape[1])
-    # Determine the slope of the drift.
-    power = [numpy.polyfit(vect_x, line, 1)[0] for line in data]
-    m_pow = numpy.mean(power)
-    # Correct the image with the average slope.
-    new_data = [line - m_pow * vect_x for line in data]
-    new_data = numpy.array(new_data)
-    return new_data
-
-def get_message(curr_id, app_name='OpenFovea', app_version='0.1a1'):
-    """
-        Get message from the server.
-    """
-    message = None
-    headers = {'User-Agent' : '%s/%s'%(app_name, app_version)}
-    if curr_id == datetime.datetime(1900, 1, 1):
-        # This is the first run.
-        # Display then the welcome dialog
-        _link = 'http://www.freesbi.ch/docs/openfovea/welcome'
-    else:
-        _link = 'http://www.freesbi.ch/docs/openfovea/message'
-    _req = urllib2.Request(_link, headers=headers)
-    try:
-        _url = urllib2.urlopen(_req, timeout=0.1)
-    except urllib2.URLError:
-        _url = None
-    if _url is not None:
-        _message = _url.readlines()
-        if _message[0][:2] == 'id':
-            # we had a page, but not the one expected...
-            _new_msgid = _message[0].strip('\n').split(' = ')[1]
-            if _new_msgid == 'today':
-                _new_msgid = datetime.datetime.today()
-            else:
-                _new_msgid = datetime.datetime.strptime(_new_msgid,
-                                                        '%Y, %m, %d')
-            if _new_msgid > curr_id:
-                message = _message[0:]
-                curr_id = _new_msgid
-        _url.close()
-    return message, curr_id
-
-def ismasked(value):
-    '''
-        Return TRUE if the value is masked, of FALSE if not.
-        Value has to be a scalar.
-        
-        >>> import numpy
-        >>> ismasked(1)
-        False
-        >>> test = numpy.ma.array([1,2,3,4], mask=[0,0,1,1])
-        >>> ismasked(test[0])
-        False
-        >>> ismasked(test[3])
-        True
-        
-        Only scalar object can be tested with this function :
-        >>> ismasked(test)
-        Traceback (most recent call last):
-        ...
-        TypeError: Only scalar object can be tested this way.
-
-    '''
-    good_type = True
-    try:
-        len(value)
-        good_type = False
-    except:
-        pass
-    if not good_type:
-        raise TypeError, "Only scalar object can be tested this way."
-    try:
-        result = (type(value) == numpy.ma.core.MaskedConstant)
-    except AttributeError:
-        result = (type(value) == numpy.ma.core.MaskedArray)
-    return result
-
-def export_list(filename, list_array, header, preambule=None, transpose=False):
-    """
-        Export a list of array in csv.
-        
-        >>> list = [range(10), range(10), range(20), range(20)]
-        >>> header = ['1st', '2nd', '3rd', '4th']
-        >>> export_list('test.csv', list, header, transpose=True)
-    """
-    
-    # test that the length of all elements are the same.
-    
-    length = [len(item) for item in list_array]
-    curves = complete_list(list_array)
-    if transpose:
-        curves = curves.transpose(1,0)
-    
-    ## generate the filename
-    split_filename = os.path.splitext(filename)
-    if split_filename[1] in ['.csv', '.txt']:
-        filename = split_filename[0]
-    else:
-        # It is probably not an extention, then restore it
-        filename = split_filename[0] + split_filename[1]
-    
-    filename = filename + '.csv'
-    old_masked_print_option = numpy.ma.masked_print_option.display()
-    numpy.ma.masked_print_option.set_display('')
-    
-    # Write the file.
-    fid = open(filename, 'wb')
-    fcsv = csv.writer(fid)
-    if preambule:
-        fcsv.writerow(preambule)
-    fcsv.writerow(header)
-    for item in curves:
-        fcsv.writerow(item)
-    numpy.ma.masked_print_option.set_display(old_masked_print_option)
-    
-def complete_list(list_array):
-    """
-        Complete a list of array in order that all elements has the same
-        length.
-        
-        >>> list = [range(10), range(20)]
-        >>> new_list = complete_list(list)
-    """
-    
-    max_length = max([len(item) for item in list_array])
-    diff = [max_length - len(item) for item in list_array]
-    
-    mask = numpy.zeros((len(list_array), max_length))
-    array = numpy.zeros((len(list_array), max_length))
-    for item, itarray, itmask in zip(list_array, array, mask):
-        itarray[:len(item)] = item
-        itmask[len(item):] = 1
-    new_array = numpy.ma.array(array, mask=mask)
-    return new_array
-if __name__ == "__main__":
-    
-    import doctest
-    doctest.testmod()
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/opengl.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/opengl.py
deleted file mode 100644
index 6b31730..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/opengl.py
+++ /dev/null
@@ -1,689 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-
-"""
-    This opengl code was higly inspired from the pyopengl documentation, and
-    particularly on the NeHe tutorials, thank's a lot to them !
-"""
-from copy import deepcopy
-
-import numpy
-from OpenGL.GL import *
-from OpenGL.GLUT import *
-from OpenGL.GLU import *
-from gtk.gtkgl.apputils import *
-
-from matplotlib.pylab import pcolor
-import time
-
-from misc import ismasked
-
-class Topography(GLScene,
-             GLSceneButton,
-             GLSceneButtonMotion):
-    """
-        Create a 3D view of an array, the color is based on the color array and
-        the topography on the array.
-        
-        To create a view, follow the following simple steps :
-        
-        >>> import numpy
-        >>> array = numpy.random.randn(32, 32)
-        >>> color_array = numpy.random.randn(32, 32)
-        >>> Topography(array, color_array)
-    """
-    
-    def __init__(self, array, color_array=None, clut=None):
-        GLScene.__init__(self,
-                         gtk.gdkgl.MODE_RGB   |
-                         gtk.gdkgl.MODE_DEPTH |
-                         gtk.gdkgl.MODE_DOUBLE)
-        self.window = 0 # the glut window
-        self.rotation = 0.0 # the rotation angle for the object
-        self.array = array
-        self.rot = [1, 1, 1]
-        self.zoom = 20
-        self.translate = [0, 0, 0]
-        # This is the Color Look-Up Table (CLUT)
-        if color_array is not None:
-            if clut is None:
-                clut = (array.min(), array.max())
-            self.clut = pcolor(numpy.array([[clut[0], clut[1]] for i in range(2)]))
-        else:
-            self.clut = None # Have to define it later...
-        
-        self.mouse_eventpos_begin = [0, 0] # To record the position 
-                                           # of the mouse during an event
-        self.slice = {'begin' : [0, 0, 0],  # This is the portion of the array
-                      'end' : [-1, -1, -1]} # to display
-        ### Initialize the Window
-        # pass argument to init
-        if array is not None:
-            self.coordinate = make_coordinate(array, self.clut)
-            self.all_coordinate = deepcopy(self.coordinate)
-        glHint(GL_CLIP_VOLUME_CLIPPING_HINT_EXT, GL_FASTEST)
-        
-        glutInit()
-        #glutCreateWindow('OpenGL Tutorial 1')
-    def init(self):
-        glEnable(GL_LIGHTING)
-        glEnable(GL_COLOR_MATERIAL)
-        
-        glEnable(GL_LIGHT0)
-        glLightfv(GL_LIGHT0, GL_AMBIENT, (0.5, 0.5, 0.8))
-        glLightfv(GL_LIGHT0, GL_POSITION, (0, 2, 2, 0))
-        glDepthFunc(GL_LESS)
-        glEnable(GL_DEPTH_TEST)
-    def keyboard_perss(self, event):
-        print event
-    def button_press(self, width, height, event):
-        if event.state & gtk.gdk.BUTTON4_MASK:
-            print "ZOOM"
-        if event.state & gtk.gdk.BUTTON5_MASK:
-            print "UNZOOM"
-        if event.state & gtk.gdk.SCROLL_MASK:
-            print "Scroll"
-        self.mouse_eventpos_begin = [event.x, event.y]
-    
-    def button_release(self, width, height, event):
-        pass
-    def button_motion(self, width, height, event):
-        if event.state & gtk.gdk.BUTTON1_MASK:
-            deg_factor = numpy.pi/180
-            rot_x = ((event.x - self.mouse_eventpos_begin[0]) / width) * 360
-            rot_y = ((event.y - self.mouse_eventpos_begin[1]) / height) * 360
-            self.rot[0] = (self.rot[0] + rot_y) % 360
-            self.rot[1] = (self.rot[1] + numpy.cos(self.rot[0] * deg_factor) * rot_x) % 360
-            self.rot[2] = (self.rot[2] - numpy.sin(self.rot[0] * deg_factor) * rot_x) % 360
-        if event.state & gtk.gdk.BUTTON2_MASK:
-            self.translate[0] = self.translate[0] + (
-                                event.x - self.mouse_eventpos_begin[0]) / width
-            self.translate[1] = self.translate[1] - (
-                                event.y - self.mouse_eventpos_begin[1]) / height
-        self.mouse_eventpos_begin = [event.x, event.y]
-        self.invalidate()
-    def rotate(self):
-        """
-            The rotation of the array
-        """
-        
-        self.rotx += 2
-        if self.rotx > 360:
-            self.rotx = self.rotx - 360
-        self.roty += 2
-        if self.roty > 360:
-            self.roty = self.roty - 360
-        glutPostRedisplay()
-            
-    def reshape(self, width, height):
-        glViewport(0, 0, width, height)
-        glMatrixMode(GL_PROJECTION)
-        glLoadIdentity()
-        if width > height:
-            w = float(width) / float(height)
-            glFrustum(-w, w, -1.0, 1.0, 5.0, 60.0)
-        else:
-            h = float(height) / float(width)
-            glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0)
-        #glMatrixMode(GL_MODELVIEW)
-    def display(self, width, height):
-        """
-            The main drawing funtion
-        """
-        # Clear The Screen And The Depth Buffer
-        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
-        glLoadIdentity()    # Reset The View
-        glMatrixMode(GL_PROJECTION)
-        # The text
-        glColor3f(1.0, 1, 1)
-        glRasterPos2f(-0.9,0.9)
-        to_display = "x : [%i : %i], y : [%i : %i], z : [%i : %i]"%(
-                     self.slice['begin'][0], self.slice['end'][0],
-                     self.slice['begin'][1], self.slice['end'][1],
-                     self.slice['begin'][2], self.slice['end'][2],
-                     )
-        for string in to_display:
-            glutBitmapCharacter(GLUT_BITMAP_8_BY_13, ord(string))
-        # Modify the projection matrix
-        gluPerspective(self.zoom, 1., 1., 500.0)
-        glTranslatef(0.0,  0.0, -4)
-        glRotate(self.rot[0],1.0,0.0,0.0)
-        glRotate(self.rot[1], 0.0, 1.0, 0.0)
-        glRotate(self.rot[2], 0.0, 0.0, 1.0)
-        glTranslate(self.translate[0], self.translate[1], self.translate[2])
-        # Every thing after is modified by the projection matrix
-        self.generate_vertex(self.coordinate)
-            
-        glFlush()
-        
-    def generate_vertex(self, coordinate):
-        glBegin(GL_QUADS)
-        for item in coordinate:
-            glNormal3f(item['normal'][0], item['normal'][1], item['normal'][2])
-            # Bottom left
-            glColor3f(item['color'][0][0],
-                      item['color'][0][1],
-                      item['color'][0][2])
-            glVertex3f(item['vertex_coord'][0][0],
-                       item['vertex_coord'][0][1],
-                       item['vertex_coord'][0][2])
-            # upper left
-            glColor3f(item['color'][1][0],
-                      item['color'][1][1],
-                      item['color'][1][2])
-            glVertex3f(item['vertex_coord'][1][0], 
-                       item['vertex_coord'][1][1],
-                       item['vertex_coord'][1][2])
-            # bottom right
-            glColor3f(item['color'][3][0],
-                      item['color'][3][1],
-                      item['color'][3][2])
-            glVertex3f(item['vertex_coord'][3][0],
-                       item['vertex_coord'][3][1],
-                       item['vertex_coord'][3][2])
-            # upper right
-            glColor3f(item['color'][2][0],
-                      item['color'][2][1],
-                      item['color'][2][2])
-            glVertex3f(item['vertex_coord'][2][0],
-                       item['vertex_coord'][2][1],
-                       item['vertex_coord'][2][2])
-        glEnd()
-        glLineWidth(1.5)
-        glBegin(GL_LINES)
-        for item in coordinate:
-            glColor3f(0., 0., 0.)
-            glVertex3f(item['vertex_coord'][0][0],
-                       item['vertex_coord'][0][1],
-                       item['vertex_coord'][0][2])
-            glVertex3f(item['vertex_coord'][1][0],
-                       item['vertex_coord'][1][1],
-                       item['vertex_coord'][1][2])
-            glColor3f(0., 0., 0.)
-            glVertex3f(item['vertex_coord'][1][0],
-                       item['vertex_coord'][1][1],
-                       item['vertex_coord'][1][2])
-            glVertex3f(item['vertex_coord'][3][0],
-                       item['vertex_coord'][3][1],
-                       item['vertex_coord'][3][2])
-            glColor3f(0., 0., 0.)
-            glVertex3f(item['vertex_coord'][2][0],
-                       item['vertex_coord'][2][1],
-                       item['vertex_coord'][2][2])
-            glVertex3f(item['vertex_coord'][0][0],
-                       item['vertex_coord'][0][1],
-                       item['vertex_coord'][0][2])
-            glColor3f(0., 0., 0.)
-            glVertex3f(item['vertex_coord'][3][0],
-                       item['vertex_coord'][3][1],
-                       item['vertex_coord'][3][2])
-            glVertex3f(item['vertex_coord'][2][0],
-                       item['vertex_coord'][2][1],
-                       item['vertex_coord'][2][2])
-        glEnd()
-class Tomography(Topography):
-    def __init__(self, array, clut):
-        Topography.__init__(self, None)
-        self.array = array
-        if clut is None:
-            clut = (array.min(), array.max())
-        clut = numpy.array([[clut[0], clut[1]] for i in range(2)])
-        self.clut = pcolor(clut)
-        self.all_coordinate = make_tomo_coordinate(array, self.clut)
-        self._slice_it()
-    def slice_it(self, dirct, qty):
-        """
-            Slice the array in a certain direction in a certain quantity.
-            
-            parameters :
-                dirct : str
-                    The direction to slice.
-                    'x' to slice in x from the front.
-                    'X' to slice in x from the back.
-                    'y' to slice in y from the left.
-                    'Y' to slice in y from the right.
-                    'z' to slice in z from the top.
-                    'Z' to slice in z from the bottom.
-        """
-        if dirct == 'x' and (0 <= self.slice['begin'][0] + 
-                             qty <= self.array.shape[0]):
-            self.slice['begin'][0] += qty
-        elif dirct == 'X' and (0 <= self.slice['end'][0] + 
-                               qty <= self.array.shape[0]):
-            self.slice['end'][0] += qty
-        elif dirct == 'y' and (0 <= self.slice['begin'][1] + 
-                               qty <= self.array.shape[1]):
-            self.slice['begin'][1] += qty
-        elif dirct == 'Y' and (0 <= self.slice['end'][1] + 
-                               qty <= self.array.shape[1]):
-            self.slice['end'][1] += qty
-        elif dirct == 'z' and (0 <= self.slice['begin'][2] + 
-                               qty <= self.array.shape[2]):
-            self.slice['begin'][2] += qty
-        elif dirct == 'Z' and (0 <= self.slice['end'][2] + 
-                               qty <= self.array.shape[2]):
-            self.slice['end'][2] += qty
-        self._slice_it()
-    def _slice_it(self):
-        """
-            Slice the array.
-            
-            For example : self.slice_it([0, 0, 4], [-1, -1, -1])
-            will slice the array in z by removing the 4 (0 to 3) first elements.
-            
-            Parameters :
-                begin : array_like
-                    begin[0] is the first x
-                    begin[1] the first y
-                    begin[2] the first z
-                end : array_like
-                    end[0] is the last x
-                    end[1] is the last y
-                    end[2] is the last z
-            
-            Retruns :
-                nothing. Just the self.coordinate are modified according to it.
-        """
-        
-        factor = float(max(self.array.shape))
-        _begin = [0, 0, 0]
-        _end = [-1, -1, -1]
-        for i in range(3):
-            if self.slice['end'][i] == -1:
-                self.slice['end'][i] = self.array.shape[i]
-            _begin[i] = ((float(self.slice['begin'][i]) / factor) - 
-                          self.array.shape[i]/(2*factor))
-            _end[i] = ((float(self.slice['end'][i]) / factor) - 
-                        self.array.shape[i]/(2*factor))
-        self.coordinate = list()
-        for item in self.all_coordinate:
-            # find items that are outside the slice.
-            eliminate = 0
-            for vertex in item['vertex_coord']:
-                if not eliminate and (
-                                vertex[0] < _begin[0] or vertex[0] > _end[0] or
-                                vertex[1] < _begin[1] or vertex[1] > _end[1] or
-                                vertex[2] < _begin[2] or vertex[2] > _end[2]):
-                    eliminate = 1
-            if not eliminate:
-                self.coordinate.append(item)
-        # Add the borders...
-        borders = generate_array_borders(self.array,
-                                         self.slice['begin'], self.slice['end'],
-                                         self.clut)
-        self.coordinate = self.coordinate + \
-                          [i for i in borders if i is not None]
-def make_tomo_coordinate(array, color_map):
-    """
-        This function creates the coordinate of the vertex and the corresponding
-        color.
-        The array is a 3D array which represent the space with pixels coordinate
-        corresponding to the location in the array and the color value coded in
-        that location.
-        
-        Parameters :
-            array : numpy.ma.array
-                This is an array with mask. Masked values are transparent
-                pixels, otherwise, the pixel values represent the color.
-        
-        Returns :
-            coordinate : list
-                List of vertex to display.
-    """
-    #array = array/array.max() # to be between 0 and 1.
-    #plot_array = numpy.array([[array.min(), array.max()] for i in range(2)])
-    #plot_array = pcolor(plot_array) # to have a cmap
-    coordinate = list()
-    #non_zero_indice = array.mask.nonzero()
-    for px, y, z in zip(array.mask.nonzero()[0],
-                       array.mask.nonzero()[1],
-                       array.mask.nonzero()[2]):
-        item = generate_border_vertex(array, px, y, z, color_map)
-        coordinate += [i for i in item if i is not None]
-                
-    # generage the top face and bottom face:
-    [x_list, y_list] = numpy.meshgrid(range(array.shape[0]),
-                                      range(array.shape[1]))
-    for px, y in zip(x_list.flat, y_list.flat):
-        item = [generate_vertex(array, px, y, array.shape[2]-1, color_map),
-               generate_vertex(array, px, y, 0, color_map)]
-        coordinate += [i for i in item if i is not None]
-    # generate the front and back faces:
-    coord_list = numpy.meshgrid(range(array.shape[0]), range(array.shape[2]))
-    for px, z in zip(coord_list[0].flat, coord_list[1].flat):
-        item = [generate_vertex(array, px, array.shape[1]-1, z,
-                                color_map, face = 'front'),
-                generate_vertex(array, px, 0, z,
-                                color_map, face = 'front')]
-        coordinate += [i for i in item if i is not None]
-    # generate the right and left faces:
-    coord_list = numpy.meshgrid(range(array.shape[1]), range(array.shape[2]))
-    for y, z in zip(coord_list[0].flat, coord_list[1].flat):
-        item = [generate_vertex(array, array.shape[0]-1, y, z,
-                                color_map, face = 'right') ,
-                generate_vertex(array, 0, y, z,
-                                color_map, face = 'right')]
-        coordinate += [i for i in item if i is not None]
-    return coordinate
-def generate_array_borders(array, begin, end, color_map):
-    """
-        Generate the 
-    """
-    #array = array/array.max() # to be between 0 and 1.
-    #plot_array = numpy.array([[array.min(), array.max()] for i in range(2)])
-    #plot_array = pcolor(plot_array)
-    coordinate = list()
-    if begin[0] != 0:
-        # regenerate the front face
-        coord_list = numpy.meshgrid(xrange(begin[1], end[1]),
-                                    xrange(begin[2], end[2]))
-        coordinate += [generate_vertex(array, begin[0], y, z,
-                                       color_map, face = 'right')
-                        for y, z in zip(coord_list[0].flat, coord_list[1].flat)]
-    if end[0] != array.shape[0]:
-        # regenerate the back face
-        coord_list = numpy.meshgrid(xrange(begin[1], end[1]),
-                                    xrange(begin[2], end[2]))
-        coordinate += [generate_vertex(array, end[0], y, z,
-                                       color_map, face = 'right')
-                        for y, z in zip(coord_list[0].flat, coord_list[1].flat)]
-    if begin[1] != 0:
-        # regenerate the left face
-        coord_list = numpy.meshgrid(xrange(begin[0], end[0]),
-                                    xrange(begin[2], end[2]))
-        coordinate += [generate_vertex(array, px, begin[1], z,
-                                       color_map, face = 'front')
-                        for px, z in zip(coord_list[0].flat, coord_list[1].flat)]
-    if end[1] != array.shape[1]:
-        # regenerate the left face
-        coord_list = numpy.meshgrid(xrange(begin[0], end[0]),
-                                    xrange(begin[2], end[2]))
-        coordinate += [generate_vertex(array, px, end[1], z,
-                                       color_map, face = 'front')
-                        for px, z in zip(coord_list[0].flat, coord_list[1].flat)]
-    if begin[2] != 0:
-        # regenerate the left bottom
-        coord_list = numpy.meshgrid(xrange(begin[0], end[0]),
-                                    xrange(begin[1], end[1]))
-        coordinate += [generate_vertex(array, px, y, begin[2],
-                                       color_map, face = 'floor')
-                        for px, y in zip(coord_list[0].flat, coord_list[1].flat)]
-    if end[2] != array.shape[2]:
-        # regenerate the left top
-        coord_list = numpy.meshgrid(xrange(begin[0], end[0]),
-                                    xrange(begin[1], end[1]))
-        coordinate += [generate_vertex(array, px, y, end[2],
-                                       color_map, face = 'floor')
-                        for px, y in zip(coord_list[0].flat, coord_list[1].flat)]
-    return coordinate
-def generate_border_vertex(array, px, y, z, color_map):
-    """
-        Generates the vertex that touch this one.
-    """
-    # The vertex is a 3d vertex composed on 6 faces
-    #
-    #       (x, y+1, z+1)_______
-    #                  /·     /| (x+1, y+1, z+1)
-    #                 / ·    / |
-    #    (x, y, z+1) +------+  |
-    #                |  ·······+ (x+1, y+1, z)
-    #   (x, y+1, z)  | ·    | /      
-    #                |·     |/       
-    #                +------+ (x+1, y, z)
-    #                (x, y, z)
-    block = {'right' : px + 1 == array.shape[0],
-             'left' : px == 0,
-             'front' : y + 1 == array.shape[1],
-             'back' : y == 0,
-             'top' : z + 1 == array.shape[2],
-             'bottom' : z == 0}
-    pixels = list()
-    factor = float(max(array.shape))
-    pos = [((float(px) / factor) - array.shape[0] / (2 * factor)),
-           ((float(y) / factor) - array.shape[1] / (2 * factor)),
-           ((float(z) / factor) - array.shape[2] / (2 * factor))]
-    pos_u = [((float(px + 1) / factor) - array.shape[0] / (2 * factor)),
-           ((float(y+1) / factor) - array.shape[1] / (2 * factor)),
-           ((float(z+1) / factor) - array.shape[2] / (2 * factor))]
-    pos_d = [((float(px - 1) / factor) - array.shape[0] / (2 * factor)),
-           ((float(y-1) / factor) - array.shape[1] / (2 * factor)),
-           ((float(z-1) / factor) - array.shape[2] / (2 * factor))]
-    if not block['bottom'] and not array.mask[px, y, z-1]:
-        # Bottom pixel exist... create the bottom face.
-        color = color_map.to_rgba(array[px, y, z-1])
-        pixels.append({'vertex_coord' : [[pos[0], pos[1], pos[2]],
-                                              [pos[0], pos_u[1], pos[2]],
-                                              [pos_u[0], pos[1], pos[2]],
-                                              [pos_u[0], pos_u[1], pos[2]]],
-                            'color' : [color, color, color, color],
-                            'normal' : NORMAL['bottom']})
-                            
-    if not block['right'] and not array.mask[px + 1, y, z]:
-        # Right pixel exist... create the right face.
-        color = color_map.to_rgba(array[px + 1, y, z])
-        pixels.append({'vertex_coord' : [[pos_u[0], pos[1], pos[2]],
-                                        [pos_u[0], pos_u[1], pos[2]],
-                                        [pos_u[0], pos[1], pos_u[2]],
-                                        [pos_u[0], pos_u[1], pos_u[2]]],
-                        'color' : [color, color, color, color],
-                        'normal' : NORMAL['right']})
-    if not block['front'] and not array.mask[px, y+1, z]:
-        # Back pixel exist... create the back face.
-        color = color_map.to_rgba(array[px, y+1, z])
-        pixels.append({'vertex_coord' : [[pos[0], pos_u[1], pos[2]],
-                                          [pos_u[0], pos_u[1], pos[2]],
-                                          [pos[0], pos_u[1], pos_u[2]],
-                                          [pos_u[0], pos_u[1], pos_u[2]]],
-                             'color' : [color, color, color, color],
-                        'normal' : NORMAL['back']
-                                })
-    if not block['left'] and not array.mask[px-1, y, z]:
-        # Left pixel exist... create the left face.
-        color = color_map.to_rgba(array[px - 1, y, z])
-        pixels.append({'vertex_coord' : [[pos[0], pos[1], pos[2]],
-                                         [pos[0], pos_u[1], pos[2]],
-                                         [pos[0], pos[1], pos_u[2]],
-                                         [pos[0], pos_u[1], pos_u[2]]],
-                        'color' : [color, color, color, color],
-                        'normal' : NORMAL['left']})
-    if not block['back'] and not array.mask[px, y-1, z]:
-        # Front pixel exist... create the fron face.
-        color = color_map.to_rgba(array[px, y-1, z])
-        pixels.append({'vertex_coord' : [[pos[0], pos[1], pos[2]],
-                                          [pos_u[0], pos[1], pos[2]],
-                                          [pos[0], pos[1], pos_u[2]],
-                                          [pos_u[0], pos[1], pos_u[2]]],
-                       'color' : [color, color, color, color],
-                        'normal' : NORMAL['front']
-                                })
-    if not block['top'] and not array.mask[px, y, z+1]:
-        # Top pixel exist... create the top face.
-        color = color_map.to_rgba(array[px, y, z+1])
-        pixels.append({'vertex_coord' : [[pos[0], pos[1], pos_u[2]],
-                                              [pos[0], pos_u[1], pos_u[2]],
-                                              [pos_u[0], pos[1], pos_u[2]],
-                                              [pos_u[0], pos_u[1], pos_u[2]]],
-                            'color' : [color, color, color, color],
-                        'normal' : NORMAL['top']})
-    return pixels
-def generate_vertex(array, px, y, z, color_map, face = 'floor'):
-    """
-        Generate the vertex in the defined position.
-    """
-    voxel = None
-    if not ismasked(array[px, y, z]):
-#    if type(array[px, y, z]) not in [numpy.ma.core.MaskedArray,  # old numpy
-#                                     numpy.ma.core.MaskedConstant]:
-        factor = float(max(array.shape))
-        pos = [((float(px) / factor) - array.shape[0] / (2 * factor)),
-               ((float(y) / factor) - array.shape[1] / (2 * factor)),
-               ((float(z) / factor) - array.shape[2] / (2 * factor))]
-        pos_u = [((float(px + 1) / factor) - array.shape[0] / (2 * factor)),
-               ((float(y+1) / factor) - array.shape[1] / (2 * factor)),
-               ((float(z+1) / factor) - array.shape[2] / (2 * factor))]
-               
-        # The vertex is a 3d vertex composed on 6 faces
-        #
-        #       (x, y+1, z+1)_______
-        #                  /·     /| (x+1, y+1, z+1)
-        #                 / ·    / |
-        #    (x, y, z+1) +------+  |
-        #                |  ·······+ (x+1, y+1, z)
-        #   (x, y+1, z)  | ·    | /      
-        #                |·     |/       
-        #                +------+ (x+1, y, z)
-        #                (x, y, z)
-        # By convention, the face of the bottom has the color form the pixel x,
-        # y, z and the face from the top has the color of x, y, z+1.
-        # Then, if pixel in z+1 is masked, we do not render it.
-        # In order to not make twice the same face, we only consiter faces at
-        # bottom : [(x, y, z), (x+1, y, z), (x+1, y+1, z), (x, y+1, z)]
-        # front : [(x, y, z), (x+1, y, z), (x, y, z+1), (x+1, y, z+1)]
-        # right : [(x, y, z), (x, y+1, z), (x, y, z+1), (x, y+1, z+1),]
-        color = color_map.to_rgba(array[px, y, z])
-        if face == 'floor' :
-            if z+1 == array.shape[2]:
-                pos[2] = pos_u[2]
-            voxel = {'vertex_coord' : [[pos[0], pos[1], pos[2]],
-                                              [pos[0], pos_u[1], pos[2]],
-                                              [pos_u[0], pos[1], pos[2]],
-                                              [pos_u[0], pos_u[1], pos[2]]],
-                            'color' : [color, color, color, color],
-                        'normal' : NORMAL['bottom'],
-                            }
-        elif face == 'front':
-            if y+1 == array.shape[1]:
-                pos[1] = pos_u[1]
-            voxel = {'vertex_coord' : [[pos[0], pos[1], pos[2]],
-                                          [pos_u[0], pos[1], pos[2]],
-                                          [pos[0], pos[1], pos_u[2]],
-                                          [pos_u[0], pos[1], pos_u[2]]],
-                            'color' : [color, color, color, color],
-                        'normal' : NORMAL['front']
-                            }
-        elif face == 'right':
-            if px + 1 == array.shape[0]:
-                pos[0] = pos_u[0]
-            voxel = {'vertex_coord' : [[pos[0], pos[1], pos[2]],
-                                          [pos[0], pos_u[1], pos[2]],
-                                          [pos[0], pos[1], pos_u[2]],
-                                          [pos[0], pos_u[1], pos_u[2]]],
-                            'color' : [color, color, color, color],
-                        'normal' : NORMAL['right']}
-    return voxel
-def make_coordinate(array, color_map):
-    """
-        This function creates the coordinate of the vertex and the corresponding
-        color.
-        
-        It returns a list of dictionnary.
-    """
-    #array = array / array.max() * 4
-#    color_array = color_array / color_array.max()
-#    plot_array = pcolor(color_array)
-    coordinate = list()
-    factor = float(max(array.shape))
-    for x in range(array.shape[0]):
-        for y in range(array.shape[1]):
-            z = array[px, y] / 10.
-            if type(color_array[px, y]) == numpy.ma.core.MaskedArray:
-                color = [1,1,1]
-            else:
-                color = color_map.to_rgba(color_array[px,y])
-            pos_x = float(x) / array.shape[0]
-            pos_y = float(y) / array.shape[1]
-            pos_x_u = float(x + 1) / array.shape[0]
-            pos_y_u = float(y + 1) / array.shape[1]
-            this_pixel = {'tex_coord' : [[pos_x, pos_y],
-                                      [pos_x, pos_y_u],
-                                      [pos_x_u, pos_y],
-                                      [pos_x_u, pos_y_u]],
-                          'vertex_coord' : [[px / factor - 0.5,
-                                             y / factor - 0.5,
-                                             z], # bottom left
-                                            [px / factor - 0.5,
-                                             (y + 1)/factor - 0.5,
-                                             z], # upper left
-                                            [(px + 1)/factor - 0.5,
-                                             y/factor - 0.5,
-                                             z], # bottom right
-                                            [(px + 1)/factor - 0.5,
-                                             (y + 1)/factor - 0.5,
-                                             z]], # upper right
-                          'color' : [color, color, color, color]}
-            coordinate.append(this_pixel)
-            if x > 0:
-                z_prev = array[px,-1, y] / 10
-                # we make a step pixel in x.
-                # The x and y are like pos_x and pos_y, pos_y_u
-                # The pos_z are from this pixel and from the next.
-                if type(color_array[px,-1,y]) == numpy.ma.core.MaskedArray:
-                    color_prev = [1,1,1]
-                else:
-                    color_prev = color_map.to_rgba(color_array[px,-1,y])
-                this_step = {'tex_coord' : [[pos_x, pos_y],
-                                      [pos_x, pos_y_u],
-                                      [pos_x, pos_y],
-                                      [pos_x, pos_y_u]],
-                          'vertex_coord' : [[px / factor - 0.5,
-                                             y / factor - 0.5, 
-                                             z], # bottom left
-                                            [px / factor - 0.5,
-                                             (y + 1) / factor - 0.5, 
-                                             z], # upper left
-                                            [px / factor - 0.5,
-                                             y/factor - 0.5, 
-                                             z_prev], # bottom right
-                                            [px / factor - 0.5,
-                                             (y + 1) / factor - 0.5, 
-                                             z_prev]], # upper right
-                          'color' : [color, color, color_prev, color_prev]}
-                coordinate.append(this_step)
-            if y > 0:
-                z_prev = array[px, y-1] / 10
-                # we make a step pixel in x.
-                # The x and y are like pos_x and pos_y, pos_y_u
-                # The pos_z are from this pixel and from the next.
-                if type(color_array[px,y-1]) == numpy.ma.core.MaskedArray:
-                    color_prev = [1,1,1]
-                else:
-                    color_prev = color_map.to_rgba(color_array[px,y-1])
-                this_step = {'tex_coord' : [[pos_x, pos_y],
-                                      [pos_x, pos_y],
-                                      [pos_x_u, pos_y],
-                                      [pos_x_u, pos_y]],
-                          'vertex_coord' : [[px / factor - 0.5,
-                                             y / factor - 0.5, 
-                                             z], # bottom left
-                                            [px / factor - 0.5,
-                                             y / factor - 0.5, 
-                                             z_prev], # upper left
-                                            [(px + 1)/factor - 0.5,
-                                             y / factor - 0.5, 
-                                             z], # bottom right
-                                            [(px + 1)/factor - 0.5,
-                                             y / factor - 0.5, 
-                                             z_prev]], # upper right
-                          'color' : [color, color_prev, color, color_prev]}
-                coordinate.append(this_step)
-                                      
-    return coordinate
-NORMAL = {
-    'top' : (0, 0, -1),
-    'bottom' : (0, 0, 1),
-    'left' : (0, -1, 0),
-    'right' : (0, 1, 0),
-    'front' : (-1, 0, 0),
-    'back' : (1, 0, 0)
-}
-# Some api in the chain is translating the keystrokes to this octal string
-# so instead of saying: ESCAPE = 27, we use the following.
-ESCAPE = '\033'
-
-if __name__ == '__main__':
-    import numpy
-    SIZE = 32
-    ARRAY = numpy.random.randn(SIZE, SIZE)
-    TMP_ARRAY = numpy.random.randn(SIZE, SIZE)
-    COLOR_ARRAY = numpy.ma.array(TMP_ARRAY, mask = TMP_ARRAY < 0)
-    TEST = Topography(array, COLOR_ARRAY)
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/opengl_gtk.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/opengl_gtk.py
deleted file mode 100644
index 5dae885..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/opengl_gtk.py
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-"""
-    This module is based on teapot2 example from the python-gtkglext examples.
-"""
-
-import pygtk
-pygtk.require('2.0')
-from gtk.gtkgl.apputils import *
-
-from opengl import Topography, Tomography
-
-class TopoWindow(gtk.Window):
-    """
-        Displays the 3D array in a gtk window.
-        
-        Parameters :
-            array : 2D numpy.array
-                Represents the height
-            color_array : 2D numpy.array
-                Represents value for the colorscale to plot in the surface.
-    """
-    def __init__(self, array, color_array=None, clut=None):
-        self.key = None
-        gtk.Window.__init__(self)
-        # Set self attributes.
-        self.set_title('3D view')
-        if sys.platform != 'win32':
-            self.set_resize_mode(gtk.RESIZE_IMMEDIATE)
-        self.set_reallocate_redraws(True)
-        self.connect('destroy', lambda quit: gtk.main_quit())
-        # Catch keyboard events
-        self.connect("key-press-event",self.on_window_key_press_event)
-        self.connect("key-release-event",self.on_window_key_release_event)
-        # Create the table.
-        self.table = gtk.Table(3, 3)
-        self.table.set_border_width(5)
-        self.table.set_col_spacings(5)
-        self.table.set_row_spacings(5)
-        self.table.show()
-        self.add(self.table)
-        # The scene and the
-        # GLArea widget to
-        # display it.
-        if array.ndim == 2:
-            self.topo = Topography(array, color_array, clut)
-        elif array.ndim ==3:
-            self.topo = Tomography(array, clut)
-        self.glarea = GLArea(self.topo)
-        self.glarea.connect("scroll_event", self.button_scroll)
-        self.glarea.set_size_request(300,300)
-        self.glarea.show()
-        self.table.attach(self.glarea, 0, 1, 0, 1)
-
-    def on_window_key_press_event(self, window, event):
-        if self.key is None and (64 < event.keyval < 123):
-            self.key = gtk.gdk.keyval_name(event.keyval)
-    def on_window_key_release_event(self, window, event):
-        self.key = None
-    def button_scroll(self, window, event):
-        if event.direction == gtk.gdk.SCROLL_UP:
-            if self.key == None:
-                self.topo.zoom = self.topo.zoom + self.topo.zoom/10.
-            elif self.key in ['x', 'X', 'y', 'Y', 'z', 'Z']:
-                self.topo.slice_it(self.key, -1)
-        elif event.direction == gtk.gdk.SCROLL_DOWN:
-            if self.key == None:
-                self.topo.zoom = self.topo.zoom - self.topo.zoom/10.
-            elif self.key in ['x', 'X', 'y', 'Y', 'z', 'Z']:
-                self.topo.slice_it(self.key, +1)
-        self.glarea.window.invalidate_rect(self.glarea.allocation, False)
-    def vchanged(self, vadj):
-        #self.topo.rotx = vadj.value
-        #self.glarea.window.invalidate_rect(self.glarea.allocation, False)
-        self.glarea.window.clear()
-        self.topo.slice_it([vadj.value, 0, 0], [-1, -1, -1])
-        #help(self.glarea.window.invalidate_rect)
-        self.glarea.window.invalidate_rect(self.glarea.allocation, False)
-    def hchanged(self, hadj):
-        self.topo.roty = hadj.value
-        self.glarea.window.invalidate_rect(self.glarea.allocation, False)
-    def zoom_changed(self, adj):
-        self.topo.zoom = adj.value
-        self.glarea.window.invalidate_rect(self.glarea.allocation, False)
-    
-    def run(self):
-        self.show()
-        gtk.main()
-def main():
-    import numpy
-    
-    size = 32
-    # Just create a beatifull gride...
-    def func3(x,y):
-        return (1- x/2 + x**5 + y**3)*numpy.exp(-x**2-y**2)
-    # make these smaller to increase the resolution
-    dx, dy = 6./size, 6./size#0.05, 0.05
-
-    x = numpy.arange(-3.0, 3.0, dx)
-    y = numpy.arange(-3.0, 3.0, dy)
-    X,Y = numpy.meshgrid(x, y)
-    
-    array = func3(X, Y)
-    
-    #color_array = numpy.ma.array(array, mask = array<-0.8)
-    #app = TopoWindow(array, color_array)
-    #app.run()
-    array3 = [array*i for i in range(10)]
-    array3 = numpy.array(array3).transpose(2,1,0)
-    array3 = numpy.ma.array(array3, mask = array3<-0.5)
-    clut = (0, 1)
-    app = TopoWindow(array3, clut=clut)
-    app.run()
-if __name__ == '__main__':
-    main()
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/post_proc.py b/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/post_proc.py
deleted file mode 100644
index f0a3faf..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/fovea_toolbox/post_proc.py
+++ /dev/null
@@ -1,585 +0,0 @@
-#! /usr/bin/python
-# -*- coding: utf-8 -*-
-'''
-This module contains the second stage posprocessing tools.
-'''
-__author__  = "Charles Roduit <charles.roduit at gmail.com>"
-__date__ = "28.12.2008"
-__license__ = "GNU Public License (GPL) version 3"
-__version__ = "0.1"
-
-from warnings import warn
-
-import numpy
-from scipy import stats
-
-from misc import ismasked
-
-def get_array_distance(source_array, distance):
-    r'''
-    Create a 3D array that contains the array series of the pixels distances 
-    from each marked pixels.
-    
-    for a distance of 1, the source and result arrays look like this :
-    
-    ::
-    
-       source_matrix   result[:,:,0]   result[:, :, 1]
-         0 0 0 0 0       0 0 0 0 0       0 0 0 0 0   
-         0 0 1 0 0       0 1 0 1 0       0 0 0 0 0   
-         0 0 0 0 0       0 0 0 0 0       0 0 0 0 0   
-         0 1 0 0 0       0 0 0 0 0       1 0 1 0 0   
-         0 0 0 0 0       0 0 0 0 0       0 0 0 0 0   
-    '''
-    
-    [pos_x, pos_y] = source_array.nonzero()
-    all_drops = drop_seed(source_array, distance)
-    all_single_drops = numpy.empty((source_array.shape[0], 
-                                   source_array.shape[1], 
-                                   len(pos_x)))
-    all_single_seeds = numpy.empty_like(all_single_drops)
-
-    for item in range(len(pos_x)):
-        this_seed = numpy.zeros(source_array.shape)
-        this_seed[pos_x[item], pos_y[item]] = 1
-        this_drop = drop_seed(this_seed, distance)
-        all_single_drops[:, :, item] = this_drop * all_drops
-        all_single_seeds[:, :, item] = this_seed
-    return [all_single_seeds, all_single_drops]
-    
-def drop_seed(seed_matrix, size):
-    '''
-    This function returns a similar matrix as dist_seed, except that it takes
-    care of the overlapping
-    '''
-    
-    drop_matrix = numpy.zeros_like(seed_matrix)
-    for dist in range(1, size):
-        drop_matrix = drop_matrix + dist_seed(seed_matrix, dist, where = 'xy')
-        
-    negative_matrix = numpy.logical_not(drop_matrix + seed_matrix)
-    drop_matrix = drop_matrix + dist_seed(seed_matrix, size)
-    border_matrix = drop_matrix * negative_matrix
-    
-    return border_matrix
-    
-def dist_seed(seed_matrix, distance, where = 'x'):
-    '''
-    This function returns a daughter matrix that contains the position of pixels
-    at the given distance from the non-zero pixel of the source matrix.
-    
-    ::
-    
-         Source            Result
-       0 0 0 0 0         0 0 0 0 0 
-       0 0 0 0 0         0 0 0 0 0 
-       0 0 1 0 0   ==>   0 1 0 1 0 
-       0 0 0 0 0         0 0 0 0 0 
-       0 0 0 0 0         0 0 0 0 0 
-    
-    '''
-    
-    [pos_x, pos_y] = seed_matrix.nonzero()
-    dist_matrix = numpy.zeros_like(seed_matrix)
-    if where == 'x':
-        to_left = pos_x - distance
-        to_right = pos_x + distance
-        # test if the pixels are in or outside the matrix
-        limit_left = ( to_left >= 0 ) * ( to_left < len(seed_matrix) )
-        limit_right = ( to_right >= 0 ) * ( to_right < len(seed_matrix) )
-        # Take the pixels that are in the matrix
-        pos_x_left = to_left[limit_left]
-        pos_x_right = to_right[limit_right]
-        pos_y_left = pos_y[limit_left]
-        pos_y_right = pos_y[limit_right]        
-        
-        # Generate the matrix
-        dist_matrix[pos_x_left, pos_y_left] = 1
-        dist_matrix[pos_x_right, pos_y_right] = 1
-    elif where == 'xy':
-        for elm_nbr in range(len(pos_x)):
-            this_x = pos_x[elm_nbr] + distance
-            this_y = pos_y[elm_nbr]
-            if this_x < dist_matrix.shape[0] and this_y < dist_matrix.shape[1]:
-                dist_matrix[this_x, this_y] = 1
-            # from 0 to pi/2
-            while this_y < pos_y[elm_nbr] + distance:
-                if (this_x < dist_matrix.shape[0] and this_x >= 0 and
-                   this_y < dist_matrix.shape[1] and this_y >= 0):
-                    dist_matrix[this_x, this_y] = 1
-                this_y = this_y + 1
-                if numpy.sqrt((this_x - pos_x[elm_nbr]) ** 2 + 
-                              (this_y - pos_y[elm_nbr]) ** 2) > distance :
-                    this_x = this_x - 1
-                if numpy.sqrt((this_x - pos_x[elm_nbr]) ** 2 + 
-                              (this_y - pos_y[elm_nbr]) ** 2) > distance :
-                    this_y = this_y - 1
-            # from pi/2 to pi
-            while this_x > pos_x[elm_nbr] - distance:
-                if (this_x < dist_matrix.shape[0] and this_x >= 0 and
-                   this_y < dist_matrix.shape[1] and this_y >= 0):
-                    dist_matrix[this_x, this_y] = 1
-                this_x = this_x - 1
-                if numpy.sqrt((this_x - pos_x[elm_nbr]) ** 2 + 
-                              (this_y - pos_y[elm_nbr]) ** 2) > distance :
-                    this_y = this_y - 1
-                if numpy.sqrt((this_x - pos_x[elm_nbr]) ** 2 + 
-                              (this_y - pos_y[elm_nbr]) ** 2) > distance :
-                    this_x = this_x + 1
-            # from pi to 3pi/2
-            while this_y > pos_y[elm_nbr] - distance:
-                if (this_x < dist_matrix.shape[0] and this_x >= 0 and
-                   this_y < dist_matrix.shape[1] and this_y >= 0):
-                    dist_matrix[this_x, this_y] = 1
-                this_y = this_y - 1
-                if numpy.sqrt((this_x - pos_x[elm_nbr]) ** 2 + 
-                              (this_y - pos_y[elm_nbr]) ** 2) > distance :
-                    this_x = this_x + 1
-                if numpy.sqrt((this_x - pos_x[elm_nbr]) ** 2 + 
-                              (this_y - pos_y[elm_nbr]) ** 2) > distance :
-                    this_y = this_y + 1
-            # from 3pi/2 to 2pi
-            while this_x < pos_x[elm_nbr] + distance:
-                if (this_x < dist_matrix.shape[0] and this_x >= 0 and
-                   this_y < dist_matrix.shape[1] and this_y >= 0):
-                    dist_matrix[this_x, this_y] = 1
-                this_x = this_x + 1
-                if numpy.sqrt((this_x - pos_x[elm_nbr]) ** 2 + 
-                              (this_y - pos_y[elm_nbr]) ** 2) > distance :
-                    this_y = this_y + 1
-                if numpy.sqrt((this_x - pos_x[elm_nbr]) ** 2 + 
-                              (this_y - pos_y[elm_nbr]) ** 2) > distance :
-                    this_x = this_x - 1
-            
-            #while this_y 
-            pass
-    return dist_matrix
- 
-def rel_values(value_array, dot_array, max_dist = 3, coord=False):
-    '''
-    This function computes the relative values at some points defined by the
-    dot_array.
-    
-    dot_array = n * m array that contains the position where to compute relative
-                values.
-                
-    value_array = n * m array that contains the values.
-    
-    max_dist = integer, to which distance to compute (= 3 by default)
-    
-    Output :
-    
-    result[dot_nb, rel_val] = result[0, 1] is the absolute value of the first
-                                           dot
-                                           
-                              result[1:max_dist, 1] is the relative values of
-                                                    the first dot
-    '''
-    if type(value_array) == numpy.ma.core.MaskedArray:
-        #print type(dot_array)
-        seed_array = dot_array * (1 - value_array.mask)
-    else:
-        seed_array = dot_array
-    if coord:
-        # we record the coordinate of the events.
-        coord_val = []
-    # we compute the distance matrices... 
-    # First val is the absolute value.
-    result = numpy.empty((max_dist + 1, seed_array.astype(bool).sum()))
-    ret_array = []
-    for distance in range(max_dist + 1):
-        [single_dot, rel_array] = get_array_distance(seed_array, distance)
-        for dot_nb in range(single_dot.shape[2]):
-            # we compute the value at the dot position...
-            mask_dot = single_dot[:, :, dot_nb].astype(bool)
-            dot_val = value_array[mask_dot].sum()
-            #print type(dot_val)
-            #print "distance %i, dot number %i, dot val %f"%(distance, dot_nb, dot_val)
-            if not distance:
-                # we want the first value to be the value at the position
-                result[0, dot_nb] = dot_val
-                ret_array.append(single_dot)
-                if coord:
-                    coord_val.append([mask_dot.nonzero()[0][0], 
-                                      mask_dot.nonzero()[1][0]])
-            else:
-                # ... and at the distant positions ...
-                mask_rel = rel_array[:, :, dot_nb].astype(bool)
-                dist_val = value_array[mask_rel].sum()
-                # ... with the number of distant positions ...
-                try:
-                    count_dist = len(value_array[mask_rel])
-                    # ... and finally the relative value :
-                    # First exclude the masked and negative datas
-                    if ismasked(dist_val) and dist_val.mask:
-                        rel_value = numpy.nan
-                    elif dot_val <= 0 or dist_val <= 0:
-                        rel_value = numpy.nan
-                    else:
-                        # to finally compute the relative values.
-                        rel_value = numpy.log(dot_val / dist_val * count_dist)
-                except ZeroDivisionError:
-                    rel_value = numpy.inf
-                if rel_value == numpy.inf:
-                    result[distance, dot_nb] = numpy.nan
-                else:
-                    result[distance, dot_nb] = rel_value
-                ret_array.append(rel_array)
-    # we mask the nan
-    result = numpy.ma.masked_array(result, mask = numpy.isnan(result))
-    if coord:
-        return result, coord_val
-    else:
-        return result#, result_summarize
-def add_stiffness_to_event(event_list, rel_stiff, coordinate):
-    for event in event_list:
-        try:
-            __index = coordinate.index([event['pos_x'], event['pos_y']])
-        except ValueError:
-            event['Stiffness'] = numpy.ma.array([], mask=[])
-        else:
-            event['Stiffness'] = rel_stiff[:, __index]
-    return event_list
-def rand_dot(dot_array, nb_dot = None):
-    '''
-    Creates an array with dots. The dots are placed randomly, with the only
-    constrain to place in a free position, given by the input dot array.
-    '''
-    nb_init_dot = len(dot_array.nonzero()[0])
-    
-    if nb_dot == None:
-        nb_dot = nb_init_dot
-    if nb_dot > dot_array.size - nb_init_dot:
-        warn('Not enough place to generate random events.', RuntimeWarning)
-        # have to reach an error...
-        return numpy.zeros_like(dot_array)
-    result_array = numpy.zeros(dot_array.shape)
-    while result_array.sum() < nb_dot:
-        pos_x = numpy.floor(dot_array.shape[0] * numpy.random.rand())
-        pos_y = numpy.floor(dot_array.shape[1] * numpy.random.rand())
-        if not(dot_array[pos_x, pos_y] or result_array[pos_x, pos_y]):
-            result_array[pos_x, pos_y] = 1
-    return result_array
-
-def resize_array(old_array, new_shape):
-    '''
-    Create a new array with the given size and with the data in old array.
-    '''
-    # The new arrays are made of NaN to differentiate data from empty blocks
-    new_array = numpy.zeros(new_shape, numpy.float) * numpy.nan
-    # We reposition the points in the new array.
-    for pos_y in range(old_array.shape[1]):
-        for pos_x in range(old_array.shape[0]):
-            curve_nb = pos_x + pos_y * old_array.shape[0]
-            n_pos_x = (curve_nb) % new_shape[0]
-            n_pos_y = (curve_nb) / new_shape[0]
-            new_array[n_pos_x, n_pos_y] = old_array[pos_x, pos_y]
-    return new_array
-
-def kde_fit(data, nbr_div = 128):
-    '''
-    Automatically detects best gaussian fits for the data.
-    
-    For example, let's create a data set of to normal random values :
-    
-    >>> import pylab
-    
-    >>> data1 = numpy.random.randn(100)
-    >>> data = numpy.zeros(200)
-    >>> data[:100] = data1+1
-    >>> data[100:] = data1+5
-    
-    Now, let's compute the kde fit :
-    
-    >>> [fit, maxima, minima] = kde_fit(data)
-    
-    And we can plot the result :
-    
-    >>> [x, y, patch] = pylab.hist(data)
-    >>> conversion_factor = max(x)/max(fit[1])
-    >>> figure = pylab.figure()
-    >>> axis = figure.add_subplot(111)
-    >>> pl = pylab.plot(fit[0], fit[1] * conversion_factor)
-    >>> axis.hold(True)
-    >>> pl = pylab.plot(maxima[0], maxima[1] * conversion_factor, 'go')
-    >>> pl = pylab.plot(minima[0], minima[1] * conversion_factor, 'ro')
-    >>> figure.savefig('figure/kde_fit.png')
-    
-    The resulting graph will be an hisogram of the data set with the kde fit
-    plotted in foreground. Two gree dots represents the maximas and the red dot
-    represent the minima.
-    '''
-    kde = stats.kde.gaussian_kde(data)
-    min_data = min(data)
-    max_data = max(data)
-    nbr_step = (max_data - min_data) / nbr_div
-    coord = numpy.arange(min_data, max_data, nbr_step)
-    gaussian_fit = kde(coord)
-    # After the gaussian fit, we want to finds the maximums
-    deriv = numpy.diff(gaussian_fit)
-    #print deriv
-    extrema = (abs(deriv) == deriv) * 1
-    extrema = numpy.diff(extrema)
-    #print extremums
-    maxima = numpy.nonzero(extrema == -1)[0] + 1 # add one to correspond to
-    minima = numpy.nonzero(extrema == 1)[0] + 1  # the maximum
-    return [[coord, gaussian_fit], 
-            [coord[maxima], numpy.ones(len(maxima)) * gaussian_fit[maxima]],
-            [coord[minima], numpy.ones(len(minima)) * gaussian_fit[minima]]]
-def compute_gauss(data, minima, maxima):
-    '''
-    compute the characteristic of the distribution : mean, std, and number of
-    elements.
-    '''
-    mean, std, count = [], [], []
-    position = []
-    if not len(minima) or minima[0] > maxima[0]:
-        position.append(min(data))
-    for minimum in minima:
-        position.append(minimum)
-    if not len(minima) or minima[-1] < maxima[-1]:
-        position.append(max(data))
-    for begin, end in zip(position[:-1], position[1:]):
-        index = (data >= begin) * (data < end)
-        if len(data[index]):
-            try:
-                mean.append(numpy.mean(data[index]))
-                std.append(numpy.std(data[index]))
-                count.append(len(data[index]))
-            except TypeError:
-                # In windows, numpy.nanmax seems to not work in this case...
-                index = index * numpy.array((numpy.isnan(data)-1), dtype=bool)
-                mean.append(numpy.mean(data[index]))
-                std.append(numpy.std(data[index]))
-                count.append(len(data[index]))
-        else:
-            # Array is empty...
-            mean.append(numpy.nan)
-            std.append(numpy.nan)
-            count.append(len(data[index]))
-    return [mean, std, count]
-def find_gauss_fit(data, nbr_div = 128):
-    '''
-    Automatically detects best gaussian fits for the data, and retun the
-    gaussian properties of each detected peak.
-    
-    For example, let's create a data set of to normal random values :
-    
-    >>> import pylab
-    
-    >>> data1 = numpy.random.randn(100)
-    >>> data = numpy.zeros(200)
-    >>> data[:100] = data1+1
-    >>> data[100:] = data1+5
-    
-    Now, we can compute the gauss fit of these data :
-    
-    >>> fit = find_gauss_fit(data)
-    
-    And plot the result :
-    
-    >>> [x, y, patch] = pylab.hist(data)
-    >>> conversion_factor = max(x)/max(fit['kde'][1])
-    >>> figure = pylab.figure()
-    >>> axis = figure.add_subplot(111)
-    >>> pl = axis.hist(data)
-    >>> axis.hold(True)
-    >>> pl = axis.plot(fit['kde'][0], fit['kde'][1] * conversion_factor)
-    >>> pl = axis.plot(fit['maxima'][0], fit['maxima'][1] * conversion_factor, 'go')
-    >>> pl = axis.plot(fit['mean'], fit['maxima'][1] * conversion_factor, 'ro')
-    >>> pl = axis.errorbar(fit['mean'], fit['maxima'][1] * conversion_factor, xerr=fit['std'], fmt=None, ecolor='red')
-    >>> figure.savefig('figure/gauss_fit.png')
-    
-    The resulting plot shows the data as an histogram with the kde fit in the
-    foreground.
-    The detected maxima are shown as two green dots and the mean as red dot with
-    the horizontal error bar describing the std deviation.
-    '''
-    data = data[numpy.isfinite(data)]
-    if len(data):
-        [fit, maxima, minima] = kde_fit(data, nbr_div)
-        [mean_lst, std_lst, count_lst] = compute_gauss(data, minima[0], maxima[0])
-    else:
-        [fit, maxima, minima, mean_lst, std_lst, count_lst] = [[] for i in range(6)]
-           
-    return {'kde' : fit, 'mean' : mean_lst, 'std' : std_lst, 'count' :
-            count_lst, 'maxima' : maxima}
-
-def tomography_array(stiffness, floor=None):
-    """
-        Generate the stiffness tomography array.
-        
-        >>> raw_array = numpy.mgrid[0:5, 0:5, 0:5][2]
-        >>> floor = numpy.mgrid[0:5, 0:5, 0:5][1][0]
-        >>> tomo = tomography_array(raw_array, floor)
-        >>> print tomo
-        [[[4.0 3.0 2.0 1.0 0.0 -- -- -- --]
-          [4.0 3.0 2.0 1.0 0.0 -- -- -- --]
-          [4.0 3.0 2.0 1.0 0.0 -- -- -- --]
-          [4.0 3.0 2.0 1.0 0.0 -- -- -- --]
-          [4.0 3.0 2.0 1.0 0.0 -- -- -- --]]
-        <BLANKLINE>
-         [[-- 4.0 3.0 2.0 1.0 0.0 -- -- --]
-          [-- 4.0 3.0 2.0 1.0 0.0 -- -- --]
-          [-- 4.0 3.0 2.0 1.0 0.0 -- -- --]
-          [-- 4.0 3.0 2.0 1.0 0.0 -- -- --]
-          [-- 4.0 3.0 2.0 1.0 0.0 -- -- --]]
-        <BLANKLINE>
-         [[-- -- 4.0 3.0 2.0 1.0 0.0 -- --]
-          [-- -- 4.0 3.0 2.0 1.0 0.0 -- --]
-          [-- -- 4.0 3.0 2.0 1.0 0.0 -- --]
-          [-- -- 4.0 3.0 2.0 1.0 0.0 -- --]
-          [-- -- 4.0 3.0 2.0 1.0 0.0 -- --]]
-        <BLANKLINE>
-         [[-- -- -- 4.0 3.0 2.0 1.0 0.0 --]
-          [-- -- -- 4.0 3.0 2.0 1.0 0.0 --]
-          [-- -- -- 4.0 3.0 2.0 1.0 0.0 --]
-          [-- -- -- 4.0 3.0 2.0 1.0 0.0 --]
-          [-- -- -- 4.0 3.0 2.0 1.0 0.0 --]]
-        <BLANKLINE>
-         [[-- -- -- -- 4.0 3.0 2.0 1.0 0.0]
-          [-- -- -- -- 4.0 3.0 2.0 1.0 0.0]
-          [-- -- -- -- 4.0 3.0 2.0 1.0 0.0]
-          [-- -- -- -- 4.0 3.0 2.0 1.0 0.0]
-          [-- -- -- -- 4.0 3.0 2.0 1.0 0.0]]]
-    """
-    # The piezo array contain the height of the tip at the end of the
-    # indentation. It correspond then to the last slice of the stiffness
-    # array.
-    if floor is None:
-        floor = numpy.zeros(stiffness.shape[0:2])
-    max_floor = floor.max()
-    
-    new_array = numpy.zeros((stiffness.shape[0], stiffness.shape[1], 
-                           max_floor + stiffness.shape[2])) * numpy.nan
-    new_mask = numpy.ones((stiffness.shape[0], stiffness.shape[1], 
-                           max_floor + stiffness.shape[2]))
-    if type(stiffness) == numpy.ma.core.MaskedArray:
-        data = stiffness.data
-        mask = stiffness.mask
-    else:
-        data = stiffness
-        mask = numpy.zeros_like(stiffness)
-        
-    max_depth = stiffness.shape[2]
-    for x in range(stiffness.shape[0]):
-        for y in range(stiffness.shape[1]):
-            try:
-                last_data = numpy.nonzero(mask[x, y])[0][0]
-            except IndexError:
-                last_data = len(mask[x, y]) - 1
-            begin_pos = floor[x,y]
-            end_pos = last_data + begin_pos + 1
-            try:
-                new_array[x, y, begin_pos:end_pos] = data[x, y][last_data::-1]
-            except ValueError as error:
-                print "Error in post_proc line 437:"
-                print x, y
-                print begin_pos, end_pos
-                print new_array[x, y, begin_pos:end_pos].shape
-                print data[x, y][last_data::-1].shape
-                print error
-            new_mask[x, y, begin_pos:end_pos] = mask[x, y][last_data::-1]
-            
-    # Keep only the usefull informations. Array was build too large, but we want
-    # to return a well sized array
-    first_empty = 0
-    nbr_empty = 1
-    for depth in range(new_mask.shape[2]):
-        if new_mask[:, :, depth].all():
-            if depth == first_empty + nbr_empty:
-                nbr_empty += 1
-            else:
-                first_empty = depth
-                nbr_empty = 1
-    if first_empty == 0 and nbr_empty == 1:
-        # This mean there is no empty slice...
-        first_empty = new_array.shape[2]
-    ##
-    ## Stores the result in a matrix that supports the mask, to get rid
-    ## of the nan values
-    ##
-    return numpy.ma.array(new_array[:, :, :first_empty],
-                          mask=new_mask[:, :, :first_empty])
-
-def generate_path(pos_a, pos_b):
-    """
-        Generate a linear path between the point a and the point b.
-        
-        >>> generate_path([0, 0], [1, 1])
-        array([[ 0.,  1.],
-               [ 0.,  1.]])
-        
-        >>> generate_path([0, 0], [1, 5])
-        array([[ 0.,  0.,  0.,  1.,  1.,  1.],
-               [ 0.,  1.,  2.,  3.,  4.,  5.]])
-        
-        >>> generate_path([0, 0], [0, 5])
-        array([[ 0.,  0.,  0.,  0.,  0.,  0.],
-               [ 0.,  1.,  2.,  3.,  4.,  5.]])
-
-        >>> generate_path([0, 0], [5, 0])
-        array([[ 0.,  1.,  2.,  3.,  4.,  5.],
-               [ 0.,  0.,  0.,  0.,  0.,  0.]])
-
-        >>> generate_path([2, 2], [8, 5])
-        array([[ 2.,  3.,  4.,  5.,  6.,  7.,  8.],
-               [ 2.,  3.,  3.,  4.,  4.,  5.,  5.]])
-    """
-    pos_a[0], pos_a[1], pos_b[0], pos_b[1] = \
-                int(pos_a[0]), int(pos_a[1]), int(pos_b[0]), int(pos_b[1])
-    if pos_b[0] == pos_a[0]:
-        if pos_a[1] > pos_b[1]:
-            pos_a, pos_b = pos_b, pos_a
-        _length = pos_b[1] - pos_a[1] + 1
-        _y = range(pos_a[1], pos_b[1] + 1)
-        _x = [pos_b[0]] * _length
-    elif pos_b[1] == pos_a[1]:
-        if pos_a[0] > pos_b[0]:
-            pos_a, pos_b = pos_b, pos_a
-        _length = pos_b[0] - pos_a[0] + 1
-        _x = range(pos_a[0], pos_b[0] + 1)
-        _y = [pos_b[1]] * _length
-    else:
-        _a = float(pos_b[1] - pos_a[1]) / (pos_b[0] - pos_a[0])
-        _b = pos_a[1] - _a * pos_a[0]
-        
-        if abs(pos_b[0] - pos_a[0]) > abs(pos_b[1] - pos_a[1]):
-            if pos_a[0] > pos_b[0]:
-                pos_a, pos_b = pos_b, pos_a
-            # x0 -> x1 is bigger to y0 -> y1
-            _x = range(pos_a[0], pos_b[0] + 1)
-            _y = [round(_a * item + _b) for item in _x]
-        else:
-            if pos_a[1] > pos_b[1]:
-                pos_a, pos_b = pos_b, pos_a
-            # y0 -> y1 is bigger than x0 -> x1
-            _y = range(pos_a[1], pos_b[1] + 1)
-            _x = [round((item - _b) / _a) for item in _y]
-    return numpy.asarray([_x, _y], dtype=float)
-
-def generate_slice(path, array):
-    """
-        Generate the slice of the array along the path.
-        
-        >>> array = [range(10)]*10
-        >>> path = generate_path([0, 0], [0, 4])
-        >>> generate_slice(path, array)
-        [0, 1, 2, 3, 4]
-        
-        >>> path = generate_path([0, 1], [4, 1])
-        >>> generate_slice(path, array)
-        [1, 1, 1, 1, 1]
-    """
-    return [array[int(_x)][int(_y)] for _x, _y in zip(path[0], path[1])]
-
-if __name__ == "__main__":
-    
-    try:
-        matplotlib.__version__
-    except NameError:
-        import matplotlib
-        matplotlib.use('Agg')
-        from matplotlib import pylab
-    import doctest
-    doctest.testmod()
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/glade/dialog_experiment_properties.glade b/debian/openfovea/usr/share/pyshared/openfovea/glade/dialog_experiment_properties.glade
deleted file mode 100644
index 2671aca..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/glade/dialog_experiment_properties.glade
+++ /dev/null
@@ -1,771 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkWindow" id="ExpProp">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="title" translatable="yes">Properties</property>
-    <property name="default_width">300</property>
-    <property name="default_height">400</property>
-    <property name="icon_name">preferences-desktop</property>
-    <signal name="destroy" handler="destroy" swapped="no"/>
-    <child>
-      <object class="GtkVBox" id="vbox1">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <child>
-          <object class="GtkNotebook" id="notebook1">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <child>
-              <object class="GtkVBox" id="vbox2">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkHBox" id="hbox2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkLabel" id="label1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Author :</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" id="text_author">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="invisible_char">●</property>
-                        <property name="primary_icon_activatable">False</property>
-                        <property name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="frame_description">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkScrolledWindow" id="scrolledwindow1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="hscrollbar_policy">automatic</property>
-                            <property name="vscrollbar_policy">automatic</property>
-                            <property name="shadow_type">in</property>
-                            <child>
-                              <object class="GtkTextView" id="text_description">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes"><b>Description</b></property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="General">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">General</property>
-              </object>
-              <packing>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="vbox3">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkFrame" id="frame_time_lapse">
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">in</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox5">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" id="hbox4">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label_inject">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Injection time</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" id="entry_injection_index">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="invisible_char">●</property>
-                                    <property name="primary_icon_activatable">False</property>
-                                    <property name="secondary_icon_activatable">False</property>
-                                    <property name="primary_icon_sensitive">True</property>
-                                    <property name="secondary_icon_sensitive">True</property>
-                                    <property name="adjustment">adjust_injection_index</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="pack_type">end</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes"><b>Time Lapse</b></property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="frame_system">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">in</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox4">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" id="hbox3">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label_spring">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Spring constant</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkEntry" id="entry_spring_constant">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="invisible_char">●</property>
-                                    <property name="primary_icon_activatable">False</property>
-                                    <property name="secondary_icon_activatable">False</property>
-                                    <property name="primary_icon_sensitive">True</property>
-                                    <property name="secondary_icon_sensitive">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="pack_type">end</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" id="hbox5">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label5">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Glass stiffness</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" id="spin_stiff_glass">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="invisible_char">●</property>
-                                    <property name="primary_icon_activatable">False</property>
-                                    <property name="secondary_icon_activatable">False</property>
-                                    <property name="primary_icon_sensitive">True</property>
-                                    <property name="secondary_icon_sensitive">True</property>
-                                    <property name="adjustment">adjust_deflection_sensitivity</property>
-                                    <property name="digits">3</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="pack_type">end</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" id="vbox6">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkHBox" id="plot_area">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <placeholder/>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVBox" id="box_nav_tool">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <placeholder/>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes"><b>System</b></property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="Config">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Configuration</property>
-              </object>
-              <packing>
-                <property name="position">1</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="tab_plot">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkFrame" id="frame1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">in</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkTable" id="table1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="n_rows">2</property>
-                            <property name="n_columns">2</property>
-                            <child>
-                              <object class="GtkSpinButton" id="spin_save_plot_width">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="invisible_char">●</property>
-                                <property name="primary_icon_activatable">False</property>
-                                <property name="secondary_icon_activatable">False</property>
-                                <property name="primary_icon_sensitive">True</property>
-                                <property name="secondary_icon_sensitive">True</property>
-                                <signal name="value-changed" handler="on_spin_save_plot_width_value_changed" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="x_options"></property>
-                                <property name="y_options"></property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkSpinButton" id="spin_save_plot_height">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="invisible_char">●</property>
-                                <property name="primary_icon_activatable">False</property>
-                                <property name="secondary_icon_activatable">False</property>
-                                <property name="primary_icon_sensitive">True</property>
-                                <property name="secondary_icon_sensitive">True</property>
-                                <signal name="value-changed" handler="on_spin_save_plot_height_value_changed" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="x_options"></property>
-                                <property name="y_options"></property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="label8">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">Width</property>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="x_options"></property>
-                                <property name="y_options"></property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="label9">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">Height</property>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="x_options"></property>
-                                <property name="y_options"></property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label7">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Saved size</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="Linewidth">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">in</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment5">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox7">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" id="hbox6">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkSpinButton" id="spin_linewidth">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="invisible_char">●</property>
-                                    <property name="primary_icon_activatable">False</property>
-                                    <property name="secondary_icon_activatable">False</property>
-                                    <property name="primary_icon_sensitive">True</property>
-                                    <property name="secondary_icon_sensitive">True</property>
-                                    <property name="digits">1</property>
-                                    <property name="numeric">True</property>
-                                    <signal name="value-changed" handler="on_spin_linewidth_value_changed" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="label12">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Linewidth</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="check_bw_plot">
-                                <property name="label" translatable="yes">Gray scale plot.</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label11">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Plot Options</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="Linewidth1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">in</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment6">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox9">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkCheckButton" id="check_plot_hist_gauss">
-                                <property name="label" translatable="yes">Display fit on histograms</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="histo_y_rel">
-                                <property name="label" translatable="yes">Relative y axis</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label14">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Histogram Options</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="frame2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">in</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment_group">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkTable" id="table_group">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="n_rows">2</property>
-                            <property name="n_columns">3</property>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label10">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Group</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">3</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">2</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label6">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Graph</property>
-              </object>
-              <packing>
-                <property name="position">2</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkHBox" id="hbox1">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child>
-              <object class="GtkButton" id="button_validate">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_action_appearance">False</property>
-                <property name="use_stock">True</property>
-                <signal name="clicked" handler="on_button_validate_clicked" swapped="no"/>
-              </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button_cancel">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_action_appearance">False</property>
-                <property name="use_stock">True</property>
-                <signal name="clicked" handler="on_button_cancel_clicked" swapped="no"/>
-              </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-  </object>
-  <object class="GtkAdjustment" id="adjust_deflection_sensitivity">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjust_injection_index">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-</interface>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/glade/dialog_flatten.glade b/debian/openfovea/usr/share/pyshared/openfovea/glade/dialog_flatten.glade
deleted file mode 100644
index 90addf0..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/glade/dialog_flatten.glade
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0"?>
-<interface>
-  <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkDialog" id="FlattenDialog">
-    <property name="border_width">5</property>
-    <property name="title" translatable="yes">Flatten Image</property>
-    <property name="default_width">400</property>
-    <property name="default_height">300</property>
-    <property name="icon">../Icon/openfovea.png</property>
-    <property name="type_hint">normal</property>
-    <property name="has_separator">False</property>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox4">
-        <property name="visible">True</property>
-        <property name="spacing">2</property>
-        <child>
-          <object class="GtkTable" id="table3">
-            <property name="visible">True</property>
-            <property name="n_rows">2</property>
-            <property name="n_columns">2</property>
-            <child>
-              <object class="GtkLabel" id="label14">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Original</property>
-                <attributes>
-                  <attribute name="weight" value="bold"/>
-                </attributes>
-              </object>
-              <packing>
-                <property name="x_options"></property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="label15">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Flatten</property>
-                <attributes>
-                  <attribute name="weight" value="bold"/>
-                </attributes>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="x_options"></property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkHBox" id="view_before_flatten">
-                <property name="visible">True</property>
-                <child>
-                  <placeholder/>
-                </child>
-              </object>
-              <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkHBox" id="view_after_flatten">
-                <property name="visible">True</property>
-                <child>
-                  <placeholder/>
-                </child>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkLabel" id="label1">
-            <property name="visible">True</property>
-            <property name="xalign">0.029999999329447746</property>
-            <property name="label" translatable="yes">Do not forget to recompute the point of contact 
-to propagate the flattening to the other images 
-of the current file.</property>
-            <property name="wrap">True</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area4">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="button_apply">
-                <property name="label">gtk-apply</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button_cancel">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="1">button_apply</action-widget>
-      <action-widget response="0">button_cancel</action-widget>
-    </action-widgets>
-  </object>
-</interface>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/glade/openfovea.glade b/debian/openfovea/usr/share/pyshared/openfovea/glade/openfovea.glade
deleted file mode 100644
index c893e15..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/glade/openfovea.glade
+++ /dev/null
@@ -1,4628 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.16"/>
-  <object class="GtkWindow" id="MainWindow">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="title" translatable="yes">Open Fovea</property>
-    <property name="default_width">255</property>
-    <property name="default_height">256</property>
-    <property name="icon">../Icon/openfovea.png</property>
-    <signal name="destroy" handler="on_MainWindow_destroy" swapped="no"/>
-    <child>
-      <object class="GtkVBox" id="vbox6">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <child>
-          <object class="GtkMenuBar" id="menubar1">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child>
-              <object class="GtkMenuItem" id="menu_file">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
-                <property name="label" translatable="yes">_File</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu1">
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkImageMenuItem" id="new_experiment">
-                        <property name="label">gtk-new</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_new_experiment_activate" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="open_experiment">
-                        <property name="label">gtk-open</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_open_experiment_activate" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="save_experiment">
-                        <property name="label">gtk-save</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_save_experiment_activate" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="save_experiment_as">
-                        <property name="label">gtk-save-as</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_save_experiment_as_activate" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkSeparatorMenuItem" id="<séparateur>">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkMenuItem" id="export_item">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="label" translatable="yes">export</property>
-                        <property name="use_underline">True</property>
-                        <child type="submenu">
-                          <object class="GtkMenu" id="menu_export">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkMenuItem" id="menu_export_stiffness">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="tooltip_text" translatable="yes">Export the stiffness data
-in csv files.</property>
-                                <property name="use_action_appearance">False</property>
-                                <property name="label" translatable="yes">Stiffness</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_export_stiffness_activate" swapped="no"/>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GtkMenuItem" id="menu_export_average_stiffness_tomography">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="tooltip_text" translatable="yes">Export the average
-stiffness tomography
-in csv file.</property>
-                                <property name="use_action_appearance">False</property>
-                                <property name="label" translatable="yes">Average stiffness
-tomography</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_export_average_stiffness_tomography_activate" swapped="no"/>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GtkMenuItem" id="menu_export_map">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="tooltip_text" translatable="yes">Export the maps
-as an image.</property>
-                                <property name="use_action_appearance">False</property>
-                                <property name="label" translatable="yes">Maps</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_export_map_activate" swapped="no"/>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GtkImageMenuItem" id="menu_export_curve">
-                                <property name="label" translatable="yes">Current curve</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="tooltip_text" translatable="yes">Export the current curve
-to a csv file.</property>
-                                <property name="use_action_appearance">False</property>
-                                <property name="image">image4</property>
-                                <property name="use_stock">False</property>
-                                <signal name="activate" handler="on_menu_export_curve_activate" swapped="no"/>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GtkImageMenuItem" id="menu_export_event_prop">
-                                <property name="label" translatable="yes">Event properties</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="tooltip_text" translatable="yes">Export the event properties
-position, force, loading-rate, ...
-in a csv file.</property>
-                                <property name="use_action_appearance">False</property>
-                                <property name="image">image3</property>
-                                <property name="use_stock">False</property>
-                                <signal name="activate" handler="on_menu_export_event_prop_activate" swapped="no"/>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GtkImageMenuItem" id="menu_export_evt_nbr">
-                                <property name="label" translatable="yes">nbr event per curves</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="tooltip_text" translatable="yes">Exports the number of event
-per curves in a csv file.</property>
-                                <property name="use_action_appearance">False</property>
-                                <property name="image">image5</property>
-                                <property name="use_stock">False</property>
-                                <signal name="activate" handler="on_menu_export_evt_nbr_activate" swapped="no"/>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkMenuItem" id="show_header">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="label" translatable="yes">show header</property>
-                        <property name="use_underline">True</property>
-                        <signal name="activate" handler="on_show_header_activate" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="quitter1">
-                        <property name="label">gtk-quit</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_MainWindow_destroy" swapped="no"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="menu_edit">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
-                <property name="label" translatable="yes">_Edition</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu2">
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkImageMenuItem" id="couper1">
-                        <property name="label">gtk-cut</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="copier1">
-                        <property name="label">gtk-copy</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="coller1">
-                        <property name="label">gtk-paste</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="supprimer1">
-                        <property name="label">gtk-delete</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="ReloadModules1">
-                        <property name="label">Reload modules</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="exp_prop">
-                        <property name="label">gtk-preferences</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" translatable="yes">Edit the experiment 
-properties</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_exp_prop_activate" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkMenuItem" id="group">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" translatable="yes">Manage the groups</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="label" translatable="yes">group</property>
-                        <property name="use_underline">True</property>
-                        <signal name="activate" handler="on_group_activate" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkMenuItem" id="menu_mask">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" translatable="yes">Create or modify mask for
-the arrays.</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="label" translatable="yes">mask</property>
-                        <property name="use_underline">True</property>
-                        <signal name="activate" handler="on_menu_mask_activate" swapped="no"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="menuitem3">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
-                <property name="label" translatable="yes">_Options</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu3">
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckMenuItem" id="apply_on_all">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="label" translatable="yes">apply on all</property>
-                        <property name="use_underline">True</property>
-                        <signal name="toggled" handler="on_apply_on_all_toggled" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="compare_exp">
-                        <property name="label" translatable="yes">compare experiment</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="image">image2</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_compare_exp_activate" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkMenuItem" id="flatten_piezo">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" translatable="yes">Open a dialog to flatten
-the piezo image.</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="label" translatable="yes">flatten image</property>
-                        <property name="use_underline">True</property>
-                        <signal name="activate" handler="on_flatten_activate" swapped="no"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="menuitem4">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
-                <property name="label" translatable="yes">_Aide</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu4">
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkMenuItem" id="about">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="label" translatable="yes">À _propos</property>
-                        <property name="use_underline">True</property>
-                        <signal name="activate" handler="on_about_activate" swapped="no"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkNotebook" id="notebook1">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="scrollable">True</property>
-            <property name="enable_popup">True</property>
-            <child>
-              <object class="GtkVBox" id="vbox_display">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkHBox" id="navigation_box">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkTable" id="navigation_table">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="n_rows">3</property>
-                        <property name="n_columns">3</property>
-                        <child>
-                          <object class="GtkButton" id="button_next">
-                            <property name="label">gtk-go-forward</property>
-                            <property name="width_request">88</property>
-                            <property name="height_request">32</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text">Go to the right position in the scan</property>
-                            <property name="use_action_appearance">False</property>
-                            <property name="use_stock">True</property>
-                            <signal name="clicked" handler="on_button_next_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="left_attach">2</property>
-                            <property name="right_attach">3</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_up">
-                            <property name="label">gtk-go-up</property>
-                            <property name="width_request">112</property>
-                            <property name="height_request">32</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text">Go to a upper position in the scan</property>
-                            <property name="use_action_appearance">False</property>
-                            <property name="use_stock">True</property>
-                            <signal name="clicked" handler="on_button_up_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_prev">
-                            <property name="label">gtk-go-back</property>
-                            <property name="width_request">88</property>
-                            <property name="height_request">32</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="has_tooltip">True</property>
-                            <property name="tooltip_text">Go to the left position in the scan</property>
-                            <property name="use_action_appearance">False</property>
-                            <property name="use_stock">True</property>
-                            <signal name="clicked" handler="on_button_prev_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_down">
-                            <property name="label">gtk-go-down</property>
-                            <property name="width_request">112</property>
-                            <property name="height_request">32</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="has_tooltip">True</property>
-                            <property name="tooltip_text">Go to a lower position in the scan</property>
-                            <property name="use_action_appearance">False</property>
-                            <property name="use_stock">True</property>
-                            <signal name="clicked" handler="on_button_down_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkHBox" id="position_box">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkLabel" id="label_pos_x">
-                                <property name="width_request">38</property>
-                                <property name="height_request">17</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">0</property>
-                                <property name="justify">center</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVSeparator" id="vseparator1">
-                                <property name="width_request">16</property>
-                                <property name="height_request">32</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="label_pos_y">
-                                <property name="width_request">38</property>
-                                <property name="height_request">17</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">0</property>
-                                <property name="justify">center</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkVSeparator" id="vseparator2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkVBox" id="list_file_box">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" id="label4">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="yalign">0</property>
-                            <property name="label" translatable="yes">List of files</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkComboBox" id="list_file_combo_box">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <signal name="changed" handler="on_list_file_combo_box_changed" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkHSeparator" id="hseparator1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkHBox" id="hbox3">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkFrame" id="frame1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label_xalign">0</property>
-                        <property name="label_yalign">0</property>
-                        <property name="shadow_type">none</property>
-                        <child>
-                          <object class="GtkAlignment" id="curve_display_list">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="yalign">0</property>
-                            <property name="left_padding">12</property>
-                            <child>
-                              <object class="GtkVBox" id="vbox3">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkCheckButton" id="check_display_fc_trace">
-                                    <property name="label" translatable="yes">Forward force curve</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">False</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="active">True</property>
-                                    <property name="draw_indicator">True</property>
-                                    <signal name="clicked" handler="on_check_display_fc_trace_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="check_display_fc_retrace">
-                                    <property name="label" translatable="yes">Retraction force curve</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">False</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="draw_indicator">True</property>
-                                    <signal name="clicked" handler="on_check_display_fc_retrace_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="check_display_poc">
-                                    <property name="label" translatable="yes">Point of contact</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">False</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="draw_indicator">True</property>
-                                    <signal name="clicked" handler="on_check_display_poc_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="check_display_event">
-                                    <property name="label" translatable="yes">Event on curve</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">False</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="draw_indicator">True</property>
-                                    <signal name="clicked" handler="on_check_display_event_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="check_display_indent">
-                                    <property name="label" translatable="yes">Indentation curve</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">False</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="draw_indicator">True</property>
-                                    <signal name="clicked" handler="on_check_display_indent_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">4</property>
-                                  </packing>
-                                </child>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                        <child type="label">
-                          <object class="GtkLabel" id="label5">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="yalign">0</property>
-                            <property name="label" translatable="yes"><b>Window to display</b></property>
-                            <property name="use_markup">True</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkVBox" id="array_display_box">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkButton" id="button_piezzo_array">
-                            <property name="label" translatable="yes">Piezo Height</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_action_appearance">False</property>
-                            <signal name="clicked" handler="on_button_piezzo_array_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_topography_array">
-                            <property name="label" translatable="yes">Topography</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_action_appearance">False</property>
-                            <signal name="clicked" handler="on_button_topography_array_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_stiffness_array">
-                            <property name="label" translatable="yes">Stiffness</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_action_appearance">False</property>
-                            <signal name="clicked" handler="on_button_stiffness_array_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_event_array">
-                            <property name="label" translatable="yes">Event </property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_action_appearance">False</property>
-                            <signal name="clicked" handler="on_button_event_array_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_event_force_array">
-                            <property name="label" translatable="yes">Event force</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_action_appearance">False</property>
-                            <signal name="clicked" handler="on_button_event_force_array_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_event_dist_array">
-                            <property name="label" translatable="yes">Event distance</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="tooltip_text" translatable="yes">Unbinding event rupture distance.</property>
-                            <property name="use_action_appearance">False</property>
-                            <signal name="clicked" handler="on_button_event_dist_array_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_event_length_array">
-                            <property name="label" translatable="yes">Event length</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="tooltip_text" translatable="yes">Unbinding event length as computed 
-with the event fit model.
-
-If not computed, go to the "Parameters" tab,
-select an event fit model and recompute
-the event detection.</property>
-                            <property name="use_action_appearance">False</property>
-                            <signal name="clicked" handler="on_button_event_length_array_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">6</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_stiffness_tomo">
-                            <property name="label" translatable="yes">   Stiffness
-tomography</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="tooltip_text" translatable="yes">Display the detailed stiffness
-of the object with projection in
-x, y and z.</property>
-                            <property name="use_action_appearance">False</property>
-                            <signal name="clicked" handler="on_button_stiffness_tomo_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">7</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_mean_stiffness_tomo">
-                            <property name="label" translatable="yes">Mean Stiffness
-  tomography</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="tooltip_text" translatable="yes">Display the average stiffness
-in function of the depth.</property>
-                            <property name="use_action_appearance">False</property>
-                            <signal name="clicked" handler="on_button_mean_stiffness_tomo_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">8</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_opengl">
-                            <property name="label" translatable="yes">OpenGL</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_action_appearance">False</property>
-                            <signal name="clicked" handler="on_button_opengl_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">9</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkFrame" id="frame_mosaic">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">none</property>
-                        <child>
-                          <object class="GtkAlignment" id="alignment5">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="left_padding">12</property>
-                            <child>
-                              <object class="GtkVBox" id="vbox4">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkButton" id="button_mosaic_piezo">
-                                    <property name="label" translatable="yes">Piezo Height</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_mosaic_piezo_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_mosaic_topography">
-                                    <property name="label" translatable="yes">Topography</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_mosaic_topography_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_mosaic_stiffness">
-                                    <property name="label" translatable="yes">Stiffness</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_mosaic_stiffness_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_mosaic_event">
-                                    <property name="label" translatable="yes">Event</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_mosaic_event_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_mosaic_event_force">
-                                    <property name="label" translatable="yes">Event force</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_mosaic_event_force_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">4</property>
-                                  </packing>
-                                </child>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                        <child type="label">
-                          <object class="GtkLabel" id="label30">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes"><b>Mosaic</b></property>
-                            <property name="use_markup">True</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="tab_fill">False</property>
-                <property name="reorderable">True</property>
-                <property name="detachable">True</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label2">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="xalign">0</property>
-                <property name="yalign">0</property>
-                <property name="label" translatable="yes">Display</property>
-              </object>
-              <packing>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="compute_box">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkHBox" id="Allboxes">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkFrame" id="frame_stiffness">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label_xalign">0</property>
-                        <child>
-                          <object class="GtkAlignment" id="alignment2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="left_padding">12</property>
-                            <child>
-                              <object class="GtkVBox" id="stiffness_box">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="spacing">2</property>
-                                <child>
-                                  <object class="GtkHBox" id="deep_box">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkEntry" id="entry_number_deep">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="width_chars">5</property>
-                                        <property name="text" translatable="yes">4</property>
-                                        <property name="xalign">0.5</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label7">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes"> segment(s) of </property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkEntry" id="entry_size_deep">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="width_chars">5</property>
-                                        <property name="text" translatable="yes">50</property>
-                                        <property name="xalign">0.5</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label9">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">nm.</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_compute_stiffness">
-                                    <property name="label" translatable="yes">Compute Stiffness</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <property name="use_underline">True</property>
-                                    <signal name="clicked" handler="on_button_compute_stiffness_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="check_compute_poc">
-                                    <property name="label" translatable="yes">re-compute point of contact</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">False</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <property name="active">True</property>
-                                    <property name="draw_indicator">True</property>
-                                    <signal name="toggled" handler="on_check_compute_poc_toggled" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                        <child type="label">
-                          <object class="GtkLabel" id="label13">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes"><b>Stiffness</b></property>
-                            <property name="use_markup">True</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkFrame" id="frame_event">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label_xalign">0</property>
-                        <child>
-                          <object class="GtkAlignment" id="alignment3">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="left_padding">12</property>
-                            <child>
-                              <object class="GtkVBox" id="event_box">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="spacing">1</property>
-                                <child>
-                                  <object class="GtkHBox" id="hbox1">
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label26">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">Detection : </property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkComboBox" id="combo_event_detect">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox5">
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label27">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">Threshold : </property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkComboBox" id="combo_event_thresh">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_detect_events">
-                                    <property name="label" translatable="yes">Detect Events</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <property name="use_underline">True</property>
-                                    <signal name="clicked" handler="on_button_detect_events_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox16">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkButton" id="button_regenerate_random">
-                                        <property name="label" translatable="yes">Regenerate random</property>
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">True</property>
-                                        <property name="use_action_appearance">False</property>
-                                        <signal name="clicked" handler="on_button_regenerate_random_clicked" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spin_nbr_rand_event">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="tooltip_text" translatable="yes">Number of random event</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="adjustment">adj_nbr_rand_event</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                        <child type="label">
-                          <object class="GtkLabel" id="label16">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes"><b>Events</b></property>
-                            <property name="use_markup">True</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkHBox" id="hbox4">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkFrame" id="frame_rel_stiffness">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label_xalign">0</property>
-                        <child>
-                          <object class="GtkAlignment" id="alignment1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="left_padding">12</property>
-                            <child>
-                              <object class="GtkVBox" id="vbox1">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkHBox" id="hbox6">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkSpinButton" id="max_rel_stiffness">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="adjustment">adj_rel_stiff_max_dist</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label17">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">pixel distance</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_compute_rel_stiffness">
-                                    <property name="label" translatable="yes">Compute relative stiffness</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_compute_rel_stiffness_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                        <child type="label">
-                          <object class="GtkLabel" id="label11">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes"><b>Relative stiffness</b></property>
-                            <property name="use_markup">True</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">1</property>
-                <property name="reorderable">True</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label14">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="xalign">0</property>
-                <property name="yalign">0</property>
-                <property name="label" translatable="yes">Compute</property>
-              </object>
-              <packing>
-                <property name="position">1</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkHBox" id="parameter_box">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkVBox" id="vbox13">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkFrame" id="frame5">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">none</property>
-                        <child>
-                          <object class="GtkAlignment" id="alignment11">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="left_padding">12</property>
-                            <child>
-                              <object class="GtkVBox" id="vbox15">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkHBox" id="hbox2">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label25">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">Model : </property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkComboBox" id="combo_hertz_model">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="tooltip_text" translatable="yes">Change the model of your cantilever tip.
-
-Please modify the tip size according to the model.
-
-* Sphere model : radius of the tip [nm] 
-                            typical value : 30
-* Cone model : semi-opening angle [rad]
-                            typical value : 0.35</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox29">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label_tip_size">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">Tip size : </property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spin_carac">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="tooltip_text" translatable="yes">Change the caracteristic of
-your cantilever tip.</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="adjustment">adj_tip_size</property>
-                                        <property name="digits">2</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox25">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label43">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">Poisson ratio : </property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spin_poisson_ratio">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="adjustment">adj_poisson_ratio</property>
-                                        <property name="digits">2</property>
-                                        <property name="update_policy">if-valid</property>
-                                        <signal name="value-changed" handler="on_spin_poisson_ratio_value_changed" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox32">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label59">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">Method : </property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkComboBox" id="combo_stiff_method">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="has_tooltip">True</property>
-                                        <property name="tooltip_markup" translatable="yes">Change the method of computing the stiffness.
-
-* Raw : fits the raw data with the corresponding model.
-* Extrema : makes a linear fit between the two extrem
-                          points in the slice. The indentation axis is
-                          modified according to the used model.</property>
-                                        <property name="tooltip_text" translatable="yes">Change the method of computing the stiffness.
-
-* Raw : fits the raw data with the corresponding model.
-* Extrema : makes a linear fit between the two extrem
-                          points in the slice. The indentation axis is
-                          modified according to the used model.</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                        <child type="label">
-                          <object class="GtkLabel" id="label39">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes"><b>Stiffness</b></property>
-                            <property name="use_markup">True</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkVBox" id="vbox7">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkFrame" id="frame4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">none</property>
-                        <child>
-                          <object class="GtkAlignment" id="alignment10">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="left_padding">12</property>
-                            <child>
-                              <object class="GtkVBox" id="vbox12">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkButton" id="button_event_calib">
-                                    <property name="label" translatable="yes">Adjust sensitivity</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_event_calib_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="ev_fit_box">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="evt_fit_label">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">Event fit model : </property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkComboBox" id="combo_ev_fit_model">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <signal name="changed" handler="on_combo_ev_fit_model_changed" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox24">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label38">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xpad">9</property>
-                                        <property name="label" translatable="yes">Event distance threshold</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spin_ev_threshold_dist">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="digits">2</property>
-                                        <signal name="value-changed" handler="on_spin_ev_threshold_dist_value_changed" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox31">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label57">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xpad">9</property>
-                                        <property name="label" translatable="yes">Event length threshold</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spin_ev_length_thresh_min">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="digits">2</property>
-                                        <signal name="value-changed" handler="on_spin_ev_length_thresh_min_value_changed" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spin_ev_length_thresh_max">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="digits">2</property>
-                                        <signal name="value-changed" handler="on_spin_ev_length_thresh_max_value_changed" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                        <child type="label">
-                          <object class="GtkLabel" id="label22">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes"><b>Events</b></property>
-                            <property name="use_markup">True</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkFrame" id="frame_PoC_param">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">none</property>
-                        <child>
-                          <object class="GtkAlignment" id="alignment6">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="left_padding">12</property>
-                            <child>
-                              <object class="GtkVBox" id="vbox5">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkButton" id="button_poc_calib">
-                                    <property name="label" translatable="yes">Adjust sensitivity</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_poc_calib_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkComboBox" id="combo_poc_method">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <signal name="changed" handler="on_combo_poc_method_changed" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="check_limit_poc_slide">
-                                    <property name="label" translatable="yes">Limit sliding</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">False</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <property name="draw_indicator">True</property>
-                                    <signal name="toggled" handler="on_check_limit_poc_slide_toggled" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox28">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label44">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">Fit segment size</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="spin_fit_seg_size">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="adjustment">adj_fit_seg_size</property>
-                                        <property name="digits">2</property>
-                                        <signal name="value-changed" handler="on_spin_fit_seg_size_value_changed" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                        <child type="label">
-                          <object class="GtkLabel" id="label18">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes"><b>Point of contact</b></property>
-                            <property name="use_markup">True</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">2</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label15">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="xalign">0</property>
-                <property name="yalign">0</property>
-                <property name="label" translatable="yes">Parameters</property>
-              </object>
-              <packing>
-                <property name="position">2</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="Result_box">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkScrolledWindow" id="scrolledwindow1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <child>
-                      <object class="GtkViewport" id="viewport1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="resize_mode">queue</property>
-                        <child>
-                          <object class="GtkHBox" id="hbox17">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkVBox" id="vbox_ev_force">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label_force">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Force</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_ev_force_hist">
-                                    <property name="label" translatable="yes">Histogram</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_ev_force_hist_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox10">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkVBox" id="force_hist_min">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label12">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">min</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_force_hist_min">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkVBox" id="force_hist_max">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label8">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">max</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_force_hist_max">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVBox" id="force_hist_col_size">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label6">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">col size</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="ev_force_hist_size">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="digits">3</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVSeparator" id="vseparator3">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" id="vbox_ev_lr">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label_lr">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Loading rate</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_ev_lr_hist">
-                                    <property name="label" translatable="yes">Histogram</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_ev_lr_hist_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox8">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkVBox" id="lr_hist_min">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label20">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">min</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_lr_hist_min">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkVBox" id="lr_hist_max">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label21">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">max</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_lr_hist_max">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVBox" id="lr_hist_col_size">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label10">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">col size</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="ev_lr_hist_size">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="digits">3</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVSeparator" id="vseparator4">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">3</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" id="vbox_ev_dist">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label_dist">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Distance</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_ev_dist_hist">
-                                    <property name="label" translatable="yes">Histogram</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_ev_dist_hist_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox18">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkVBox" id="lr_hist_min1">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label35">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">min</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_dist_hist_min">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkVBox" id="lr_hist_max1">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label36">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">max</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_dist_hist_max">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVBox" id="lr_hist_col_size1">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label37">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">col size</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="ev_dist_hist_size">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="digits">3</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">4</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVSeparator" id="vseparator5">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">5</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" id="vbox_ev_dist1">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label_stiff">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Stiffness</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_ev_stiff_hist">
-                                    <property name="label" translatable="yes">Histogram</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_ev_stiff_hist_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox20">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkVBox" id="lr_hist_min2">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label40">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">min</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_stiff_hist_min">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkVBox" id="lr_hist_max2">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label41">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">max</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_stiff_hist_max">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVBox" id="lr_hist_col_size2">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label42">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">col size</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="ev_stiff_hist_size">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="check_stiff_ev_vs_notev">
-                                    <property name="label" translatable="yes">Event VS Not Event
-(No group for this)</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">False</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <property name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">4</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">6</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVSeparator" id="vseparator6">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">7</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" id="vbox_ev_dist2">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label_rel_stiff">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Relative Stiffness</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_ev_relstiff_hist">
-                                    <property name="label" translatable="yes">Histogram</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_ev_relstiff_hist_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox21">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkVBox" id="rel_stiff_hist_min">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label45">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">min</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_relstiff_hist_min">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkVBox" id="rel_stiff_hist_max">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label46">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">max</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_relstiff_hist_max">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox22">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkVBox" id="relstiff_hist_col_size">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label47">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">col size</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_relstiff_hist_size">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">3</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkVBox" id="vbox11">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label_dis">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">distance</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_relstiff_hist_dist">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="adjustment">spin_hist_rel_dist</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">8</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" id="vbox_ev_length">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label_ev_length">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Length</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_ev_length_hist">
-                                    <property name="label" translatable="yes">Histogram</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_ev_length_hist_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox23">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkVBox" id="length_hist_min">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label51">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">min</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_length_hist_min">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkVBox" id="length_hist_max">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label52">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">max</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_length_hist_max">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVBox" id="length_hist_col_size">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label53">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">col size</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="ev_length_hist_size">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="digits">3</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">9</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVSeparator" id="vseparator7">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">10</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" id="vbox_ev_plength">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label_ev_plength">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Persistent Length</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_ev_plength_hist">
-                                    <property name="label" translatable="yes">Histogram</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_ev_plength_hist_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox30">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkVBox" id="plength_hist_min">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label54">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">min</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_plength_hist_min">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkVBox" id="plength_hist_max">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" id="label55">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label" translatable="yes">max</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" id="ev_plength_hist_max">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">●</property>
-                                            <property name="digits">2</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVBox" id="plength_hist_col_size">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label56">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">col size</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" id="ev_plength_hist_size">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="invisible_char">●</property>
-                                        <property name="digits">3</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">11</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVSeparator" id="vseparator8">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">12</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkHSeparator" id="hseparator2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="frame2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment8">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkHBox" id="hbox19">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkVBox" id="vbox8">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkButton" id="button_scatter_Force_LR">
-                                    <property name="label" translatable="yes">Force vs Loading rate</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_scatter_Force_LR_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_scatter_force_dist">
-                                    <property name="label" translatable="yes">Force vs Distance</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_scatter_force_dist_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_scatter_force_stiffness">
-                                    <property name="label" translatable="yes">Force vs Stiffness</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_scatter_force_stiffness_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" id="vbox9">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkButton" id="button_scatter_LR_Dist">
-                                    <property name="label" translatable="yes">Loading rate vs Distance</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_scatter_LR_Dist_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_scatter_LR_Stiffness">
-                                    <property name="label" translatable="yes">Loading rate vs Stiffness</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_scatter_LR_Stiffness_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_scatter_Dist_Stiffness">
-                                    <property name="label" translatable="yes">Distance vs Stiffness</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_scatter_Dist_Stiffness_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" id="vbox10">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkButton" id="button_scatter_Force_RelStiff">
-                                    <property name="label" translatable="yes">Force vs Rel stiff</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_scatter_Force_RelStiff_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_scatter_LR_RelStiff">
-                                    <property name="label" translatable="yes">Loading rate vs Rel stiff</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_scatter_LR_RelStiff_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="button_scatter_Dist_RelStiff">
-                                    <property name="label" translatable="yes">Distance vs Rel stiff</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="use_action_appearance">False</property>
-                                    <signal name="clicked" handler="on_button_scatter_Dist_RelStiff_clicked" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label34">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes"><b>Scatter plots</b></property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkButton" id="button_regenerate_event_properties">
-                    <property name="label">gtk-refresh</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="use_action_appearance">False</property>
-                    <property name="use_stock">True</property>
-                    <signal name="clicked" handler="on_button_regenerate_event_properties_clicked" swapped="no"/>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">3</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">3</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label1">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Ev. Histo.</property>
-              </object>
-              <packing>
-                <property name="position">3</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="Tab_Plot">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkFrame" id="frameRelativeStiffness">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" id="hbox11">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label24">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">pixel distance</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" id="spin_rel_stiff_plot_dist">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="tooltip_text" translatable="yes">Set the pixel distance of the 
-relative stiffness to plot</property>
-                                    <property name="invisible_char">●</property>
-                                    <property name="adjustment">adj_plot_rel_dist</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" id="hbox12">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label28">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">Exclude </property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" id="spin_range_rel_stiff">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="invisible_char">●</property>
-                                    <property name="adjustment">adj_rel_stiff_limite</property>
-                                    <property name="digits">2</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="label29">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes"> times stiffer or softer.</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label_plot_rel_stiff">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes"><b>Relative stiffness</b></property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="frameNbrEvtTL">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment7">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkHBox" id="hbox15">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkButton" id="button_plot_nbr_event_tl">
-                                <property name="label" translatable="yes">Show</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">True</property>
-                                <property name="use_action_appearance">False</property>
-                                <signal name="clicked" handler="on_button_plot_nbr_event_tl_clicked" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="labelNbr_evt">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes"><b>Number events</b></property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">4</property>
-                <property name="tab_fill">False</property>
-                <property name="reorderable">True</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label_note_plot">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Plot</property>
-              </object>
-              <packing>
-                <property name="position">4</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkTable" id="table1">
-                <property name="can_focus">False</property>
-                <property name="n_rows">2</property>
-                <property name="n_columns">2</property>
-                <child>
-                  <object class="GtkTable" id="table2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="n_rows">2</property>
-                    <property name="n_columns">2</property>
-                    <child>
-                      <object class="GtkHBox" id="hbox7">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" id="label31">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes">z slice</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" id="spinbutton1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="invisible_char">●</property>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" id="hbox13">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" id="label32">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes">x slice</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" id="spinbutton2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="invisible_char">●</property>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" id="hbox14">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" id="label33">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes">y slice</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" id="spinbutton5">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="invisible_char">●</property>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkButton" id="button_compute_tomo">
-                        <property name="label" translatable="yes">reconstruct tomo</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="tooltip_text" translatable="yes">Tomography volume has
-to be reconstructed each
-time the stiffness is 
-computed</property>
-                        <property name="use_action_appearance">False</property>
-                        <signal name="clicked" handler="on_button_compute_tomo_clicked" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkHBox" id="display_z_slice">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </object>
-                </child>
-                <child>
-                  <object class="GtkHBox" id="display_x_slice">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkHBox" id="display_y_slice">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">5</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label_tomo">
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Tomography</property>
-              </object>
-              <packing>
-                <property name="position">5</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="vbox14">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkHBox" id="hbox26">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkVBox" id="vbox_ev_force1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" id="label_ym">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes">Young modulus</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_young_modulus_hist">
-                            <property name="label" translatable="yes">Histogram</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_action_appearance">False</property>
-                            <signal name="clicked" handler="on_button_young_modulus_hist_clicked" swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkHBox" id="hbox27">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkVBox" id="box_ym_hist_min">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label48">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">min</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" id="spin_ym_hist_min">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="invisible_char">●</property>
-                                    <property name="digits">2</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" id="box_ym_hist_max">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="label49">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">max</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" id="spin_ym_hist_max">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="invisible_char">●</property>
-                                    <property name="digits">2</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkVBox" id="box_ym_hist_col_size">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkLabel" id="label50">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">col size</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkSpinButton" id="spin_ym_hist_size">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="invisible_char">●</property>
-                                <property name="digits">3</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkVBox" id="vbox16">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkLabel" id="label58">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">Depth Nb</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkSpinButton" id="spin_ym_hist_depth_nb">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="invisible_char">●</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-              </object>
-              <packing>
-                <property name="position">6</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label_stiffnes">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Mechanical prop.</property>
-              </object>
-              <packing>
-                <property name="position">6</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkProgressBar" id="progressbar_general">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkHBox" id="hbox9">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child>
-              <placeholder/>
-            </child>
-            <child>
-              <object class="GtkLabel" id="label_switch_state">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="pack_type">end</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-  </object>
-  <object class="GtkAboutDialog" id="aboutdialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="window_position">center</property>
-    <property name="icon">../Icon/openfovea.png</property>
-    <property name="type_hint">normal</property>
-    <property name="program_name">OpenFovea</property>
-    <property name="version">0.1a160</property>
-    <property name="comments" translatable="yes">OpenFovea is an open source software 
-written in the Laboratory of living matter (EPFL, CH)
-
-Please cite the original article that present
-OpenFovea if you use this software.</property>
-    <property name="website">http://www.freesbi.ch/en/openfovea</property>
-    <property name="website_label" translatable="yes">Home page</property>
-    <property name="license" translatable="yes">This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
-
-This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA</property>
-    <property name="authors">Charles Roduit</property>
-    <property name="logo">../Icon/CellFovea.png</property>
-    <property name="wrap_license">True</property>
-    <child internal-child="vbox">
-      <object class="GtkBox" id="dialog-vbox1">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area1">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="events">GDK_BUTTON_PRESS_MASK | GDK_STRUCTURE_MASK</property>
-            <property name="layout_style">end</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-      </object>
-    </child>
-  </object>
-  <object class="GtkAdjustment" id="adj_fit_seg_size">
-    <property name="upper">1</property>
-    <property name="value">0.29999999999999999</property>
-    <property name="step_increment">0.01</property>
-    <property name="page_increment">0.10000000000000001</property>
-  </object>
-  <object class="GtkAdjustment" id="adj_injection_index">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adj_nbr_rand_event">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adj_plot_rel_dist">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <signal name="value-changed" handler="on_adj_plot_rel_dist_value_changed" swapped="no"/>
-  </object>
-  <object class="GtkAdjustment" id="adj_poisson_ratio">
-    <property name="upper">0.5</property>
-    <property name="value">0.29999999999999999</property>
-    <property name="step_increment">0.01</property>
-    <property name="page_increment">0.10000000000000001</property>
-  </object>
-  <object class="GtkAdjustment" id="adj_rel_stiff_limite">
-    <property name="upper">100</property>
-    <property name="step_increment">0.10000000000000001</property>
-    <property name="page_increment">0.5</property>
-    <signal name="value-changed" handler="on_adj_rel_stiff_limite_value_changed" swapped="no"/>
-  </object>
-  <object class="GtkAdjustment" id="adj_rel_stiff_max_dist">
-    <property name="upper">100</property>
-    <property name="value">3</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adj_tip_size">
-    <property name="upper">100</property>
-    <property name="value">20</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="choose_event_detection">
-    <columns>
-      <!-- column-name gchararray1 -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Noise (Default)</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Fuzzy</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="choose_hertz_model">
-    <columns>
-      <!-- column-name gchararray1 -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Cone</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Sphere</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="choose_poc_model">
-    <columns>
-      <!-- column-name gchararray1 -->
-      <column type="gchararray"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" id="choose_threshold_event">
-    <columns>
-      <!-- column-name gchararray1 -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Fixed</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Auto</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkDialog" id="dialog_compare_experiment">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="type_hint">normal</property>
-    <child internal-child="vbox">
-      <object class="GtkBox" id="dialog-vbox2">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area2">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="button_compare_exp_validate">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_action_appearance">False</property>
-                <property name="use_stock">True</property>
-                <property name="yalign">0.46000000834465027</property>
-                <signal name="clicked" handler="on_button_compare_exp_validate_clicked" swapped="no"/>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button_compare_exp_cancel">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_action_appearance">False</property>
-                <property name="use_stock">True</property>
-                <signal name="clicked" handler="on_button_compare_exp_cancel_clicked" swapped="no"/>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkVBox" id="vbox1_compare_exp">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child>
-              <object class="GtkHBox" id="hbox1_compare_exp">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="spacing">15</property>
-                <child>
-                  <object class="GtkLabel" id="comp_exp_filename">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" translatable="yes">No file loaded</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkButton" id="open_exp_compare">
-                    <property name="label" translatable="yes">Choose file</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="use_action_appearance">False</property>
-                    <signal name="clicked" handler="on_open_exp_compare_clicked" swapped="no"/>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkFrame" id="frame3">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">in</property>
-                <child>
-                  <object class="GtkAlignment" id="alignment9">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <object class="GtkTable" id="table1_compare_exp">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="n_rows">3</property>
-                        <property name="n_columns">2</property>
-                        <child>
-                          <object class="GtkLabel" id="label_experiment">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes">Experiment</property>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="label19">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes">label</property>
-                          </object>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="label_main_filename">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes">No file loaded</property>
-                          </object>
-                          <packing>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="label_comp_filename">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes">No file loaded</property>
-                          </object>
-                          <packing>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkEntry" id="entry_main_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="invisible_char">●</property>
-                          </object>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkEntry" id="entry_comp_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="invisible_char">●</property>
-                          </object>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
-                          </packing>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-                <child type="label">
-                  <object class="GtkLabel" id="label3">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" translatable="yes"><b>Legend label</b></property>
-                    <property name="use_markup">True</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="padding">13</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkHBox" id="hbox2_compare_exp">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="spacing">12</property>
-                <child>
-                  <object class="GtkLabel" id="label23">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" translatable="yes">Plot type :</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkComboBox" id="combo_plot_color_type">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="model">list_plot_color_type</property>
-                    <child>
-                      <object class="GtkCellRendererText" id="cellrenderertext1"/>
-                      <attributes>
-                        <attribute name="text">0</attribute>
-                      </attributes>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="0">button_compare_exp_validate</action-widget>
-      <action-widget response="0">button_compare_exp_cancel</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkImage" id="image1">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="stock">gtk-missing-image</property>
-  </object>
-  <object class="GtkImage" id="image2">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="stock">gtk-zoom-fit</property>
-  </object>
-  <object class="GtkImage" id="image3">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="xalign">0.50999999046325684</property>
-    <property name="yalign">0.51999998092651367</property>
-    <property name="pixbuf">../Icon/event.png</property>
-  </object>
-  <object class="GtkImage" id="image4">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="xpad">3</property>
-    <property name="pixbuf">../Icon/export_curve.png</property>
-  </object>
-  <object class="GtkImage" id="image5">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="pixbuf">../Icon/two_evt.png</property>
-  </object>
-  <object class="GtkListStore" id="list_plot_color_type">
-    <columns>
-      <!-- column-name gchararray1 -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Color</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Black and White</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkAdjustment" id="spin_hist_rel_dist">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-</interface>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/glade/plot.glade b/debian/openfovea/usr/share/pyshared/openfovea/glade/plot.glade
deleted file mode 100644
index fa050ad..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/glade/plot.glade
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0"?>
-<interface>
-  <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkWindow" id="WindowPlot">
-    <property name="title" translatable="yes">Force Curve</property>
-    <property name="default_width">300</property>
-    <property name="default_height">300</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="icon">../Icon/openfovea.png</property>
-    <child>
-      <object class="GtkVBox" id="vboxPlot">
-        <property name="visible">True</property>
-        <property name="orientation">vertical</property>
-        <child>
-          <object class="GtkHBox" id="hbox9">
-            <property name="visible">True</property>
-            <child>
-              <object class="GtkVBox" id="boxPlot">
-                <property name="visible">True</property>
-                <property name="orientation">vertical</property>
-                <child>
-                  <placeholder/>
-                </child>
-              </object>
-              <packing>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVScrollbar" id="scrollbar_depth">
-                <property name="orientation">vertical</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkHBox" id="customizeBar">
-            <property name="visible">True</property>
-            <child>
-              <object class="GtkVBox" id="vbox12">
-                <property name="visible">True</property>
-                <property name="orientation">vertical</property>
-                <child>
-                  <object class="GtkHScrollbar" id="scrollbar_max"/>
-                  <packing>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkHScrollbar" id="scrollbar_min"/>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button_modify_plot">
-                <property name="label" translatable="yes">color scale</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkHBox" id="box_nav_tool">
-            <property name="visible">True</property>
-            <child>
-              <placeholder/>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-  </object>
-</interface>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/glade/stiffness_plot.glade b/debian/openfovea/usr/share/pyshared/openfovea/glade/stiffness_plot.glade
deleted file mode 100644
index 000c02e..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/glade/stiffness_plot.glade
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0"?>
-<interface>
-  <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkWindow" id="WindowPlot">
-    <property name="default_width">400</property>
-    <property name="default_height">500</property>
-    <child>
-      <object class="GtkVBox" id="vbox1">
-        <property name="visible">True</property>
-        <property name="orientation">vertical</property>
-        <child>
-          <object class="GtkHBox" id="hbox1">
-            <property name="visible">True</property>
-            <child>
-              <object class="GtkHBox" id="hbox13">
-                <property name="visible">True</property>
-                <child>
-                  <object class="GtkLabel" id="label32">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">x slice</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkSpinButton" id="spin_x">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
-                    <property name="adjustment">adjust_x</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkHBox" id="hbox14">
-                <property name="visible">True</property>
-                <child>
-                  <object class="GtkLabel" id="label33">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">y slice</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkSpinButton" id="spin_y">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
-                    <property name="adjustment">adjust_y</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkHBox" id="hbox7">
-                <property name="visible">True</property>
-                <child>
-                  <object class="GtkLabel" id="label31">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">z slice</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkSpinButton" id="spin_z">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
-                    <property name="adjustment">adjust_z</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkHBox" id="boxPlot">
-            <property name="visible">True</property>
-            <child>
-              <placeholder/>
-            </child>
-          </object>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkHScrollbar" id="scrollbar_max"/>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkHScrollbar" id="scrollbar_min"/>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-  </object>
-  <object class="GtkAdjustment" id="adjust_z">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjust_x">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjust_y">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-</interface>
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/openfovea_gui.py b/debian/openfovea/usr/share/pyshared/openfovea/openfovea_gui.py
deleted file mode 100644
index 4e5bdf5..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/openfovea_gui.py
+++ /dev/null
@@ -1,2990 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""
-    Module for the GTK gui of OpenFovea.
-"""
-
-import gtk
-import os.path
-import sys
-import locale
-import threading
-import time
-import datetime
-from glib import GError
-
-import numpy
-#####################
-## Graphic library ##
-#####################
-import plot_gtk
-# for script installation
-from pkg_resources import resource_filename
-######################
-## Internal library ##
-######################
-from common import APP_NAME, APP_VERSION
-import classes
-from classes import NotReadyError
-from plot_generic import PlotProperties, PlotData
-
-try:
-    from fovea_toolbox.opengl_gtk import TopoWindow as TopoGL
-except ImportError:
-    # OpenGL is not installed.
-    OPENGL_INSTALLED = False
-except RuntimeError:
-    # OpenGL cannot be loaded...
-    OPENGL_INSTALLED = False
-else:
-    OPENGL_INSTALLED = True
-
-import dialog_experiment_properties
-from dialog_export_map import MapDisplay
-from dialog_mask_properties import MaskProperties
-from dialog_flatten import FlattenDialog
-from simple_window_gtk import FileGroup
-from fovea_toolbox import misc
-
-DEBUG = 0
-
-
-def combo_box_set_list(combox, item_list, default=0):
-    """
-    Sets the combobox list
-    """
-    preexist = 0
-    # Reinitialize or create the model
-    model = combox.get_model()
-    if model:
-        model.clear()
-        preexist = 1
-    else:
-        model = gtk.ListStore(str)
-
-    for item in item_list:
-        model.append([item])
-    # Pack it if it doesn't preexist
-    if not preexist:
-        combox.set_model(model)
-        cell = gtk.CellRendererText()
-        combox.pack_start(cell, True)
-        combox.add_attribute(cell, 'text', 0)
-    # And set the first item active
-    combox.set_active(default)
-
-
-class OpenFoveaMainGui(object):
-    """
-        OpenFovea GTK Gui.
-
-        Contains all the buttons and dialog to handle experiment post
-        processing.
-    """
-
-    def __init__(self, arg=None):
-        # Defaults parameters
-        if os.name == 'posix':
-            _home = os.environ['HOME']
-        elif os.name == 'nt':
-            _home = os.environ['HOMEPATH']
-        self.config = {'current': os.getcwd(),
-                          'home': _home,
-                          'config': os.path.join(
-                                            _home,
-                                            '.config',
-                                            'OpenFovea.conf'),
-                          'folder-fv': os.getcwd(),
-                          'folder-aex': os.getcwd(),
-                          'folder-export': os.getcwd(),
-                          'msgid': datetime.datetime(1900, 1, 1),
-                          'linewidth': 1.5,  # The width of the line in the
-                                              # curve plots.
-                          'connect-server': None}
-        self.apply_on_all = 0
-        # try to recover preferences...
-        if os.path.isfile(self.config['config']):
-            config_fid = open(self.config['config'])
-            for line in config_fid.readlines():
-                splitted_line = line.strip('\n').split(' = ')
-                if splitted_line[0] == 'msgid':
-                    self.config[splitted_line[0]] = \
-                        datetime.datetime.strptime(splitted_line[1],
-                                                   '%Y, %m, %d')
-                elif splitted_line[0] == 'linewidth':
-                    self.config[splitted_line[0]] = float(splitted_line[1])
-                elif splitted_line[0] == 'connect-server':
-                    self.config[splitted_line[0]] = eval(splitted_line[1])
-                elif splitted_line[0] in self.config.keys():
-                    self.config[splitted_line[0]] = \
-                                            splitted_line[1]
-            if 'folder-export' not in self.config:
-                self.config['folder-export'] = os.getcwd()
-        # Get authorization for connection
-        if self.config['connect-server'] is None:
-            answer = ask_message(['Allow internet connection ?',
-                    '<b>Do you allow OpenFovea to connect server ?</b>\n\n' +
-                    'The connection is usefull to display message\n' +
-                    'about new release, or important bugs.'])
-            if answer == gtk.RESPONSE_YES:
-                self.config['connect-server'] = True
-            elif answer == gtk.RESPONSE_NO:
-                self.config['connect-server'] = False
-        ###
-        # Get message from the OpenFovea website in order to display news.
-        # This will be used for update announce or important news.
-        if self.config['connect-server']:
-            message, new_id = misc.get_message(self.config['msgid'],
-                                               APP_NAME, APP_VERSION)
-            if message is not None:
-                display_message(message[1:])
-                self.config['msgid'] = new_id
-        ###
-        # Initialize the gui
-        ###
-        builder = gtk.Builder()
-        try:
-            glade_filename = resource_filename('openfovea',
-                                               'glade/openfovea.glade')
-        except NotImplementedError:
-            # We are in a windows executable...
-            glade_filename = os.path.join(os.path.dirname(sys.executable),
-                                          ('openfovea/glade/openfovea.glade'))
-        builder.add_from_file(glade_filename)
-        self.exp_filename = None
-        self.window = builder.get_object("MainWindow")
-        self.about_dialog_win = builder.get_object('aboutdialog')
-        self.about_dialog = builder.get_object("aboutdialog")
-        self.properties_dialog = None
-        self.compare_exp_dialog = \
-                            builder.get_object('dialog_compare_experiment')
-        # connect signals
-        builder.connect_signals(self)
-        ## The variables
-        self.plot_properties = PlotProperties()
-        self.plot_properties.color_type = 'color'
-        self.data_hist = PlotData()
-        self.experiment = None
-        self.temp_exp_compare = None
-        self.experiment_compare = None
-        self.force_volume = None
-        self.widget = {
-            'progressbar': builder.get_object("progressbar_general"),
-            'check_display_fc_trace': builder.get_object(
-                                                'check_display_fc_trace'),
-            'check_display_fc_retrace': builder.get_object(
-                                                'check_display_fc_retrace'),
-            'check_display_poc': builder.get_object(
-                                                'check_display_poc'),
-            'check_display_indent': builder.get_object(
-                                                'check_display_indent'),
-            'check_display_event': builder.get_object(
-                                                'check_display_event'),
-            'check_limit_poc_slide': builder.get_object(
-                                                'check_limit_poc_slide'),
-            'check_compute_poc': builder.get_object('check_compute_poc'),
-            'check_stiff_ev_vs_notev': builder.get_object(
-                                                'check_stiff_ev_vs_notev'),
-            'combo_list_files': builder.get_object('list_file_combo_box'),
-            'combo_hertz_model': builder.get_object('combo_hertz_model'),
-            'combo_stiff_method': builder.get_object('combo_stiff_method'),
-            'combo_event_detect': builder.get_object('combo_event_detect'),
-            'combo_event_thresh': builder.get_object('combo_event_thresh'),
-            'combo_poc_method': builder.get_object('combo_poc_method'),
-            'combo_ev_fit_model': builder.get_object(
-                                                    'combo_ev_fit_model'),
-            'entry_number_deep': builder.get_object("entry_number_deep"),
-            'entry_size_deep': builder.get_object('entry_size_deep'),
-            'entry_glass_slope': builder.get_object('entry_glass_slope'),
-            'label_pos_x': builder.get_object('label_pos_x'),
-            'label_pos_y': builder.get_object('label_pos_y'),
-            'label_switch_state': builder.get_object('label_switch_state'),
-            'spin_ev_force_hist_min': builder.get_object('ev_force_hist_min'),
-            'spin_ev_force_hist_max': builder.get_object('ev_force_hist_max'),
-            'spin_ev_force_hist_size': builder.get_object(
-                                                    'ev_force_hist_size'),
-            'spin_max_rel_stiffness': builder.get_object('max_rel_stiffness'),
-            'spin_ev_lr_hist_min': builder.get_object('ev_lr_hist_min'),
-            'spin_ev_lr_hist_max': builder.get_object('ev_lr_hist_max'),
-            'spin_ev_lr_hist_size': builder.get_object('ev_lr_hist_size'),
-            'spin_ev_dist_hist_min': builder.get_object('ev_dist_hist_min'),
-            'spin_ev_dist_hist_max': builder.get_object('ev_dist_hist_max'),
-            'spin_ev_dist_hist_size': builder.get_object('ev_dist_hist_size'),
-            'spin_ev_length_hist_min': builder.get_object(
-                                                'ev_length_hist_min'),
-            'spin_ev_length_hist_max': builder.get_object(
-                                                'ev_length_hist_max'),
-            'spin_ev_length_hist_size': builder.get_object(
-                                                'ev_length_hist_size'),
-            'spin_ev_plength_hist_min': builder.get_object(
-                                                'ev_plength_hist_min'),
-            'spin_ev_plength_hist_max': builder.get_object(
-                                                'ev_plength_hist_max'),
-            'spin_ev_plength_hist_size': builder.get_object(
-                                                'ev_plength_hist_size'),
-            'spin_ev_stiff_hist_min': builder.get_object('ev_stiff_hist_min'),
-            'spin_ev_stiff_hist_max': builder.get_object('ev_stiff_hist_max'),
-            'spin_ev_stiff_hist_size': builder.get_object(
-                                                'ev_stiff_hist_size'),
-            'spin_ev_relstiff_hist_min': builder.get_object(
-                                                'ev_relstiff_hist_min'),
-            'spin_ev_relstiff_hist_max': builder.get_object(
-                                                'ev_relstiff_hist_max'),
-            'spin_ev_relstiff_hist_size': builder.get_object(
-                                                'ev_relstiff_hist_size'),
-            'spin_ev_relstiff_hist_dist': builder.get_object(
-                                                'ev_relstiff_hist_dist'),
-            'spin_rel_stiff_plot_dist': builder.get_object(
-                                                'spin_rel_stiff_plot_dist'),
-            'spin_nbr_rand_event': builder.get_object('spin_nbr_rand_event'),
-            'spin_ev_threshold_dist': builder.get_object(
-                                                'spin_ev_threshold_dist'),
-            'spin_poisson_ratio': builder.get_object('spin_poisson_ratio'),
-            # Option menu
-            'apply_on_all': builder.get_object('apply_on_all'),
-            # Parameters tab
-            'spin_fit_seg_size': builder.get_object('spin_fit_seg_size'),
-            'spin_ev_length_thresh_min': builder.get_object(
-                                                'spin_ev_length_thresh_min'),
-            'spin_ev_length_thresh_max': builder.get_object(
-                                                'spin_ev_length_thresh_max'),
-            # Mechanical prop.
-            'spin_young_modulus_hist_min': builder.get_object(
-                                                'spin_ym_hist_min'),
-            'spin_young_modulus_hist_max': builder.get_object(
-                                                'spin_ym_hist_max'),
-            'spin_young_modulus_hist_size': builder.get_object(
-                                                'spin_ym_hist_size'),
-            'spin_tip_carac': builder.get_object('spin_carac'),
-            'spin_ym_hist_depth_nb': builder.get_object(
-                                                'spin_ym_hist_depth_nb'),
-            }
-        self.signal = {
-            ### Dictionnary that contains the signal from the object.
-            ### This is auto - generated with :
-            ### widgetname_fctname
-        }
-        self.widget_exp_compare = {
-            'comp_exp_filename': builder.get_object('comp_exp_filename'),
-            'label_main_filename': builder.get_object('label_main_filename'),
-            'label_comp_filename': builder.get_object('label_comp_filename'),
-            'entry_main_label': builder.get_object('entry_main_label'),
-            'entry_comp_label': builder.get_object('entry_comp_label'),
-            'combo_plot_color_type': builder.get_object(
-                                                'combo_plot_color_type'),
-        }
-        if not OPENGL_INSTALLED:
-            builder.get_object('button_opengl').hide()
-        #####
-        ## Compute tab
-        #####
-        combo_box_set_list(self.widget['combo_event_detect'],
-                            ['Noise', 'Fuzzy'])
-        combo_box_set_list(self.widget['combo_event_thresh'],
-                            ['Fixed', 'Auto (Noise)'])
-        #####
-        ## Parameter tab
-        #####
-        combo_box_set_list(self.widget['combo_poc_method'],
-                           ['deriv', 'curve_fit'])
-        self.widget['combo_poc_method'].set_active(1)
-
-        adjustment = gtk.Adjustment(value=0, lower=0, upper=1000,
-                                    step_incr=1, page_incr=10, page_size=0)
-        self.widget['spin_ev_threshold_dist'].set_adjustment(adjustment)
-
-        adjustment = gtk.Adjustment(value=0, lower=0, upper=2000,
-                                    step_incr=1, page_incr=10, page_size=0)
-        self.widget['spin_ev_length_thresh_min'].set_adjustment(adjustment)
-
-        adjustment = gtk.Adjustment(value=0, lower=0, upper=1000,
-                                    step_incr=1, page_incr=10, page_size=0)
-        self.widget['spin_ev_length_thresh_max'].set_adjustment(adjustment)
-
-        combo_box_set_list(self.widget['combo_hertz_model'],
-                           ['Cone', 'Sphere'])
-        combo_box_set_list(self.widget['combo_stiff_method'],
-                           ['Raw', 'Linear', 'Extrema', 'Median'])
-        self.widget['combo_hertz_model'].set_active(1)
-        self.widget['combo_stiff_method'].set_active(0)
-        self.widget['spin_tip_carac'].set_value(40)
-        self.widget['spin_poisson_ratio'].set_value(0.3)
-        combo_box_set_list(self.widget['combo_ev_fit_model'],
-                                                    ['None', 'wlc', 'fjc'])
-        #####
-        ## Event tab
-        #####
-
-        # The windows used for the plots
-        self.win_plot = {'Curve Plot': 0,
-                    'Indent Plot': 0,
-                    'Topography Map': 0,
-                    'Piezo Height': 0,
-                    'Stiffness Map': 0,
-                    'Event Map': 0,
-                    'Event Force Map': 0,
-                    'Event Distance Map': 0,
-                    'Event Length Map': 0,
-                    'Stiffness Tomo': 0,
-                    'Average Stiffness Tomo': 0,
-                    'Mosaic Piezo': 0,
-                    'Mosaic Topo': 0,
-                    'Mosaic Stiffness': 0,
-                    'Mosaic Event': 0,
-                    'Mosaic Event Force': 0,
-                    'Hist Event Force': 0,
-                    'Hist Event LR': 0,
-                    'Hist Event Dist': 0,
-                    'Hist Event Stiff': 0,
-                    'Hist Event Rel Stiff': 0,
-                    'Hist Event Length': 0,
-                    'Hist Event Persistent Length': 0,
-                    'TL Rel Stiffness': 0,
-                    'TL Nbr Event': 0,
-                    'Scatter_FvsLR': 0,
-                    'Scatter_FvsDist': 0,
-                    'Scatter_FvsStiff': 0,
-                    'Scatter_LRvsDist': 0,
-                    'Scatter_LRvsStiff': 0,
-                    'Scatter_DistvsStiff': 0,
-                    'Scatter_FvsRelStiff': 0,
-                    'Scatter_LRvsRelStiff': 0,
-                    'Scatter_DistvsRelStiff': 0,
-                    'Slice_on_map': 0,
-                    'Hist Young Modulus': 0,
-                    }
-        if arg is not None:
-            self.on_open_experiment_activate(arg)
-    ##########################################################################
-    # Misc part of the window
-
-    # bottom
-    def display_progressbar(self, fraction, text=''):
-        """
-            Display the progress bar.
-        """
-        if fraction == None:
-            self.widget['progressbar'].set_property('visible', True)
-            self.widget['progressbar'].set_fraction(0)
-            self.widget['progressbar'].set_text('')
-        elif type(fraction) != str:
-            while gtk.events_pending():
-                gtk.main_iteration()
-            if not self.widget['progressbar'].get_property('visible'):
-                self.widget['progressbar'].set_property('visible', True)
-            self.widget['progressbar'].set_fraction(fraction)
-            self.widget['progressbar'].set_text(text)
-            self.widget['progressbar'].show()
-        elif fraction == 'pulse':
-            while gtk.events_pending():
-                gtk.main_iteration()
-            self.widget['progressbar'].pulse()
-            self.widget['progressbar'].set_text(text)
-            self.widget['progressbar'].show()
-
-    def update_switch(self):
-        """
-            Update switches in the lower part of the GUI.
-        """
-        # generate the text
-        text = ''
-        _fvid = self.experiment.file['current']
-        for key in self.experiment.switch_dict:
-            text += key + ' : ' + str(self.experiment.get_switch(key)) + ' | '
-        self.widget['label_switch_state'].set_text(text)
-        _thresh = self.experiment.file['list'][_fvid].get_switch('ev_thresh')
-        self.widget['spin_ev_threshold_dist'].set_value(_thresh)
-        self.widget['spin_poisson_ratio'].set_value(
-           self.experiment.file['list'][_fvid].get_parameter('poisson_ratio'))
-        _thresh = self.experiment.file['list'][_fvid].get_switch(
-                                                            'ev_fit_length')
-        if _thresh[0] is not None:
-            self.widget['spin_ev_length_thresh_max'].set_value(_thresh[0])
-        else:
-            self.widget['spin_ev_length_thresh_max'].set_value(0)
-        if _thresh[1] is not None:
-            self.widget['spin_ev_length_thresh_max'].set_value(_thresh[1])
-        else:
-            self.widget['spin_ev_length_thresh_max'].set_value(0)
-
-    def update_hist(self, label, max_val, min_val=0):
-        """
-            Update the histogram properties.
-        """
-        meth_name = 'on_button_%s_clicked' % label
-        # First disconnect the signal from the widget. Otherwise, it will plot
-        # automatically. This is not wanted in case of loading new files, ...
-        for item in ['min', 'max', 'size']:
-            widget_name = 'spin_%s_%s' % (label, item)
-            signal_name = '%s_min_%s' % (widget_name, meth_name)
-            if signal_name in self.signal:
-                self.widget[widget_name].disconnect(self.signal[signal_name])
-        widget_name = 'spin_%s_max' % label
-        self.widget[widget_name].set_adjustment(
-                        gtk.Adjustment(value=max_val,
-                                       lower=min_val,
-                                       upper=max_val * 10,
-                                       step_incr=max_val / 100,
-                                       page_incr=max_val / 25,
-                                       page_size=0))
-        self.widget[widget_name].set_text(str(max_val))
-
-        widget_name = 'spin_%s_min' % label
-        self.widget[widget_name].set_adjustment(
-                        gtk.Adjustment(value=min_val,
-                                       lower=min_val,
-                                       upper=max_val,
-                                       step_incr=max_val / 100,
-                                       page_incr=max_val / 25,
-                                       page_size=0))
-        self.widget[widget_name].set_text(str(min_val))
-
-        widget_name = 'spin_%s_size' % label
-        self.widget[widget_name].set_adjustment(
-                        gtk.Adjustment(value=max_val / 10,
-                                       lower=0,
-                                       upper=max_val,
-                                       step_incr=max_val / 1000,
-                                       page_incr=max_val / 250,
-                                       page_size=0))
-        self.widget[widget_name].set_text(str(max_val / 10))
-        meth = getattr(self, meth_name)
-        # Last : connect signal from the spins
-        for item in ['min', 'max', 'size']:
-            widget_name = 'spin_%s_%s' % (label, item)
-            signal_name = '%s_min_%s' % (widget_name, meth_name)
-            self.signal[signal_name] = \
-                    self.widget[widget_name].connect('value_changed', meth)
-
-    def update(self, what):
-        """
-            Update the GUI.
-        """
-        if what == 'show gride position':
-            self.widget['label_pos_x'].set_text(str(self.force_volume.pos_x))
-            self.widget['label_pos_y'].set_text(str(self.force_volume.pos_y))
-            try:
-                self.win_plot['Piezo Height'].mark_pos(
-                                                self.force_volume.pos_x,
-                                                self.force_volume.pos_y)
-            except (KeyError, StandardError):
-                pass
-            try:
-                self.win_plot['Stiffness Map'].mark_pos(
-                                                self.force_volume.pos_x,
-                                                self.force_volume.pos_y)
-            except (KeyError, StandardError):
-                pass
-            try:
-                self.win_plot['Event Map'].mark_pos(
-                                                self.force_volume.pos_x,
-                                                self.force_volume.pos_y)
-            except (KeyError, StandardError):
-                pass
-            try:
-                self.win_plot['Topography Map'].mark_pos(
-                                                self.force_volume.pos_x,
-                                                self.force_volume.pos_y)
-            except (KeyError, StandardError):
-                pass
-        elif what == 'show glass slope':
-            self.widget['entry_glass_slope'].set_text(
-                                    str(self.force_volume.stiffness['glass']))
-        elif what == 'gui':
-            if self.force_volume is None:
-                return
-            self.widget['spin_max_rel_stiffness'].set_value(
-                                self.experiment.parameters['rel_stiff_dist'])
-            self.widget['entry_number_deep'].set_text(
-                                str(self.force_volume.stiffness['nb_parts']))
-            self.widget['entry_size_deep'].set_text(
-                                str(self.force_volume.stiffness['size_parts']))
-            self.widget['spin_nbr_rand_event'].set_value(
-                                self.force_volume.event['nbr_random'])
-            self.widget['spin_fit_seg_size'].set_value(
-                                self.force_volume.stiffness['poc_len_slice'])
-            if self.force_volume.stiffness['hertz_model'] == 'Cone':
-                self.widget['combo_hertz_model'].set_active(0)
-            elif self.force_volume.stiffness['hertz_model'] == 'Sphere':
-                self.widget['combo_hertz_model'].set_active(1)
-            if self.force_volume.stiffness['fit_method'] == 'Raw':
-                self.widget['combo_stiff_method'].set_active(0)
-            elif self.force_volume.stiffness['fit_method'] == 'Linear':
-                self.widget['combo_stiff_method'].set_active(1)
-            elif self.force_volume.stiffness['fit_method'] == 'Extrema':
-                self.widget['combo_stiff_method'].set_active(2)
-            elif self.force_volume.stiffness['fit_method'] == 'Median':
-                self.widget['combo_stiff_method'].set_active(3)
-            self.widget['spin_tip_carac'].set_value(
-                                self.force_volume.stiffness['point_carac'])
-            if self.force_volume.header['event_fit_model'] == None:
-                self.widget['combo_ev_fit_model'].set_active(0)
-            elif self.force_volume.header['event_fit_model'] == 'wlc':
-                self.widget['combo_ev_fit_model'].set_active(1)
-            elif self.force_volume.header['event_fit_model'] == 'fjc':
-                self.widget['combo_ev_fit_model'].set_active(2)
-
-            # Update switch apply_on_all.
-            if self.experiment.get_switch('all') == 'Yes':
-                self.widget['apply_on_all'].set_active(True)
-            elif self.experiment.get_switch('all') == 'No':
-                self.widget['apply_on_all'].set_active(False)
-            self.update('hist entry')
-        elif what == 'hist entry':
-            ##
-            ## Histograms
-            ##
-            try:
-                max_dist_hist = self.force_volume.trace_x[-1]
-            except TypeError:
-                max_dist_hist = 10000
-            self.update_hist('ev_force_hist', max_val=1.)
-            self.update_hist('ev_lr_hist', max_val=1.)
-
-            self.update_hist('ev_dist_hist',
-                             max_val=max_dist_hist)
-            self.update_hist('ev_relstiff_hist', max_val=10., min_val=-10.)
-            # Take the maximum stiffness
-            stiff_max = 1.e8
-            exp = 7
-            for fvo in self.experiment.file['list']:
-                if fvo.get_array('Stiffness') is not None:
-                    try:
-                        stiff_max = fvo.get_array('Stiffness').max()
-                    except ValueError:
-                        pass
-            if stiff_max:
-                try:
-                    exp = int(numpy.log10(stiff_max)) + 1
-                except ValueError:
-                    exp = 7
-            else:
-                exp = 7
-            self.update_hist('ev_stiff_hist', max_val=10. ** exp)
-            self.update_hist('young_modulus_hist', max_val=10. ** exp)
-            self.update_hist('ev_length_hist',
-                             max_val=max_dist_hist * 2)
-            self.update_hist('ev_plength_hist',
-                             max_val=max_dist_hist * 2)
-            #fvo.get_array('Stiffness').shape[2]
-            # update max depth in for the plot.
-            spin_depth = ['spin_ym_hist_depth_nb']
-            meth_name = 'on_button_young_modulus_hist_clicked'
-            if fvo.get_array('Stiffness') is not None:
-                for item in spin_depth:
-                    # disconnect the widget from the signal
-                    signal_name = '%s_min_%s' % (meth_name, item)
-                    if signal_name in self.signal:
-                        self.widget[item].disconnect(self.signal[signal_name])
-                    self.widget[item].set_adjustment(
-                        gtk.Adjustment(
-                                value=0,
-                                lower=0,
-                                upper=fvo.get_array('Stiffness').shape[2],
-                                step_incr=1,
-                                page_incr=1,
-                                page_size=0))
-                    # and reconnect it
-                    meth = getattr(self, meth_name)
-                    # Last : connect signal from the spins
-                    self.signal[signal_name] = \
-                            self.widget[item].connect('value_changed', meth)
-
-        elif what == 'fv display prop':
-            self.force_volume.plot_who['Av'] = \
-                           self.widget['check_display_fc_trace'].get_active()
-            self.force_volume.plot_who['Re'] = \
-                           self.widget['check_display_fc_retrace'].get_active()
-            self.force_volume.plot_who['PoC'] = \
-                           self.widget['check_display_poc'].get_active()
-            self.force_volume.plot_who['Event'] = \
-                           self.widget['check_display_event'].get_active()
-            self.force_volume.plot_who['Indent'] = \
-                           self.widget['check_display_indent'].get_active()
-        elif what == 'plots':
-            for item in self.win_plot:
-                if self.win_plot[item]:
-                    self.win_plot[item].set_size(
-                                    self.experiment.parameters['plot_size'][0],
-                                    self.experiment.parameters['plot_size'][1])
-                    if self.win_plot[item].get_type() == 'histogram':
-                        self.win_plot[item].set_y_rel(
-                                    self.experiment.parameters['histo_y_rel'])
-
-        self.update_switch()
-
-    def regenerate_plot(self, ptype='normal'):
-        """
-            Regenerate a window plot and returns the window and widgets.
-        """
-        builder = gtk.Builder()
-        if ptype == 'normal':
-            try:
-                _glade_filename = resource_filename('openfovea',
-                                                    'glade/plot.glade')
-            except NotImplementedError:
-                _glade_filename = 'openfovea/glade/plot.glade'
-        elif ptype == 'tomography':
-            try:
-                _glade_filename = resource_filename('openfovea',
-                                                'glade/stiffness_plot.glade')
-            except NotImplementedError:
-                _glade_filename = 'openfovea/glade/stiffness_plot.glade'
-        try:
-            builder.add_from_file(_glade_filename)
-        except:  # In windows environment...
-            print ptype
-            if ptype == 'tomography':
-                glade_filename = os.path.join(os.path.dirname(sys.executable),
-                                        'openfovea/glade/stiffness_plot.glade')
-            elif ptype == 'normal':
-                glade_filename = os.path.join(os.path.dirname(sys.executable),
-                                        'openfovea/glade/plot.glade')
-            else:
-                glade_filename = os.path.join(os.path.dirname(sys.executable),
-                                        'openfovea/glade/plot.glade')
-            builder.add_from_file(glade_filename)
-        window = builder.get_object("WindowPlot")
-        builder.connect_signals(self)
-        if ptype == 'normal':
-            widget = {
-            'plot_area': builder.get_object('boxPlot'),
-            'scrollbar_min': builder.get_object('scrollbar_min'),
-            'scrollbar_max': builder.get_object('scrollbar_max'),
-            'scrollbar_depth': builder.get_object('scrollbar_depth'),
-            'box_nav_tool': builder.get_object('box_nav_tool'),
-            'button_modify_plot': builder.get_object('button_modify_plot')}
-        elif ptype == 'tomography':
-            widget = {
-            'plot_area': builder.get_object('boxPlot'),
-            'display_x': builder.get_object('display_x'),
-            'display_y': builder.get_object('display_y'),
-            'display_z': builder.get_object('display_z'),
-            'adjust_x': builder.get_object('adjust_x'),
-            'adjust_y': builder.get_object('adjust_y'),
-            'adjust_z': builder.get_object('adjust_z'),
-            'scrollbar_min': builder.get_object('scrollbar_min'),
-            'scrollbar_max': builder.get_object('scrollbar_max')}
-        return [window, widget]
-
-    def modify_window(self, window, how):
-        """
-            Modify the specified window.
-
-            window = 'Curve Plot' : add the scale bars to modify the events /
-                                    PoC detection threshold.
-        """
-
-        # Curve Plot window modification to tune the event detection
-        if window == 'Curve Plot':
-            if how == 'Event detection':
-                self.win_plot['Curve Plot'].widget['scrollbar_max'].\
-                            set_property('visible', True)
-                self.win_plot['Curve Plot'].widget['scrollbar_max'].\
-                            set_adjustment(gtk.Adjustment(
-                               self.force_volume.header['event_detect_weight'],
-                               0.0, 5, 0.1, 0.5, 0))
-                self.win_plot['Curve Plot'].widget['scrollbar_max'].\
-                            connect_object("change-value",
-                                            self.change_event_weight, None)
-            if how == 'PoC detection':
-                self.win_plot['Curve Plot'].widget['scrollbar_depth'].\
-                            set_property('visible', True)
-                self.win_plot['Curve Plot'].widget['scrollbar_depth'].\
-                            set_adjustment(gtk.Adjustment(
-                                self.force_volume.stiffness['poc_threshold'],
-                                0.0, 10, 0.1, 0.5, 0))
-                self.win_plot['Curve Plot'].widget['scrollbar_depth'].\
-                            connect_object("change-value",
-                                            self.change_poc_threshold, None)
-
-    def close_all_windows(self):
-        """
-            Close all the plot windows.
-            Usefull when loading new experiment.
-        """
-        for window in self.win_plot:
-            if exist(self.win_plot[window]):
-                self.win_plot[window].on_win_plot_destroy('from_gui')
-
-    def on_gride_click(self, event):
-        """
-            Event when user click on the array.
-        """
-        if event.inaxes is not None:
-            # Create the factor (1 if [0;1000[, 1000 if [1000:1e6[, ...)
-            scan_size = self.force_volume.header['scan_size']
-            pix_size = self.force_volume.header['pixel_size']
-            factor = [1000 ** (int(numpy.log10(i) / 3)) for i in scan_size]
-            x_pos = event.xdata * factor[0] / pix_size[0]
-            y_pos = event.ydata * factor[1] / pix_size[1]
-            if event.button == 1:
-                # Left mouse button ==> goto
-                self.force_volume.go_to(int(x_pos), int(y_pos))
-                self.plot_curve()
-                self.update('show gride position')
-            elif event.button == 3:
-                # Right mouse button ==> slice
-                self.path_gride(event.inaxes)
-
-    def on_gride_motion(self, event):
-        """
-            Event when mouse is moving on the array.
-        """
-        if event.inaxes is not None:
-            self.path_gride(event.inaxes)
-
-    def path_gride(self, axe_id):
-        """
-            Slice the array.
-        """
-        path = None
-        for item in self.win_plot:
-            # Find the window where user click
-            if self.win_plot[item]:
-                _axis = self.win_plot[item].axis
-                if type(_axis) == dict and 'array' in _axis:
-                    if _axis['array'] == axe_id:
-                        path = self.win_plot[item].get_path()
-
-        if path is not None:
-            # Points list is defined.
-            this_slice = self.force_volume.get_path('all', path)
-
-            if not exist(self.win_plot['Slice_on_map']):
-                window, widget = self.regenerate_plot()
-                self.win_plot['Slice_on_map'] = plot_gtk.plotInteractiveCurve(
-                                            window, widget, win_title='Slices')
-                                        #xlabel = '[nm]',
-                                        #ylabel = '???',
-                                        #title = 'Slice of...',
-                                        #win_title = 'Slice of...')
-                self.win_plot['Slice_on_map'].plot(this_slice[0],
-                                                     this_slice[1],
-                                                     this_slice[2])
-            else:
-                self.win_plot['Slice_on_map'].modify_plot(this_slice[0],
-                                                            this_slice[1])
-
-    def on_mosaic_click(self, event):
-        """
-            Change the current FV scan by clicking on the corresponding scan in
-            the mosaic view.
-        """
-        for item in self.win_plot:
-            if isinstance(self.win_plot[item], plot_gtk.plotMosaic):
-                if self.win_plot[item].axis.count(event.inaxes):
-                    _index = self.win_plot[item].axis.index(event.inaxes)
-                    self.force_volume = self.experiment.get_file(_index)
-                    self.update('fv display prop')
-                    self.update('gui')
-                    self.widget['combo_list_files'].set_active(_index)
-
-    def on_mosaic_pick(self, event):
-        """
-            Change the corresponding scan state according to the picked object.
-            For example, by clicking on the "M" box, it changes the mask state.
-        """
-        for item in self.win_plot:
-            if isinstance(self.win_plot[item], plot_gtk.plotMosaic):
-                if self.win_plot[item].axis.count(event.mouseevent.inaxes):
-                    [axis, otype] = self.win_plot[item].index(event)
-                    if otype == 'mask':
-                        current = \
-                          self.experiment.file['list'][axis].get_switch('mask')
-                        self.experiment.file['list'][axis].set_switch('mask',
-                                                                not(current))
-
-    def change_event_weight(self, widget, jump, value):
-        """
-            Change the event detection dependency to noise. Done with the scale
-            bar.
-        """
-
-        if DEBUG:
-            print "Changing event weight..."
-            print widget, jump
-        self.experiment.parameters['event_detect_weight'] = value
-        self.plot_curve()
-
-    def change_poc_threshold(self, widget, jump, value):
-        """
-            Change the point of contact detection threshold. Done with the
-            scale bar.
-        """
-
-        if DEBUG:
-            print "Changing poc threshold..."
-            print widget, jump
-        self.experiment.PoC_threshold = value
-        self.plot_curve()
-
-    #############################################################
-    ## File Menu
-    def on_new_experiment_activate(self, widget):
-        '''
-            Creates a new experiment by asking the user to point where the AFM
-            files are.
-        '''
-        if DEBUG:
-            print "Make new experiment. Call from :"
-            print widget
-        # Call the file chooser dialog.
-        # In order to open directory, change action in
-        # gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER
-        chooser = gtk.FileChooserDialog(
-                                title='Choose folder',
-                                action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
-                                buttons=(gtk.STOCK_CANCEL,
-                                         gtk.RESPONSE_CANCEL,
-                                         gtk.STOCK_OPEN,
-                                         gtk.RESPONSE_OK))
-        chooser.set_select_multiple(False)
-        chooser.set_default_response(gtk.RESPONSE_OK)
-        chooser.set_local_only(False)
-        chooser.set_filename(self.config['folder-fv'])
-        response = chooser.run()
-        # Analyse the answer
-        if response == gtk.RESPONSE_OK:
-            folder = u'' + chooser.get_filenames()[0]
-        elif response == gtk.RESPONSE_CANCEL:
-            chooser.destroy()
-            return
-        else:
-            return
-
-        chooser.destroy()
-        self.experiment = classes.FVFolder()
-        _thread = threading.Thread(
-                            target=self.experiment.load_folder, args=(folder,))
-        _thread.start()
-        while _thread.isAlive():
-            self.display_progressbar(self.experiment.counter['num'],
-                                     self.experiment.counter['text'])
-            time.sleep(0.1)
-        self.force_volume = self.experiment.get_file(0)
-        # File was correctly loaded, saving the folder in preferences...
-        self.config['folder-fv'] = folder
-        self.exp_filename = None
-        # update file list comboBox...
-        combo_box_set_list(self.widget['combo_list_files'],
-                           self.experiment.file['name'])
-        #self.update('gui')
-        self.display_progressbar(None)
-        self.close_all_windows()
-
-    def load_exp(self):
-        '''
-            Loads an aex file. This is the generic function.
-        '''
-        # Call FileChooser dialog...
-        chooser = gtk.FileChooserDialog(title='Choose file to open',
-                                        action=gtk.FILE_CHOOSER_ACTION_OPEN,
-                                        buttons=(gtk.STOCK_CANCEL,
-                                                  gtk.RESPONSE_CANCEL,
-                                                  gtk.STOCK_OPEN,
-                                                  gtk.RESPONSE_OK))
-        chooser.set_select_multiple(False)
-        chooser.set_default_response(gtk.RESPONSE_OK)
-        chooser.set_local_only(False)
-        chooser.set_current_folder(self.config['folder-aex'])
-        ext_filter = gtk.FileFilter()
-        ext_filter.add_pattern('*.aex')
-        ext_filter.set_name('aex - Afm Experiment XML')
-        chooser.add_filter(ext_filter)
-        response = chooser.run()
-        # Analyse output:
-        if response == gtk.RESPONSE_OK:
-            file_item = u'' + chooser.get_filenames()[0]
-        elif response == gtk.RESPONSE_CANCEL:
-            chooser.destroy()
-            return
-        else:
-            chooser.destroy()
-            return
-        chooser.destroy()
-        experiment = self.__load_exp(file_item)
-        return experiment
-
-    def __load_exp(self, file_item):
-        experiment = classes.FVFolder()
-        _thread = threading.Thread(target=experiment.load_aex,
-                                   args=(file_item, ))
-        _thread.start()
-        self.display_progressbar('pulse')
-        while _thread.isAlive():
-            self.display_progressbar('pulse', experiment.counter['text'])
-            time.sleep(0.1)
-        # File was correctly loaded, saving the folder in preferences...
-        self.config['folder-aex'] = os.path.split(file_item)[0]
-        experiment.counter['num'] = 0  # reset the counter
-        self.display_progressbar(None)
-        return experiment
-
-    def on_open_experiment_activate(self, arg):
-        """
-             Load experiment.
-        """
-
-        if DEBUG:
-            print "Open experiment. Call from :"
-            print arg
-        if type(arg) in [str, unicode]:
-            _experiment = self.__load_exp(arg)
-        else:
-            _experiment = self.load_exp()
-        if _experiment is not None:
-            # If smth is loaded, get it into memory. Else, keep the same.
-            self.experiment = _experiment
-            self.window.set_title(("%s : %s") % (WIN_TITLE,
-                                               self.experiment.short_name))
-            self.force_volume = self.experiment.get_file(0)
-            self.exp_filename = self.experiment.filename
-            # update file list comboBox...
-            combo_box_set_list(self.widget['combo_list_files'],
-                               self.experiment.file['name'])
-            self.update('gui')
-            self.update('hist entry')
-            self.update_switch()
-            self.close_all_windows()
-
-    def on_open_exp_compare_activated(self, widget):
-        """
-            Load experiment for comparison.
-        """
-
-        if DEBUG:
-            print "Make experiment to compare. Call from :"
-            print widget
-        self.experiment_compare = self.load_exp()
-
-    def on_save_experiment_as_activate(self, widget):
-        '''
-        Saves data and results in an aex file.
-        '''
-        if DEBUG:
-            print "Save experiment. Call from :"
-            print widget
-        chooser = gtk.FileChooserDialog(title='Save file to ...',
-                                        action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                        buttons=(gtk.STOCK_CANCEL,
-                                                  gtk.RESPONSE_CANCEL,
-                                                  gtk.STOCK_SAVE,
-                                                  gtk.RESPONSE_OK))
-        chooser.set_default_response(gtk.RESPONSE_OK)
-        chooser.set_local_only(False)
-        chooser.set_current_folder(self.config['folder-aex'])
-        response = chooser.run()
-        # Analyse output:
-        if response == gtk.RESPONSE_OK:
-            self.exp_filename = u'' + chooser.get_filenames()[0]
-        else:
-            chooser.destroy()
-            return
-        chooser.destroy()
-        self.save_exp()
-
-        self.window.set_title(("%s : %s") % (WIN_TITLE,
-                                             self.experiment.short_name))
-
-    def on_save_experiment_activate(self, widget):
-        """
-            Save the experiment.
-        """
-
-        if self.exp_filename is not None and os.path.isfile(self.exp_filename):
-            self.save_exp()
-        else:
-            self.on_save_experiment_as_activate(widget)
-
-    def save_exp(self):
-        """
-            Save the experiment.
-        """
-        #self.experiment.save(file_item)
-        _thread = threading.Thread(target=self.experiment.save,
-                                   args=(self.exp_filename, ))
-        _thread.start()
-        self.display_progressbar('pulse')
-        while _thread.isAlive():
-            self.display_progressbar('pulse', self.experiment.counter['text'])
-            time.sleep(0.1)
-        # File was correctly saved. Saving the folder in preferences...
-        self.config['folder-aex'] = os.path.split(self.exp_filename)[0]
-        self.experiment.counter['num'] = 0
-        self.display_progressbar(None)
-
-    def on_menu_export_stiffness_activate(self, widget):
-        """
-            Export the computed stiffness on a csv file
-        """
-        if DEBUG:
-            print "Export stiffness. Called from :"
-            print widget
-
-        chooser = gtk.FileChooserDialog(title='Export stiffness',
-                                        action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                        buttons=(gtk.STOCK_CANCEL,
-                                                  gtk.RESPONSE_CANCEL,
-                                                  gtk.STOCK_SAVE,
-                                                  gtk.RESPONSE_OK))
-        chooser.set_default_response(gtk.RESPONSE_OK)
-        chooser.set_local_only(False)
-        chooser.set_current_folder(self.config['folder-export'])
-        response = chooser.run()
-        if response == gtk.RESPONSE_OK:
-            filename = chooser.get_filenames()[0]
-            self.experiment.export_stiffness(filename)
-            self.config['folder-export'] = os.path.split(filename)[0]
-        elif response == gtk.RESPONSE_CANCEL:
-            chooser.destroy()
-            return
-        else:
-            chooser.destroy()
-            return
-        chooser.destroy()
-
-    def on_menu_export_average_stiffness_tomography_activate(self, widget):
-        """
-            Export the average stiffness on a csv file
-        """
-        if DEBUG:
-            print "Export average stiffness. Called from :"
-            print widget
-        chooser = gtk.FileChooserDialog(title='Export average stiffness',
-                                        action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                        buttons=(gtk.STOCK_CANCEL,
-                                                  gtk.RESPONSE_CANCEL,
-                                                  gtk.STOCK_SAVE,
-                                                  gtk.RESPONSE_OK))
-        chooser.set_default_response(gtk.RESPONSE_OK)
-        chooser.set_local_only(False)
-        chooser.set_current_folder(self.config['folder-export'])
-        response = chooser.run()
-        if response == gtk.RESPONSE_OK:
-            filename = chooser.get_filenames()[0]
-            self.experiment.export_average_stiffness_tomo(filename)
-            self.config['folder-export'] = os.path.split(filename)[0]
-        elif response == gtk.RESPONSE_CANCEL:
-            chooser.destroy()
-            return
-        else:
-            chooser.destroy()
-            return
-        chooser.destroy()
-
-    def on_menu_export_map_activate(self, widget):
-        """
-            Export the stiffness map of the file as a png file.
-        """
-        if DEBUG:
-            print "Export map. Called from :"
-            print widget
-        array_dict = {}
-        for item in self.force_volume.get_array('keys'):
-            array_dict[item] = self.force_volume.get_array(item)
-        export = MapDisplay(array_dict,
-                            folder=self.config['folder-export'],
-                            depth=self.force_volume.stiffness['size_parts'],
-                            fvname=self.force_volume.name,
-                            scan_size=self.force_volume.header['scan_size'])
-        export.run()
-
-    def on_menu_export_curve_activate(self, widget):
-        """
-            Export the force indentation curve as csv file.
-        """
-        if DEBUG:
-            print "Export curve. Called from :"
-            print widget
-        chooser = gtk.FileChooserDialog(title='Export FD curve',
-                                        action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                        buttons=(gtk.STOCK_CANCEL,
-                                                  gtk.RESPONSE_CANCEL,
-                                                  gtk.STOCK_SAVE,
-                                                  gtk.RESPONSE_OK))
-        chooser.set_default_response(gtk.RESPONSE_OK)
-        chooser.set_local_only(False)
-        chooser.set_current_folder(self.config['folder-export'])
-        response = chooser.run()
-        if response == gtk.RESPONSE_OK:
-            filename = chooser.get_filenames()[0]
-            self.force_volume.export_curve(filename, 'both')
-            self.config['folder-export'] = os.path.split(filename)[0]
-        elif response == gtk.RESPONSE_CANCEL:
-            chooser.destroy()
-            return
-        else:
-            chooser.destroy()
-            return
-        chooser.destroy()
-
-    def on_menu_export_event_prop_activate(self, widget):
-        """
-            Export the event properties as csv files.
-        """
-
-        if DEBUG:
-            print "Export evnt. Called from :"
-            print widget
-        chooser = gtk.FileChooserDialog(title='Export event properties',
-                                        action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                        buttons=(gtk.STOCK_CANCEL,
-                                                  gtk.RESPONSE_CANCEL,
-                                                  gtk.STOCK_SAVE,
-                                                  gtk.RESPONSE_OK))
-        chooser.set_default_response(gtk.RESPONSE_OK)
-        chooser.set_local_only(False)
-        chooser.set_current_folder(self.config['folder-export'])
-        response = chooser.run()
-        if response == gtk.RESPONSE_OK:
-            filename = chooser.get_filenames()[0]
-            self.experiment.export_events(filename)
-            self.config['folder-export'] = os.path.split(filename)[0]
-        elif response == gtk.RESPONSE_CANCEL:
-            chooser.destroy()
-            return
-        else:
-            chooser.destroy()
-            return
-        chooser.destroy()
-
-    def on_menu_export_evt_nbr_activate(self, widget):
-        """
-            Export the number of evt per curves in csv file.
-        """
-
-        if DEBUG:
-            print "Export evnt. Called from :"
-            print widget
-        chooser = gtk.FileChooserDialog(title='Export event number per curves',
-                                        action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                        buttons=(gtk.STOCK_CANCEL,
-                                                  gtk.RESPONSE_CANCEL,
-                                                  gtk.STOCK_SAVE,
-                                                  gtk.RESPONSE_OK))
-        chooser.set_default_response(gtk.RESPONSE_OK)
-        chooser.set_local_only(False)
-        chooser.set_current_folder(self.config['folder-export'])
-        response = chooser.run()
-        if response == gtk.RESPONSE_OK:
-            filename = chooser.get_filenames()[0]
-            self.experiment.export_nbr_events(filename)
-            self.config['folder-export'] = os.path.split(filename)[0]
-        elif response == gtk.RESPONSE_CANCEL:
-            chooser.destroy()
-            return
-        else:
-            chooser.destroy()
-            return
-        chooser.destroy()
-
-    def on_menu_mask_activate(self, widget):
-        """
-            Generate masks.
-        """
-
-        if DEBUG:
-            print "Activate mask. Called from :"
-            print widget
-        mask_edit = MaskProperties(self.force_volume)
-        answer = mask_edit.run()
-        del answer
-        mask_edit.destroy()
-        self.experiment.update_switch()
-        self.update('gui')
-    ##
-    ## Edition Menu
-
-    ########
-    ## dialog experiment properties
-    def on_exp_prop_activate(self, widget):
-        '''
-        Create the properties dialog.
-        '''
-        if DEBUG:
-            print "Property dialog. Called from :"
-            print widget
-
-        self.properties_dialog = dialog_experiment_properties.main_win(
-            author=self.experiment.author,
-            comment=self.experiment.comment,
-            spring_constant=self.experiment.parameters['spring_constant'],
-            inject_index=[self.experiment.parameters['injection_index'],
-                          len(self.experiment.file['list'])],
-            stiff_glass=self.experiment.parameters['glass'],
-            trace_curve=[self.force_volume.trace_x, self.force_volume.trace_y],
-            plot_size=self.experiment.parameters['plot_size'],
-            group=self.experiment.group,
-            linewidth=self.config['linewidth'],
-            histo_y_rel=self.experiment.parameters['histo_y_rel'],
-            plot_hist_gauss=self.experiment.parameters['plot_hist_gauss'],
-            plot_color=self.plot_properties.color_type
-            )
-        self.properties_dialog.validate = self.properties_dialog_validate
-
-    def properties_dialog_validate(self):
-        '''
-        The ending function of the experiment properties dialog.
-        The changed data are stored in the experiment
-        '''
-        # We redefine this function to catch the final signal from the window
-        self.experiment.author = self.properties_dialog.author
-        self.experiment.comment = self.properties_dialog.comment
-        self.experiment.parameters['injection_index'] = \
-                                    int(self.properties_dialog.inject_index[0])
-        self.experiment.set_parameters('spring_constant',
-                                        self.properties_dialog.spring_cst)
-        self.experiment.set_parameters('glass',
-                                        self.properties_dialog.stiff_glass)
-        self.experiment.set_parameters('plot_size',
-                                        self.properties_dialog.save_size)
-        gprop = self.properties_dialog.group
-        for key in ['label', 'display']:
-            self.experiment.set_group_prop(key, -1, gprop[key])
-        self.config['linewidth'] = self.properties_dialog.linewidth
-        self.experiment.parameters['histo_y_rel'] = \
-                                       self.properties_dialog.histo_y_rel
-        self.experiment.set_parameters('plot_hist_gauss',
-                                       self.properties_dialog.plot_hist_gauss)
-        self.plot_properties.color_type = self.properties_dialog.plot_color
-        self.properties_dialog.destroy()
-        self.update('plots')
-    ##
-
-    ####
-    ## Group
-    def on_group_activate(self, widget):
-        """
-            Manage the groups.
-        """
-
-        if DEBUG:
-            print "Activate group. Called from :"
-            print widget
-        win = FileGroup(self.experiment.file['name'],
-                        self.experiment.file['group'])
-        result = win.run()
-        if result is not None:
-            self.experiment.set_group(result)
-        win.destroy()
-    ##
-
-    ###############
-    ## Option Menu
-    def on_apply_on_all_toggled(self, widget):
-        """
-            Switch the "apply_on_all" state.
-        """
-
-        self.apply_on_all = widget.get_active()
-        self.experiment.set_switch('all', widget.get_active())
-        self.update('gui')
-
-    def on_show_header_activate(self, widget):
-        """
-            Show the current FV header in a window.
-        """
-
-        if DEBUG:
-            print "Show header. Called from :"
-            print widget
-        if self.force_volume is None:
-            # Stop execution here if no files loaded
-            display_error('no_fv')
-            return
-        treestore = create_header_tree(self.force_volume.header)
-        treeview = gtk.TreeView(treestore)
-        tvcolumn = gtk.TreeViewColumn('File Header')
-        treeview.append_column(tvcolumn)
-        cell = gtk.CellRendererText()
-        tvcolumn.pack_start(cell, True)
-        tvcolumn.add_attribute(cell, 'text', 0)
-        treeview.set_search_column(0)
-        tvcolumn.set_sort_column_id(0)
-        treeview.set_reorderable(True)
-
-        # Create a new window
-        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
-        window.set_title('File Header')
-
-        window.set_size_request(200, 200)
-
-        #window.connect("delete_event", self.delete_event)
-        window.add(treeview)
-        window.show_all()
-
-    def on_flatten_activate(self, widget):
-        """
-            Open the flatten dialog
-        """
-        self.flatten_dialog = FlattenDialog(
-                                self.force_volume.get_array('Piezo', raw=True))
-        new_array = self.flatten_dialog.run()
-        self.force_volume.set_array('Piezo', new_array)
-        self.flatten_dialog.destroy()
-
-    ###########################################################################
-    ## Display tab
-    def on_button_up_clicked(self, widget):
-        """
-            Navigate in the array to the upper FC.
-        """
-        if self.force_volume is None:
-            # Stop execution here if no files loaded
-            display_error('no_fv')
-            return
-        self.update_stiffness_param(self.force_volume, widget)
-        self.force_volume.go_up()
-        self.plot_curve()
-        self.update('show gride position')
-
-    def on_button_down_clicked(self, widget):
-        """
-            Navigat in the array to the down FC.
-        """
-
-        if self.force_volume is None:
-            # Stop execution here if no files loaded
-            display_error('no_fv')
-            return
-        self.update_stiffness_param(self.force_volume, widget)
-        self.force_volume.go_down()
-        self.plot_curve()
-        self.update('show gride position')
-
-    def on_button_next_clicked(self, widget):
-        """
-            Navigate in the array to the next FC.
-        """
-        if self.force_volume is None:
-            # Stop execution here if no files loaded
-            display_error('no_fv')
-            return
-        self.update_stiffness_param(self.force_volume, widget)
-        try:
-            self.force_volume.go_next()
-        except StopIteration:
-            pass
-        self.plot_curve()
-        self.update('show gride position')
-
-    def on_button_prev_clicked(self, widget):
-        """
-            Navigate in the array to the previous FC.
-        """
-        if self.force_volume is None:
-            # Stop execution here if no files loaded
-            display_error('no_fv')
-            return
-        self.update_stiffness_param(self.force_volume, widget)
-        self.force_volume.go_prev()
-        self.plot_curve()
-        self.update('show gride position')
-
-    def on_list_file_combo_box_changed(self, signal):
-        """
-            Change the current FV scan according to the list change.
-        """
-
-        self.force_volume = self.experiment.get_file(signal.get_active())
-        self.update('fv display prop')
-        self.update('gui')
-
-    def on_check_display_fc_trace_clicked(self, widget):
-        """
-            Switch the display of approach curve.
-        """
-        if self.force_volume is None:
-            # Stop execution here if no files loaded
-            display_error('no_fv')
-            return
-        if widget.get_active():
-            self.force_volume.set_to_plot('Av', 1)
-        else:
-            self.force_volume.set_to_plot('Av', 0)
-            if not self.force_volume.to_plot('Re'):
-                self.win_plot['Curve Plot'].on_win_plot_destroy()
-        self.plot_curve()
-
-    def on_check_display_fc_retrace_clicked(self, widget):
-        """
-            Switch the display of retraction curve.
-        """
-        if self.force_volume is None:
-            # Stop execution here if no files loaded
-            display_error('no_fv')
-            return
-        if widget.get_active():
-            self.force_volume.set_to_plot('Re', 1)
-        else:
-            self.force_volume.set_to_plot('Re', 0)
-            if not self.force_volume.to_plot('Av'):
-                self.win_plot['Curve Plot'].on_win_plot_destroy()
-        self.plot_curve()
-
-    def on_check_display_poc_clicked(self, widget):
-        """
-            Switch the display of point of contact on approach curve.
-        """
-        if self.force_volume is None:
-            # Stop execution here if no files loaded
-            display_error('no_fv')
-            return
-        if widget.get_active():
-            self.force_volume.set_to_plot('PoC', 1)
-        else:
-            self.force_volume.set_to_plot('PoC', 0)
-        self.plot_curve()
-
-    def on_check_display_event_clicked(self, widget):
-        """
-            Switch the display of event on retraction curve.
-        """
-        if self.force_volume is None:
-            # Stop execution here if no files loaded
-            display_error('no_fv')
-            return
-        if widget.get_active():
-            self.force_volume.set_to_plot('Event', 1)
-        else:
-            self.force_volume.set_to_plot('Event', 0)
-        self.plot_curve()
-
-    def on_check_display_indent_clicked(self, widget):
-        """
-            Switch the display of indentation curve.
-        """
-        if self.force_volume is None:
-            # Stop execution here if no files loaded
-            display_error('no_fv')
-            return
-        if widget.get_active():
-            self.force_volume.set_to_plot('Indent', 1)
-        else:
-            self.force_volume.set_to_plot('Indent', 0)
-            self.win_plot['Indent Plot'].on_win_plot_destroy()
-        self.plot_curve()
-
-    def on_button_piezzo_array_clicked(self, widget):
-        """
-            Display the piezo array.
-        """
-        if self.force_volume is None:
-            display_error('no_fv')
-            return
-        try:
-            array = self.force_volume.get_array('Piezo')
-        except NotReadyError:
-            answer = ask_message(['Piezo array not loaded',
-                                  'Piezo array is not loaded.\n' +
-                                  'Do you want to load it ?\n\n' +
-                                  'This can take minutes...\n\n' +
-                                  'Note that if you compute the stiffness\n' +
-                                  'Piezo array is automagically loaded.'])
-            if answer == gtk.RESPONSE_YES:
-                self.force_volume.force_piezo_loading()
-                array = self.force_volume.get_array('Piezo')
-            elif answer == gtk.RESPONSE_NO:
-                return
-        if not exist(self.win_plot['Piezo Height']):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot['Piezo Height'] = plot_gtk.plotGride(
-                                    window, widget,
-                                    title=PLOT_WINDOW['piezo array'][2],
-                                    win_title=PLOT_WINDOW['piezo array'][1])
-            self.win_plot['Piezo Height'].figure.canvas.mpl_connect(
-                                                        'button_press_event',
-                                                        self.on_gride_click)
-            self.win_plot['Piezo Height'].figure.canvas.mpl_connect(
-                                                        'motion_notify_event',
-                                                        self.on_gride_motion)
-        self.win_plot['Piezo Height'].set_size(
-                                    self.experiment.parameters['plot_size'])
-        self.win_plot['Piezo Height'].plot(
-                                    array,
-                                    self.force_volume.header['scan_size'],
-                                    cmap=self.plot_properties.get_cmap('Piezo'))
-
-    def on_button_topography_array_clicked(self, widget):
-        """
-            Display the topography (zero-force) array.
-        """
-        if self.force_volume is None:
-            display_error('no_fv')
-            return
-        if self.force_volume.get_array('Topography') is None:
-            display_error('no_compute', 'topography')
-            return
-        if not exist(self.win_plot['Topography Map']):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot['Topography Map'] = plot_gtk.plotGride(
-                                window, widget,
-                                title=PLOT_WINDOW['topography array'][2],
-                                win_title=PLOT_WINDOW['topography array'][1])
-            self.win_plot['Topography Map'].figure.canvas.mpl_connect(
-                                                        'button_press_event',
-                                                        self.on_gride_click)
-            self.win_plot['Topography Map'].figure.canvas.mpl_connect(
-                                                        'motion_notify_event',
-                                                        self.on_gride_motion)
-        self.win_plot['Topography Map'].set_size(
-                                    self.experiment.parameters['plot_size'])
-        self.win_plot['Topography Map'].plot(
-                                self.force_volume.get_array('Topography'),
-                                self.force_volume.header['scan_size'],
-                                cmap=self.plot_properties.get_cmap('Topography'))
-
-    def on_button_stiffness_array_clicked(self, widget):
-        """
-            Display the stiffness array.
-        """
-        if self.force_volume is None:
-            display_error('no_fv')
-            return
-        if not self.force_volume.has_stiffness:
-            display_error('no_compute', 'stiffness')
-            return
-        if not exist(self.win_plot['Stiffness Map']):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot['Stiffness Map'] = plot_gtk.plotGride(
-                                window, widget,
-                                title=PLOT_WINDOW['stiffness array'][2],
-                                win_title=PLOT_WINDOW['stiffness array'][1])
-            self.win_plot['Stiffness Map'].figure.canvas.mpl_connect(
-                                                        'button_press_event',
-                                                        self.on_gride_click)
-            self.win_plot['Stiffness Map'].figure.canvas.mpl_connect(
-                                                        'motion_notify_event',
-                                                        self.on_gride_motion)
-        self.win_plot['Stiffness Map'].set_size(
-                                    self.experiment.parameters['plot_size'])
-        self.win_plot['Stiffness Map'].plot(
-                                self.force_volume.get_array('Stiffness'),
-                                self.force_volume.header['scan_size'],
-                                cmap=self.plot_properties.get_cmap('Stiffness'))
-
-    def on_button_event_array_clicked(self, widget):
-        """
-            Display the event number array.
-        """
-        if self.force_volume is None:
-            display_error('no_fv')
-            return
-        if self.force_volume.get_array('Event') is None:
-            display_error('no_compute', 'event')
-            return
-        if not exist(self.win_plot['Event Map']):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot['Event Map'] = plot_gtk.plotGride(
-                                    window, widget,
-                                    title=PLOT_WINDOW['ev_pos array'][2],
-                                    win_title=PLOT_WINDOW['ev_pos array'][1])
-            self.win_plot['Event Map'].figure.canvas.mpl_connect(
-                                                        'button_press_event',
-                                                        self.on_gride_click)
-        self.win_plot['Event Map'].set_size(
-                                    self.experiment.parameters['plot_size'])
-        self.win_plot['Event Map'].plot(
-                                        self.force_volume.get_array('Event'),
-                                        self.force_volume.header['scan_size'],
-                                    cmap=self.plot_properties.get_cmap('Event'))
-
-    def on_button_event_force_array_clicked(self, widget):
-        """
-            Display the event force array.
-        """
-        if self.force_volume is None:
-            display_error('no_fv')
-            return
-        if self.force_volume.get_array('Event force') is None:
-            display_error('no_compute', 'event')
-            return
-        if not exist(self.win_plot['Event Force Map']):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot['Event Force Map'] = plot_gtk.plotGride(
-                                    window, widget,
-                                    title=PLOT_WINDOW['ev_force array'][2],
-                                    win_title=PLOT_WINDOW['ev_force array'][1])
-            self.win_plot['Event Force Map'].figure.canvas.mpl_connect(
-                                                        'button_press_event',
-                                                        self.on_gride_click)
-        self.win_plot['Event Force Map'].set_size(
-                                    self.experiment.parameters['plot_size'])
-        self.win_plot['Event Force Map'].plot(
-                            self.force_volume.get_array('Event force'),
-                            self.force_volume.header['scan_size'],
-                            cmap=self.plot_properties.get_cmap('Event force'))
-
-    def on_button_event_dist_array_clicked(self, widget):
-        """
-            Display the event force array.
-        """
-        if self.force_volume is None:
-            display_error('no_fv')
-            return
-        if self.force_volume.get_array('Event distance') is None:
-            display_error('no_compute', 'event distance')
-            return
-        if not exist(self.win_plot['Event Distance Map']):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot['Event Distance Map'] = plot_gtk.plotGride(
-                                    window, widget,
-                                    title=PLOT_WINDOW['ev_dist array'][2],
-                                    win_title=PLOT_WINDOW['ev_dist array'][1])
-            self.win_plot['Event Distance Map'].figure.canvas.mpl_connect(
-                                                        'button_press_event',
-                                                        self.on_gride_click)
-        self.win_plot['Event Distance Map'].set_size(
-                                    self.experiment.parameters['plot_size'])
-        self.win_plot['Event Distance Map'].plot(
-                            self.force_volume.get_array('Event distance'),
-                            self.force_volume.header['scan_size'],
-                        cmap=self.plot_properties.get_cmap('Event distance'))
-
-    def on_button_event_length_array_clicked(self, widget):
-        """
-            Display the event number array.
-        """
-        if self.force_volume is None:
-            display_error('no_fv')
-            return
-        if self.force_volume.get_array('Event length') is None:
-            display_error('no_compute', 'event length')
-            return
-        if not exist(self.win_plot['Event Length Map']):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot['Event Length Map'] = plot_gtk.plotGride(
-                                    window, widget,
-                                    title=PLOT_WINDOW['ev_len array'][2],
-                                    win_title=PLOT_WINDOW['ev_len array'][1])
-            self.win_plot['Event Length Map'].figure.canvas.mpl_connect(
-                                                        'button_press_event',
-                                                        self.on_gride_click)
-        self.win_plot['Event Length Map'].set_size(
-                                    self.experiment.parameters['plot_size'])
-        self.win_plot['Event Length Map'].plot(
-                            self.force_volume.get_array('Event length'),
-                            self.force_volume.header['scan_size'],
-                            cmap=self.plot_properties.get_cmap('Event length'))
-
-    def on_button_stiffness_tomo_clicked(self, widget):
-        """
-            Dispaly the stiffness tomography slices in x-y-z.
-        """
-        if self.force_volume is None:
-            display_error('no_fv')
-            return
-        if not self.force_volume.has_stiffness:
-            display_error('no_compute', 'stiffness')
-            return
-        self.force_volume.stiffness_tomography_array()
-        if not exist(self.win_plot['Stiffness Tomo']):
-            [window, widget] = self.regenerate_plot('tomography')
-            self.win_plot['Stiffness Tomo'] = plot_gtk.plotTomo(
-                            window, widget,
-                            self.force_volume.get_array('Stiffness tomo'),
-                            scan_size=self.force_volume.header['scan_size'],
-                            title='Stiffness Tomo')
-        self.win_plot['Stiffness Tomo'].set_size(
-                                    self.experiment.parameters['plot_size'])
-        self.win_plot['Stiffness Tomo'].get_pos = \
-                                    self.on_stiffness_tomo_window_clicked
-
-    def on_stiffness_tomo_window_clicked(self):
-        """
-            When clicking on the stiffness tomography window, it goes to the
-            corresponding force-distance curve.
-        """
-        if self.force_volume is None:
-            display_error('no_fv')
-            return
-        self.force_volume.go_to(self.win_plot['Stiffness Tomo'].slice[0],
-                                self.win_plot['Stiffness Tomo'].slice[1])
-        self.update('show gride position')
-        self.plot_curve()
-
-    def on_button_mean_stiffness_tomo_clicked(self, widget):
-        """
-            Distplay the mean stiffness tomography.
-        """
-        if self.force_volume is None:
-            display_error('no_fv')
-            return
-        if not self.force_volume.has_stiffness:
-            display_error('no_compute', 'stiffness')
-            return
-        if not exist(self.win_plot['Average Stiffness Tomo']):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot['Average Stiffness Tomo'] = plot_gtk.errorBar(
-                                                window, widget)
-
-        if self.apply_on_all:
-            mean_tomo = self.experiment.average_stiffness
-            self.win_plot['Average Stiffness Tomo'].average_stiffness(
-                                        mean_tomo,
-                                        group=self.experiment.file['group'],
-                                        group_info=self.experiment.group)
-        else:
-            mean_tomo = self.force_volume.compute_average_stiffness()
-            self.win_plot['Average Stiffness Tomo'].average_stiffness(
-                                            mean_tomo)
-        self.win_plot['Average Stiffness Tomo'].set_size(
-                                    self.experiment.parameters['plot_size'])
-
-    ## Mosaics
-    def mosaic_clicked(self, atype, widget=None):
-        """
-            Generic function to display mosaic view.
-        """
-        if self.force_volume is None:
-            display_error('no_fv')
-            return
-        if DEBUG:
-            print "Mosaic plot. Called from :"
-            print widget
-        array_list = self.experiment.get_arrays(atype)
-        mask_list = self.experiment.get_masked_list()
-        # MOSAIC_PLOT is a dict which contains the values for mosaic name :
-        # mosaic_name[0] = name of the window plot
-        # mosaic_name[1] = title of the window
-        # mosaic_name[2] = title of the plot
-        # mosaic_name[3] = cmap
-        mosaic_name = MOSAIC_PLOT[atype]
-        if not exist(self.win_plot[mosaic_name[0]]):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot[mosaic_name[0]] = plot_gtk.plotMosaic(
-                                                        window, widget,
-                                                        title=mosaic_name[1])
-            self.win_plot[mosaic_name[0]].figure.canvas.mpl_connect(
-                                                        'button_press_event',
-                                                        self.on_mosaic_click)
-            self.win_plot[mosaic_name[0]].figure.canvas.mpl_connect(
-                                                        'pick_event',
-                                                        self.on_mosaic_pick)
-        self.win_plot[mosaic_name[0]].set_size(
-                                    self.experiment.parameters['plot_size'])
-        self.win_plot[mosaic_name[0]].plot(array_list,
-                                        title=mosaic_name[2],
-                                        list_name=self.experiment.file['name'],
-                                        cmap=mosaic_name[3],
-                                        list_mask=mask_list)
-
-    def on_button_mosaic_piezo_clicked(self, widget):
-        """
-            Display the mosaic view of piezo image.
-        """
-        self.mosaic_clicked('Piezo', widget)
-
-    def on_button_mosaic_topography_clicked(self, widget):
-        """
-            Display the mosaic view of topography.
-        """
-        self.mosaic_clicked('Topography', widget)
-
-    def on_button_mosaic_stiffness_clicked(self, widget):
-        """
-            Display the mosaic view of stiffness.
-        """
-        self.mosaic_clicked('Stiffness', widget)
-
-    def on_button_mosaic_event_clicked(self, widget):
-        """
-            Display the mosaic view of event nbr.
-        """
-        self.mosaic_clicked('Event', widget)
-
-    def on_button_mosaic_event_force_clicked(self, widget):
-        """
-            Display the mosaic view of event force.
-        """
-        self.mosaic_clicked('Event force', widget)
-
-    def on_button_opengl_clicked(self, widget):
-        """
-            Display the stiffness tomography using OpenGL.
-        """
-        if DEBUG:
-            print "OpenGL. Called from :"
-            print widget
-        self.force_volume.stiffness_tomography_array()
-        # get the min and max values from the tomography display :
-        if exist(self.win_plot['Stiffness Tomo']):
-            clut = (self.win_plot['Stiffness Tomo'].colorScaleMin,
-                    self.win_plot['Stiffness Tomo'].colorScaleMax)
-        else:
-            clut = None
-        topogl = TopoGL(self.force_volume.get_array('Stiffness tomo'),
-                        clut=clut)
-        topogl.run()
-
-    ###########################################################################
-    ## Compute tab
-    def update_stiffness_param(self, force_volume, widget=None):
-        """
-            Update the stiffness parameters.
-        """
-        if DEBUG:
-            print "Updating stiffness parameters. Called by :"
-            print widget
-        # Update the Hertz model and the tip caracteristics.
-        _hertz_model = self.widget['combo_hertz_model'].get_active_text()
-        _stiff_method = self.widget['combo_stiff_method'].get_active_text()
-        _tip_carac = self.widget['spin_tip_carac'].get_value()
-        force_volume.change_model(model=_hertz_model, carac=_tip_carac)
-        force_volume.set_parameters('stiffness_fit_method', _stiff_method)
-        # Update the segmentations parameters.
-        force_volume.change_segment_number(
-                            self.widget['entry_number_deep'].get_text())
-        force_volume.change_segment_depth(
-                            self.widget['entry_size_deep'].get_text())
-        # Update the point of contact detection algorythm.
-        _poc_model = self.widget['combo_poc_method'].get_active_text()
-        force_volume.stiffness['poc_method'] = _poc_model
-        _limit_poc_slide = self.widget['check_limit_poc_slide'].get_active()
-        force_volume.stiffness['limit_slide'] = _limit_poc_slide
-        _fit_seg_size = self.widget['spin_fit_seg_size'].get_value()
-        force_volume.change_poc_seg_size(_fit_seg_size)
-        # Update whether to recompute or not.
-        _recompute_poc = self.widget['check_compute_poc'].get_active()
-        force_volume.stiffness['recompute_poc'] = _recompute_poc
-
-    def on_button_compute_stiffness_clicked(self, widget):
-        """
-            Launch the stiffness computation.
-        """
-        if DEBUG:
-            print "Compute stiffness. Called from :"
-            print widget
-        if self.apply_on_all:
-            number_of_files = len(self.experiment.file['list'])
-            this_file_nb = 0
-            for force_volume, file_name in zip(self.experiment.file['list'],
-                                              self.experiment.file['name']):
-                counter_begin = float(this_file_nb) / number_of_files
-                counter_end = float(this_file_nb + 1) / number_of_files
-                counter_text = " of file " + file_name
-                self._compute_stiffness(force_volume,
-                                        counter_begin,
-                                        counter_end,
-                                        counter_text)
-                this_file_nb += 1
-        else:
-            self._compute_stiffness(self.force_volume)
-        # updates the histogram tabs according to the latest computations.
-        self.update('hist entry')
-        self.display_progressbar(None)
-
-    def on_check_compute_poc_toggled(self, widget):
-        """
-            Change the state of forcing the detection of point of contact.
-        """
-        if self.force_volume is not None:
-            self.update_stiffness_param(self.force_volume, widget)
-
-    def _compute_stiffness(self, force_volume, counter_begin=0,
-                           counter_end=1, counter_text=''):
-        """
-            Compute the stiffness. This is for one file.
-        """
-        # Update the computation properties
-        self.update_stiffness_param(force_volume)
-        # Start the computation
-        _thread = threading.Thread(target=force_volume.compute_stiffness)
-        _thread.start()
-        while _thread.isAlive():
-            self.display_progressbar(counter_begin +
-                                float(force_volume.counter['num']) *
-                                (counter_end - counter_begin),
-                                force_volume.counter['text'] + counter_text)
-            time.sleep(0.1)
-        force_volume.counter['num'] = 0
-
-    def update_evt_parameters(self, force_volume):
-        evt_fit_model = self.widget['combo_ev_fit_model'].get_active_text()
-        if evt_fit_model == 'None':
-            evt_fit_model = None
-        force_volume.set_parameters('evt_fit', evt_fit_model)
-        force_volume.header['event_detect_weight'] = \
-                        self.experiment.parameters['event_detect_weight']
-
-    def on_button_detect_events_clicked(self, widget):
-        """
-            Launch the event detection.
-        """
-        if DEBUG:
-            print "Detect events. Called from :"
-            print widget
-        if self.apply_on_all:
-            number_of_files = len(self.experiment.file['list'])
-            this_file_nb = 0
-            for force_volume, file_name in zip(self.experiment.file['list'],
-                                              self.experiment.file['name']):
-                counter_begin = float(this_file_nb) / number_of_files
-                counter_end = float(this_file_nb + 1) / number_of_files
-                counter_text = " of file " + file_name
-                self._compute_evt(force_volume,
-                                        counter_begin,
-                                        counter_end,
-                                        counter_text)
-                this_file_nb += 1
-        else:
-            self._compute_evt(self.force_volume)
-        self.update('hist entry')
-        self.display_progressbar(None)
-
-    def _compute_evt(self, force_volume, counter_begin=0,
-                           counter_end=1, counter_text=''):
-        """
-            Compute the stiffness. This is for one file.
-        """
-        # Update the computation properties
-        self.update_evt_parameters(force_volume)
-        # Start the computation
-        _thread = threading.Thread(target=force_volume.compute_events)
-        _thread.start()
-        while _thread.isAlive():
-            self.display_progressbar(counter_begin +
-                                float(force_volume.counter['num']) *
-                                (counter_end - counter_begin),
-                                force_volume.counter['text'] + counter_text)
-            time.sleep(0.1)
-        force_volume.counter['num'] = 0
-
-    def on_combo_ev_fit_model_changed(self, widget):
-        if self.force_volume is not None:
-            self.experiment.parameters['event_fit_model'] = \
-                            self.widget['combo_ev_fit_model'].get_active_text()
-            self.plot_curve()
-
-    def on_button_regenerate_random_clicked(self, widget):
-        """
-            Regenerate the random event array.
-        """
-        if DEBUG:
-            print "Regenerate random. Called from :"
-            print widget
-        nbr_rand_event = self.widget['spin_nbr_rand_event'].get_value()
-        if self.apply_on_all:
-            for force_volume in self.experiment.file['list']:
-                force_volume.generate_random_event(nbr_rand_event)
-            else:
-                self.force_volume.generate_random_event(nbr_rand_event)
-
-    def on_button_compute_rel_stiffness_clicked(self, widget):
-        """
-            Compute the relative stiffness
-        """
-        if DEBUG:
-            print "Compute rel stiff. Called from :"
-            print widget
-        self.experiment.parameters['rel_stiff_dist'] = \
-                        int(self.widget['spin_max_rel_stiffness'].get_value())
-        if self.apply_on_all:
-            self.experiment.compute_relative_stiffness()
-        else:
-            self.force_volume.change_relative_distance(
-                            int(self.experiment.parameters['rel_stiff_dist']))
-            self.force_volume.compute_relative_stiffness()
-
-    ###########################################################################
-    ## Parameter tab
-    def on_spin_poisson_ratio_value_changed(self, widget):
-        """
-            Change the poisson ratio of the material.
-        """
-        if self.experiment is not None:
-            self.experiment.set_parameters('poisson_ratio', widget.get_value())
-
-    def on_button_event_calib_clicked(self, widget):
-        """
-            Modify the calibration of the event detection.
-        """
-
-        if DEBUG:
-            print "Calib event. Called from :"
-            print widget
-        # Turn on the "Retraction force curve" and "Event on curve display"
-        self.widget['check_display_fc_retrace'].set_active(True)
-        self.force_volume.set_to_plot('Re', 1)
-        self.widget['check_display_event'].set_active(True)
-        self.force_volume.set_to_plot('Event', 1)
-        self.modify_window('Curve Plot', 'Event detection')
-        self.plot_curve()
-
-    def on_spin_ev_threshold_dist_value_changed(self, widget):
-        """
-            Change the event filter based on its distance on the curve.
-        """
-        self.experiment.set_switch('ev_dist', widget.get_value())
-        adjustment = widget.get_adjustment()
-        adjustment.set_upper(widget.get_value() + 1000)
-        self.update_switch()
-
-    def on_spin_ev_length_thresh_min_value_changed(self, widget):
-        """
-            Change the event filter based on its minimum length computed from
-            the fit.
-        """
-        self.update_ev_length_thresh()
-        adjustment = widget.get_adjustment()
-        adjustment.set_upper(widget.get_value() + 1000)
-
-    def on_spin_ev_length_thresh_max_value_changed(self, widget):
-        """
-            Change the event filter based on its maximum length computed from
-            the fit.
-        """
-        self.update_ev_length_thresh()
-        adjustment = widget.get_adjustment()
-        adjustment.set_upper(widget.get_value() + 1000)
-
-    def update_ev_length_thresh(self):
-        """
-            Update the threshold fit based on the length computed from the fit.
-        """
-        min_length = self.widget['spin_ev_length_thresh_min'].get_value()
-        max_length = self.widget['spin_ev_length_thresh_max'].get_value()
-        self.experiment.set_switch('ev_fit_length', [min_length, max_length])
-
-    def on_button_poc_calib_clicked(self, widget):
-        """
-            Change the calibration of the point of contact detection
-        """
-        if DEBUG:
-            print "Calib poc. Called from :"
-            print widget
-        # Turn on the "Approach force curve" and "PoC on curve display"
-        self.widget['check_display_fc_trace'].set_active(True)
-        self.force_volume.set_to_plot('Av', 1)
-        self.widget['check_display_poc'].set_active(True)
-        self.force_volume.set_to_plot('PoC', 1)
-        self.modify_window('Curve Plot', 'PoC detection')
-        self.plot_curve()
-
-    def on_combo_poc_method_changed(self, widget):
-        """
-            Change the method of the point of contact detection
-        """
-
-        if DEBUG:
-            print "Change poc method. Called from :"
-            print widget
-        if self.force_volume is not None:
-            self.update_stiffness_param(self.force_volume, widget)
-
-    def on_check_limit_poc_slide_toggled(self, widget):
-        """
-            Limits the sliding of point of contact detection.
-        """
-
-        if DEBUG:
-            print "Check limit poc. Called from :"
-            print widget
-        if self.force_volume is not None:
-            self.update_stiffness_param(self.force_volume, widget)
-
-    def on_spin_fit_seg_size_value_changed(self, widget):
-        """
-            Change the segment size of indentation curve
-        """
-        if DEBUG:
-            print "Spin fit seg. Called from :"
-            print widget
-        if self.force_volume is not None:
-            self.update_stiffness_param(self.force_volume)
-        self.plot_curve()
-    ##
-
-    #############################################################
-    ## Histograms tab
-    def disp_hist(self, data_type, widget=None):
-        """
-            This is the generic function called to plot the histogram.
-
-            data_type is a string that describes the data you want to plot.
-
-            Can be :
-
-              * 'force' to plot the force.
-              * 'lr' to plot the loading rate
-              * 'dist' to plot the distance of the unbinding
-              * 'stiff' to plot the stiffness on pixel where event occured
-              * 'relstiff' to plot the relative stiffness of pixels where event
-                occured
-        """
-        if DEBUG:
-            print "Disp histogram. Called by :"
-            print widget
-        if self.force_volume is None:
-            return
-        if data_type not in PLOT_LABEL.keys():
-            raise TypeError
-        if widget in [self.widget['spin_ev_force_hist_max'],
-                      self.widget['spin_ev_lr_hist_max'],
-                      self.widget['spin_ev_length_hist_max'],
-                      self.widget['spin_ev_plength_hist_max'],
-                      self.widget['spin_ev_stiff_hist_max'],
-                      self.widget['spin_ev_relstiff_hist_max']]:
-            curr_val = widget.get_value()
-            widget.set_range(0, curr_val * 10)
-        # Set the label of the plot
-        [title, xlabel, window_name] = PLOT_LABEL[data_type]
-        # Set the range and type of the plot
-        # data_hist is a PlotData object that stores the plot properties
-        self.experiment.data_hist.set_range(data_type,
-                                            self.get_histo_range(data_type))
-        self.experiment.data_hist.set_type(data_type)
-        # We have a special case for the stiffness where we can compare event
-        # versus non event. We check thank's to a checkbox :
-        stiff_case = self.widget['check_stiff_ev_vs_notev'].get_active() and \
-                     (data_type == 'stiff')
-        if self.apply_on_all or self.plot_properties.plot_compare:
-            # When we compare different experiments, we take the whole files
-            if stiff_case:
-                [event_att, event_group, fid, coord] = \
-                                self.experiment.get_event_att('stiff_ev')
-                [noevent_att, noevent_group, noevent_fid, noevent_coord] = \
-                                self.experiment.get_event_att('stiff_notev')
-            else:
-                [event_att, event_group, fid, coord] = \
-                                    self.experiment.get_event_att(data_type)
-                self.experiment.data_hist.set_data(data_type, event_att)
-                self.experiment.data_hist.set_group(data_type, event_group)
-                self.experiment.data_hist.nbr_curves = \
-                                    self.experiment.parameters['number_curves']
-                if self.plot_properties.plot_compare:
-                    self.experiment_compare.data_hist.set_range(data_type,
-                                            self.get_histo_range(data_type))
-                    self.experiment_compare.data_hist.nbr_curves = \
-                            self.experiment_compare.parameters['number_curves']
-                    self.experiment_compare.data_hist.set_type(data_type)
-                    self.experiment_compare.data_hist.set_data(data_type,
-                            self.experiment_compare.get_event_att(data_type))
-                    self.experiment_compare.event_gauss_fit(data_type)
-        else:
-            if stiff_case:
-                event_att = self.force_volume.get_event_prop('stiff_ev')
-                noevent_att = self.force_volume.get_event_prop('stiff_notev')
-            else:
-                # Reinitialize the group, because the number of event can
-                # change.
-                self.experiment.data_hist.set_group(data_type, None)
-                try:
-                    data = self.force_volume.get_event_prop(data_type)
-                except TypeError:
-                    display_error('no_compute', data_type)
-                    return
-                self.experiment.data_hist.set_data(data_type, data)
-                self.experiment.data_hist.nbr_curves = \
-                                    self.force_volume.header['number_curves']
-                #self.experiment.event_gauss_fit(data_type)
-                #ev_prop = self.experiment.event_stat[data_type]
-        ### Set the groups.
-        if self.apply_on_all and not self.plot_properties.plot_compare:
-            # We put the group properties to the histogram.
-            self.experiment.data_hist.set_group_prop('all',
-                                                     self.experiment.group)
-        if not exist(self.win_plot[window_name]):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot[window_name] = plot_gtk.plotHist(
-                            window, widget,
-                            title=title,
-                            xlabel=xlabel,
-                            y_rel=self.experiment.parameters['histo_y_rel'])
-        if not self.plot_properties.plot_compare:
-            if stiff_case:
-                self.win_plot[window_name].hist(event_att, noevent_att,
-                                label='event', label2='not event',
-                                hist_range=self.get_histo_range(data_type),
-                                y2=True)
-            else:
-                try:
-                    self.win_plot[window_name].hist(self.experiment.data_hist)
-                except IndexError:
-                    pass
-                else:
-                    if self.experiment.parameters['plot_hist_gauss']:
-                        self.experiment.event_gauss_fit(data_type)
-                        self.win_plot[window_name].gauss(
-                                        self.experiment.event_stat[data_type])
-        else:
-            # we compare two experiments :
-            self.win_plot[window_name].hist(
-                                self.experiment.data_hist,
-                                self.experiment_compare.data_hist,
-                                label=self.plot_properties.main_exp_label,
-                                label2=self.plot_properties.comp_exp_label,
-                                color_type=self.plot_properties.color_type)
-        # Set the size of the window...
-        self.win_plot[window_name].set_size(
-                                self.experiment.parameters['plot_size'])
-
-    def on_button_ev_force_hist_clicked(self, widget):
-        """
-            Display the histogram of force.
-        """
-        self.disp_hist('force', widget)
-
-    def on_button_ev_lr_hist_clicked(self, widget):
-        """
-            Display the histogram of loading rate.
-        """
-        self.disp_hist('lr', widget)
-
-    def on_button_ev_dist_hist_clicked(self, widget=None):
-        """
-            Display the histogram of distance.
-        """
-        self.disp_hist('dist', widget)
-
-    def on_button_ev_stiff_hist_clicked(self, widget):
-        """
-            Display the histogram of stiffness.
-        """
-        self.disp_hist('stiff', widget)
-
-    def on_button_ev_relstiff_hist_clicked(self, widget):
-        """
-            Display the histogram of relative stiffness.
-        """
-        self.disp_hist('relstiff', widget)
-
-    def on_button_ev_length_hist_clicked(self, widget):
-        """
-            Display the histogram of relative stiffness.
-        """
-        self.disp_hist('length', widget)
-
-    def on_button_ev_plength_hist_clicked(self, widget):
-        """
-            Display the histogram of relative stiffness.
-        """
-        self.disp_hist('plength', widget)
-
-    def disp_scatter(self, data_type, widget=None):
-        """
-            The generic function to display the scatter plot.
-        """
-        if DEBUG:
-            print "Disp scatter. Called by :"
-            print widget
-        self.experiment.data_hist.set_range(data_type[0],
-                                            self.get_histo_range(data_type[0]))
-        self.experiment.data_hist.set_range(data_type[1],
-                                            self.get_histo_range(data_type[1]))
-        if self.apply_on_all:
-            [data, group, fid, coord] = \
-                                    self.experiment.get_event_att(data_type[0])
-            del fid, coord
-            self.experiment.data_hist.set_data(data_type[0], data)
-            self.experiment.data_hist.set_group(data_type[0], group)
-            [data, group, fid, coord] = \
-                                    self.experiment.get_event_att(data_type[1])
-            self.experiment.data_hist.set_data(data_type[1], data)
-            self.experiment.data_hist.set_group(data_type[1], group)
-            self.experiment.data_hist.nbr_curves = \
-                                    self.experiment.parameters['number_curves']
-            # We put the group properties to the histogram.
-            self.experiment.data_hist.set_group_prop('all',
-                                                    self.experiment.group)
-        else:
-            self.experiment.data_hist.set_group(data_type[0], None)
-            self.experiment.data_hist.set_group(data_type[1], None)
-            self.experiment.data_hist.set_data(data_type[0],
-                                self.force_volume.get_event_prop(data_type[0]))
-            self.experiment.data_hist.set_data(data_type[1],
-                                self.force_volume.get_event_prop(data_type[1]))
-            self.experiment.data_hist.nbr_curves = \
-                                self.force_volume.header['number_curves']
-        # The labels
-        label_x = PLOT_LABEL[data_type[0]]
-        label_y = PLOT_LABEL[data_type[1]]
-        [plot_name, plot_title] = PLOT_WINDOW[data_type[0] + data_type[1]]
-        if not exist(self.win_plot[plot_name]):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot[plot_name] = plot_gtk.plotScatter(
-                                                window, widget,
-                                                title=plot_title,
-                                                xlabel=label_x[1],
-                                                ylabel=label_y[1])
-            #if data_type[0] == 'lr':
-            #    self.win_plot[plot_name].set_xscale('log')
-        self.win_plot[plot_name].display(self.experiment.data_hist, data_type)
-        self.win_plot[plot_name].set_size(
-                                    self.experiment.parameters['plot_size'])
-
-    def on_button_scatter_Force_LR_clicked(self, widget):
-        """
-            Display the scatter plot of force vs loading rate.
-        """
-        self.disp_scatter(['force', 'lr'], widget)
-
-    def on_button_scatter_force_dist_clicked(self, widget):
-        """
-            Display the scatter plot of force vs distance.
-        """
-        self.disp_scatter(['dist', 'force'], widget)
-
-    def on_button_scatter_force_stiffness_clicked(self, widget):
-        """
-            Display the scatter plot of force vs stiffness.
-        """
-        self.disp_scatter(['force', 'stiff'], widget)
-
-    def on_button_scatter_LR_Dist_clicked(self, widget):
-        """
-            Display the scatter plot of loading rate vs distance.
-        """
-        self.disp_scatter(['dist', 'lr'], widget)
-
-    def on_button_scatter_LR_Stiffness_clicked(self, widget):
-        """
-            Display the scatter plot of loading rate vs stiffness.
-        """
-        self.disp_scatter(['lr', 'stiff'], widget)
-
-    def on_button_scatter_Dist_Stiffness_clicked(self, widget):
-        """
-            Display the scatter plot of distance vs stiffness.
-        """
-        self.disp_scatter(['dist', 'stiff'], widget)
-
-    def on_button_scatter_Force_RelStiff_clicked(self, widget):
-        """
-            Display the scatter plot of force vs relative stiffness.
-        """
-        self.disp_scatter(['relstiff', 'force'], widget)
-
-    def on_button_scatter_LR_RelStiff_clicked(self, widget):
-        """
-            Display the scatter plot of loading rate vs relative stiffness.
-        """
-        self.disp_scatter(['relstiff', 'lr'], widget)
-
-    def on_button_scatter_Dist_RelStiff_clicked(self, widget):
-        """
-            Display the scatter plot of distance vs rel.stiffness.
-        """
-        self.disp_scatter(['relstiff', 'dist'], widget)
-
-    def get_histo_range(self, d_type):
-        """
-            Get the histogram range of the specified type.
-        """
-        if d_type in ['force', 'lr', 'dist', 'stiff', 'relstiff',
-                      'length', 'plength']:
-            base_name = d_type
-        elif d_type in ['force_base']:
-            base_name = d_type[:-5]
-        min_val = self.widget[
-                            'spin_ev_' + base_name + '_hist_min'].get_value()
-        max_val = self.widget[
-                            'spin_ev_' + base_name + '_hist_max'].get_value()
-        col_size = self.widget[
-                            'spin_ev_' + base_name + '_hist_size'].get_value()
-        if d_type is 'relstiff':
-            dist = int(self.widget['spin_ev_relstiff_hist_dist'].get_value())
-            return [min_val, max_val, col_size, dist]
-        return [min_val, max_val, col_size]
-
-    def on_button_regenerate_event_properties_clicked(self, widget):
-        """
-            Regenerate the event properties.
-        """
-        if DEBUG:
-            print "Regenerate event. Call by :"
-            print widget
-        self.experiment.clear_event_prop_list()
-
-    ###########################################################################
-    ## Plot tab
-    def on_adj_plot_rel_dist_value_changed(self, widget):
-        """
-            Changing the relative distance value for the plot.
-        """
-        self.plot_rel_dist(widget.get_value())
-
-    def plot_rel_dist(self, dist):
-        """
-            Plot the relative stiffness at a specified distance.
-        """
-        dist = int(dist)
-        [data, group, fid, coord] = self.experiment.get_event_att('relstiff')
-        del coord
-        self.experiment.data_hist.set_type('relstiff')
-        self.experiment.data_hist.set_data('relstiff', data)
-        self.experiment.data_hist.set_range('relstiff',
-                                            [None, None, None, dist])
-        self.experiment.data_hist.set_group('relstiff', group)
-        self.experiment.data_hist.set_fid('relstiff', fid)
-        [data, group, fid, coord] = self.experiment.get_event_att(
-                                                                'relstiffctl')
-        self.experiment.data_hist.set_type('relstiffctl')
-        self.experiment.data_hist.set_data('relstiffctl', data)
-        self.experiment.data_hist.set_range('relstiffctl',
-                                            [None, None, None, dist])
-        self.experiment.data_hist.set_group('relstiffctl', group)
-        self.experiment.data_hist.set_fid('relstiffctl', fid)
-        if not exist(self.win_plot['TL Rel Stiffness']):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot['TL Rel Stiffness'] = plot_gtk.TimeLapse(
-                                            window, widget,
-                                            title='Event relative stiffness',
-                                            win_title='Relative Stiffness')
-        self.win_plot['TL Rel Stiffness'].displayPlot(
-                                            self.experiment.data_hist)
-
-    def on_adj_rel_stiff_limite_value_changed(self, widget):
-        """
-            Modification of limit values of relative stiffness.
-        """
-        range_val = widget.get_value()
-        self.experiment.compute_relative_stiffness(exclude=range_val)
-        self.plot_rel_dist(self.widget['spin_rel_stiff_plot_dist'].get_value())
-
-    def on_button_plot_nbr_event_tl_clicked(self, widget):
-        """
-            Plots the number of event per scans.
-        """
-        event_nbr_list = self.experiment.event_nbr_list()
-        _px = range(len(event_nbr_list))
-        if not exist(self.win_plot['TL Nbr Event']):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot['TL Nbr Event'] = plot_gtk.plotCurves(
-                                                window, widget,
-                                                xlabel='Time',
-                                                ylabel='Number of events',
-                                                title='Number of events',
-                                                win_title='Number of events')
-            self.win_plot['TL Nbr Event'].ylim = 0
-
-        self.win_plot['TL Nbr Event'].displayPlot(_px, event_nbr_list,
-                                                  linestyle='bo-')
-
-    ###########################################################################
-    ## Tomography tab
-    def on_button_compute_tomo_clicked(self, widget=None):
-        """
-            Computes the stiffness tomography.
-        """
-        if DEBUG:
-            print "Compute tomo. Call from :"
-            print widget
-        self.force_volume.stiffness_tomography_array()
-
-    def on_MainWindow_destroy(self, widget, data=None):
-        '''
-        Destroys the window
-        '''
-        if DEBUG:
-            print "Destroy main window :"
-            print widget, data
-        # saves the preferences...
-        if not(os.path.isdir(os.path.split(self.config['config'])[0])):
-            os.makedirs(os.path.split(self.config['config'])[0])
-        conf_id = open(self.config['config'], 'wb')
-        for keys in self.config.keys():
-            if keys == 'msgid':
-                conf_id.write(keys + ' = ' +
-                            self.config[keys].strftime('%Y, %m, %d') + '\n')
-            elif keys in ['linewidth', 'connect-server']:
-                conf_id.write(keys + ' = ' +
-                            str(self.config[keys]) + '\n')
-            else:
-                conf_id.write(keys + ' = ' + self.config[keys] + '\n')
-        conf_id.write('')
-        conf_id.close()
-        gtk.main_quit()
-
-    ###########################################################################
-    ## Mechanical prop. tab
-    def hist_mech_prop(self, dtype, depth=0):
-        """
-            Display histogram of mechanical properties.
-        """
-        [title, xlabel, window_name] = PLOT_LABEL[dtype]
-        self.experiment.set_data_hist(dtype, self.get_mech_histo_range(dtype),
-                                      depth=depth)
-        if not exist(self.win_plot[window_name]):
-            [window, widget] = self.regenerate_plot()
-            self.win_plot[window_name] = plot_gtk.plotHist(
-                            window, widget,
-                            title=title,
-                            xlabel=xlabel,
-                            y_rel=self.experiment.parameters['histo_y_rel'])
-        self.win_plot[window_name].hist(self.experiment.data_hist)
-        if self.experiment.parameters['plot_hist_gauss']:
-            self.win_plot[window_name].gauss(
-                            self.experiment.event_stat['stiff'])
-        self.win_plot[window_name].set_size(
-                            self.experiment.parameters['plot_size'])
-
-    def on_button_young_modulus_hist_clicked(self, widget):
-        """
-            Display histogram of young modulus.
-        """
-        if DEBUG:
-            print "Young modulus :"
-            print widget
-        # Get the depth value :
-        depth = self.widget['spin_ym_hist_depth_nb'].get_value()
-        self.hist_mech_prop('young_modulus', depth=depth)
-
-    def get_mech_histo_range(self, dtype):
-        """
-            Get the range of histogram of mechanical properties.
-        """
-        if dtype in ['young_modulus']:
-            base_name = dtype
-        min_val = self.widget['spin_' + base_name + '_hist_min'].get_value()
-        max_val = self.widget['spin_' + base_name + '_hist_max'].get_value()
-        col_size = self.widget['spin_' + base_name + '_hist_size'].get_value()
-        return [min_val, max_val, col_size]
-
-    ###########################################################################
-    #                               About dialog
-    def on_about_activate(self, widget):
-        '''
-        Display the about dialog.
-        '''
-        if DEBUG:
-            print "About dialog called from :"
-            print widget
-        self.about_dialog.run()
-        self.about_dialog.hide()
-
-    ###########################################################################
-    #                       Compare Experiment Dialog
-    def on_compare_exp_activate(self, widget):
-        """
-            Displays the compare experiment dialog
-        """
-        if DEBUG:
-            print "Compare experiment. Call from :"
-            print widget
-        if self.experiment is not None:
-            self.widget_exp_compare['label_main_filename'].set_label(
-                                            self.experiment.short_name)
-        self.compare_exp_dialog.run()
-        self.compare_exp_dialog.hide()
-
-    def on_open_exp_compare_clicked(self, widget):
-        """
-            Opens the compare experiment
-        """
-        if DEBUG:
-            print "Compare experiment. Call from :"
-            print widget
-        self.temp_exp_compare = self.load_exp()
-        self.widget_exp_compare['comp_exp_filename'].set_label(
-                                            self.temp_exp_compare.short_name)
-        self.widget_exp_compare['label_comp_filename'].set_label(
-                                            self.temp_exp_compare.short_name)
-
-    def on_button_compare_exp_validate_clicked(self, widget):
-        """
-            Compare experiments.
-        """
-        if DEBUG:
-            print "validation of compare expexperiment :"
-            print widget
-        self.experiment_compare = self.temp_exp_compare
-        del self.temp_exp_compare
-        self.plot_properties.main_exp_label = \
-                        self.widget_exp_compare['entry_main_label'].get_text()
-        self.plot_properties.comp_exp_label = \
-                        self.widget_exp_compare['entry_comp_label'].get_text()
-        col_type = self.widget_exp_compare[
-                                         'combo_plot_color_type'].get_active()
-        if col_type == 0:
-            self.plot_properties.color_type = 'color'
-        elif col_type == 1:
-            self.plot_properties.color_type = 'bw'
-        self.plot_properties.plot_compare = True
-
-    def on_button_compare_exp_cancel_clicked(self, widget):
-        """
-            Cancel the modification of the comparison
-        """
-        if DEBUG:
-            print "compare experiment called by : "
-            print widget
-        if hasattr(self, 'temp_exp_compare'):
-            del self.temp_exp_compare
-        if hasattr(self, 'experiment_compare'):
-            del self.experiment_compare
-        self.plot_properties.comp_exp_label = None
-        self.plot_properties.plot_compare = False
-
-    def plot_curve(self):
-        """
-            Plot the curve according to the user choice.
-        """
-        [_px, _py] = [self.force_volume.trace_x, self.force_volume.trace_y]
-        if self.force_volume.to_plot('Av'):
-            if not exist(self.win_plot['Curve Plot']):
-                [window, widget] = self.regenerate_plot()
-                self.win_plot['Curve Plot'] = plot_gtk.plotCurves(
-                                          window, widget,
-                                          title='Deflection-Distance Curve',
-                                          linewidth=self.config['linewidth'])
-            self.win_plot['Curve Plot'].displayPlot(_px, _py)
-            if self.force_volume.to_plot('PoC'):
-                [poc, _cx, _cy, error, seg_slice, deriv] = \
-                                    self.force_volume.get_poc_display()
-                self.win_plot['Curve Plot'].hold('On')
-                if deriv is not None:
-                    self.win_plot['Curve Plot'].displayPlot(deriv[0],
-                                                              deriv[1])
-                self.win_plot['Curve Plot'].displayPlot(_cx, _cy,
-                                                          'g-', alpha=0.3)
-                self.win_plot['Curve Plot'].displayPlot(_px[poc: poc + 1],
-                                                          _py[poc: poc + 1],
-                                                          'go')
-                self.win_plot['Curve Plot'].displayPlot(_cx, _cy + error,
-                                                          'r-', alpha=0.5)
-                self.win_plot['Curve Plot'].displayPlot(_cx, _cy - error,
-                                                          'r-', alpha=0.5)
-                self.win_plot['Curve Plot'].displayPlot(_px[seg_slice],
-                                                          _py[seg_slice],
-                                                          'r-', alpha=1)
-                self.win_plot['Curve Plot'].hold('Off')
-        if self.force_volume.to_plot('Re'):
-            [_rx, _ry] = [self.force_volume.retrace_x,
-                          self.force_volume.retrace_y]
-            if not exist(self.win_plot['Curve Plot']):
-                [window, widget] = self.regenerate_plot()
-                self.win_plot['Curve Plot'] = plot_gtk.plotCurves(
-                                          window, widget,
-                                          title='Deflection-Distance Curve',
-                                          linewidth=self.config['linewidth'])
-            if self.force_volume.to_plot('Av'):
-                self.win_plot['Curve Plot'].hold('On')
-            self.win_plot['Curve Plot'].displayPlot(_rx, _ry, 'r-')
-            self.win_plot['Curve Plot'].hold('Off')
-            if self.force_volume.to_plot('Event'):
-                det_event = self.force_volume.current_curve(
-                        'Event',
-                        [self.experiment.parameters['event_detect_weight'],
-                        self.experiment.parameters['event_fit_model']])
-                self.win_plot['Curve Plot'].hold('On')
-                if det_event:
-                    for event in det_event:
-                        self.win_plot['Curve Plot'].displayPlot(
-                                                    _rx[event['Slice']],
-                                                    _ry[event['Slice']], 'g')
-                        self.win_plot['Curve Plot'].displayPlot(
-                                                    [_rx[event['min']]],
-                                                    [_ry[event['min']]], 'go')
-                        self.win_plot['Curve Plot'].displayPlot(
-                                                    [_rx[event['max']]],
-                                                    [_ry[event['max']]], 'wo')
-                        self.win_plot['Curve Plot'].displayPlot(
-                                                    event['fit_x'],
-                                                    event['fit_y'],
-                                                    'c')
-                self.win_plot['Curve Plot'].hold('Off')
-        if exist(self.win_plot['Curve Plot']):
-            self.win_plot['Curve Plot'].set_size(
-                                    self.experiment.parameters['plot_size'])
-        if self.force_volume.to_plot('Indent'):
-            all_plot = False
-            [poc, _cx, _cy, error, seg_slice, deriv] = \
-                                        self.force_volume.get_poc_display()
-            [_px, _py] = self.force_volume.get_current_indent_curve('trace')
-            [part_x, part_y] = self.force_volume.get_segments_indent()
-            # Prepare dots coordinates to plot
-            dot_x = [item[-1] for item in part_x]
-            dot_y = [item[-1] for item in part_y]
-            if not exist(self.win_plot['Indent Plot']):
-                [window, widget] = self.regenerate_plot()
-                self.win_plot['Indent Plot'] = plot_gtk.plotCurves(
-                                          window, widget,
-                                          title='Indention Curve',
-                                          xlabel='Indentation [nm]',
-                                          ylabel='Force [nN]',
-                                          linewidth=self.config['linewidth'])
-            self.win_plot['Indent Plot'].set_size(
-                                    self.experiment.parameters['plot_size'])
-            if all_plot:
-                self.win_plot['Indent Plot'].displayPlot(_px, _py)
-            else:
-                self.win_plot['Indent Plot'].displayPlot(
-                                                    _px[:poc] - _px[poc - 1],
-                                                    _py[:poc] - _py[poc - 1])
-            self.win_plot['Indent Plot'].hold('On')
-            if all_plot:
-
-                self.win_plot['Indent Plot'].displayPlot(dot_x, dot_y,
-                                                         'ko', alpha=0.4)
-            else:
-                self.win_plot['Indent Plot'].displayPlot(dot_x - _px[poc - 1],
-                                                         dot_y - _py[poc - 1],
-                                                         'ko', alpha=0.4)
-            if DEBUG and self.force_volume.to_plot('Re'):
-                [_rx, _ry] = self.force_volume.get_current_indent_curve(
-                                                                    'retrace')
-                self.win_plot['Indent Plot'].displayPlot(_rx, _ry, 'r-')
-                if self.force_volume.to_plot('Event'):
-                    det_event = self.force_volume.current_curve(
-                            'Event',
-                            self.experiment.parameters['event_detect_weight'])
-                    self.win_plot['Indent Plot'].hold('On')
-                    if det_event:
-                        for event in det_event:
-                            self.win_plot['Indent Plot'].displayPlot(
-                                                    _rx[event['Slice']],
-                                                    _ry[event['Slice']], 'g')
-                            self.win_plot['Indent Plot'].displayPlot(
-                                                    [_rx[event['min']]],
-                                                    [_ry[event['min']]], 'go')
-                            self.win_plot['Indent Plot'].displayPlot(
-                                                    [_rx[event['max']]],
-                                                    [_ry[event['max']]], 'wo')
-            self.win_plot['Indent Plot'].hold('Off')
-
-
-def exist(win_plot):
-    """
-        Test the existance of a window plot.
-    """
-    if win_plot == 0:
-        return 0
-    return not win_plot.destroyed
-
-
-def create_header_tree(header):
-    """
-        >>> test = create_header_tree(None)
-    """
-    treestore = gtk.TreeStore(str)
-    for parent in HEADER.keys():
-        piter = treestore.append(None, ['%s' % parent])
-        for child in HEADER[parent]:
-            treestore.append(piter, ['%s : %s' % (child, str(header[child]))])
-    return treestore
-
-
-def display_error(message, mtype=''):
-    """
-        Display an error message.
-    """
-    if message == 'no_fv':
-        msg = ('%s\n%s\n%s') % (
-              "No force volume file loaded.\n",
-              "Please load fv file using file>new to create new experiment",
-              "or file>load to load a saved experiment.")
-    if message == 'no_compute':
-        msg = "The %s is not compute. Please compute it first." % mtype
-    dialog = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
-                               buttons=gtk.BUTTONS_OK,
-                               message_format=msg)
-    dialog.set_title('Error')
-
-    try:
-        _icon = resource_filename('openfovea', 'Icon/openfovea.png')
-    except NotImplementedError:
-        _icon = 'openfovea/Icon/openfovea.png'
-    try:
-        dialog.set_icon_from_file(_icon)
-    except GError:
-        pass
-    if dialog.run():
-        dialog.destroy()
-
-
-def display_message(message):
-    """
-        Display a message box with the given message.
-    """
-    _msg = ''
-
-    for _line in message[1:]:
-        _msg += _line
-        _msg += '\n'
-    _msg = _msg[:-2]
-    dialog = gtk.MessageDialog(type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_OK)
-    dialog.set_properties('secondary-use-markup', True)
-    dialog.set_title(message[0])
-    dialog.set_markup(_msg)
-    try:
-        _icon = resource_filename('openfovea', 'Icon/openfovea.png')
-    except NotImplementedError:
-        _icon = 'openfovea/Icon/openfovea.png'
-    dialog.set_icon_from_file(_icon)
-    if dialog.run():
-        dialog.destroy()
-
-
-def ask_message(message):
-    """
-        Display a
-    """
-    dialog = gtk.MessageDialog(type=gtk.MESSAGE_QUESTION,
-                               buttons=gtk.BUTTONS_YES_NO)
-    dialog.set_default_response(gtk.RESPONSE_YES)
-    dialog.set_properties('secondary-use-markup', True)
-    dialog.set_title(message[0])
-    dialog.set_markup(message[1])
-    try:
-        _icon = resource_filename('openfovea', 'Icon/openfovea.png')
-    except NotImplementedError:
-        _icon = 'openfovea/Icon/openfovea.png'
-    dialog.set_icon_from_file(_icon)
-    response = dialog.run()
-    dialog.destroy()
-    return response
-WIN_TITLE = "Open Fovea"
-HEADER = {
-'Equipment': ['Microscope',
-               'spring_constant'],
-'Parameters': [  # 'force_bytes_per_pixel',
-                 # 'hard_z_scale',
-                 # 'image_scale',
-                'sensit_deflection',
-                 # 'sens_z_scan'
-               ],
-'Scan': [  # 'image_mode',
-          'scan_size',
-           # 'force_samples_per_curve',
-           # 'image_number_lines',
-          'number_curves',
-           # 'ramp_size',
-           # 'size_x',
-           # 'size_y'
-          'size'],
-'Misc': ['date', 'note'],
-#'Data': [  # 'force_data_length',
-#           # 'force_data_offset',
-#           # 'image_length',
-#           # 'image_offset',
-#          'image_samps_per_line',
-#          'matrix_length',
-#          'x_factor']
-}
-# Label = label : [title, x_label, window_name]
-PLOT_LABEL = {
-'force': ['Event force', 'Force [nN]', 'Hist Event Force'],
-'force_base': ['Event force relative to baseline', 'Force [nN]',
-                'Hist Event Force'],
-'lr': ['Loading rate', 'Loading rate [nN/s]', 'Hist Event LR'],
-'dist': ['Event distance', 'distance [nm]', 'Hist Event Dist'],
-'stiff': ['Event stiffness', 'Stiffness [Pa]', 'Hist Event Stiff'],
-'relstiff': ['Event relative stiffness', 'Stiffness [Pa]',
-              'Hist Event Rel Stiff'],
-'young_modulus': ['Young modulus', 'Stiffness [Pa]', 'Hist Young Modulus'],
-'length': ['Event length', 'Length [nm]', 'Hist Event Length'],
-'plength': ['Event persistent length', 'Persistent length [nm]',
-                'Hist Event Persistent Length']}
-# Window = window : [window name, window title, graph title]
-PLOT_WINDOW = {
-'forcelr': ['Scatter_FvsLR', 'Scatter Force VS Loading rate'],
-'lrforce': ['Scatter_FvsLR', 'Scatter Force VS Loading rate'],
-'forcedist': ['Scatter_FvsDist', 'Scatter Force VS Distance'],
-'distforce': ['Scatter_FvsDist', 'Scatter Force VS Distance'],
-'forcestiff': ['Scatter_FvsStiff', 'Scatter Force VS Stiffness'],
-'stiffforce': ['Scatter_FvsStiff', 'Scatter Force VS Stiffness'],
-
-'force_baselr': ['Scatter_FvsLR', 'Scatter Force VS Loading rate'],
-'lrforce_base': ['Scatter_FvsLR', 'Scatter Force VS Loading rate'],
-'force_basedist': ['Scatter_FvsDist', 'Scatter Loading rate VS Stiffness'],
-'distforce_base': ['Scatter_FvsDist', 'Scatter Loading rate VS Stiffness'],
-'force_basestiff': ['Scatter_FvsStiff', 'Scatter Force VS Stiffness'],
-'stiffforce_base': ['Scatter_FvsStiff', 'Scatter Force VS Stiffness'],
-
-'lrdist': ['Scatter_LRvsDist', 'Scatter Loading rate VS Distance'],
-'distlr': ['Scatter_LRvsDist', 'Scatter Loading rate VS Distance'],
-'lrstiff': ['Scatter_LRvsStiff', 'Scatter Loading rate VS Stiffness'],
-'stifflr': ['Scatter_LRvsStiff', 'Scatter Loading rate VS Stiffness'],
-'diststiff': ['Scatter_DistvsStiff', 'Scatter Distance VS Stiffness'],
-'stiffdist': ['Scatter_DistvsStiff', 'Scatter Distance VS Stiffness'],
-'forcerelstiff': ['Scatter_FvsRelStiff',
-                   'Scatter Force VS Relative Stiffness'],
-'relstiffforce': ['Scatter_FvsRelStiff',
-                   'Scatter Force VS Relative Stiffness'],
-'lrrelstiff': ['Scatter_LRvsRelStiff',
-                'Scatter Loading Rate VS Realtive Stiffness'],
-'relstifflr': ['Scatter_LRvsRelStiff',
-                'Scatter Loading Rate VS Realtive Stiffness'],
-'distrelstiff': ['Scatter_DistvsRelStiff',
-                  'Scatter Distance VS Relative Stiffness'],
-'relstiffdist': ['Scatter_DistvsRelStiff',
-                  'Scatter Distance VS Relative Stiffness'],
-'poc array': [None, 'poc_map', 'Point of contact'],
-'piezo array': ['Piezo Height', 'Piezo_Map', 'Piezo Height'],
-'topography array': ['Topography Map', 'Topo_map',
-                      'Topography (zero force image)'],
-'stiffness array': ['Stiffness Map', 'Stiff_map', 'Stiffness'],
-'ev_pos array': ['Event Map', 'Ev_pos_map', 'Event position'],
-'ev_force array': ['Event Force Map', 'Ev_force_map', 'Event force'],
-'ev_dist array': ['Event Distance Map', 'Ev_dist_map', 'Event distance'],
-'ev_len array': ['Event Length Map', 'Ev_len_map', 'Event length']}
-
-WINDOW2ARRAY = {
-    'Topography Map': 'Topography',
-    'Piezo Height': 'Piezo',
-    'Stiffness Map': 'Stiffness',
-    'Event Map': 'Event',
-    'Event Force Map': 'Event force',
-    'Event Distance Map': 'Event dist'}
-
-# MOSAIC_PLOT is a dict which contains the values for mosaic name :
-# mosaic_name[0] = name of the window plot
-# mosaic_name[1] = title of the window
-# mosaic_name[2] = title of the plot
-# mosaic_name[3] = cmap
-MOSAIC_PLOT = {
-    'Piezo': ['Mosaic Piezo', 'Mosaic of piezo', 'Piezo images', 'afm image'],
-    'Topography': ['Mosaic Topo', 'Mosaic of topos', 'Topographies',
-                    'afm image'],
-    'Stiffness': ['Mosaic Stiffness', 'Mosaic of stiffness', 'Stiffness',
-                   'jet'],
-    'Event': ['Mosaic Event', 'Mosaic of events', 'Events', 'gray'],
-    'Event force': ['Mosaic Event Force', 'Mosaic of event force',
-                     'Event forces', 'gray']}
-
-
-def main(arg=None):
-    '''
-        OpenFovea main function
-    '''
-    if os.name == 'posix':
-        try:
-            if os.uname()[0] == 'Linux':
-                try:
-                    locale.setlocale(locale.LC_ALL, 'en_GB.UTF8')
-                except locale.Error:
-                    locale.setlocale(locale.LC_ALL, 'en_US.UTF8')
-            elif os.uname()[0] == 'Darwin':
-                locale.setlocale(locale.LC_ALL, 'en_GB')
-        except locale.Error:
-            gtk.MessageDialog(type=gtk.MESSAGE_ERROR)
-            message = \
-                "Locale en_GB does not seem to be installed on your system." +\
-                "\nPlease install it."
-            message_sec = "On Linux system : change the file" +\
-                  "\n/etc/locale.gen" +\
-                  "\nto uncomment the corresponding line and run, as root :" +\
-                  "\nlocale-gen"
-            error = gtk.MessageDialog(buttons=gtk.BUTTONS_CLOSE,
-                                  type=gtk.MESSAGE_ERROR,
-                                  message_format=message)
-            error.format_secondary_text(message_sec)
-            error.set_title('Installation Error')
-            error.run()
-    elif os.name == 'nt':
-        locale.setlocale(locale.LC_ALL, 'english')
-    app = OpenFoveaMainGui(arg)
-    app.window.show()
-    gtk.main()
-
-if __name__ == '__main__':
-    locale.setlocale(locale.LC_ALL, 'en_GB.UTF8')
-    APP = OpenFoveaMainGui()
-    APP.window.show()
-    gtk.main()
-
-    #toto = open('../welcome')
-    #message = toto.readlines()
-    #display_message(message)
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/plot_generic.py b/debian/openfovea/usr/share/pyshared/openfovea/plot_generic.py
deleted file mode 100644
index 68caa90..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/plot_generic.py
+++ /dev/null
@@ -1,2224 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-'''
-This module contains the necessary tools to plot graphics independently from the
-gui.
-
-The examples saves the result in a folder named FIGURE_FOLDER. This is a string
-that contain the folder where the figure are plotted.
-'''
-
-# for script installation
-from pkg_resources import resource_filename # pylint: disable-msg=E0611
-import os, sys
-
-import pdb        # pdb.set_trace()
-import numpy
-from scipy import stats
-
-try:
-    matplotlib.__version__
-except NameError:
-    import matplotlib
-    matplotlib.use('Agg', warn=False)
-    import matplotlib.pyplot as plt
-
-from matplotlib.patches import Circle, Rectangle, FancyArrow
-from matplotlib.widgets import Cursor
-from matplotlib.ticker import NullFormatter
-from mpl_toolkits.axes_grid.anchored_artists import AnchoredText
-NULLFMT = NullFormatter()
-
-from fovea_toolbox import post_proc
-
-try:
-    NO_DATA_FILENAME = resource_filename('openfovea','Icon/NoData.png')
-except NotImplementedError:
-    NO_DATA_FILENAME = 'openfovea/Icon/NoData.png'
-try:
-    NO_DATA_IMAGE = matplotlib.image.imread(NO_DATA_FILENAME)
-except IOError:
-    NO_DATA_FILENAME = os.path.join(os.path.dirname(sys.executable), 'openfovea/Icon/NoData.png')
-    NO_DATA_IMAGE = matplotlib.image.imread(NO_DATA_FILENAME)
-class Plot(object):
-    """
-        This is the generic plot class that will be inherited from the other.
-        It has no plot capabilities, but have the standard attribute.
-    """
-    def __init__(self):
-        self.figure = plt.figure()
-        self.axis = self.figure.add_subplot(111)
-        self.colors = ['blue', 'green', 'red', 'cyan', 'magenta', 'yellow',
-                       'black', 'white']
-        self.win_size = [8, 6]
-        self.scale = ['linear', 'linear']
-        self.type = None
-    def save(self, filename):
-        """
-            Save your plot in a file.
-        """
-        
-        self.figure.savefig(filename)
-        
-    def hold(self, value):
-        """
-            Change the hold state of the axis.
-            Accepted values are :
-            
-                * 'On' or True to make two plots.
-                * 'Off' or False to override the last plot.
-        """
-        
-        if value in ('On', True):
-            self.axis.hold(True)
-        elif value in ('Off', False):
-            self.axis.hold(False)
-        
-    def set_size(self, width, height, deep=False):
-        """
-            Change the size of the figure.
-        """
-        # Figure size is inch * dpi
-        #dpi = self.figure.get_dpi()
-        #inch = self.figure.get_size_inches()
-        #
-        ##
-        # Normally, the figure size in pixel is the inch * dpi.
-        # But I see that it's inch * 100... I force it to 100 and wait for explanations later.
-        new_inch = [float(width) / 100, float(height) / 100]
-        self.win_size = new_inch
-        if deep:
-            self.figure.set_size_inches(new_inch)
-    def set_xscale(self, scale=None):
-        if scale is not None:
-            self.scale[0] = scale
-        self.axis.set_xscale(self.scale[0])
-    def get_type(self):
-        return self.type
-class Curve(Plot):
-    """
-        Plot a curve on a window. Stores the standard values required for the
-        plot in OpenFovea so that I don't have to think about it later.
-        
-        >>> import numpy
-        
-        >>> x_data = numpy.arange(0, 10, 0.1)
-        >>> y_data = numpy.sin(x_data)
-        >>> y_data_2 = numpy.sin(x_data + 1)
-        
-        >>> test = Curve(xlabel = 'x axis', ylabel = 'y axis', title = 'plot title')
-        >>> test.plot(x_data, y_data)
-        >>> test.hold(True)
-        >>> test.plot(x_data, y_data_2, linestyle='go')
-        >>> test.save(FIGURE_FOLDER + 'plot.svg')
-    """
-    
-    def __init__(self, xlabel='Scanner Extention [nm]',
-                       ylabel='Cantilever Deflection [nm]',
-                       title='Force-Distance curve',
-                       linewidth=1.5):
-        Plot.__init__(self)
-        
-        self.xlabel = xlabel
-        self.ylabel = ylabel
-        self.title = title
-        self.axis.hold(False)
-        self.axis.set_xlabel(self.xlabel)
-        self.axis.set_ylabel(self.ylabel)
-        self.axis.set_title(self.title)
-        self.axis.grid(True)
-        self.lim = None
-        self.linewidth = linewidth
-        self.type = 'curve'
-    def plot(self, x_data, y_data, linestyle='b-', alpha=1):
-        """
-            Plot your data with the specified style.
-        """
-        if self.lim is not None:
-            # The plot has already been initialized. Then, we get the current
-            # limit in order to restore it after the plot.
-            self.lim['x'] = self.axis.get_xlim()
-            self.lim['y'] = self.axis.get_ylim()
-        self.axis.plot(x_data, y_data, linestyle, linewidth=self.linewidth, alpha=alpha)
-        self.__reinitialize()
-        
-    def __reinitialize(self):
-        """
-            This is to reinitialize your plot. You don't need to manually call
-            it, as it is automatically called when you do a plot.
-        """
-        
-        self.axis.set_xlabel(self.xlabel)
-        self.axis.set_ylabel(self.ylabel)
-        self.axis.set_title(self.title)
-#        if self.ylim is not None:
-#            self.axis.set_ylim(self.ylim)
-        if self.lim is not None:
-            self.axis.set_xlim(self.lim['x'])
-            self.axis.set_ylim(self.lim['y'])
-        else:
-            self.lim = {'x' : self.axis.get_xlim(),
-                        'y' : self.axis.get_ylim()}
-            
-        self.axis.grid(True)
-class ErrorBar(Curve):
-    def __init__(self, xlabel='Depth [nm]',
-                       ylabel='Young Modulus [Pa]',
-                       title='Mean Stiffness',):
-        Curve.__init__(self, xlabel, ylabel, title)
-        self.axis2 = self.axis.twinx()
-        self.pretty_axis()
-    def average_stiffness(self, data, group=None, group_info=None, linestyle='b-', style='isol', show_count=True):
-        """
-            Plot the errorbar with the specified style
-            
-            * Parameters :
-                data : list
-                group : list
-                group_info : list
-                linestyle : str
-                style : str
-                    Defines the style of the average. This is pertinent only
-                    with grouped data.
-                    'isol' : each item of a group is isolated. The average and
-                             standard deviation reflects the population
-                             homogeneity. If one file is 245 ± 10 and the other
-                             is 255 ± 15, the result will be 250 ± 5.
-                    'merge' : Each item of a group is merged. The average and
-                              standard deviation reflects the pixels
-                              homogeneity. If one file is 245 ± 10 with 10
-                              values, the other is 255 ± 15 with 20 values, the
-                              result will be 251 ± 13
-        """
-        self.axis.cla()
-        self.axis2.cla()
-        if group is not None:
-            # data is a set of several measurements each of them belonging to a
-            # group
-            if group_info is None:
-                # no information about the groups...
-                group_info = {'id' : numpy.unique(group),
-                      'label' : ['group %i'%gid for gid in numpy.unique(group)],
-                      'display' : [True for gid in numpy.unique(group)], 
-                      }
-            group = numpy.array(group)
-            list_group = [group_info['id'][i] for i in numpy.nonzero(group_info['display'])[0]]
-            for item in list_group:
-                #pdb.set_trace()
-                gindex = group_info['id'].index(item)
-                index_list = numpy.nonzero(group == group_info['id'][gindex])[0]
-                # We recover the data that has to be plotted
-                _data = [data[i]['mean'] for i in index_list]
-                _std = [data[i]['std'] for i in index_list]
-                _count = [data[i]['count'] for i in index_list]
-                # Here, we have the maximum depth in the files of the current group.
-                _deep = [data[i]['deep'] for i in index_list]
-                _tot_size = [len(item) for item in _deep]
-                #_max_size = max([len(item) for item in _deep])
-                deep = _deep[_tot_size.index(max(_tot_size))]
-                if style == 'merge':
-                    # We have to fill with 0 the arrays that are smaller.
-                    _data = numpy.array([list(item) + [0] * (max(_tot_size) - len(item))
-                                                            for item in _data])
-                    _std = numpy.array([list(item) + [0] * (max(_tot_size) - len(item))
-                                                            for item in _std])
-                    _count = numpy.array([list(item) + [0] * (max(_tot_size) - len(item))
-                                                            for item in _count])
-                    new_mean = (_data * _count).sum(0) / _count.sum(0)
-                    new_std = (_std ** 2 * (_count - 1)).sum(0) / _count.sum(0) - 1
-                    new_std = new_std ** 0.5
-                elif style == 'isol':
-                    # We have to fill with nan the arrays that are smaller.
-                    new_data = numpy.ma.array(numpy.zeros((len(_data), max(_tot_size))),
-                                          mask=numpy.ones((len(_data),
-                                                           max(_tot_size))))
-                    new_count = numpy.zeros((len(_data), max(_tot_size)))
-                    for i in range(len(_data)):
-                        new_count[i,:len(_count[i])] = _count[i]
-                    new_count = new_count.sum(0)
-                    for i in range(len(_data)):
-                        new_data[i][:len(_data[i])] = _data[i]
-                        new_data[i].mask[0:len(_data[i])] = 0
-                    new_mean = new_data.mean(0)
-                    new_std = new_data.std(0)
-#                    _data = numpy.array([list(item) + [nan] * (max(_tot_size) - len(item))
-#                                                            for item in _data])
-#                    _std = numpy.array([list(item) + [nan] * (max(_tot_size) - len(item))
-#                                                            for item in _std])
-#                    _count = numpy.array([list(item) + [nan] * (max(_tot_size) - len(item))
-#                                                            for item in _count])
-#                    new_mean = _data.mean(0)
-#                    new_std = _data.std(0)
-                self.plot(deep, new_mean, new_std, label=group_info['label'][gindex])
-                if show_count:
-                    self.plot_y2(deep, new_count)
-        else:
-            self.plot(data['deep'], data['mean'], data['std'])
-            if show_count:
-                self.plot_y2(data['deep'], data['count'])
-        self.pretty_axis(show_y2=show_count)
-    def pretty_axis(self, show_y2=False):
-        yaxis = self.axis.get_yaxis()
-        yaxis.set_label_position('left')
-        yaxis.set_ticks_position('left')
-        yaxis = self.axis2.get_yaxis()
-        yaxis.set_label_position('right')
-        yaxis.set_ticks_position('right')
-        yaxis.set_visible(show_y2)
-        
-    def plot(self, data_x, data_y, y_err, label=None, linestyle='b-'):
-        self.axis.hold(True)
-        self.axis.errorbar(data_x, data_y, y_err, label=label)
-        self.axis.hold(False)
-        if label is not None:
-            self.axis.legend(loc='best')
-    def plot_y2(self, data_x, data_y, linestyle='--'):
-        self.axis2.plot(data_x, data_y, linestyle)
-        self.axis2.set_ylabel('Number of data')
-        
-class Array(Plot):
-    """
-        Plot an array. It can behaves differently corresponding to the array
-        type you give.
-            
-        >>> import numpy
-        
-        >>> data = numpy.random.randn(10,10)
-        >>> test = Array('Random array')
-        >>> test.plot(data)
-        >>> test.save(FIGURE_FOLDER + 'array_pixel.svg')
-        
-        If the scan size is specified, the array is recognized as nanometric
-        scale image.
-        
-        >>> test.title = 'Random array in nanometer'
-        >>> test.plot(data, scan_size=[1000, 1000])
-        >>> test.save(FIGURE_FOLDER + 'array_nm.svg')
-        
-        A scale bar can be added to show the correlation between color and
-        values.
-        
-        >>> test.colorbar = True
-        >>> test.plot(data, scan_size=[1000, 1000])
-        >>> test.save(FIGURE_FOLDER + 'array_cb.svg')
-        
-        If the data is changed, the colormap is updated :
-        
-        >>> data = data*100
-        >>> test.plot(data, scan_size=[1000, 1000])
-        >>> test.vmax = 140
-        >>> test.save(FIGURE_FOLDER + 'array_cb100.svg')
-        
-        And you can plot a marker at a position given in pixel :
-        
-        >>> test.colorbar = False
-        >>> test.plot(data, scan_size=[1000, 1000])
-        >>> test.marker = (5, 4)
-        >>> test.save(FIGURE_FOLDER + 'array_marker.png')
-    """
-    
-    def __init__(self, title='Data array',):
-        Plot.__init__(self)
-        self.type = 'pcolor'
-        # definitions for the axes
-        left = 0.15
-        bottom = 0.15
-        ar_width = 0.7
-        cb_width = 0.03
-        height = 0.75
-        plot_dist = 0.03
-        
-        left_bar = left + ar_width + plot_dist
-        rect_arr = [left, bottom, ar_width, height]
-        rect_cb = [left_bar, bottom, cb_width, height]
-        
-        self.figure.clf()
-        self.axis = {'array' : self.figure.add_axes(rect_arr),
-                     'colorbar' : self.figure.add_axes(rect_cb)
-                     }
-        ## Default values:
-        self.array = None # stores the array
-        self.scale = {'size' : None, # Is the size of the scan
-                      'unit' : '[pixel]', # is the unit of the size
-                      'array' : None, # Is the array to display the label
-                      'voxel_size' : [1, 1], # The size of a pixel
-                      'initialized' : False,
-                      'show' : True
-                      }
-        self.color_scale = {'min' : None,
-                            'max' : None,
-                            'colorbar' : False, # Do we plot or not the
-                                                # scalebar.
-                            'cmap' : 'gray'}
-                            
-        self.p_marker = {'display' : False,
-                         'indice_x' : None,
-                         'indice_y' : None,
-                        'patch' : None} # matplotlib patch object to mark the
-                                         # position
-        self.path = { 'start' : None, # The start point
-                      'stop' : None, # The end point
-                      'list' : None, # The list of points that define the path
-                      'plot' : None, # Contain the curve traced on the plot array.
-                      'grab' : None, # Which point to grab = 'start' or 'stop'
-                      'refresh' : None, # Contains the list of points that define the path. Is erased when used.
-                      }
-        #TODO Remove self.trace and self.show_trace
-        self.trace = None # Contain the curve traced on the plot array.
-        self.title = title
-        
-    def __setattr__(self, att, value):
-        if att is 'colorbar':
-            self.__dict__['color_scale']['colorbar'] = value
-        elif att is 'cmap':
-            self.__dict__['color_scale']['cmap'] = value
-        elif att is 'vmin':
-            self.__dict__['color_scale']['min'] = value
-            if self.array is not None:
-                self.plot()
-        elif att is 'vmax' :
-            self.__dict__['color_scale']['max'] = value
-            if self.array is not None:
-                self.plot()
-        elif att is 'marker':
-            self.__dict__['p_marker']['display'] = True
-            self.__dict__['p_marker']['indice_x'] = value[0]
-            self.__dict__['p_marker']['indice_y'] = value[1]
-            #self.mark_pos(value)
-            self.mark_pos()#plot()
-        else:
-            self.__dict__[att] = value
-    def __getattr__(self, att):
-        if att is 'colorbar':
-            return self.__dict__['color_scale']['colorbar']
-        else:
-            return self.__dict__[att]
-    def plot(self, array=None, scan_size=None):
-        """
-            Displays the array.
-            The scan size has to be in nanometer.
-        """
-        ## Initialize the variables
-        self.axis['array'].cla()
-        if array is not None:
-            self.array = array
-        if type(self.array) == numpy.ma.core.MaskedArray and \
-                                        numpy.all(self.array.mask.all(True)):
-            self.axis['array'].imshow(NO_DATA_IMAGE)
-            self.axis['array'].set_axis_off()
-            self.axis['colorbar'].set_visible(False)
-            return
-            #raise ValueError, 'Array with only masked values.'
-        if not self.scale['initialized']:
-            if scan_size in [0, None]:
-                scan_size = None
-            elif 0 in scan_size:
-                scan_size = None
-            shape = self.array.shape
-            self.scale['array'] = [numpy.arange(0, shape[0]+1) for i in range(2)]
-            self.scale['size'] = [1 for i in range(2)]
-            self.scale['unit'] =  ['[pixel]' for i in range(2)]
-            self.scale['voxel_size'] = [1 for i in range(2)]
-        if scan_size is not None:
-            shape = self.array.shape
-            if isinstance(scan_size, (int, float)):
-                scan_size = [float(scan_size), float(scan_size)]
-            else:
-                scan_size = [float(dim) for dim in scan_size]
-            for dim in range(2):
-                if scan_size[dim] < 1000:
-                    self.scale['unit'][dim] = '[nm]'
-                    self.scale['size'][dim] = scan_size[dim]
-                elif scan_size[dim] >= 1000:
-                    self.scale['unit'][dim] = r'[$\mathregular{\mu}$m]'
-                    self.scale['size'][dim] = scan_size[dim] / 1000.
-                self.scale['array'][dim] = numpy.arange(
-                                0,
-                                self.scale['size'][dim] + self.scale['size'][dim] / shape[0],
-                                self.scale['size'][dim] / shape[0])
-                self.scale['voxel_size'][dim] = self.scale['size'][dim]/shape[dim]
-            self.scale['initialized'] = True
-#        if not self.scale['initialized']:
-#            self.scale['array'] = [numpy.arange(0, shape[0]+1) for i in range(2)]
-#            self.scale['unit'] =  ['[pixel]' for i in range(2)]
-        # Plot
-        self.axis['array'].set_title(self.title)
-        image = self.axis['array'].pcolormesh(self.scale['array'][0],
-                         self.scale['array'][1],
-                         self.array.transpose(),
-                         vmin=self.color_scale['min'],
-                         vmax=self.color_scale['max'],
-                         cmap=self.color_scale['cmap'])
-        self.axis['array'].axis([0, self.scale['array'][0][-1],
-                                 0, self.scale['array'][1][-1]])
-        if self.scale['show']:
-            self.axis['array'].set_xlabel('Size ' + self.scale['unit'][0])
-            self.axis['array'].set_ylabel('Size ' + self.scale['unit'][1])
-        else:
-            self.axis['array'].set_xticks([])
-            self.axis['array'].set_yticks([])
-        if self.color_scale['colorbar']:
-            self.axis['colorbar'].set_visible(True)
-            self.axis['colorbar'].cla()
-            self.figure.colorbar(image, self.axis['colorbar'])
-        else:
-            self.axis['colorbar'].set_visible(False)
-        if self.p_marker['display']:
-            self.mark_pos()
-            
-    def mark_pos(self):
-        """
-            Mark the position of the cursor.
-        """
-        pos_x = self.p_marker['indice_x'] * self.scale['voxel_size'][0]
-        pos_y = self.p_marker['indice_y'] * self.scale['voxel_size'][1]
-        if self.p_marker['patch'] is not None:
-            self.p_marker['patch'].set_xy((pos_x, pos_y))
-        else:
-            self.p_marker['patch'] = Rectangle((pos_x, pos_y),
-                                                self.scale['voxel_size'][0],
-                                                self.scale['voxel_size'][1],
-                                                zorder=10)
-            self.p_marker['patch'].set_antialiased(True)
-            self.p_marker['patch'].set_linewidth(1)
-            self.p_marker['patch'].set_facecolor((1.0, 1.0, 1.0, 1.0))
-            self.p_marker['patch'].set_alpha(0.7)
-            self.axis['array'].hold(True)
-            self.axis['array'].add_patch(self.p_marker['patch'])
-    def on_gride_click(self, event):
-        if event.button == 1:
-            # Left mouse button ==> goto
-            return [event.xdata, event.ydata]
-        elif event.button == 3:
-            # Right mouse button ==> slice
-            posx = int(event.xdata / self.scale['voxel_size'][0])
-            posy = int(event.ydata / self.scale['voxel_size'][1])
-            self.set_path(posx, posy)
-    def show_trace(self, trace):
-        """
-            Show the trace.
-        """
-        if self.trace is None:
-            self.trace = self.axis['array'].plot(trace[0], trace[1], picker=5,
-                                                 linewidth = 4, alpha=0.5)
-        else:
-            self.trace[0].set_data(trace)
-    def set_path(self, posx, posy):
-        """
-            Create a path on the gride.
-        """
-        if self.path['start'] is None:
-            self.path['start'] = [posx, posy]
-        elif self.path['stop'] is None:
-            self.path['stop'] = [posx, posy]
-            # Create the path and show it
-            self.path['list'] = post_proc.generate_path(self.path['start'],
-                                                        self.path['stop'])
-            self.path['refresh'] = self.path['list']
-            plot_list = self.path['list']
-            if self.path['plot'] is None:
-                self.path['plot'] = self.axis['array'].plot(
-                                    plot_list[0] * self.scale['voxel_size'][0],
-                                    plot_list[1] * self.scale['voxel_size'][1],
-                                    color = 'white', linewidth = 5, alpha = 0.6)
-            else: 
-                self.path['plot'][0].set_data(plot_list *
-                                              self.scale['voxel_size'][0])
-        else:
-            picker = 3
-            if ((posx - picker < self.path['start'][0] < posx + picker) and
-                 (posy - picker < self.path['start'][1] < posy + picker)):
-            #if [posx, posy] == self.path['start']:
-                self.path['grab'] = 'start'
-            if ((posx - picker < self.path['stop'][0] < posx + picker) and
-                 (posy - picker < self.path['stop'][1] < posy + picker)):
-                self.path['grab'] = 'stop'
-    def get_path(self):
-        """
-            Get the path and erase it.
-        """
-        path, self.path['refresh'] = self.path['refresh'], None
-        return path
-    def on_button_release(self, event):
-        self.path['grab'] = None
-    def move_mouse(self, event):
-        """
-            What to do when the mouse is moved...
-        """
-        if not event.inaxes:
-            return
-        if self.path['grab'] == 'start':
-            self.path['start'] = [int(event.xdata / self.scale['voxel_size'][0]),
-                                  int(event.ydata / self.scale['voxel_size'][1])]
-            plot_list = self.path['list']
-            self.path['list'] = post_proc.generate_path(self.path['start'], self.path['stop'])
-            self.path['plot'][0].set_data(plot_list * self.scale['voxel_size'][0])
-            self.path['refresh'] = self.path['list']
-        elif self.path['grab'] == 'stop':
-            self.path['stop'] = [int(event.xdata / self.scale['voxel_size'][0]),
-                                  int(event.ydata / self.scale['voxel_size'][1])]
-            plot_list = self.path['list']
-            self.path['list'] = post_proc.generate_path(self.path['start'], self.path['stop'])
-            self.path['plot'][0].set_data(plot_list * self.scale['voxel_size'][0])
-            self.path['refresh'] = self.path['list']
-        #print event.xdata
-
-class TimeLapse(Plot):
-    """
-        Plots the time laps with a barplot displaying the average before and
-        after a treatment.
-
-        For example :
-        
-        >>> import numpy
-        
-        Let's make some difference between data before 100 and after 100
-        
-        Data between 0-9 belong to group "0" and between 10-14 to group "1"
-
-        >>> test = TimeLapse()
-        
-        
-        Let's do with DataPlot object.
-        
-        Our data is made of 15 data points with 10 measurments each. Relative
-        stiffness is computed on 3 distances. So let's generate the final list
-        like this :
-        
-        >>> tl_array = numpy.random.randn(15 * 10)
-        >>> data = [tl_array for i in range(3)]
-        
-        >>> ctl_array = numpy.random.randn(15 * 10)
-        >>> data_ctl = [ctl_array/(i+1) for i in range(3)]
-        
-        We generate the file index :
-        
-        >>> index = numpy.mgrid[0:15, 0:10][0]
-        >>> index.shape = 15 * 10
-        
-        >>> group = [0 for i in range(10*10)] + [1 for i in range(5*10)]
-        >>> group = [group for i in range(3)]
-        >>> plot_data = PlotData()
-        
-        >>> plot_data.set_type('relstiff')
-        >>> plot_data.set_data('relstiff', data)
-        >>> plot_data.set_range('relstiff', [-5, 5, 0.1, 0])
-        >>> plot_data.set_group('relstiff', group)
-        >>> plot_data.set_fid('relstiff', index)
-        
-        And the same with the control (and let's add a group to look):
-        
-        >>> plot_data.set_data('relstiffctl', data_ctl)
-        >>> plot_data.set_range('relstiffctl', [-5, 5, 0.1, 0])
-        >>> plot_data.set_group('relstiffctl', group)
-        >>> plot_data.set_fid('relstiffctl', index)
-        
-        >>> test.plot(plot_data)
-        >>> test.save(FIGURE_FOLDER + 'PlotData_tl_group_ctl')
-    """
-    #TODO Clean old compatibility for vectors, all should go through DataPlot
-    #objects
-    def __init__(self, xlabel='Time',
-                       ylabel='Stiffness',
-                       title='Relative Stiffness'):
-        
-        Plot.__init__(self)
-        self.type = 'plot-bar'
-        # definitions for the axes
-        #
-        #       <----tl_width----> <bar_width>
-        #       +----------------+ +---------+ ^
-        #       |                | |         | |
-        #       |   Time-Lapse   | |   Bar   | height
-        #       |                | |         | |
-        # left  +----------------+ +---------+ v
-        #    bottom              <->
-        #                     plot_dist
-        
-        # definitions for the axes
-        left = 0.05
-        bottom = 0.1
-        tl_width = 0.7
-        bar_width = 0.22
-        height = 0.8
-        plot_dist = 0
-        
-        left_bar = left + tl_width + plot_dist
-        rect_tl = [left, bottom, tl_width, height]
-        rect_hist = [left_bar, bottom, bar_width, height]
-        
-        self.figure = plt.figure(figsize=(10, 2))
-        self.axis = {'tl' : self.figure.add_axes(rect_tl),
-                     'bar' : self.figure.add_axes(rect_hist)
-                     }
-        self.sem = 1
-    def plot(self, data, data_ctl=None, baseline=0):
-        """
-            Plots the data
-        """
-        # pylint: disable-msg=R0913
-        # disable the "too many argument" warning from pylint
-        
-        # Defines the properties of the box plot
-        box = {'size' : 0.45, # the size of the box
-               'slide' : 0.4}# how far the box slides
-                             # (between data and data_ctl)
-                             
-        ## Get the values to plot :
-        if not isinstance(data, PlotData):
-            raise AttributeError, "Data has to be a PlotData object."
-        indice = data.get_group('relstiff')
-        fileid = data.get_fid('relstiff')
-        if data_ctl is None:
-            fileid_ctl = data.get_fid('relstiffctl')
-            data_ctl = data.get_data('relstiffctl')
-            group_ctl = data.get_group('relstiffctl')
-        data = data.get_data('relstiff')
-        
-        time = numpy.unique(fileid)
-        
-        if indice is None:
-            indice = numpy.zeros(data.shape[0])
-        res_tl = compute_indice_stat(data, fileid)
-        res_bar = compute_indice_stat(data, indice)
-        
-        # Prepare the axes :
-        self.axis['tl'].cla()
-        self.axis['bar'].cla()
-        # And plot.
-        self.axis['tl'].errorbar(time, res_tl['mean'], res_tl['sem'],
-                                 fmt='-', color='black')
-        
-        self.axis['bar'].bar(res_bar['indice'], res_bar['mean'],
-                             width=box['size'], color='black', alpha=0.5)
-        self.axis['bar'].errorbar(res_bar['indice'] + box['size']/2.,
-                                  res_bar['mean'], res_bar['sem'],
-                                  fmt=None, ecolor='k')
-                                  
-        if data_ctl is not None:
-            # We have control to plot in dashed line :
-            if isinstance(data_ctl, PlotData):
-                # Another data set is given for the control.
-                indice_ctl = data_ctl.get_group('relstiff')
-                fileid_ctl = data_ctl.get_fid('relstiff')
-                group_ctl = data_ctl.get_group('relstiff')
-                data_ctl = data_ctl.get_data('relstiff')
-                
-            res_tl_ctl = compute_indice_stat(data_ctl, fileid_ctl)
-            res_bar_ctl = compute_indice_stat(data_ctl, group_ctl)
-            self.axis['tl'].hold(True)
-            time = numpy.unique(fileid_ctl)
-            self.axis['tl'].errorbar(time,
-                                     res_tl_ctl['mean'], res_tl_ctl['sem'],
-                                     fmt='--', color='gray')
-            
-            self.axis['bar'].bar(
-                    res_bar_ctl['indice'] + box['slide'], res_bar_ctl['mean'],
-                    width=box['size'], color='white', alpha=0.5)
-                    
-            self.axis['bar'].errorbar(
-                    res_bar_ctl['indice'] + box['slide'] + box['size'] / 2,
-                    res_bar_ctl['mean'], res_bar_ctl['sem'],
-                    fmt=None, ecolor='k')
-            self.axis['tl'].hold(False)
-                    
-        # Display the baseline in the time-lapse
-        self.axis['tl'].hold(True)
-        
-        baseline = [[time[0]-0.5, time[-1]+0.5],
-                    [baseline, baseline]]
-        
-        self.axis['tl'].plot(baseline[0], baseline[1], 'k-')
-        self.axis['tl'].set_xlim(baseline[0][0], baseline[0][1])
-        
-        # Control the plot axis
-        # 1) make y axis the same for both and do not display bar one
-        # 2) change the x axis of bar to display 'Before' and 'After'
-        tl_y_lim = self.axis['tl'].get_ylim()
-        bar_y_lim = self.axis['bar'].get_ylim()
-        
-        min_y = min(tl_y_lim[0], bar_y_lim[0])
-        max_y = max(tl_y_lim[1], bar_y_lim[1])
-        # 1)
-        self.axis['tl'].set_ylim(min_y, max_y)
-        self.axis['bar'].set_ylim(min_y, max_y)
-        self.axis['bar'].set_yticks([])
-        # 2)
-        self.axis['bar'].set_xticks(res_bar['indice'] + box['slide'] +
-                                    (box['size'] - box['slide']) / 2)
-        self.axis['bar'].set_xticklabels(res_bar['indice'])
-
-class Mosaic(Plot):
-    """
-        Plots the mosaic of several arrays.
-        
-        >>> from numpy.random import randn
-        >>> import pylab
-        
-        >>> array_list = [randn(10,10), randn(10,10), randn(15,15)]
-        >>> list_name = ['first and a very long text to test it...', 'second', 'third']
-        >>> test = Mosaic()
-        >>> test.plot(array_list, list_name = list_name)
-        >>> test.save(FIGURE_FOLDER + 'mosaic_test.png')
-        
-        Note that mask annotation is pickable.
-    """
-
-    def __init__(self):
-        Plot.__init__(self)
-        self.type = 'mosaic'
-        self.figure.clf()
-        self.axis = list()
-        self.text_annotation = list()
-        self.mask_annotation = list()
-        
-    
-    def plot(self, list_array, title = 'Mosaic plot',
-                   list_name = None, cmap = 'gray', list_mask = None):
-        """
-            Plot the Mosaic of arrays.
-        """
-        
-        #self.__init__()
-        size_list = len(list_array)
-        nbr_line = numpy.round(numpy.sqrt(size_list))
-        nbr_col = numpy.ceil(numpy.sqrt(size_list))
-        # Create the list of name
-        if list_name is None:
-            list_name = ['Image ' + '{0:0>2}'.format(v)
-                         for v in xrange(size_list)]
-        # Create the list of mask
-        if list_mask is None:
-            list_mask = [False for i in range(size_list)]
-        # Create the list of subplots
-        for item in xrange(len(list_array)):
-            new_array = None
-            self.axis.append(self.figure.add_subplot(nbr_line, nbr_col, item+1))
-            # determine what to plot
-            if list_array[item] is not None:
-                if list_array[item].ndim > 2:
-                    # This is a 3d array, then take the first one.
-                    if isinstance(list_array[item], numpy.ma.core.MaskedArray):
-                        if 0 in list_array[item][:, :, 0].mask:
-                            new_array = list_array[item][:, :, 0]
-                        else:
-                            new_array = None
-                else :
-                    # This is a 2d array, then take it like this.
-                    new_array = list_array[item]
-            # Plot it in the subplot.
-            if new_array is not None:
-                self.axis[item].pcolorfast(new_array.transpose(),
-                                           cmap=cmap)
-            else:
-                self.axis[item].imshow(NO_DATA_IMAGE)
-            self.axis[item].set_axis_off()
-        for item in xrange(len(list_array)):
-            # Annotate with the name given in the list.
-            ax_box = self.axis[item].get_position().get_points()
-            middle = (ax_box[0][0] + (ax_box[1][0] - ax_box[0][0]) / 2,
-                      ax_box[0][1] + (ax_box[1][1] - ax_box[0][1]) / 2)
-            self.text_annotation.append(
-                    self.axis[-1].annotate(list_name[item],
-                           xy=middle, xycoords = 'figure pixels',
-                           horizontalalignment = 'center',
-                           verticalalignment = 'center',
-                           fontsize = 12,
-                           fontweight = 'bold',
-                           bbox=dict(boxstyle="round", fc="0.8", alpha=0.8),
-                           visible = False
-                           )
-                    )
-            # Annotate with 'M' if masked, or nothing if not.
-            if list_mask[item]:
-                mask_color = 'red'
-                alpha = 0.7
-            else:
-                mask_color = 'green'
-                alpha = 0.3
-            bottom_right = (0,0)#ax_box[0][0], ax_box[0][1])
-            self.mask_annotation.append(
-                self.axis[item].annotate('M',
-                            xy=bottom_right, xycoords = 'axes fraction',
-                            horizontalalignment = 'left',
-                            verticalalignment = 'bottom',
-                            fontsize = 12,
-                            fontweight = 'bold',
-                            bbox=dict(boxstyle='round', fc=mask_color, alpha=alpha),
-                            visible = True, 
-                            picker=20,
-                            alpha=alpha)
-                )
-        self.figure.suptitle(title)
-        self.figure.canvas.mpl_connect('axes_enter_event', self.enter_array)
-        self.figure.canvas.mpl_connect('axes_leave_event', self.leave_array)
-        self.figure.canvas.mpl_connect('motion_notify_event', self.enter_array)
-        #self.figure.canvas.mpl_connect('pick_event', self.on_pick)
-    def index(self, event):
-        """
-            Get the index number of the axes and the object type where a mouse event occured.
-            
-            You can directly access the axis number of a mouse event :
-            
-            [index, otype] = mosaic.index(event)
-        """
-        axe = self.axis.index(event.mouseevent.inaxes)
-        if self.mask_annotation.count(event.artist):
-            # This is the mask artist that was clicked.
-            obj = 'mask'
-        return [axe, obj]
-    def enter_array(self, event):
-        """
-            Responsible for the mouse motion event, when the cursor enter an
-            axis.
-        """
-        
-        try:
-            self.text_annotation[self.axis.index(event.inaxes)].set_visible(
-                                                            True)
-            self.text_annotation[self.axis.index(event.inaxes)].xytext = \
-                                                            (event.x, event.y)
-        except ValueError:
-            pass
-    def leave_array(self, event):
-        """
-            Responsible for the mouse motion event, when the cursor leave an
-            axis.
-        """
-        try:
-            self.text_annotation[self.axis.index(event.inaxes)].set_visible(False)
-        except ValueError:
-            pass
-        
-class Histogram(Plot):
-    """
-        Plot the histogram of a data set.
-        This is an enhanced version of the hist function of matplotlib.
-        
-        >>> from numpy.random import randn
-        >>> data = randn(1000)
-        >>> test = Histogram(xlabel='Random [AU]')
-        
-        There is a simple way to plot your data just by giving your data array :
-
-        >>> test.plot(data)
-        >>> test.save(FIGURE_FOLDER + 'simple_hist.png')
-        
-        But there is a more advanced way, which is to make an instance of the
-        PlotData class, set it's properties and send it to plot :
-        
-        >>> plot_data = PlotData()
-        >>> plot_data.set_data('force', data)
-        >>> plot_data.set_range('force', [-5, 5, 0.1])
-        >>> test.plot(plot_data)
-        >>> test.save(FIGURE_FOLDER + 'PlotData_class_hist.png')
-        
-        Comparing several datasets is possible. Note that the second set of data
-        does not need to set the range. The range of the first one will be used.
-        
-        >>> plot_data2 = PlotData()
-        >>> plot_data2.set_data('force', data + 1.2)
-        >>> test.plot(plot_data, plot_data2, color_type='color')
-        >>> test.save(FIGURE_FOLDER + 'PlotData_cmpare_hist.png')
-        
-        We can also plot the kernel density estimation over the plot :
-        
-        >>> from fovea_toolbox.post_proc import find_gauss_fit
-        >>> result = find_gauss_fit(data, 1024)
-        >>> test.plot(plot_data)
-        >>> test.show_fit(result)
-        >>> test.save(FIGURE_FOLDER + 'PlotData_fit.png')
-        
-        You can also define some groups and plot the data according to the group
-        they belong to.
-        
-        >>> from numpy.random import rand
-        >>> data = randn(100)
-        >>> data2 = rand(100)
-        >>> data3 = randn(100) * rand(100)
-        >>> merged = list(data)+list(data2)+list(data3)
-        >>> group = [0 for i in range(100)] + \
-                    [1 for i in range(100)] + \
-                    [2 for i in range(100)]
-        
-        >>> plot_data = PlotData()
-        >>> plot_data.set_data('force', merged)
-        >>> plot_data.set_group('force', group)
-        >>> plot_data.set_range('force', [-5, 5, 0.1])
-        >>> test.plot(plot_data)
-        >>> test.save(FIGURE_FOLDER + 'PlotData_with_group.png')
-    """
-    
-    def __init__(self, xlabel = '...', title='Histogram', data_type='', y_rel=False):
-        Plot.__init__(self)
-        self.type = 'histogram'
-        self.xlabel = xlabel
-        self.axis2 = None
-        self.title = title
-        self.data = None
-        self.data2 = None
-        self.label, self.label2 = None, None
-        self.index = None
-        self.data_type = data_type
-        self.max_hist = None # Stores the maximum of histogram to scale the fit.
-        self.range = None # Stores the x_range of the histogram.
-        self.relative = y_rel # The y axis in relative or absolute mode.
-        self.text_annotation = {'list' : list(),
-                                'grabbed' : None,
-                                'clicked' : [0,0]}
-    def plot(self, data, data2 = None, label = None, label2 = None,
-                    hist_range = None, color_type = 'color', y2=False):
-        """
-            Plots the histogram.
-        """
-        frequency_factor = 1
-        if isinstance(data, PlotData):
-            self.range = data.range
-            if self.relative and  (data.nbr_curves is not None):
-                frequency_factor = 1 / float(data.nbr_curves)
-            else:
-                frequency_factor = 1
-            group = data.group
-            group_label = data.get_group_prop('label')
-            group_visible = data.get_group_prop('display')
-            group_id = data.get_group_prop('id')
-            data = data.data
-        else:
-            group = [0 for i in range(len(data))]
-            group_label = None
-            group_visible = [True]
-            group_id = [0]
-            self.range = hist_range
-        if isinstance(data2, PlotData):
-            if self.relative and (data2.nbr_curves is not None):
-                frequency_factor2 = 1 / float(data2.nbr_curves)
-            else:
-                frequency_factor2 = 1
-            group2 = data2.group
-            data2 = data2.data
-        elif data2 is not None:
-            group2 = [0 for i in range(len(data2))]
-            frequency_factor2 = 1
-        group = numpy.asanyarray(group)
-        data = numpy.asanyarray(data)
-        index = numpy.isfinite(data)
-        self.label = label
-        self.label2 = label2
-        if self.label is None:
-            self.label = '...'
-        if self.label2 is None:
-            self.label = '...'
-        if color_type == 'color':
-            color = ['blue', 'red']
-            edgecolor = ['black', 'black']
-        elif color_type == 'bw':
-            color = ['black', 'white']
-            edgecolor = ['black', 'black']
-        group = group[index]
-        list_group = [group_id[i] for i in numpy.nonzero(group_visible)[0]]
-        #list_group = numpy.unique(group)
-        self.data = data[index]
-        if data2 is not None:
-            group2 = numpy.asanyarray(group2)
-            data2 = numpy.asanyarray(data2)
-            index = numpy.isfinite(data2)
-            self.data2 = data2[index]
-        self.axis.cla()
-        if self.axis2 is not None:
-            self.axis2.cla()
-            self.axis.cla()
-            if data2 is None:
-                self.axis2.yaxis.set_visible(False)
-            else:
-                self.axis2.yaxis.set_visible(True)
-        if self.range == None:
-            if data2 is None:
-                for indice in range(group.min(), group.max()+1):
-                    pl_x = self.axis.hist(self.data[group==indice], alpha=0.5)
-            else:
-                pl_x = self.axis.hist(self.data)
-            if data2 is not None:
-                pl_x2 = self.axis.hist(self.data2, alpha=0.5)
-        else:
-            index = (self.range[0] < self.data) * (self.data < self.range[1])
-            if data2 is None:
-                _i = 0
-                for item in list_group:
-                    indice = index * (group == item)
-                    pl_x = numpy.histogram(self.data[indice],
-                                      numpy.arange(self.range[0],
-                                                   self.range[1],
-                                                   self.range[2]))
-                    pl_x = (pl_x[0] * frequency_factor, pl_x[1])
-                    self.axis.bar(pl_x[1][:-1],
-                                  pl_x[0],
-                                  color=self.colors[_i],
-                                  width=self.range[2],
-                                  label=group_label[item],#'Group ' + str(item),
-                                  alpha=0.5)
-                    _i += 1
-            else:
-                pl_x = numpy.histogram(self.data[index],
-                                      numpy.arange(self.range[0],
-                                                   self.range[1],
-                                                   self.range[2]))
-                pl_x = (pl_x[0] * frequency_factor, pl_x[1])
-                
-                if y2:
-                    if self.axis2 is None:
-                        self.axis2 = self.axis.twinx()
-                    axis = self.axis2
-                    self.axis.yaxis.tick_left()
-                    axis.yaxis.tick_right()
-                else:
-                    axis = self.axis
-                bar1 = self.axis.bar(pl_x[1][:-1],
-                                  pl_x[0],
-                                  width=self.range[2],
-                                  label=self.label,
-                                  alpha=0.5,
-                                  color=color[0],
-                                  edgecolor=edgecolor[0])
-                
-                index = ((self.range[0] < self.data2) *
-                        (self.data2 < self.range[1]))
-                self.data2 = self.data2[index]
-                
-                
-                pl_x2 = numpy.histogram(self.data2,
-                                       numpy.arange(self.range[0],
-                                                   self.range[1],
-                                                   self.range[2]))
-                pl_x2 = (pl_x2[0] * frequency_factor2, pl_x2[1])
-                bar2 = axis.bar(pl_x2[1][:-1],
-                                  pl_x2[0],
-                                  width=self.range[2],
-                                  label=self.label2,
-                                  alpha=0.5,
-                                  color=color[1],
-                                  edgecolor=edgecolor[1])
-                __max = max(max(pl_x[0]), max(pl_x2[0]))
-                __max = __max + __max*5/100.
-                if not y2:
-                    self.axis.set_ylim(0, __max)
-                #if label2 is not None:
-        if len(list_group) > 1 or data2 is not None:
-            if y2:
-                leg = plt.legend((bar1[0], bar2[0]),
-                                 (self.label, self.label2),
-                                 'best')
-                self.axis2.set_ylabel(self.label2)
-                self.axis.set_ylabel(self.label)
-            else:
-                leg = self.axis.legend(loc='best')
-            if leg is not None:
-                # If there is a legend... otherwise, make nothing.
-                frame  = leg.get_frame()
-                frame.set_alpha(0.4)
-        if len(pl_x[0]):
-            self.max_hist = max(pl_x[0])
-        else :
-            self.max_hist = self.range[1]
-        self.axis.set_xlabel(self.xlabel)
-        if self.range is not None:
-            self.axis.set_xlim(self.range[0], self.range[1])
-
-    def show_fit(self, prop):
-        self.text_annotation['list'] = list()
-        prop['kde'][1] = (prop['kde'][1] * self.max_hist /
-                          max(prop['kde'][1]) * 0.9)
-        prop['maxima'][1] = (prop['maxima'][1] * self.max_hist /
-                             max(prop['maxima'][1]) * 0.9)
-        self.axis.plot(prop['kde'][0], prop['kde'][1], linewidth = 1.5)
-        for [p_x, p_y, mean, std, count] in zip(prop['maxima'][0],
-                                            prop['maxima'][1],
-                                            prop['mean'],
-                                            prop['std'],
-                                            prop['count']):
-                                            
-            text = "Mean : " + str(round(mean, 4)) + "\n" +\
-                   "Std : " + str(round(std, 4)) + "\n" +\
-                   "Count : " + str(count)
-            self.text_annotation['list'].append(
-                self.axis.annotate("Peak : " + str(round(p_x, 4)) + "\n" + text,
-                                xy=(p_x, p_y), xytext=(p_x, p_y + p_y/20),
-                                textcoords='data',
-                                arrowprops=dict(arrowstyle="->",
-                                                connectionstyle="arc3"),
-                                                bbox=dict(boxstyle="round",
-                                                          fc="0.8",
-                                                          alpha=0.5)
-                                )
-                                )
-        if self.range is not None:
-            self.axis.set_xlim(self.range[0], self.range[1])
-        self.figure.canvas.mpl_connect('button_press_event',
-                                        self.grab_annotation)
-        self.figure.canvas.mpl_connect('button_release_event',
-                                        self.release_annotation)
-        self.figure.canvas.mpl_connect('motion_notify_event',
-                                        self.move_annotation)
-    def grab_annotation(self, event):
-        for item in self.text_annotation['list']:
-            text_pos = item.get_position()
-            bbox = item.get_bbox_patch()
-            if text_pos[0] < event.x < text_pos[0] + bbox.get_width():
-                if text_pos[1] < event.y < text_pos[1] + bbox.get_height():
-                    self.text_annotation['grabbed'] = item
-                    if event.inaxes:
-                        self.text_annotation['clicked'] = [
-                                                   event.xdata - item.xytext[0],
-                                                   event.ydata - item.xytext[1]]
-                    else:
-                        self.text_annotation['clicked'] = [0,0]
-    def release_annotation(self, event):
-        self.text_annotation['grabbed'] = None
-    def move_annotation(self, event):
-        #print "...", self.text_annotation['grabbed']
-        if self.text_annotation['grabbed'] is not None:
-            try:
-                if event.inaxes:
-                    pos_x = event.xdata - self.text_annotation['clicked'][0]
-                    pos_y = event.ydata - self.text_annotation['clicked'][1]
-                    self.text_annotation['grabbed'].xytext = (pos_x , pos_y)
-            except TypeError:
-                pass
-class Scatter(Plot):
-    """
-        Displays a scatter plot of the data provided.
-        The data are PlotData objects.
-        
-        >>> from numpy.random import randn
-        >>> data = randn(1000)
-        >>> data2 = randn(1000)*2 + 1.5
-        
-        >>> plot_data = PlotData()
-        >>> plot_data.set_data('force', data)
-        >>> plot_data.set_data('lr', data2)
-        >>> plot_data.set_range('force', [-5, 5, 0.1])
-        >>> plot_data.set_range('lr', [-5, 10, 0.2])
-        
-        >>> test = Scatter(xlabel='data1', ylabel='data2', title='test of scatter')
-        >>> #print plot_data.get_data('force')
-        >>> test.plot(plot_data, ['force', 'lr'])
-        >>> test.save(FIGURE_FOLDER + 'PlotData_Scatter.png')
-        >>> test.type = "Density"
-        >>> test.refresh()
-        >>> test.save(FIGURE_FOLDER + 'PlotData_Density.png')
-        
-        You can also define some groups and plot the data according to the group
-        they belong to.
-        
-        >>> from numpy.random import rand
-        >>> data = randn(100)
-        >>> data2 = rand(100)
-        >>> data3 = randn(100) * rand(100)
-        >>> merged = list(data)+list(data2)+list(data3)
-        >>> group = [0 for i in range(100)] + \
-                    [1 for i in range(100)] + \
-                    [2 for i in range(100)]
-        
-        >>> data4 = randn(100)
-        >>> data5 = rand(100)
-        >>> data6 = randn(100) * rand(100)
-        >>> merged2 = list(data4)+list(data5)+list(data6)
-        >>> group2 = [0 for i in range(100)] + \
-                    [1 for i in range(100)] + \
-                    [2 for i in range(100)]
-        
-        >>> plot_data = PlotData()
-        
-        >>> plot_data.set_data('force', merged)
-        >>> plot_data.set_group('force', group)
-        >>> plot_data.set_range('force', [-5, 5, 0.1])
-        
-        >>> plot_data.set_data('lr', merged2)
-        >>> plot_data.set_group('lr', group2)
-        >>> plot_data.set_range('lr', [-5, 5, 0.1])
-        
-        >>> test = Scatter(xlabel='data1', ylabel='data2', title='test of scatter')
-        >>> test.plot(plot_data, ['force', 'lr'])
-        >>> test.save(FIGURE_FOLDER + 'PlotData_Scatter_with_group.png')
-    """
-    
-    def __init__(self, xlabel='...', ylabel='...', title=''):
-        Plot.__init__(self)
-        self.xlabel = xlabel
-        self.ylabel = ylabel
-        self.type = 'scatter'
-        self.markers = ['o', # circle
-                        's', # square
-                        '^', # triangle up
-                        '>', # triangle right
-                        'v', # triangle down
-                        '<', # triangle left
-                        'd', # diamond
-                        'p', # pentagram
-                        'h', # hexagon
-                        '8', # octagon
-                        '+', # plus
-                        'x', # cross
-                        ]
-        self.data_x, self.data_y = None, None # Store the variables
-        self.range_x, self.range_y = None, None # Store the ranges
-        self.group_x, self.group_y = None, None # Store the groups
-        
-        # definitions for the axes
-        
-        #                          h-size
-        #       <-----width------> <---->
-        #       +----------------+          ^
-        #       |  hist_x        |          |
-        #       |                |          | h-size
-        #       +----------------+          v
-        #       +----------------+ +----+   ^
-        #       |                | | h  |   |
-        #       |                | | i  |   |
-        #       |   Scatter      | | s  |   |
-        #       |                | | t  |   |
-        #       |                | | -  |   |
-        #       |                | | y  |   |
-        # left  +----------------+ +----+   v
-        #    bottom              <->
-        #                     plot_dist
-        left, width = 0.1, 0.65
-        bottom, height = 0.1, 0.65
-        h_size = 0.2
-        bottom_h = left_h = left + width + 0.02
-
-        rect_scatter = [left, bottom, width, height]
-        rect_histx = [left, bottom_h, width, h_size]
-        rect_histy = [left_h, bottom, h_size, height]
-        
-        self.figure.clf()
-        
-        self.axis_scatter = self.figure.add_axes(rect_scatter)
-        self.axis_histx = self.figure.add_axes(rect_histx)
-        self.axis_histy = self.figure.add_axes(rect_histy)
-        self.clear()
-    def clear(self):
-        """
-            Reinitialize the plots.
-        """
-        
-        self.axis_histx.cla()
-        self.axis_histy.cla()
-        # no labels
-        self.axis_histx.xaxis.set_major_formatter(NULLFMT)
-        self.axis_histy.yaxis.set_major_formatter(NULLFMT)
-    def plot(self, data, data_type):
-        """
-            Plot the data.
-            The data has to be a PlotData object.
-            data_type is a list of two string representing the data to plot.
-        """
-        self.clear()
-        self.data_x = numpy.asarray(data.get_data(data_type[0]))
-        self.data_y = numpy.asarray(data.get_data(data_type[1]))
-        self.range_x = data.get_range(data_type[0])
-        self.range_y = data.get_range(data_type[1])
-        self.group_x = data.get_group(data_type[0])
-        self.group_y = data.get_group(data_type[1])
-        self.group_prop = { 'id' : data.get_group_prop('id'),
-                            'label' : data.get_group_prop('label'),
-                            'display' : data.get_group_prop('display')}
-        if self.type == 'scatter':
-            self.__scatter()
-        elif self.type == 'density':
-            self.__density()
-        else:
-            return
-            
-        x_index = ((self.range_x.min < self.data_x) *
-                   (self.data_x < self.range_x.max))
-        y_index = ((self.range_y.min < self.data_y) *
-                   (self.data_y < self.range_y.max))
-        self.axis_histx.hist(self.data_x[x_index],
-                                 numpy.arange(self.range_x.min,
-                                              self.range_x.max,
-                                              self.range_x.bin_size)
-                                 )
-        self.set_xscale(plot='hist')
-        self.axis_histy.hist(self.data_y[y_index],
-                                 numpy.arange(self.range_y.min,
-                                              self.range_y.max,
-                                              self.range_y.bin_size),
-                                 orientation='horizontal'
-                                 )
-    def refresh(self):
-        """
-            Refresh the graph without changing the data. Used to toogle between
-            scatter and density plot.
-        """
-        
-        if self.type == 'scatter':
-            self.__scatter()
-        elif self.type == 'density':
-            self.__density()
-        else:
-            return
-        
-    def __scatter(self):
-        """
-            Specific code to display the scatter plot.
-        """
-        
-        #list_group = numpy.unique(self.group_x)
-        list_group = [i for i in numpy.nonzero(self.group_prop['display'])[0]]
-        list_group = numpy.asarray(list_group)
-        if len(list_group) > 1:
-            use_group = 1
-            x_g_index = [self.group_x == i for i in list_group]
-            y_g_index = [self.group_y == i for i in list_group]
-        else:
-            use_group = 0
-        self.axis_scatter.cla()
-        if use_group:
-            for i in list_group:
-                try:
-                    index = list(list_group).index(i)
-                    self.axis_scatter.scatter(self.data_x[x_g_index[index]],
-                                          self.data_y[y_g_index[index]],
-                                          label=self.group_prop['label'][i],
-                                          #label='Group ' + str(i),
-                                          c=self.colors[index],
-                                          marker=self.markers[index],
-                                          alpha=0.5)
-                except ValueError, msg:
-                    if msg.args[0] == \
-                             'zero-size array to ufunc.reduce without identity':
-                        pass
-                    else:
-                        raise ValueError, msg
-                else:
-                    leg = self.axis_scatter.legend(loc='best')
-                    frame  = leg.get_frame()
-                    frame.set_alpha(0.4)
-        else:
-            self.axis_scatter.scatter(self.data_x, self.data_y, alpha=0.5)
-        self.axis_scatter.set_xlabel(self.xlabel)
-        self.axis_scatter.set_ylabel(self.ylabel)
-        self.set_xscale(plot='scatter')
-        self.axis_scatter.axis([self.range_x.min, self.range_x.max,
-                                self.range_y.min, self.range_y.max])
-        
-    def __density(self):
-        """
-            Specific code to display the density plot.
-        """
-        
-        self.axis_scatter.cla()
-        ## make the density plot
-        # Beginn...
-        finite = numpy.isfinite(self.data_x) * numpy.isfinite(self.data_y)
-        in_range = ((self.data_x < self.range_x.max) *
-                    (self.data_x > self.range_x.min) *
-                    (self.data_y < self.range_y.max) *
-                    (self.data_y > self.range_y.min))
-        index = finite * in_range
-        
-        vect_x = ((self.data_x - self.range_x.min) /
-             (self.range_x.max - self.range_x.min)) * 128
-            
-        vect_y = ((self.data_y - self.range_y.min) /
-             (self.range_y.max - self.range_y.min)) * 128
-             
-        lin_vect = numpy.asanyarray([vect_x[index], vect_y[index]])
-        kde = stats.kde.gaussian_kde(lin_vect)
-        # Regular grid to evaluate kde upon
-        mesh = numpy.mgrid[0:128, 0: 128]
-        grid_coords = numpy.append(mesh[0].reshape(-1, 1),
-                                    mesh[1].reshape(-1, 1),
-                                    axis=1)
-        arr_z = kde(grid_coords.T)
-        arr_z = arr_z.reshape(128, 128)
-        self.axis_scatter.imshow(arr_z.transpose(1, 0),
-                             origin='lower',
-                             extent=(self.range_x.min,
-                                     self.range_x.max,
-                                     self.range_y.min,
-                                     self.range_y.max),
-                             aspect='auto')
-        self.axis_scatter.set_xlabel(self.xlabel)
-        self.axis_scatter.set_ylabel(self.ylabel)
-        #self.set_xscale()
-    def set_xscale(self, scale=None, plot=None):
-        if scale is not None:
-            self.scale[0] = scale
-        if plot == 'scatter':
-            self.axis_scatter.set_xscale(self.scale[0])
-            self.axis_scatter.axis([self.range_x.min, self.range_x.max,
-                                    self.range_y.min, self.range_y.max])
-        elif plot == 'hist':
-            self.axis_histx.set_xscale(self.scale[0])
-            self.axis_histx.set_xlim(self.range_x.min, self.range_x.max)
-class Tomo(Plot):
-    """
-        Plot the interior of a 3D array.
-        
-        >>> from numpy.random import randn
-        >>> data = randn(64, 64, 100)
-        
-        Consider that the data are recorded on a square of 2µm per 2µm
-        
-        >>> test = Tomo(data, [2000, 2000])
-        >>> test.plot([20, 10, 50]) # Let's plot the position x=20, y=10, z=50
-        >>> test.save(FIGURE_FOLDER + 'Tomography.png')
-    """
-    
-    def __init__(self, tomo_array, scan_size=None):
-        Plot.__init__(self)
-        self.type='tomography'
-        # Defines the axes :
-        #                         plot_dist
-        #                            <->
-        #           <-----width------> <-----width------>
-        #           +----------------+                      ^
-        #           |                |                      |
-        #           |                |                      |
-        #           |   display Y    |                      | Height
-        #           |                |                      |
-        #           |                |                      |
-        #           |                |                      | ^
-        # bottom_2  +----------------+                      v plot_dist
-        #           +----------------+ +----------------+   ^ v
-        #           |                | |                |   |
-        #           |                | |                |   |
-        #           |   display X    | | display Z      |   | Height
-        #           |                | |                |   |
-        #           |                | |                |   |
-        #           |                | |                |   |
-        # bottom    +----------------+ +----------------+   v
-        #                              ^
-        #          left                L left_2
-        
-        width, height = 0.35, 0.35
-        left, bottom = 0.1, 0.1
-        plot_dist = 0.1
-        bottom_2 = bottom + width + plot_dist
-        left_2 = left + height + plot_dist
-
-        rect = {'display_x' : [left, bottom, width, height],
-                'display_y' : [left, bottom_2, width, height],
-                'display_z' : [left_2, bottom, width, height]}
-        self.figure.clf()
-        self.axis = dict()
-        self.cursor = dict()
-        for key, rectangle in zip(rect.keys(), rect.values()):
-            self.axis[key] = self.figure.add_axes(rectangle)
-            self.cursor[key] = Cursor(self.axis[key], useblit=True,
-                                     color='green', alpha=0.3, linewidth=2)
-        
-        ## Define the labels
-        self.unit = ['', '', '']
-        self.scale = {'x' : None,
-                      'y' : None,
-                      'z' : None,
-                      'scan_size' : None}
-        self.pixel_size = [None, None]
-        self.__set_label(tomo_array.shape, scan_size)
-        
-        ##
-        self.tomo_array = tomo_array
-        self.slice = [0, 0, 0] # the current slice [x, y, z]
-        self.colorScaleMax = self.tomo_array.max()
-        self.colorScaleMin = 0
-        
-    def plot(self, position, color_scale_min=None, color_scale_max=None):
-        if color_scale_min is not None:
-            self.colorScaleMin = color_scale_min
-        if color_scale_max is not None:
-            self.colorScaleMax = color_scale_max
-        self.slice = position
-        self.plot_x()
-        self.plot_y()
-        self.plot_z()
-    def plot_x(self):
-        '''
-        Refresh the x slice plot
-        '''
-        self.axis['display_x'].cla()
-        self.axis['display_x'].pcolor(
-                                self.scale['y'], self.scale['z'],
-                                self.tomo_array[self.slice[0],
-                                                :,
-                                                :].transpose(),
-                                vmin = self.colorScaleMin,
-                                vmax = self.colorScaleMax)
-        self.axis['display_x'].set_xlabel('Size' + self.unit[0])
-    def plot_y(self):
-        '''
-        Refresh the y slice plot
-        '''
-        self.axis['display_y'].cla()
-        self.axis['display_y'].pcolor(
-                                self.scale['x'], self.scale['z'],
-                                self.tomo_array[:,
-                                                self.slice[1],
-                                                :].transpose(),
-                                vmin = self.colorScaleMin,
-                                vmax = self.colorScaleMax)
-        self.axis['display_y'].set_xlabel('Size' + self.unit[1])
-    def plot_z(self):
-        '''
-        Refresh the z slice plot
-        '''
-        self.axis['display_z'].cla()
-        self.axis['display_z'].pcolor(
-                                self.scale['x'], self.scale['y'],
-                                self.tomo_array[:,
-                                                :,
-                                                self.slice[2]].transpose(),
-                                vmin = self.colorScaleMin,
-                                vmax = self.colorScaleMax)
-        self.axis['display_z'].set_xlabel('Size ' + self.unit[2])
-        self.axis['display_z'].set_ylabel('Size ' + self.unit[2])
-    def __set_label(self, shape, scan_size=None):
-        _scan_size = list(scan_size)
-        if scan_size is not None:
-            for dim in range(2):
-                if scan_size[dim] < 1000:
-                    self.unit[dim] = '[nm]'
-                elif scan_size[dim] >= 1000:
-                    self.unit[dim] = r'[$\mathregular{\mu}$m]'
-                    _scan_size[dim] = _scan_size[dim] / 1000.
-            self.scale['x'] = numpy.arange(0,
-                                           _scan_size[0] + _scan_size[0] / shape[0],
-                                           _scan_size[0] / shape[0])
-            self.scale['y'] = numpy.arange(0,
-                                           _scan_size[1] + _scan_size[1] / shape[1],
-                                           _scan_size[1] / shape[1])
-            self.scale['z'] = numpy.arange(0, shape[2])
-            self.pixel_size = [_scan_size[0] / shape[0], _scan_size[1] / shape[1]]
-        else:
-            self.scale['x'] = numpy.arange(0, shape[0])
-            self.scale['y'] = numpy.arange(0, shape[1])
-            self.scale['z'] = numpy.arange(0, shape[2])
-            self.pixel_size = [1,1]
-
-class InteractiveLinePlot(Plot):
-    """
-        Plots several lines in as many plots as the number of lines.
-        
-        * Parameters :
-            array_x : array_like
-                The x array that is common for all plots.
-            arrays : list of array_like
-                The y arrays that defines the plots.
-            label : list of str
-                The label that will be display to identify the plots.
-        
-        * Output :
-        
-        >>> import numpy
-        >>> array_x = numpy.arange(0, 6, 0.1)
-        >>> array_1 = array_x * 2
-        >>> array_2 = numpy.sin(array_x)
-        >>> array_3 = numpy.cos(array_x)
-        >>> test = InteractiveLinePlot()
-        >>> test.plot(array_x, [array_1, array_2, array_3],\
-                               ['linear', 'cos', 'sin'])
-    """
-    
-    def __init__(self):
-        Plot.__init__(self)
-        self.figure.clf()
-        
-        self.figure.canvas.mpl_connect('button_press_event',
-                                       self.button_press_event)
-        self.figure.canvas.mpl_connect('motion_notify_event',
-                                       self.mouse_move)
-        self.figure.canvas.mpl_connect('button_release_event',
-                                                    self.button_release_event)
-        self.figure.canvas.mpl_connect('pick_event', self.on_pick)
-        self.array_x = None
-        self.arrays_y = None
-        self.picked = None
-        self.info = None
-        self.plot_list = None
-    def button_press_event(self, event):
-        """
-            Function called when user click on the figure.
-            It hides visible graph we click on or display hidden graph we click
-            on.
-        """
-        
-        if event.inaxes in self.axis:
-            if event.button == 3:
-                
-                # right click
-                modify = self.axis.index(event.inaxes)
-                self.toggle_display(modify)
-            elif event.button == 1:
-                self.info_display(event)
-    def button_release_event(self, event):
-        self.picked = None
-    def toggle_display(self, axis_nbr):
-        """
-            Display or hide the axis.
-        """
-        
-        if self.axis[axis_nbr].get_visible():
-            # We hide this subplot and push all ones below to replace it.
-            # The hidden plot goes to the end of the display.
-            self.axis[axis_nbr].set_visible(False)
-            cur = self.axis[axis_nbr].get_geometry()
-            for item in self.axis:
-                tgeo = item.get_geometry()
-                if tgeo[2] > cur[2]:
-                    item.change_geometry(tgeo[0], tgeo[1], tgeo[2]-1)
-            
-            self.axis[axis_nbr].change_geometry(cur[0], cur[1], 
-                                              len(self.axis))
-        else:
-            self.axis[axis_nbr].set_visible(True)
-    def plot(self, array_x, arrays, label):
-        """
-            Fuction called to display the graph.
-        """
-        self.figure.clf()
-        self.axis = []
-        self.array_x = array_x
-        self.arrays_y = arrays
-        self.arrows = {'begin' : [None for i in range(len(arrays))],
-                       'end' : [None for i in range(len(arrays))]}
-        tot_nbr = len(arrays)
-        self.info = []
-        for nbr in range(1, len(arrays)+1):
-            self.axis.append(self.figure.add_subplot(
-                                int(str(tot_nbr) + str(1) + str(nbr))
-                                ))
-            self.info.append(
-                        self.axis[nbr-1].annotate('Right click on axes to get info',
-                               xy=[1.05, 0.7], xycoords = 'axes fraction',
-                               horizontalalignment = 'left',
-                               verticalalignment = 'center',
-                               fontsize = 10,
-                               #fontweight = 'bold',
-                               bbox=dict(boxstyle="round", fc="0.8", alpha=0.8),
-                               visible = True
-                               )
-                        )
-        self.plot_list = list()
-        for array, axis, label in zip(arrays, self.axis, label):
-            self.plot_list.append(axis.plot(array_x, array))
-            at = AnchoredText(label, loc=9, prop=None, pad=0., borderpad=0.5,
-                              frameon=False)
-            axis.add_artist(at)
-        self.figure.subplots_adjust(left=0.05, right=0.6)
-    def modify_plot(self, array_x, arrays):
-        self.array_x = array_x
-        self.arrays_y = arrays
-        for plots, array_y, axis in zip(self.plot_list, arrays, self.axis):
-            plots[0].set_data(array_x, array_y)
-            axis.set_xlim(min(array_x), max(array_x))
-            axis.set_ylim(min(array_y), max(array_y))
-    def info_display(self, event):
-        axis_nbr = self.axis.index(event.inaxes)
-        index = numpy.nonzero(self.array_x >= event.xdata)[0][0]
-        pos = [self.array_x[index], self.arrays_y[axis_nbr][index]]
-        if self.arrows['begin'][axis_nbr] == None:
-            self.create_arrow(index, 'begin')
-        if self.arrows['end'][axis_nbr] == None:
-            self.create_arrow(index, 'end')
-        else:
-            self.move_arrow(index)
-            self.get_info()
-    def create_arrow(self, index, side):
-        for axis_nbr in range(len(self.axis)):
-            lim = self.axis[axis_nbr].get_ylim()
-            length = (lim[1]-lim[0]) / 10.
-            lim = self.axis[axis_nbr].get_xlim()
-            width =  (lim[1]-lim[0]) / 50.
-            if type(self.arrays_y[axis_nbr][0]) == numpy.ma.core.MaskedArray:
-                pos = [self.array_x[index], self.arrays_y[axis_nbr][0][index]]
-            else:
-                pos = [self.array_x[index], self.arrays_y[axis_nbr][index]]
-            arrows = [FancyArrow(pos[0], pos[1] + length,
-                                    0, -length,
-                                    length_includes_head=True,
-                                    head_length=length, head_width=None,
-                                    width=width, picker=5),
-                        FancyArrow(pos[0], pos[1] - length,
-                                     0, length,
-                                     length_includes_head=True,
-                                     head_length=length, head_width=None,
-                                     width=width, picker=5)]
-            self.arrows[side][axis_nbr] = arrows
-            self.axis[axis_nbr].add_patch(self.arrows[side][axis_nbr][0])
-            self.axis[axis_nbr].add_patch(self.arrows[side][axis_nbr][1])
-    def move_arrow(self, index):
-        if self.picked == None:
-            return
-        for axis_nbr in range(len(self.axis)):
-            if type(self.arrays_y[axis_nbr][0]) == numpy.ma.core.MaskedArray:
-                pos = [self.array_x[index], self.arrays_y[axis_nbr][0][index]]
-            else:
-                pos = [self.array_x[index], self.arrays_y[axis_nbr][index]]
-            init_pos = self.arrows[self.picked][axis_nbr][0].get_xy()
-            diff = [pos[0] - init_pos[0][0], pos[1] - init_pos[0][1]]
-            init_pos += diff
-            init_pos = self.arrows[self.picked][axis_nbr][1].get_xy()
-            init_pos += diff
-    def mouse_move(self, event):
-        if not event.inaxes:
-            return
-        if event.button == 1:
-            self.info_display(event)
-    def on_pick(self, event):
-        nbr_graph = len(self.axis)
-        for gnb in range(nbr_graph):
-            res = (self.arrows['begin'][gnb][0] == event.artist) + (self.arrows['begin'][gnb][1] == event.artist)
-            if res:
-                self.picked = 'begin'
-            res = False
-            try:
-                res = (self.arrows['end'][gnb][0] == event.artist) + (self.arrows['end'][gnb][1] == event.artist)
-            except:
-                pass
-            if res:
-                self.picked = 'end'
-    def get_info(self):
-        xdata = [self.arrows['begin'][0][0].get_xy()[0][0],
-                 self.arrows['end'][0][0].get_xy()[0][0]]
-        indexes = [numpy.nonzero(self.array_x >= xdata[0])[0][0],
-                   numpy.nonzero(self.array_x >= xdata[1])[0][0]]
-        for axis in range(len(self.axis)):
-            text = self.create_info_text(axis, indexes)
-            self.info[axis].set_text(text)
-    def create_info_text(self, axis_nbr, indexes):
-        if type(self.arrays_y[axis_nbr][0]) == numpy.ma.core.MaskedArray:
-            pos = [[self.array_x[indexes[0]], self.arrays_y[axis_nbr][0][indexes[0]]],
-                   [self.array_x[indexes[1]], self.arrays_y[axis_nbr][0][indexes[1]]]]
-        else:
-            pos = [[self.array_x[indexes[0]], self.arrays_y[axis_nbr][indexes[0]]],
-                   [self.array_x[indexes[1]], self.arrays_y[axis_nbr][indexes[1]]]]
-
-        text = "Start Point : %.2f, %.2f\n"%(pos[0][0], pos[0][1]) +\
-               "End Point : %.2f, %.2f\n"%(pos[1][0], pos[1][1]) +\
-               "Horizontal distance : %.2f\n"%(pos[1][0]-pos[0][0]) +\
-               "Vertical distance : %.2f"%(pos[1][1]-pos[0][1])
-        return text
-
-class PlotData(object):
-    """
-        Stores the data and the propeties specific to this data set.
-    """
-    def __init__(self):
-        self.group_prop = {'id' : [],
-                           'label' : [],
-                           'display' : [],
-                           'set' : False}
-        self.group_dict = dict()
-        self.data_dict = dict()
-        self.range_dict = dict()
-        self.fileid_dict = dict()
-        self.coord_dict = dict()
-        for item in PLOT_DATA:
-            prop = PLOT_DATA[item]
-            self.group_dict[item] = prop[0]
-            self.data_dict[item] = prop[1]
-            self.range_dict[item] = prop[2]
-            self.fileid_dict[item] = prop[3]
-            self.coord_dict[item] = prop[4]
-        self.label = None
-        self.nbr_curves = None
-        self.type = 'force'
-
-    def __getattr__(self, att):# pylint disable-msg=R0911
-        if att is 'data':
-            if self.type in PLOT_DATA_TYPE['simple']:
-                return self.data_dict[self.type]
-            elif self.type in PLOT_DATA_TYPE['dist']:
-                return self.data_dict[self.type][
-                                                self.range_dict[self.type].dist]
-        elif att is 'range':
-            return self.range_dict[self.type].range
-        elif att is 'group':
-            if self.type in PLOT_DATA_TYPE['simple']:
-#                print "In PlotData.group..."
-#                print self.group_dict[self.type]
-                return self.group_dict[self.type]
-            elif self.type in PLOT_DATA_TYPE['dist']:
-                return self.group_dict[self.type][
-                                                self.range_dict[self.type].dist]
-    def get_group_prop(self, gtype):
-        """
-            Get the group property.
-                Parameters:
-                    gtype : str
-                        'id'
-                        'label'
-                        'display'
-        """
-        if self.group_prop['set']:
-            return self.group_prop[gtype]
-        else:
-            if gtype == 'id':
-                return numpy.unique(self.group)
-            elif gtype == 'label':
-                return ["Groupe %i"%numpy.unique(self.group)[0]]
-            elif gtype == 'display':
-                return [True]
-            else:
-                raise TypeError, "%s is not recognized attribute."
-    def set_group_prop(self, gtype, data):
-        """
-            Set the group property.
-                Parameter:
-                    gtype : str
-                    data : list
-        """
-        if gtype == 'all':
-            if data is not None:
-                self.group_prop = data
-                self.group_prop['set'] = True
-            else:
-                self.group_prop = {'id' : [],
-                                   'label' : [],
-                                   'display' : [],
-                                   'set' : False}
-        else:
-            self.group_prop[gtype] = data
-    def set_range(self, data_type, d_range):
-        """
-            Set the range of the data to plot.
-        """
-        if data_type in PLOT_DATA.keys():
-            self.range_dict[data_type].set_range(d_range)
-        else:
-            raise TypeError, "Data type %s not known." % data_type
-    def set_dist(self, dist):
-        """
-            Set the distance at which we want to get the relative values.
-        """
-        for data_type in PLOT_DATA_TYPE['dist']:
-            self.range_dict[data_type].dist = dist
-    def set_data(self, data_type, data):
-        """
-            Store the data to plot.
-        """
-        if type(data) is list:
-            if data_type in PLOT_DATA_TYPE['dist']:
-                data = [numpy.array(i) for i in data]
-            else:
-                data = numpy.asanyarray(data)
-        if data_type in PLOT_DATA.keys():
-            self.data_dict[data_type] = data
-            if self.group_dict[data_type] is None:
-                # Group is not related to current data, then reinitialize it.
-                if data_type in PLOT_DATA_TYPE['dist']:
-                    this_shape = [len(i) for i in data]
-                    group = []
-                    for item in this_shape:
-                        group.append([0 for this in range(item)])
-                    self.set_group(data_type, group)
-                else:
-                    self.set_group(data_type, [0 for i in range(len(data))])
-        else:
-            raise TypeError, "Data type %s not known." % data_type
-    def set_group(self, data_type, group):
-        """
-            Store the group of the data to plot.
-        """
-        if data_type in PLOT_DATA.keys():
-            self.group_dict[data_type] = group
-        else:
-            raise TypeError, "Data type %s not known." % data_type
-    def set_fid(self, data_type, fid):
-        """
-            Store the file index of the data to plot.
-        """
-        if data_type in PLOT_DATA.keys():
-            self.fileid_dict[data_type] = fid
-        else:
-            raise TypeError, "Data type %s not known." % data_type
-    def set_coord(self, data_type, coord):
-        """
-            Store the coordinate of the data to plot.
-        """
-        if data_type in PLOT_DATA.keys():
-            self.coord_dict[data_type] = coord
-        else:
-            raise TypeError, "Data type %s not known." % data_type
-        
-    def set_type(self, data_type):
-        """
-            Set the data type you want to plot
-        """
-        
-        if data_type in PLOT_DATA.keys():
-            self.type = data_type
-        else:
-            raise TypeError
-    def get_data(self, data_type, group=None):
-        """
-            Get the data that is stored.
-        """
-        if group == None:
-            group = self.group_prop['id']
-        totake = numpy.asarray([sum([i==j for j in group]) for i in self.group_dict[data_type]], dtype=bool)
-        
-        if data_type in PLOT_DATA_TYPE['simple']:
-            return self.data_dict[data_type][totake]
-        elif data_type in PLOT_DATA_TYPE['dist']:
-            try:
-                return self.data_dict[data_type][
-                                                self.range_dict[data_type].dist][totake]
-            except TypeError, message:
-                if str(message) == "'NoneType' object is unsubscriptable":
-                    return None
-    def get_range(self, data_type):
-        """
-            Get the range of the data.
-        """
-        return self.range_dict[data_type]
-    def get_group(self, data_type):
-        """
-            Get the group of the data.
-        """
-        # change the type and store the old one
-        old_data_type, self.type = self.type, data_type
-        
-        group = self.group
-        
-        self.type = old_data_type
-        
-        return group
-    def get_fid(self, data_type):
-        """
-            Get the file index of the data.
-        """
-        return self.fileid_dict[data_type]
-    def get_coord(self, data_type):
-        """
-            Get the file index of the data.
-        """
-        return self.coord_dict[data_type]
-        
-class PlotRange(object): # pylint: disable-msg=R0903
-    """
-        Stores the range of the display
-    """
-    def __init__(self):
-        self.min = None
-        self.max = None
-        self.bin_size = None
-        self.dist = None
-    def __setattr__(self, att, value):
-        if att is 'min':
-            if self.max is not None:
-                self.__dict__[att] = min(value, self.max)
-            else:
-                self.__dict__[att] = value
-        elif att is 'max':
-            if self.min is not None:
-                self.__dict__[att] = max(value, self.min)
-            else:
-                self.__dict__[att] = value
-        else:
-            self.__dict__[att] = value
-    def __getattr__(self, att):
-        if att is 'range':
-            return [self.min, self.max, self.bin_size]
-    def set_range(self, d_range):
-        """
-            set the range of the data.
-        """
-        if d_range[0] is not None:
-            self.min = d_range[0]
-        if d_range[1] is not None:
-            self.max = d_range[1]
-        if d_range[2] is not None:
-            self.bin_size = d_range[2]
-        try:
-            if d_range[3] is not None:
-                self.dist = d_range[3]
-        except IndexError:
-            pass
-        
-class PlotProperties(object): # pylint: disable-msg=R0903
-    """
-        Stores the plot properties
-    """
-    def __init__(self):
-        self.main_exp_label = None
-        self.comp_exp_label = None
-        self.color_type = 'bw'
-        self.plot_compare = False
-        self.min = None
-        self.max = None
-        self.bin_size = None
-        self.absolute = True
-        self.__type = {'Stiffness': 'jet',
-                       'Piezo': 'copper',
-                       'Topography': 'copper',
-                       'Event': 'gray',
-                       'Event force': 'gray',
-                       'Event distance': 'gray',
-                       'Event length': 'gray'}
-
-    def __setattr__(self, att, value):
-        if att is 'color_type':
-            if value in ['bw', 'black and white', 'BW']:
-                self.__dict__[att] = 'bw'
-            elif value in ['color', 'Color']:
-                self.__dict__[att] = 'color'
-        else:
-            self.__dict__[att] = value
-
-    def get_cmap(self, ptype):
-        if self.color_type == 'bw':
-            return 'gray'
-        else:
-            return self.__type[ptype]
-
-
-### Some useful functions
-def compute_array_stat(data):
-    """
-        Compute the statistic of the data for each time point.
-        For example :
-        
-        >>> import numpy
-        
-        # Let's generate an array of data filled with 1 and 2
-        
-        >>> data = numpy.ones((15,10))
-        >>> data[10:] = 2
-        
-        >>> indice = numpy.zeros(15)
-        >>> indice[10:] = 1
-        >>> result = compute_array_stat(data)
-        
-        # here is the result
-        
-        >>> result['mean']
-        array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  2.,  2.,  2.,
-                2.,  2.])
-        >>> result['std']
-        array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
-                0.,  0.])
-        >>> result['count']
-        array([ 10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.,
-                10.,  10.,  10.,  10.])
-    """
-    mean = data.mean(1)
-    std = data.std(1)
-    if type(data) == numpy.ma.core.MaskedArray:
-        count = data.count(1)
-    else:
-        count = numpy.ones(data.shape[0]) * data.shape[1]
-    sem = std / numpy.sqrt(count)
-    
-    result = {'mean' : mean,
-              'std' : std,
-              'count' : count,
-              'sem' : sem}
-    return result
-    
-def compute_indice_stat(data, indice):
-    """
-        Compute the statistic of the data, according to the indice.
-        For example :
-        
-        >>> import numpy
-        
-        # Let's generate an array of data filled with 1 and 2
-        
-        >>> data = numpy.ones((150))
-        >>> data[100:] = 2
-        
-        >>> indice = numpy.zeros(150)
-        >>> indice[100:] = 1
-        >>> result = compute_indice_stat(data, indice)
-        
-        # here is the result
-        
-        >>> result['indice']
-        array([ 0.,  1.])
-        >>> result['mean']
-        array([ 1.,  2.])
-        >>> result['std']
-        array([ 0.,  0.])
-        >>> result['count']
-        array([ 100.,   50.])
-        
-        Let's make the same, but with on dimension vector.
-        
-        >>> data.shape = 15 * 10
-        >>> indice = [0 for i in range(10 * 10)] + [1 for i in range(5 * 10)]
-        
-        >>> result = compute_indice_stat(data, indice)
-        
-        # here is the result
-        
-        >>> result['indice']
-        array([0, 1])
-        >>> result['mean']
-        array([ 1.,  2.])
-        >>> result['std']
-        array([ 0.,  0.])
-        >>> result['count']
-        array([ 100.,   50.])
-        
-    """
-    indice_list = numpy.unique(indice)
-    mean = list()
-    std = list()
-    count = list()
-    sem = list()
-    indice_finite = numpy.isfinite(data)
-    for index in indice_list:
-        # doi_indice points to data with the good indice and which are finite
-        doi_indice = indice_finite * (indice == index)
-        doi = data[doi_indice] # doi means data of interrest
-        if len(doi):
-            mean.append(doi.mean())
-            std.append(doi.std())
-        else:
-            mean.append(numpy.nan)
-            std.append(numpy.nan)
-        if type(doi) == numpy.ma.core.MaskedArray:
-            count.append(doi.count())
-        elif len(doi.shape) == 2:
-            count.append(doi.shape[0] * doi.shape[1])
-        elif len(doi.shape) == 1:
-            count.append(doi.shape[0])
-    # change list to array_
-    mean, std, count = numpy.array(mean), numpy.array(std), numpy.array(count, dtype=float)
-    # Exclude values that have no count.
-    indice = count == 0.
-    mean[indice], std[indice], count[indice] = numpy.nan, numpy.nan, numpy.nan
-    sem = std / numpy.sqrt(count)
-    result = {'mean' : mean,
-              'std' : std,
-              'count' : count,
-              'sem' : sem,
-              'indice' : indice_list}
-    return result
-
-
-# PLOT_DATA stores the properties of standard properties.
-# [group_dict, data_dict, range_dict, fileid_dict, coord_dict]
-PLOT_DATA = {'force' : [None, None, PlotRange(), None, None],
-             'force_base' : [None, None, PlotRange(), None, None],
-             'lr' : [None, None, PlotRange(), None, None],
-             'dist' : [None, None, PlotRange(),None, None],
-             'stiff': [None, None, PlotRange(), None, None],
-             'stiff_ev': [None, None, PlotRange(), None, None],
-             'stiff_notev': [None, None, PlotRange(), None, None],
-             'relstiff' : [None, None, PlotRange(), None, None],
-             'relstiffctl' : [None, None, PlotRange(), None, None],
-             'young_modulus': [None, None, PlotRange(), None, None],
-             'length' : [None, None, PlotRange(), None, None],
-             'plength' : [None, None, PlotRange(), None, None]}
-PLOT_DATA_TYPE = {'simple' : ['force', 'force_base', 'lr',  'dist', 'stiff',
-                              'stiff_ev', 'stiff_notev', 'length', 'plength'],
-                  'dist' : ['relstiff', 'relstiffctl']}
-
-if __name__ == '__main__':
-    import doctest
-    FIGURE_FOLDER = 'Tests/Graphs/'
-    
-    doctest.testmod()
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/plot_gtk.py b/debian/openfovea/usr/share/pyshared/openfovea/plot_gtk.py
deleted file mode 100644
index a2292eb..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/plot_gtk.py
+++ /dev/null
@@ -1,702 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-'''
-This module contains the necessary tools to plot graphics in gtk
-'''
-# TODO: Separate the generic plot from the GTK-only
-
-import pygtk
-#import gnome.ui
-import gtk
-# for script installation
-from pkg_resources import resource_filename
-#import pdb
-
-import numpy
-from scipy import stats
-##############
-## Graphic library ##
-##############
-try:
-    matplotlib.__version__
-except NameError:
-    import matplotlib
-    matplotlib.use('Agg')
-    
-from matplotlib.figure import Figure
-from matplotlib.backends.backend_gtkagg import \
-                                FigureCanvasGTKAgg as FigureCanvas
-from matplotlib.backends.backend_gtkagg import \
-                                NavigationToolbar2GTKAgg as NavigationToolbar
-from matplotlib import cm # colormap
-from matplotlib.patches import Circle, Rectangle
-from matplotlib.image import imread
-from matplotlib.widgets import Cursor
-from matplotlib.ticker import NullFormatter
-nullfmt = NullFormatter() 
-
-# Internal classes
-import classes
-import plot_generic
-#from fovea_toolbox.post_proc import gauss_fit, compute_gauss
-
-try:
-    no_data_filename = resource_filename('openfovea','Icon/NoData.png')
-except NotImplementedError:
-    no_data_filename = 'openfovea/Icon/NoData.png'
-
-class plot(object):
-    """
-        This is the generic plot class that will be inherited from the other.
-        It has no plot capabilities, but have the standard attribute.
-    """
-    def __init__(self, window, widget, plot_generic):
-        self.window = window
-        self.widget = widget
-        self.window.set_property('visible', True)
-        self.window.connect('destroy', self.on_win_plot_destroy)
-        self.plot_generic = plot_generic
-        self.axis = plot_generic.axis
-        self.figure = plot_generic.figure
-        self.canvas = FigureCanvas(self.figure) # a gtk.DrawingArea 
-        self.canvas.show() 
-        self.graphview = self.widget['plot_area']
-        self.graphview.pack_start(self.canvas, True, True)
-        # below is optional if you want the navigation toolbar
-        if 'box_nav_tool' in self.widget.keys():
-            self.navToolbar =  FoveaNavToolbar(self.canvas, self.window)
-            self.navToolbar.plot_gen = self.plot_generic
-            self.navToolbar.lastDir = '/var/tmp/'
-            self.widget['box_nav_tool'].pack_start(self.navToolbar)
-            self.navToolbar.show()
-            #self.navToolbar.connect('button_press_event', self.press)
-        self.destroyed = 0
-    def show(self):
-        if not self.window.get_property('visible'):
-            raise StandardError
-        self.figure.subplots_adjust(left=0.2, bottom=0.12)
-        self.canvas.draw_idle()
-    def on_win_plot_destroy(self, *signal):
-        self.destroyed = 1
-        self.window.destroy()
-    def hold(self, value):
-        """
-            Change the hold of the figure.
-        """
-        self.plot_generic.hold(value)
-    def set_size(self, size, size2=None):
-        """
-            Change the size of the figure.
-        """
-        if size2 == None:
-            self.plot_generic.set_size(size[0], size[1])
-        else:
-            self.plot_generic.set_size(size, size2)
-    def set_xscale(self, scale):
-        self.plot_generic.set_xscale(scale)
-        self.show()
-    def get_type(self):
-        return self.plot_generic.get_type()
-class plotCurves(plot):
-    def __init__(self, window, widget, xlabel='Scanner Extention [nm]',
-                       ylabel='Cantilever Deflection [nm]',
-                       title='Force-Distance curve',
-                       win_title='Force Curve',
-                       linewidth=1.5):
-        _plot_generic = plot_generic.Curve(xlabel, ylabel, title, linewidth)
-        plot.__init__(self, window, widget, _plot_generic)
-        self.window.set_title(win_title)
-        
-    def displayPlot(self, X, Y, linestyle='b-', alpha=1):
-        """
-            Display the plot.
-        """
-        if self.navToolbar.auto:
-            self.plot_generic.lim = None
-        self.plot_generic.plot(X, Y, linestyle=linestyle, alpha=alpha)
-        self.show()
-        
-class plotGride(plot):
-    '''
-    Plots the given matrix corresponding to the type.
-    
-    Type can be :
-        basic = 2D matrix
-        
-        In the following cases, plot is a forceVolume object
-        stiffness = plot the stiffness of the object
-        piezzoHeight = plot the piezzo height of the object
-        zeroForceImage = plot the zero force Image of the object
-    '''
-    def __init__(self, window, widget, title = 'Stiffness',
-                                                      win_title = 'Gride Plot'):
-    
-        _plot_generic = plot_generic.Array(title)
-        
-        self.scaleMax = None
-        self.array = {'scan_size' : None,
-                      'data' : None}
-        
-        plot.__init__(self, window, widget, _plot_generic)
-        # Set the properties of the GUI
-        window.set_title(win_title)
-        self.widget['scrollbar_min'].set_property('visible', True)
-        self.widget['scrollbar_max'].set_property('visible', True)
-        self.widget['scrollbar_min'].connect_object("change-value",
-                                                    self.change_scale_min,
-                                                    None)
-        self.widget['scrollbar_max'].connect_object("change-value",
-                                                    self.change_scale_max,
-                                                    None)
-        
-        self.widget['scrollbar_depth'].connect_object("change-value",
-                                                    self.change_depth,
-                                                    None)
-                                                    
-        self.widget['button_modify_plot'].set_label('Color scale')
-        self.widget['button_modify_plot'].connect_object(
-                                            'clicked',
-                                            self.color_scale,
-                                            self.widget['button_modify_plot'])
-        self.widget['button_modify_plot'].set_property('visible', True)
-        self.figure.canvas.mpl_connect('button_press_event',
-                                         self.on_gride_click)
-        self.figure.canvas.mpl_connect('button_release_event', self.on_button_release)
-        self.figure.canvas.mpl_connect('motion_notify_event', self.move_mouse)
-    def __getattr__(self, att):
-        if att == 'path_refresh':
-            return self.plot_generic.path_refresh
-        elif att == 'path':
-            return self.plot_generic.path
-    def plot(self, dispArray, scanSize = None, nanVal= 80e9, cmap = 'gray'):
-        self.cmap = cmap
-        if self.scaleMax == None:
-            # The scale hasn't yet been initialized. Then do it.
-            try:
-                self.scaleMax = numpy.nanmax(dispArray)
-            except TypeError:
-                # In windows, numpy.nanmax seems to not work in this case...
-                self.scaleMax = numpy.max(
-                            dispArray[numpy.array((numpy.isnan(dispArray)-1),
-                            dtype=bool)])
-            if type(self.scaleMax) == numpy.ma.core.MaskedArray:
-                self.scaleMax = 0
-            self.widget['scrollbar_min'].set_adjustment(
-                                gtk.Adjustment(0.0,  0.00,
-                                               self.scaleMax,
-                                               self.scaleMax / 100,
-                                               self.scaleMax / 25,
-                                               0))
-            self.widget['scrollbar_max'].set_adjustment(
-                                gtk.Adjustment(self.scaleMax, 0.00,
-                                               self.scaleMax,
-                                               self.scaleMax / 100,
-                                               self.scaleMax / 25,
-                                               0))
-        self.array['data'] = dispArray
-        if scanSize is not None:
-            self.array['scan_size'] = scanSize
-        if self.array['data'].ndim == 3:
-            self.widget['scrollbar_depth'].set_property('visible', True)
-            self.widget['scrollbar_depth'].set_adjustment(
-                                gtk.Adjustment(0.0, 0.00,
-                                               self.array['data'].shape[2],
-                                               1, 5, 1.0))
-            self.depth = 0
-        self.__plot()
-    def __plot(self):
-        if self.array['data'].ndim == 3:
-            if self.depth >= self.array['data'].shape[2]:
-                self.depth = self.array['data'].shape[2] - 1
-            elif self.depth < 0:
-                self.depth = 0
-            disp_array = self.array['data'][:,:,self.depth]
-        else:
-            disp_array = self.array['data']
-        self.plot_generic.cmap = self.cmap
-        self.plot_generic.plot(disp_array, scan_size=self.array['scan_size'])
-        self.show()
-    def get_path(self):
-        return self.plot_generic.get_path()
-    def change_depth(self, widget, jump, value):
-        self.depth = value
-        self.__plot()
-    def change_scale_min(self, widget, jump, value):
-        self.plot_generic.vmin = value
-        self.show()
-    def change_scale_max(self, widget, jump, value):
-        self.plot_generic.vmax = value
-        self.show()
-    def color_scale(self, widget):
-        self.plot_generic.colorbar = not(self.plot_generic.colorbar)
-        self.__plot()
-        self.show()
-    def mark_pos(self, pos_x, pos_y):
-        self.plot_generic.marker = (pos_x, pos_y)
-        self.show()
-    def show_trace(self, trace):
-        self.plot_generic.show_trace(trace)
-        self.show()
-    def on_gride_click(self, event):
-        self.plot_generic.on_gride_click(event)
-        self.show()
-    def on_button_release(self, event):
-        self.plot_generic.on_button_release(event)
-        self.show()
-    def move_mouse(self, event):
-        self.plot_generic.move_mouse(event)
-        self.show()
-class errorBar(plot):
-    def __init__(self, window, widget, xlabel='Depth',
-                        ylabel='Stiffness',
-                        title='mean stiffness',
-                        win_title='Mean Stiffness'):
-        _plot_generic = plot_generic.ErrorBar(xlabel, ylabel, title)
-        plot.__init__(self, window, widget, _plot_generic)
-        # Add button to toggle the display of the number of data.
-        self.widget['button_modify_plot'].set_label('Hide nbr data')
-        self.widget['button_modify_plot'].connect_object(
-                                            'clicked',
-                                            self.toogle_plot,
-                                            self.widget['button_modify_plot'])
-        self.widget['button_modify_plot'].set_property('visible', True)
-        self.init_data = {'data' : None, 
-                          'group' : None, 
-                          'group_info' : None,
-                          'linestyle' : 'b-'}
-       # self.plot_gen = plot_generic.ErrorBar(xlabel, ylabel, title)
-    def average_stiffness(self, data, group=None, group_info=None, linestyle='b-'):
-        self.init_data['data'] = data
-        self.init_data['group'] = group
-        self.init_data['group_info'] = group_info
-        self.init_data['linestyle'] = linestyle
-        self.__refresh_average_stiffness()
-    def __refresh_average_stiffness(self):
-        # If the button label is set to hide, we have to show it, and inversly.
-        if self.widget['button_modify_plot'].get_label() == 'Hide nbr data':
-            show_count = True
-        elif self.widget['button_modify_plot'].get_label() == 'Show nbr data':
-            show_count = False
-        self.plot_generic.average_stiffness(self.init_data['data'],
-                                           self.init_data['group'],
-                                           self.init_data['group_info'],
-                                           self.init_data['linestyle'],
-                                           show_count=show_count)
-        self.show()
-    def plot(self, data_x, data_y, y_err, linestyle='b-'):
-        """
-            Data is organized like this :
-        """
-        
-        self.plot_generic.plot(data_x, data_y, y_err, linestyle)
-        self.show()
-    def toogle_plot(self, widget):
-        """
-            Toogle between density and scatter plot
-        """
-        if widget.get_label() == 'Hide nbr data':
-            widget.set_label('Show nbr data')
-        elif widget.get_label() == 'Show nbr data':
-            widget.set_label('Hide nbr data')
-        self.__refresh_average_stiffness()
-class TimeLapse(plotCurves):
-    def __init__(self, window, widget, xlabel='Time',
-                        ylabel='Stiffness',
-                        title='Relative Stiffness',
-                        win_title='Relative Stiffness'):
-        _plot_generic = plot_generic.TimeLapse(xlabel, ylabel, title)
-        plot.__init__(self, window, widget, _plot_generic)
-        self.window.set_title(win_title)
-    def displayPlot(self, data, data_ctl=None, baseline=0):
-        """
-            Displays the plot.
-            
-            See plot_generic.TimeLapse documentation for details
-        """
-        
-        self.plot_generic.plot(data, data_ctl, baseline)
-        self.show()
-
-class plotMosaic(plotGride):
-    '''
-    Plots a mosaic of arrays. The input has to be a list of arrays.
-    When you create an instance of plotMosaic, you can plot a list of arrays
-    in a single window with subplots.
-    
-    For example, if you have several arrays like array_1, array_2, array_3 put
-    them in a single list :
-    
-    >>> list_of_array = (array_1, array_2, array_3)
-    >>> new_mosaic = plotMosaic()
-    >>> new_mosaic.plot(list_of_array)
-    
-    This will open a new window with your array plotted.
-    '''
-    def __init__(self, window, widget, title = 'Mosaic plot'):
-        '''
-        Create a new instance of the class plotMosaic.
-        window = builder object of the window where you want to plot your data
-        widget = builder object of widget that are used for connection.
-        title = string that will be used as the name of the window
-        '''
-        _plot_generic = plot_generic.Mosaic()
-        plot.__init__(self, window, widget, _plot_generic)
-        self.window.set_title(title)
-    def plot(self, list_array, title = 'Mosaic plot', list_name=None,
-                                                    cmap = 'gray',
-                                                    list_mask=None):
-        '''
-        Plot your arrays.
-        
-        list_array = list of the array to be plotted. They do not need to have
-                     the same shape or size.
-                     
-        title = string that will be displayed as the general title of the grid.
-        
-        list_title = list of string. Each string will be used as a title for
-                     each grides. This can take some place and can be places
-                     over the above gride. So be carefull for the esthetic of
-                     your plot.
-        '''
-        if cmap in ('gray', 'grey', 'height'):
-            cmap = cm.gray
-        elif cmap in ('copper', 'afm image'):
-            cmap = cm.copper
-        elif cmap in ('jet', 'stiffness'):
-            cmap = cm.jet
-        self.plot_generic.plot(list_array, title, list_name, cmap, list_mask)
-        self.plot_generic.figure.canvas.mpl_connect('axes_enter_event',
-                                                    self.enter_array)
-        self.plot_generic.figure.canvas.mpl_connect('axes_leave_event',
-                                                    self.leave_array)
-        self.plot_generic.figure.canvas.mpl_connect('motion_notify_event',
-                                                    self.enter_array)
-#        self.plot_generic.figure.canvas.mpl_connect('pick_event', self.on_pick)
-    def enter_array(self, event):
-        self.plot_generic.enter_array(event)
-        self.show()
-    def leave_array(self, event):
-        self.plot_generic.leave_array(event)
-        self.show()
-    def index(self, event):
-        return self.plot_generic.index(event)
-#    def on_pick(self, event):
-#        self.plot_generic.on_pick(event)
-#        self.show()
-#        print "On plot_gtk"
-        
-class plotHist(plot):
-    '''
-    Plot the histogram of the list of values.
-    '''
-    def __init__(self, window, widget, xlabel = '', title='Histogram', y_rel=False):
-        _plot_generic = plot_generic.Histogram(xlabel, title, y_rel=y_rel)
-        plot.__init__(self, window, widget, _plot_generic)
-        self.window.set_title(title)
-    def hist(self, data, data2 = None, label = None, label2 = None,
-                            hist_range = None, color_type = 'color', y2=False, ):
-        self.plot_generic.plot(data, data2, label, label2,
-                                                    hist_range, color_type, y2)
-        self.show()
-    def gauss(self, prop):
-        self.plot_generic.show_fit(prop)
-        self.show()
-        self.plot_generic.figure.canvas.mpl_connect('motion_notify_event',
-                                                    self.move_annotation)
-    def move_annotation(self, event):
-        self.plot_generic.move_annotation(event)
-        self.show()
-    def set_y_rel(self, value):
-        if type(value) == bool:
-            self.plot_generic.relative = value
-        
-class plotScatter(plot):
-    """
-        Display the scatter plot of the choosen data.
-    """
-    
-    def __init__(self, window, widget, title='Scatter Plot',
-                                                        xlabel='', ylabel=''):
-        _plot_generic = plot_generic.Scatter(xlabel, ylabel, title)
-        plot.__init__(self, window, widget, _plot_generic)
-        self.window.set_title(title)
-        
-        self.widget['button_modify_plot'].set_label('Density plot')
-        self.widget['button_modify_plot'].connect_object(
-                                            'clicked',
-                                            self.toogle_plot,
-                                            self.widget['button_modify_plot'])
-        self.widget['button_modify_plot'].set_property('visible', True)
-    def display(self, data, data_type):
-        """
-            Display it.
-            Data has to be a PlotData object.
-        """
-        self.plot_generic.plot(data, data_type)
-        self.show()
-    def toogle_plot(self, widget):
-        """
-            Toogle between density and scatter plot
-        """
-        if widget.get_label() == 'Density plot':
-            widget.set_label('Scatter plot')
-            self.plot_generic.type = 'density'
-            self.plot_generic.refresh()
-            self.show()
-        elif widget.get_label() == 'Scatter plot':
-            widget.set_label('Density plot')
-            self.plot_generic.type = 'scatter'
-            self.plot_generic.refresh()
-            self.show()
-        self.show()
-class plotTomo(plot):
-    '''
-    Plot the stiffness tomography slices.
-    '''
-    def __init__(self, window, widget, tomo_array, scan_size=None,
-                                                            title='Tomography'):
-        _plot_generic = plot_generic.Tomo(tomo_array, scan_size)
-        plot.__init__(self, window, widget, _plot_generic)
-        self.window = window
-        self.widget = widget
-        self.slice = [0, 0, 0]
-        self.window.set_property('visible', True)
-        self.window.connect('destroy', self.on_win_plot_destroy)
-        self.move_cursor = 0
-        self.cur_size = 4
-        self.destroyed = 0
-        self.canvas.mpl_connect('motion_notify_event', self.onmouse_motion)
-        self.canvas.mpl_connect('button_press_event', self.on_gride_click)
-        
-        self.widget['adjust_x'].connect_object("value-changed",
-                                                self.on_adjust_x_value_changed,
-                                                self.widget['adjust_x'])
-        self.widget['adjust_y'].connect_object("value-changed",
-                                                self.on_adjust_y_value_changed,
-                                                self.widget['adjust_y'])
-        self.widget['adjust_z'].connect_object("value-changed",
-                                                self.on_spin_z_change_value,
-                                                self.widget['adjust_z'])
-        self.widget['adjust_x'].upper = tomo_array.shape[0]-1
-        self.widget['adjust_y'].upper = tomo_array.shape[1]-1
-        self.widget['adjust_z'].upper = tomo_array.shape[2]-1
-        
-        self.widget['scrollbar_min'].set_property('visible', True)
-        self.widget['scrollbar_max'].set_property('visible', True)
-        self.colorScaleMax = tomo_array.max()
-        self.colorScaleMin = 0
-        self.widget['scrollbar_min'].set_adjustment(
-                                gtk.Adjustment(0.0,  0.00,
-                                               self.colorScaleMax,
-                                               self.colorScaleMax / 100,
-                                               self.colorScaleMax / 25,
-                                               0))
-        self.widget['scrollbar_max'].set_adjustment(
-                                gtk.Adjustment(self.colorScaleMax,  0.00,
-                                               self.colorScaleMax,
-                                               self.colorScaleMax / 100,
-                                               self.colorScaleMax / 25,
-                                               0))
-        self.widget['scrollbar_min'].connect_object("change-value",
-                                                    self.change_scale_min,
-                                                    None)
-        self.widget['scrollbar_max'].connect_object("change-value",
-                                                    self.change_scale_max,
-                                                    None)
-        self.plot()
-    def on_win_plot_destroy(self, signal):
-        self.destroyed = 1
-        self.window.destroy()
-    def onmouse_motion(self, event):
-        '''
-        Catch the mouse motion in the axes. self.move_cursor has to be set to
-        True to have an action.
-        The other axis are refresh according to the movement of the mouse.
-        '''
-        if not self.move_cursor:
-            return
-        if event.inaxes == self.plot_generic.axis['display_x']:
-            y = self.plot_generic.scale['y'] > event.xdata
-            y = y.nonzero()[0][0]
-            z = self.plot_generic.scale['z'] > event.ydata
-            z = z.nonzero()[0][0]
-            self.widget['adjust_y'].set_value(y)
-            self.widget['adjust_z'].set_value(z)
-        elif event.inaxes == self.plot_generic.axis['display_y']:
-            x = self.plot_generic.scale['x'] > event.xdata
-            x = x.nonzero()[0][0]
-            z = self.plot_generic.scale['z'] > event.ydata
-            z = z.nonzero()[0][0]
-            x = numpy.floor(event.xdata)
-            z = numpy.floor(event.ydata)
-            self.widget['adjust_x'].set_value(x)
-            self.widget['adjust_z'].set_value(z)
-        elif event.inaxes == self.plot_generic.axis['display_z']:
-            x = self.plot_generic.scale['x'] > event.xdata
-            x = x.nonzero()[0][0]
-            y = self.plot_generic.scale['y'] > event.ydata
-            y = y.nonzero()[0][0]
-            self.widget['adjust_x'].set_value(x)
-            self.widget['adjust_y'].set_value(y)
-    def on_gride_click(self, event):
-        '''
-        Catch click in an axis and change the self.move_cursor value.
-        '''
-        if self.move_cursor:
-            self.get_pos()
-            self.move_cursor = False
-        else:
-            self.move_cursor = True
-    def plot(self):
-        self.plot_generic.plot(self.slice,
-                               self.colorScaleMin, self.colorScaleMax)
-        self.show()
-    def on_spin_z_change_value(self, widget):
-        self.slice[2] = widget.get_value()
-        self.plot()
-    def on_adjust_x_value_changed(self, widget):
-        self.slice[0] = widget.get_value()
-        self.plot()
-    def on_adjust_y_value_changed(self,widget):
-        self.slice[1] = widget.get_value()
-        self.plot()
-    def change_scale_min(self, widget, jump, value):
-        self.colorScaleMin = value
-        self.plot()
-    def change_scale_max(self, widget, jump, value):
-        self.colorScaleMax = value
-        self.plot()
-    def get_pos(self):
-        '''
-        Function to be overwritten by the writer in order to get the internal
-        values.
-        '''
-        pass
-
-class plotInteractiveCurve(plot):
-    """
-        Plots several curves in as many subplot as the number of curves.
-    """
-    def __init__(self, window, widget, win_title='Slices'):
-        _plot_generic = plot_generic.InteractiveLinePlot()
-        plot.__init__(self, window, widget, _plot_generic)
-        self.window.set_title(win_title)
-        self.window.resize(500, 500)
-    def show(self):
-        if not self.window.get_property('visible'):
-            raise StandardError
-        self.canvas.draw_idle()
-    def plot(self, array_x, arrays, labels):
-        self.plot_generic.plot(array_x, arrays, labels)
-        
-        self.plot_generic.figure.canvas.mpl_connect('button_press_event',
-                                                    self.button_press_event)
-        self.plot_generic.figure.canvas.mpl_connect('button_release_event',
-                                                    self.button_release_event)
-        self.plot_generic.figure.canvas.mpl_connect('motion_notify_event',
-                                                    self.mouse_move)
-        self.plot_generic.figure.canvas.mpl_connect('pick_event', self.on_pick)
-        self.show()
-    def modify_plot(self, array_x, arrays):
-        self.plot_generic.modify_plot(array_x, arrays)
-        self.show()
-    def button_press_event(self, event):
-        self.plot_generic.button_press_event(event)
-        self.show()
-    def mouse_move(self, event):
-        self.plot_generic.mouse_move(event)
-        self.show()
-    def on_pick(self, event):
-        self.plot_generic.on_pick(event)
-        self.show()
-    def button_release_event(self, event):
-        self.plot_generic.button_release_event(event)
-
-class FoveaNavToolbar(NavigationToolbar):
-
-    def __init__(self, plotCanvas, plotWindow):
-        NavigationToolbar.__init__(self, plotCanvas, plotWindow)
-        self.plot_gen = None
-        self.fig_size = [800, 800]
-        self.auto = 1
-    def home(self, event):
-        self.auto = 1
-        NavigationToolbar.home(self, event)
-    def press_zoom(self, event):
-        self.auto = 0
-        NavigationToolbar.press_zoom(self, event)
-    def save_figure(self, event):
-        # get the old size...
-        old_size = self.plot_gen.figure.get_size_inches().copy()
-        self.plot_gen.figure.set_size_inches(self.plot_gen.win_size)
-        #self.plot_gen.set_size()
-        NavigationToolbar.save_figure(self, event)
-        # return to the old size...
-        self.plot_gen.figure.set_size_inches(old_size)
-
-def regenerate_plot(self, type='normal'):
-    """
-        Create the gtk window where to plot the curves.
-    """
-    
-    builder = gtk.Builder()
-    if type == 'normal':
-        _glade_filename = resource_filename('openfovea', 'glade/plot.glade')
-    elif type == 'tomography':
-        _glade_filename = resource_filename('openfovea',
-                                            'glade/stiffness_plot.glade')
-    builder.add_from_file(_glade_filename)
-    window = builder.get_object("WindowPlot")
-    builder.connect_signals(self)
-    if type == 'normal':
-        widget = {
-        'plot_area' : builder.get_object('boxPlot'),
-        'scrollbar_min' : builder.get_object('scrollbar_min'),
-        'scrollbar_max' : builder.get_object('scrollbar_max'),
-        'scrollbar_depth' : builder.get_object('scrollbar_depth'),
-        'box_nav_tool' : builder.get_object('box_nav_tool'),
-        'button_modify_plot' : builder.get_object('button_modify_plot')
-        }
-    elif type == 'tomography':
-        widget = {
-        'plot_area' : builder.get_object('boxPlot'),
-        'display_x': builder.get_object('display_x'),
-        'display_y': builder.get_object('display_y'),
-        'display_z': builder.get_object('display_z'),
-        'adjust_x': builder.get_object('adjust_x'),
-        'adjust_y': builder.get_object('adjust_y'),
-        'adjust_z': builder.get_object('adjust_z'),
-        'scrollbar_min' : builder.get_object('scrollbar_min'),
-        'scrollbar_max' : builder.get_object('scrollbar_max')
-    }
-    
-    return [window, widget]
-    
-def main():
-    gtk.main()
-    return 0
-if __name__=='__main__':
-    import sys
-    import numpy
-    [window, widget] = regenerate_plot('normal')
-    window.connect('destroy', gtk.main_quit)
-    if sys.argv[1] == 'curve':
-        print('Creating vectors...')
-        X=numpy.asanyarray([1,2,3,4,5,6,7,8,9,10])
-        Y=numpy.asanyarray([1,3,4,3,2,4,5,6,7,8])
-        print('Plotting vectors...')
-        newPlot=plotCurves(window, widget)
-        newPlot.displayPlot(X,Y)
-        newPlot.set_size(800, 800)
-        main()
-    elif sys.argv[1] == 'gride':
-        gride = numpy.random.randn(64, 64)+2
-        newPlot = plotGride(window, widget)
-        newPlot.plot(gride, 2000)
-        main()
-    elif sys.argv[1] == 'mosaic':
-        mosaic = [numpy.random.randn(32, 32)+2 for i in range(10)]
-        list_mask = [1,0,0,0,1,1,0,0,1,0]
-        newPlot = plotMosaic(window, widget)
-        newPlot.plot(mosaic, list_mask=list_mask)
-        main()
diff --git a/debian/openfovea/usr/share/pyshared/openfovea/simple_window_gtk.py b/debian/openfovea/usr/share/pyshared/openfovea/simple_window_gtk.py
deleted file mode 100644
index d8ae696..0000000
--- a/debian/openfovea/usr/share/pyshared/openfovea/simple_window_gtk.py
+++ /dev/null
@@ -1,80 +0,0 @@
-import pygtk
-pygtk.require('2.0')
-import gtk
-#from gtk.gtkgl.apputils import *
-
-class FileGroup(object):
-    def __init__(self, file_list, group_list=None):
-    
-        if group_list == None:
-            group_list = [0 for i in file_list]
-        self.lock = True # defines if we modify all the following value in the list
-        self.dialog = gtk.Dialog(title='File Group', buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
-                gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
-        self.dialog.set_size_request(300, 300)
-        # Create scrolling window
-        self.scroll = gtk.ScrolledWindow()
-        self.scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-
-        self.scroll.show()
-        # Create the table.
-        self.table = gtk.Table(3, 2)
-        self.table.set_border_width(5)
-        self.table.set_col_spacings(5)
-        self.table.set_row_spacings(5)
-        self.table.show()
-        check = gtk.CheckButton(label='Lock')
-        check.set_active(True)
-        check.connect('toggled', self.on_check_toggled)
-        check.show()
-        self.table.attach(check, 0, 1, 0, 1)
-        # Fill the table with label and spin button
-        self.spin_button = []
-        index_list = range(1, len(file_list)+1)
-        for (item, index, group) in zip(file_list, index_list, group_list):
-            text = gtk.Label(str=item)
-            text.show()
-            self.table.attach(text, 0, 1, index, index + 1)
-            spin_button = gtk.SpinButton(gtk.Adjustment(value = group,
-                                               lower = 0, 
-                                               upper = 10, 
-                                               step_incr = 1, 
-                                               page_incr = 1, 
-                                               page_size = 0))
-            spin_button.connect('value_changed', self.on_spin_value_changed)
-            spin_button.show()
-            self.table.attach(spin_button, 1, 2, index, index + 1)
-            self.spin_button.append(spin_button)
-        self.scroll.add_with_viewport(self.table)
-        self.dialog.vbox.pack_start(self.scroll, True, True, 0)
-        #self.dialog.vbox.pack_start(self.table, True, True, 0)
-    def on_spin_value_changed(self, widget):
-        """
-            Change the value of the following items in the list
-        """
-        if not self.lock:
-            return
-        start = self.spin_button.index(widget)
-        if start+1 < len(self.spin_button):
-            self.spin_button[start+1].set_value(widget.get_value())
-    def on_check_toggled(self, widget):
-        self.lock = widget.get_active()
-    def run(self):
-        """
-            Runs the dialog
-        """
-        response = self.dialog.run()
-        if response == gtk.RESPONSE_OK:
-            group_list = []
-            for item in self.spin_button:
-                group_list.append(int(item.get_value()))
-            return group_list
-    def destroy(self):
-        self.dialog.destroy()
-        
-if __name__ == '__main__':
-    file_list = ['File number ' + str(i) for i in range(20)]
-    group_list = None
-    window = FileGroup(file_list, group_list)
-    response = window.run()
-    print response

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/openfovea.git



More information about the debian-med-commit mailing list