From 32dcc6034a38d95738e4b97f4b27ade94b6c7ffb Mon Sep 17 00:00:00 2001 From: kim Date: Mon, 22 Apr 2024 10:14:42 -0800 Subject: [PATCH 1/2] swaps dateparser for ciso8601 for parsing dates in stacking operations --- CHANGELOG.md | 5 +++++ asf_search/baseline/calc.py | 12 ++++++------ asf_search/baseline/stack.py | 6 +++--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b56cac13..defa1d6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,11 @@ and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - --> +------ +## [v7.1.1](https://github.com/asfadmin/Discovery-asf_search/compare/v7.1.0...v7.1.1) +### Changed +- Uses `ciso8601.parse_datetime()` in baseline calculations, speeds up calculations on larger stacks + ------ ## [v7.1.0](https://github.com/asfadmin/Discovery-asf_search/compare/v7.0.9...v7.1.0) ### Added diff --git a/asf_search/baseline/calc.py b/asf_search/baseline/calc.py index efe76ae4..faa6442e 100644 --- a/asf_search/baseline/calc.py +++ b/asf_search/baseline/calc.py @@ -2,7 +2,7 @@ from typing import List import numpy as np -from dateutil.parser import parse +from ciso8601 import parse_datetime from asf_search import ASFProduct # WGS84 constants @@ -23,17 +23,17 @@ def calculate_perpendicular_baselines(reference: str, stack: List[ASFProduct]): baselineProperties['noStateVectors'] = True continue - asc_node_time = parse(baselineProperties['ascendingNodeTime']).timestamp() + asc_node_time = parse_datetime(baselineProperties['ascendingNodeTime']).timestamp() - start = parse(product.properties['startTime']).timestamp() - end = parse(product.properties['stopTime']).timestamp() + start = parse_datetime(product.properties['startTime']).timestamp() + end = parse_datetime(product.properties['stopTime']).timestamp() center = start + ((end - start) / 2) baselineProperties['relative_start_time'] = start - asc_node_time baselineProperties['relative_center_time'] = center - asc_node_time baselineProperties['relative_end_time'] = end - asc_node_time - t_pre = parse(positionProperties['prePositionTime']).timestamp() - t_post = parse(positionProperties['postPositionTime']).timestamp() + t_pre = parse_datetime(positionProperties['prePositionTime']).timestamp() + t_post = parse_datetime(positionProperties['postPositionTime']).timestamp() product.baseline['relative_sv_pre_time'] = t_pre - asc_node_time product.baseline['relative_sv_post_time'] = t_post - asc_node_time diff --git a/asf_search/baseline/stack.py b/asf_search/baseline/stack.py index 69b66f85..c443adae 100644 --- a/asf_search/baseline/stack.py +++ b/asf_search/baseline/stack.py @@ -1,5 +1,5 @@ from typing import Tuple, List -from dateutil.parser import parse +from ciso8601 import parse_datetime import pytz from .calc import calculate_perpendicular_baselines @@ -66,12 +66,12 @@ def calculate_temporal_baselines(reference: ASFProduct, stack: ASFSearchResults) :param stack: The stack to operate on. :return: None, as the operation occurs in-place on the stack provided. """ - reference_time = parse(reference.properties['startTime']) + reference_time = parse_datetime(reference.properties['startTime']) if reference_time.tzinfo is None: reference_time = pytz.utc.localize(reference_time) for secondary in stack: - secondary_time = parse(secondary.properties['startTime']) + secondary_time = parse_datetime(secondary.properties['startTime']) if secondary_time.tzinfo is None: secondary_time = pytz.utc.localize(secondary_time) secondary.properties['temporalBaseline'] = (secondary_time.date() - reference_time.date()).days From ec134ef063f2ed646ce5d6e29f5c4a02ae70654e Mon Sep 17 00:00:00 2001 From: kim Date: Mon, 22 Apr 2024 11:25:46 -0800 Subject: [PATCH 2/2] removes unused python-dateutil from setup.py --- setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.py b/setup.py index 69e29546..5a3fb6e0 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,6 @@ requirements = [ "requests", "shapely", - "python-dateutil", "pytz", "importlib_metadata", "numpy",