From ff2d8f661dbef0c24cbea9f05363df1dd3986323 Mon Sep 17 00:00:00 2001
From: abhishek-0802 <32932358+abhishek-0802@users.noreply.github.com>
Date: Thu, 25 Apr 2019 16:21:10 +0200
Subject: [PATCH] maths and processing files

---
 .coverage                           | Bin 139264 -> 14208 bytes
 .idea/workspace.xml                 | 303 ++++++++++++++++------------
 navipy/comparing/test.py            |   5 +
 navipy/database/test.py             |  37 +++-
 navipy/errorprop/test.py            |  13 +-
 navipy/maths/test_coordinates.py    |  14 +-
 navipy/processing/test_mcode.py     |  15 ++
 navipy/processing/test_opticflow.py |  15 ++
 8 files changed, 261 insertions(+), 141 deletions(-)

diff --git a/.coverage b/.coverage
index 16dd820174b832da58b7fb91761d86381b6321b0..d9c83edf97dda8c5368173435ccf70ac71180371 100644
GIT binary patch
literal 14208
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

literal 139264
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
Ij&nXg0eS#64FCWD

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index bb27e39..4bcd1a7 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,56 +4,12 @@
     <list default="true" id="ce009ef4-7b11-4f12-b786-bce3842c65e3" name="Default Changelist" comment="">
       <change beforePath="$PROJECT_DIR$/.coverage" beforeDir="false" afterPath="$PROJECT_DIR$/.coverage" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/index.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_arenatools___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_arenatools___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_arenatools_cam_calib_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_arenatools_cam_calib_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_arenatools_cam_dlt_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_arenatools_cam_dlt_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_arenatools_patterns_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_arenatools_patterns_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_arenatools_triangulate_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_arenatools_triangulate_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_comparing___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_comparing___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_comparing_test_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_comparing_test_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_database___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_database___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_database_test_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_database_test_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_database_tools_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_database_tools_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_errorprop___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_errorprop___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_errorprop_test_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_errorprop_test_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_io___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_io___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_io_ivfile_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_io_ivfile_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_io_opencv_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_io_opencv_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_maths___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_maths___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_maths_constants_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_maths_constants_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_maths_coordinates_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_maths_coordinates_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_maths_euler_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_maths_euler_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_maths_homogeneous_transformations_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_maths_homogeneous_transformations_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_maths_quaternion_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_maths_quaternion_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_maths_random_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_maths_random_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_maths_tools_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_maths_tools_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_models___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_models___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_models_dewar_2014_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_models_dewar_2014_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_models_hafner_2000_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_models_hafner_2000_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_models_irdf_2003_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_models_irdf_2003_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_processing___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_processing___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_processing_mcode_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_processing_mcode_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_processing_pcode_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_processing_pcode_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_processing_test_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_processing_test_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_scene_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_scene_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_scripts___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_scripts___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_scripts_check_blender_versions_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_scripts_check_blender_versions_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_scripts_config_matplotlib_server_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_scripts_config_matplotlib_server_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_scripts_dlt_calibrator_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_scripts_dlt_calibrator_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_sensors___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_sensors___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_sensors_renderer_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_sensors_renderer_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_tools___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_tools___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_tools_plots_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_tools_plots_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_trajectories___init___py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_trajectories___init___py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_trajectories_random_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_trajectories_random_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_trajectories_tools_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_trajectories_tools_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_trajectories_transformations_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_trajectories_transformations_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/navipy_trajectories_triangle_py.html" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/navipy_trajectories_triangle_py.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coverage_html_report/status.json" beforeDir="false" afterPath="$PROJECT_DIR$/coverage_html_report/status.json" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/navipy/comparing/test.py" beforeDir="false" afterPath="$PROJECT_DIR$/navipy/comparing/test.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/navipy/database/test.py" beforeDir="false" afterPath="$PROJECT_DIR$/navipy/database/test.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/navipy/errorprop/test.py" beforeDir="false" afterPath="$PROJECT_DIR$/navipy/errorprop/test.py" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/navipy/maths/test_coordinates.py" beforeDir="false" afterPath="$PROJECT_DIR$/navipy/maths/test_coordinates.py" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/navipy/processing/test.py" beforeDir="false" afterPath="$PROJECT_DIR$/navipy/processing/test.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/navipy/processing/test_mcode.py" beforeDir="false" afterPath="$PROJECT_DIR$/navipy/processing/test_mcode.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/navipy/processing/test_opticflow.py" beforeDir="false" afterPath="$PROJECT_DIR$/navipy/processing/test_opticflow.py" afterDir="false" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
