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