diff --git a/skais/process/data_augmentation/__init__.py b/skais/process/data_augmentation/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/skais/process/data_augmentation/data_augmentor.py b/skais/process/data_augmentation/data_augmentor.py new file mode 100644 index 0000000000000000000000000000000000000000..7e5fe20851ad15b519f522f172a12a02fe04b1e0 --- /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 0000000000000000000000000000000000000000..8c73d5c2cac875f8ba602fa15ed0d1cca951a627 --- /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 0000000000000000000000000000000000000000..b0664fd3ecb164a79d8815afca97fdb4c575b4db --- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 0000000000000000000000000000000000000000..77f51540057c60261f149df8672d49d952bc2589 --- /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()