@@ -68,19 +24,34 @@
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/navipy/maths/tools.py">
+        <entry file="file://$PROJECT_DIR$/navipy/maths/test_euler.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="285">
-              <caret line="19" column="29" selection-start-line="19" selection-start-column="28" selection-end-line="19" selection-end-column="29" />
+            <state relative-caret-position="1380">
+              <caret line="98" column="44" selection-start-line="98" selection-start-column="44" selection-end-line="98" selection-end-column="44" />
+              <folding>
+                <element signature="e#0#18#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/navipy/maths/test_coordinates.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="375">
+              <caret line="29" column="14" selection-start-line="29" selection-start-column="14" selection-end-line="29" selection-end-column="14" />
+              <folding>
+                <element signature="e#0#18#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/navipy/comparing/test.py">
+        <entry file="file://$PROJECT_DIR$/navipy/processing/test.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-116">
-              <caret line="164" column="16" selection-start-line="164" selection-start-column="13" selection-end-line="164" selection-end-column="16" />
+            <state relative-caret-position="5715">
+              <caret line="387" column="42" selection-start-line="387" selection-start-column="42" selection-end-line="387" selection-end-column="42" />
               <folding>
                 <element signature="e#0#15#0" expanded="true" />
               </folding>
@@ -88,11 +59,28 @@
           </provider>
         </entry>
       </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/navipy/processing/mcode.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="2955">
+              <caret line="206" column="33" selection-start-line="206" selection-start-column="23" selection-end-line="206" selection-end-column="33" />
+              <folding>
+                <element signature="e#20#66#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/navipy/processing/__init__.py">
+          <provider selected="true" editor-type-id="text-editor" />
+        </entry>
+      </file>
       <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/navipy/processing/test.py">
+        <entry file="file://$PROJECT_DIR$/navipy/processing/test_mcode.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="279">
-              <caret line="431" column="8" lean-forward="true" selection-start-line="431" selection-start-column="8" selection-end-line="431" selection-end-column="8" />
+            <state relative-caret-position="558">
+              <caret line="546" lean-forward="true" selection-start-line="546" selection-end-line="546" />
               <folding>
                 <element signature="e#0#15#0" expanded="true" />
               </folding>
@@ -115,7 +103,6 @@
       <find>velo</find>
       <find>veloc</find>
       <find>angle_ra</find>
-      <find>optic</find>
       <find>optic_</find>
       <find>multip</find>
       <find>eular.mat</find>
@@ -125,6 +112,17 @@
       <find>from_matr</find>
       <find>sim</find>
       <find>skyline</find>
+      <find>angle</find>
+      <find>angle_rate_matrix</find>
+      <find>assert</find>
+      <find>from_quaternion</find>
+      <find>viewing</find>
+      <find>angular</find>
+      <find>__viewing</find>
+      <find>posid</find>
+      <find>optic</find>
+      <find>pcode</find>
+      <find>optic_flow</find>
     </findStrings>
   </component>
   <component name="Git.Settings">
@@ -137,26 +135,29 @@
         <option value="$PROJECT_DIR$/navipy/maths/tools.py" />
         <option value="$PROJECT_DIR$/navipy/maths/test_tools.py" />
         <option value="$PROJECT_DIR$/navipy/maths/test_homogeneous_transformations.py" />
-        <option value="$PROJECT_DIR$/navipy/maths/test_euler.py" />
         <option value="$PROJECT_DIR$/navipy/maths/test_random.py" />
-        <option value="$PROJECT_DIR$/navipy/maths/test_coordinates.py" />
         <option value="$PROJECT_DIR$/navipy/maths/test_quaternion.py" />
-        <option value="$PROJECT_DIR$/navipy/comparing/test.py" />
         <option value="$PROJECT_DIR$/navipy/processing/test.py" />
