From 97f26b286d8fa1f396d458a08c404e4cd2e7062f Mon Sep 17 00:00:00 2001
From: Raphael <raphael.sturgis@gmail.com>
Date: Tue, 23 Nov 2021 14:21:54 +0100
Subject: [PATCH] data augmentation

---
 skais/process/data_augmentation/__init__.py   |  0
 .../data_augmentation/data_augmentor.py       |  3 +
 skais/process/data_augmentation/flip.py       | 16 +++++
 skais/process/data_augmentation/translator.py | 16 +++++
 .../process/data_augmentation/__init__.py     |  0
 .../process/data_augmentation/test_flip.py    | 61 +++++++++++++++++++
 6 files changed, 96 insertions(+)
 create mode 100644 skais/process/data_augmentation/__init__.py
 create mode 100644 skais/process/data_augmentation/data_augmentor.py
 create mode 100644 skais/process/data_augmentation/flip.py
 create mode 100644 skais/process/data_augmentation/translator.py
 create mode 100644 skais/tests/process/data_augmentation/__init__.py
 create mode 100644 skais/tests/process/data_augmentation/test_flip.py

diff --git a/skais/process/data_augmentation/__init__.py b/skais/process/data_augmentation/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/skais/process/data_augmentation/data_augmentor.py b/skais/process/data_augmentation/data_augmentor.py
new file mode 100644
index 0000000..7e5fe20
--- /dev/null
+++ b/skais/process/data_augmentation/data_augmentor.py
@@ -0,0 +1,3 @@
+class DataAugmentor:
+    def transform(self, X):
+        pass
diff --git a/skais/process/data_augmentation/flip.py b/skais/process/data_augmentation/flip.py
new file mode 100644
index 0000000..8c73d5c
--- /dev/null
+++ b/skais/process/data_augmentation/flip.py
@@ -0,0 +1,16 @@
+from skais.ais.ais_trajectory import AISTrajectory
+from skais.process.data_augmentation.data_augmentor import DataAugmentor
+
+
+class Flip(DataAugmentor):
+    def __init__(self, meridian=None, parallel=None):
+        self.meridian = meridian
+        self.parallel = parallel
+
+    def transform(self, X):
+        result = []
+        for trajectory in X:
+            df = trajectory.df
+            df['latitude'] = -trajectory.df['latitude']
+            result.append(AISTrajectory(df))
+        return result
diff --git a/skais/process/data_augmentation/translator.py b/skais/process/data_augmentation/translator.py
new file mode 100644
index 0000000..b0664fd
--- /dev/null
+++ b/skais/process/data_augmentation/translator.py
@@ -0,0 +1,16 @@
+from skais.ais.ais_trajectory import AISTrajectory
+from skais.process.data_augmentation.data_augmentor import DataAugmentor
+
+
+class Translator(DataAugmentor):
+    def __init__(self, longitude, latitude):
+        self.longitude = longitude
+        self.latitude = latitude
+
+    def transform(self, X):
+        result = []
+        for trajectory in X:
+            df = trajectory.df
+            df['longitude'] = trajectory.df['longitude'] + self.longitude
+            result.append(AISTrajectory(df))
+        return result
\ No newline at end of file
diff --git a/skais/tests/process/data_augmentation/__init__.py b/skais/tests/process/data_augmentation/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/skais/tests/process/data_augmentation/test_flip.py b/skais/tests/process/data_augmentation/test_flip.py
new file mode 100644
index 0000000..77f5154
--- /dev/null
+++ b/skais/tests/process/data_augmentation/test_flip.py
@@ -0,0 +1,61 @@
+import unittest
+import pandas as pd
+
+from skais.ais.ais_trajectory import AISTrajectory
+from skais.process.data_augmentation.flip import Flip
+
+
+class TestFlip(unittest.TestCase):
+    def setUp(self):
+        t1 = AISTrajectory(
+            pd.DataFrame(
+                {
+                    'ts_sec': [i for i in range(10)],
+                    'latitude': [45 + i for i in range(10)],
+                    'longitude': [12 + i for i in range(10)]
+                }
+            )
+        )
+        t2 = AISTrajectory(
+            pd.DataFrame(
+                {
+                    'ts_sec': [i for i in range(10)],
+                    'latitude': [-12 + i for i in range(10)],
+                    'longitude': [12 + i for i in range(10)]
+                }
+            )
+        )
+
+        self.trajectories = [t1, t2]
+
+    def test_flip_equator(self):
+        aug = Flip(0, None)
+
+        result = aug.transform(self.trajectories)
+
+        t1 = AISTrajectory(
+            pd.DataFrame(
+                {
+                    'ts_sec': [i for i in range(10)],
+                    'latitude': [-45 - i for i in range(10)],
+                    'longitude': [12 + i for i in range(10)]
+                }
+            )
+        )
+        t2 = AISTrajectory(
+            pd.DataFrame(
+                {
+                    'ts_sec': [i for i in range(10)],
+                    'latitude': [12 - i for i in range(10)],
+                    'longitude': [12 + i for i in range(10)]
+                }
+            )
+        )
+        expected = [t1,t2]
+
+        for t1, t2 in zip(result, expected):
+            pd.testing.assert_frame_equal(t1.df, t2.df)
+
+
+if __name__ == '__main__':
+    unittest.main()
-- 
GitLab