From 1fa3edf796f8c24f7b514a2f0cdf2813eb6a39c5 Mon Sep 17 00:00:00 2001 From: plgmlesniak Date: Mon, 13 Jan 2025 11:13:30 +0100 Subject: [PATCH] ISL-4832 Added sort_by_time.py --- python/catalog/sort_by_time.py | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 python/catalog/sort_by_time.py diff --git a/python/catalog/sort_by_time.py b/python/catalog/sort_by_time.py new file mode 100644 index 0000000..70e51f0 --- /dev/null +++ b/python/catalog/sort_by_time.py @@ -0,0 +1,50 @@ +# ----------------- +# Copyright © 2024 ACK Cyfronet AGH, Poland. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# This work was partially funded by DT-GEO Project. +# ----------------- +import numpy as np + +def sort_by_time(catalog): + """ + Sorts the given catalog based on the 'Time' column. + + Parameters: + catalog (np.ndarray): A structured NumPy array representing the catalog, where each row + contains fields like 'Time', 'ID', and others. + + Returns: + np.ndarray: The sorted catalog, where rows in 'val' fields are ordered by ascending 'Time' values. + + Raises: + ValueError: If the 'Time' column is not found in the catalog. + """ + + time_col_index = None + for idx, col in enumerate(catalog): + if col['field'] == "Time": + time_col_index = idx + + if time_col_index is None: + raise ValueError("No 'Time' field found in the catalog.") + + time_values = catalog[time_col_index]['val'].flatten() + sorted_indexes = np.argsort(time_values) + + sorted_catalog = catalog.copy() + for field in sorted_catalog: + field['val'] = field['val'][sorted_indexes] + + return sorted_catalog \ No newline at end of file