+        <option value="$PROJECT_DIR$/navipy/processing/test_opticflow.py" />
+        <option value="$PROJECT_DIR$/navipy/database/test.py" />
+        <option value="$PROJECT_DIR$/navipy/errorprop/test.py" />
+        <option value="$PROJECT_DIR$/navipy/comparing/test.py" />
+        <option value="$PROJECT_DIR$/navipy/maths/test_coordinates.py" />
+        <option value="$PROJECT_DIR$/navipy/maths/test_euler.py" />
+        <option value="$PROJECT_DIR$/navipy/processing/test_mcode.py" />
       </list>
     </option>
   </component>
-  <component name="ProjectFrameBounds">
+  <component name="ProjectFrameBounds" extendedState="6">
     <option name="y" value="23" />
     <option name="width" value="1440" />
-    <option name="height" value="857" />
+    <option name="height" value="877" />
   </component>
   <component name="ProjectView">
     <navigator proportions="" version="1">
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
-      <pane id="Scope" />
       <pane id="ProjectPane">
         <subPane>
           <expand>
@@ -175,23 +176,35 @@
               <item name="navipy" type="462c0819:PsiDirectoryNode" />
               <item name="comparing" type="462c0819:PsiDirectoryNode" />
             </path>
+            <path>
+              <item name="navipy" type="b2602c69:ProjectViewProjectNode" />
+              <item name="navipy" type="462c0819:PsiDirectoryNode" />
+              <item name="navipy" type="462c0819:PsiDirectoryNode" />
+              <item name="maths" type="462c0819:PsiDirectoryNode" />
+            </path>
             <path>
               <item name="navipy" type="b2602c69:ProjectViewProjectNode" />
               <item name="navipy" type="462c0819:PsiDirectoryNode" />
               <item name="navipy" type="462c0819:PsiDirectoryNode" />
               <item name="processing" type="462c0819:PsiDirectoryNode" />
             </path>
+            <path>
+              <item name="navipy" type="b2602c69:ProjectViewProjectNode" />
+              <item name="navipy" type="462c0819:PsiDirectoryNode" />
+              <item name="orientation" type="462c0819:PsiDirectoryNode" />
+            </path>
           </expand>
           <select />
         </subPane>
       </pane>
       <pane id="PackagesPane" />
+      <pane id="Scope" />
     </panes>
   </component>
   <component name="PropertiesComponent">
     <property name="WebServerToolWindowFactoryState" value="false" />
     <property name="aspect.path.notification.shown" value="true" />
-    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1550728065505" />
+    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1556041758388" />
     <property name="last_opened_file_path" value="$PROJECT_DIR$" />
     <property name="project.structure.last.edited" value="Project" />
     <property name="project.structure.proportion" value="0.0" />
@@ -313,6 +326,8 @@
       <workItem from="1548409948254" duration="34068000" />
       <workItem from="1549035108413" duration="3076000" />
       <workItem from="1549955192949" duration="12109000" />
+      <workItem from="1555782958578" duration="23286000" />
+      <workItem from="1556200784972" duration="562000" />
     </task>
     <servers />
   </component>
@@ -349,13 +364,13 @@
     </history-entry>
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="69220000" />
+    <option name="totallyTimeSpent" value="128244000" />
   </component>
   <component name="ToolWindowManager">
-    <frame x="0" y="23" width="1440" height="857" extended-state="0" />
+    <frame x="0" y="23" width="1440" height="877" extended-state="6" />
     <editor active="true" />
     <layout>
-      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.25679544" />
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.26466382" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
       <window_info id="Image Layers" order="2" />
       <window_info id="Designer" order="3" />
@@ -364,7 +379,7 @@
       <window_info id="Favorites" order="6" side_tool="true" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" />
-      <window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.32941177" />
+      <window_info anchor="bottom" id="Run" order="2" weight="0.32941177" />
       <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
@@ -397,9 +412,6 @@
     <entry file="file://$PROJECT_DIR$/navipy/trajectories/__init__.py">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/processing/mcode.py">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
     <entry file="file://$PROJECT_DIR$/navipy/trajectories/test_markers.py">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="75">
@@ -417,156 +429,183 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/processing/pcode.py">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/processing/__init__.py">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
     <entry file="file://$PROJECT_DIR$/navipy/maths/constants.py">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/errorprop/test.py">
+    <entry file="file://$PROJECT_DIR$/navipy/trajectories/triangle.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state>
+        <state relative-caret-position="75">
+          <caret line="8" column="6" selection-start-line="8" selection-start-column="6" selection-end-line="8" selection-end-column="6" />
           <folding>
-            <element signature="e#0#15#0" expanded="true" />
+            <element signature="e#8#26#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/maths/euler.py">
+    <entry file="file://$PROJECT_DIR$/navipy/maths/coordinates.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="3360">
-          <caret line="228" column="20" selection-start-line="228" selection-start-column="20" selection-end-line="228" selection-end-column="20" />
+        <state relative-caret-position="-104">
+          <caret line="46" selection-start-line="46" selection-end-line="46" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/navipy/maths/quaternion.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="272">
+          <caret line="163" selection-start-line="163" selection-end-line="168" selection-end-column="12" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/navipy/maths/test_homogeneous_transformations.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1302">
+          <caret line="139" column="18" selection-start-line="139" selection-start-column="13" selection-end-line="139" selection-end-column="18" />
           <folding>
-            <element signature="e#0#18#0" expanded="true" />
+            <element signature="e#0#15#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/trajectories/triangle.py">
+    <entry file="file://$PROJECT_DIR$/navipy/maths/test_quaternion.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="75">
-          <caret line="8" column="6" selection-start-line="8" selection-start-column="6" selection-end-line="8" selection-end-column="6" />
+        <state relative-caret-position="294">
+          <caret line="31" column="42" lean-forward="true" selection-start-line="31" selection-start-column="42" selection-end-line="31" selection-end-column="42" />
           <folding>
-            <element signature="e#8#26#0" expanded="true" />
+            <element signature="e#0#15#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/maths/coordinates.py">
+    <entry file="file://$PROJECT_DIR$/navipy/maths/test_tools.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-104">
-          <caret line="46" selection-start-line="46" selection-end-line="46" />
+        <state relative-caret-position="285">
+          <caret line="19" column="57" selection-start-line="19" selection-start-column="57" selection-end-line="19" selection-end-column="57" />
+          <folding>
+            <element signature="e#0#18#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/processing/test_mcode.py">
+    <entry file="file://$PROJECT_DIR$/navipy/maths/tools.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state>
-          <caret column="4" selection-start-column="4" selection-end-column="4" />
+        <state relative-caret-position="285">
+          <caret line="19" column="29" selection-start-line="19" selection-start-column="28" selection-end-line="19" selection-end-column="29" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/processing/test_opticflow.py">
+    <entry file="file://$PROJECT_DIR$/navipy/database/__init__.py">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/navipy/processing/pcode.py">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/navipy/maths/euler.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-314">
-          <caret line="67" column="24" selection-start-line="67" selection-start-column="18" selection-end-line="67" selection-end-column="24" />
+        <state relative-caret-position="3360">
+          <caret line="228" column="20" selection-start-line="228" selection-start-column="20" selection-end-line="228" selection-end-column="20" />
           <folding>
-            <element signature="e#0#15#0" expanded="true" />
+            <element signature="e#0#18#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/maths/quaternion.py">
+    <entry file="file://$PROJECT_DIR$/navipy/maths/test_random.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="272">
-          <caret line="163" selection-start-line="163" selection-end-line="168" selection-end-column="12" />
+        <state relative-caret-position="285">
+          <caret line="19" selection-start-line="19" selection-end-line="19" />
+          <folding>
+            <element signature="e#0#15#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/maths/test_random.py">
+    <entry file="file://$PROJECT_DIR$/navipy/database/test.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="285">
-          <caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
+        <state relative-caret-position="-2985">
+          <caret line="211" column="35" selection-start-line="211" selection-start-column="35" selection-end-line="211" selection-end-column="35" />
           <folding>
             <element signature="e#0#15#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/maths/test_homogeneous_transformations.py">
+    <entry file="file://$PROJECT_DIR$/navipy/errorprop/test.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1302">
-          <caret line="139" column="18" selection-start-line="139" selection-start-column="13" selection-end-line="139" selection-end-column="18" />
+        <state relative-caret-position="598">
+          <caret line="54" selection-start-line="54" selection-end-line="54" />
           <folding>
             <element signature="e#0#15#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/maths/test_quaternion.py">
+    <entry file="file://$PROJECT_DIR$/navipy/processing/test_opticflow.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="294">
-          <caret line="31" column="42" lean-forward="true" selection-start-line="31" selection-start-column="42" selection-end-line="31" selection-end-column="42" />
+        <state relative-caret-position="645">
+          <caret line="143" selection-start-line="143" selection-end-line="143" />
           <folding>
             <element signature="e#0#15#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/maths/test_coordinates.py">
+    <entry file="file://$PROJECT_DIR$/navipy/comparing/test.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="331">
-          <caret line="33" selection-start-line="33" selection-end-line="33" />
+        <state relative-caret-position="598">
+          <caret line="315" column="105" selection-start-line="315" selection-start-column="105" selection-end-line="315" selection-end-column="105" />
           <folding>
-            <element signature="e#0#18#0" expanded="true" />
+            <element signature="e#0#15#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/maths/test_tools.py">
+    <entry file="file://$PROJECT_DIR$/navipy/maths/test_euler.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="285">
-          <caret line="19" column="57" selection-start-line="19" selection-start-column="57" selection-end-line="19" selection-end-column="57" />
+        <state relative-caret-position="1380">
+          <caret line="98" column="44" selection-start-line="98" selection-start-column="44" selection-end-line="98" selection-end-column="44" />
           <folding>
             <element signature="e#0#18#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/maths/test_euler.py">
+    <entry file="file://$PROJECT_DIR$/navipy/maths/test_coordinates.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="436">
-          <caret line="133" column="43" selection-start-line="133" selection-start-column="43" selection-end-line="133" selection-end-column="43" />
+        <state relative-caret-position="375">
+          <caret line="29" column="14" selection-start-line="29" selection-start-column="14" selection-end-line="29" selection-end-column="14" />
           <folding>
             <element signature="e#0#18#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/maths/tools.py">
+    <entry file="file://$PROJECT_DIR$/navipy/processing/test.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="285">
-          <caret line="19" column="29" selection-start-line="19" selection-start-column="28" selection-end-line="19" selection-end-column="29" />
+        <state relative-caret-position="5715">
+          <caret line="387" column="42" selection-start-line="387" selection-start-column="42" selection-end-line="387" selection-end-column="42" />
+          <folding>
+            <element signature="e#0#15#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/comparing/test.py">
+    <entry file="file://$PROJECT_DIR$/navipy/processing/mcode.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-116">
-          <caret line="164" column="16" selection-start-line="164" selection-start-column="13" selection-end-line="164" selection-end-column="16" />
+        <state relative-caret-position="2955">
+          <caret line="206" column="33" selection-start-line="206" selection-start-column="23" selection-end-line="206" selection-end-column="33" />
           <folding>
-            <element signature="e#0#15#0" expanded="true" />
+            <element signature="e#20#66#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/navipy/processing/test.py">
+    <entry file="file://$PROJECT_DIR$/navipy/processing/__init__.py">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/navipy/processing/test_mcode.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="279">
-          <caret line="431" column="8" lean-forward="true" selection-start-line="431" selection-start-column="8" selection-end-line="431" selection-end-column="8" />
+        <state relative-caret-position="558">
+          <caret line="546" lean-forward="true" selection-start-line="546" selection-end-line="546" />
           <folding>
             <element signature="e#0#15#0" expanded="true" />
           </folding>
diff --git a/navipy/comparing/test.py b/navipy/comparing/test.py
index b7e2835..a27b9c9 100644
--- a/navipy/comparing/test.py
+++ b/navipy/comparing/test.py
@@ -312,6 +312,11 @@ class TestCase(unittest.TestCase):
             self.assertFalse(np.any(np.isnan(vec)))
             self.assertTrue(is_numeric_array(vec))
 
+    def test_weighted_irdf(self):
+        for i, j, k in [([1,2,3],7, [4.0,3, 2.0]), ([3.0,'w',4],'w', ['w', 7.0, 4]), (3, [3.0, 2, 8.0], 7)]:
+            with self.assertRaises(TypeError):
+                comparing.weighted_irdf(i,j,k)
+
 
 if __name__ == '__main__':
     unittest.main()
diff --git a/navipy/database/test.py b/navipy/database/test.py
index 416765f..1a5e0e0 100644
--- a/navipy/database/test.py
+++ b/navipy/database/test.py
@@ -47,11 +47,23 @@ class TestCase(unittest.TestCase):
         - channel name is None value or nan
         """
         # channels must be strings or char
-        for n in [3, 8.7, None, np.nan]:
+        for n in [(3, 8.7, None, np.nan)]:
             with self.assertRaises(TypeError):
                 DataBase(self.mydb_filename, channels=n)
+
+
+            for l in [None, np.nan, 'Wr',[2, 3.0]]:
+                with self.assertRaises(ValueError):
+                    DataBase(self.mydb_filename, channels= [l])
+
+    def test_adapt_arr(self):
         with self.assertRaises(ValueError):
-            DataBase(self.mydb_filename, channels=[None, 2])
+            database.adapt_array(None)
+
+    def test_convert_arr(self):
+        with self.assertRaises(ValueError):
+            database.convert_array(None)
+
 
     def test_table_exist(self):
         """
@@ -79,14 +91,21 @@ class TestCase(unittest.TestCase):
         - row is out of range; smaller or equal to 0
         - checks if true is returned for an exiting entry (row=1)
         """
+
         for n in [7.0, None, np.nan]:
             with self.assertRaises(TypeError):
                 self.mydb.check_data_validity(n)
-        for n in [-1, 0]:
+
+        for n in [ -1, 0]:
             with self.assertRaises(ValueError):
                 self.mydb.check_data_validity(n)
+
+
+
         assert self.mydb.check_data_validity(1)
 
+
+
     def test_read_posorient(self):
         """
         this test checks the function read_posorient works
@@ -150,6 +169,8 @@ class TestCase(unittest.TestCase):
         for rowid in [0, -2]:
             with self.assertRaises(ValueError):
                 self.mydb.read_posorient(rowid=rowid)
+
+
         with self.assertRaises(TypeError):
             self.mydb.read_posorient(rowid='T')
         with self.assertRaises(Exception):
@@ -159,6 +180,9 @@ class TestCase(unittest.TestCase):
         with self.assertRaises(TypeError):
             self.mydb.read_posorient(rowid=4.5)
 
+
+
+
         for rowid in [1]:
             posoriend2 = self.mydb.read_posorient(rowid=rowid)
             pd.testing.assert_series_equal(posoriend2, posorient)
@@ -180,10 +204,13 @@ class TestCase(unittest.TestCase):
             with self.assertRaises(ValueError):
                 # print("rowid",rowid)
                 self.mydb.scene(rowid=rowid)
+
+
+        with self.assertRaises(Exception):
+                self.mydb.scene(posorient = None, rowid=None)
         with self.assertRaises(TypeError):
             self.mydb.scene(rowid='T')
-        with self.assertRaises(Exception):
-            self.mydb.scene(rowid=None)
+
         with self.assertRaises(TypeError):
             self.mydb.scene(rowid=np.nan)
         with self.assertRaises(TypeError):
diff --git a/navipy/errorprop/test.py b/navipy/errorprop/test.py
index caa509d..42dccac 100644
--- a/navipy/errorprop/test.py
+++ b/navipy/errorprop/test.py
@@ -1,6 +1,6 @@
 import unittest
 import numpy as np
-from navipy.errorprop import propagate_error, estimate_jacobian
+from navipy.errorprop import propagate_error, estimate_jacobian, estimate_error
 
 
 def sincosine(x):
@@ -44,6 +44,17 @@ class TestErrorProp(unittest.TestCase):
         err_theo[1, 1] = c*(c*d - c*f) - c*(c*e - c*g)
         np.testing.assert_array_almost_equal(err, err_theo)
 
+    def test_estimate_error(self):
+        for i, j in [(2, 3.0), (3.0, 2), ('w', 'w')]:
+            with self.assertRaises(TypeError):
+                estimate_error(i, j)
+
+        for i, j in [(2, [2, 3.0, 4])]:
+            with self.assertRaises(ValueError):
+                estimate_error(i, j)
+
+
+
 
 if __name__ == '__main__':
     unittest.main()
diff --git a/navipy/maths/test_coordinates.py b/navipy/maths/test_coordinates.py
index 3aea4e9..712ebbb 100644
--- a/navipy/maths/test_coordinates.py
+++ b/navipy/maths/test_coordinates.py
@@ -18,7 +18,6 @@ class TestCoordinates(unittest.TestCase):
             with self.assertRaises(ValueError):
                 coordinates.cartesian_to_spherical_vectors(a,b)
 
-
         for c,d in [((3.0,2),([5, 6.0])),(([4.0, 2]),(4, 3))]:
             with self.assertRaises(TypeError):
                 coordinates.cartesian_to_spherical_vectors(c, d)
@@ -27,11 +26,20 @@ class TestCoordinates(unittest.TestCase):
             with self.assertRaises(TypeError):
                 coordinates.cartesian_to_spherical_vectors(g,h)
 
-            with self.assertRaises(Exception):
-                coordinates.cartesian_to_spherical_vectors(g, h)
+        i = np.array([[1,2,3,4],[5,6,7,8], [9,10,11,12]])
+        k = np.array([['w', 1.0, 2],[3,'w', 2.0], ['w', 4.0, 6]])
+
 
+        for i, j in [(i, 2.0), (i, k)]:
+            with self.assertRaises(TypeError):
+                coordinates.cartesian_to_spherical_vectors(i, j)
 
 
+        with self.assertRaises(Exception):
+            i = np.array([[1,2,3,4],[5,6,7,8], [9,10,11,12]])
+            j = np.array([[3, 1, 2],[3,4, 6], [1, 4, 6]])
+            coordinates.cartesian_to_spherical_vectors(i, j)
+
         with self.assertRaises(Exception):
             e = np.array([2, 4, 6, 8])
             f = np.array([2, 4, 6, 8, 3.0])
diff --git a/navipy/processing/test_mcode.py b/navipy/processing/test_mcode.py
index c8afd05..23767a8 100644
--- a/navipy/processing/test_mcode.py
+++ b/navipy/processing/test_mcode.py
@@ -1,5 +1,6 @@
 import unittest
 import numpy as np
+import pandas as pd
 from navipy.processing import mcode
 # import matplotlib.pyplot as plt
 
@@ -532,6 +533,20 @@ class TestCase(unittest.TestCase):
         assert np.all(np.isclose(achigh, res_high))
         assert np.all(np.isclose(achigh2, res_high2))
 
+    def test_opticflow(self):
+        series = pd.Series(np.array([1,2,3,4,5]))
+
+        with self.assertRaises(TypeError):
+            mcode._check_optic_flow_param([2, 3.0, 4], 5)
+
+        with self.assertRaises(Exception):
+            mcode._check_optic_flow_param([2, 3.0, 5], series)
+
+
+
+
+
+
 
 if __name__ == '__main__':
     unittest.main()
diff --git a/navipy/processing/test_opticflow.py b/navipy/processing/test_opticflow.py
index 989253d..f10693b 100644
--- a/navipy/processing/test_opticflow.py
+++ b/navipy/processing/test_opticflow.py
@@ -1,5 +1,6 @@
 import unittest
 from navipy.processing import mcode
+from navipy.processing.mcode import Module
 import pandas as pd
 import numpy as np
 from navipy.trajectories import posorient_columns
@@ -126,3 +127,17 @@ yaw-pitch-roll (zyx) convention has vertical gOF equal to zero
         # Add abs tol because we compare to zero
         np.testing.assert_allclose(rof, np.zeros_like(rof), atol=1e-7)
         np.testing.assert_allclose(vof, np.zeros_like(vof), atol=1e-7)
+
+ #   def test__check_optic_flow(self):
+#
+  #      for c,d in [(4, None), ([3, 7.0], None)]:
+
+
+#            with self.assertRaises(ValueError):
+ #               mcode._check_optic_flow_param(c,d)
+
+#            with self.assertRaises(TypeError):
+ #               mcode._check_optic_flow_param(c, d)
+
+
+
-- 
GitLab