From 12dc08f813f6e74b778e2cfbcc6ec668d612add4 Mon Sep 17 00:00:00 2001 From: "Chanwut (Mick) Kittivorawong" Date: Thu, 8 Feb 2024 22:45:26 -0800 Subject: [PATCH] update --- .flake8 | 4 +- spatialyze/predicate.py | 7 +-- tests/interface/test_predicate.py | 56 +++++++++---------- tests/interface/utils/F/test_ahead.py | 6 +- tests/interface/utils/F/test_contains.py | 10 ++-- .../interface/utils/F/test_convert_camera.py | 6 +- tests/interface/utils/F/test_distance.py | 4 +- tests/interface/utils/F/test_heading_diff.py | 24 ++++---- .../interface/utils/F/test_road_direction.py | 6 +- tests/interface/utils/F/test_same_region.py | 2 +- tests/interface/utils/F/test_view_angle.py | 4 +- 11 files changed, 65 insertions(+), 64 deletions(-) diff --git a/.flake8 b/.flake8 index bec21a8..09c7070 100644 --- a/.flake8 +++ b/.flake8 @@ -10,4 +10,6 @@ ignore = # multiple '#' leading a line comment is ok E266, # module-level import not on top of file is ok - E402 + E402, + # multiple statements on one line (def) + E704 diff --git a/spatialyze/predicate.py b/spatialyze/predicate.py index 3b0e30d..d8c68d7 100644 --- a/spatialyze/predicate.py +++ b/spatialyze/predicate.py @@ -427,7 +427,7 @@ def __call__(self, node: "PredicateNode"): return self._is_detection_only def visit_TableAttrNode(self, node: TableAttrNode) -> Any: - if isinstance(node.table, ObjectTableNode) and node.name == "itemHeadings": + if isinstance(node.table, ObjectTableNode) and node.name == "itemHeading": self._is_detection_only = False return super().visit_TableAttrNode(node) @@ -603,9 +603,8 @@ def resolve_camera_attr(attr: str, num: "int | None" = None): "itemId": False, "cameraId": False, "objectType": False, - "translations": True, - "translations": True, - "itemHeadings": True, + "translation": True, + "itemHeading": True, "bbox": True, } diff --git a/tests/interface/test_predicate.py b/tests/interface/test_predicate.py index 3f62988..a442bc1 100644 --- a/tests/interface/test_predicate.py +++ b/tests/interface/test_predicate.py @@ -12,28 +12,28 @@ @pytest.mark.parametrize("fn, sql", [ - (o, "valueAtTimestamp(t0.translations,c0.timestamp)"), - (o.trans, "valueAtTimestamp(t0.translations,c0.timestamp)"), - (o.trans, "valueAtTimestamp(t0.translations,c0.timestamp)"), + (o, "t0.translation"), + (o.trans, "t0.translation"), + (o.trans, "t0.translation"), (o.id, "t0.itemId"), (o.type, "t0.objectType"), - (o.heading, "valueAtTimestamp(t0.itemHeadings,c0.timestamp)"), + (o.heading, "t0.itemHeading"), (c, "c0.cameraTranslation"), (c.ego, "c0.egoTranslation"), (c.heading, "c0.cameraHeading"), (c.egoheading, "c0.egoHeading"), - (o.trans + c, "(valueAtTimestamp(t0.translations,c0.timestamp)+c0.cameraTranslation)"), - (o.trans - c, "(valueAtTimestamp(t0.translations,c0.timestamp)-c0.cameraTranslation)"), - (o.trans * c, "(valueAtTimestamp(t0.translations,c0.timestamp)*c0.cameraTranslation)"), - (o.trans / c, "(valueAtTimestamp(t0.translations,c0.timestamp)/c0.cameraTranslation)"), - (o.trans == c, "(valueAtTimestamp(t0.translations,c0.timestamp)=c0.cameraTranslation)"), - (o.trans < c, "(valueAtTimestamp(t0.translations,c0.timestamp) c, "(valueAtTimestamp(t0.translations,c0.timestamp)>c0.cameraTranslation)"), - (o.trans <= c, "(valueAtTimestamp(t0.translations,c0.timestamp)<=c0.cameraTranslation)"), - (o.trans >= c, "(valueAtTimestamp(t0.translations,c0.timestamp)>=c0.cameraTranslation)"), - (o.trans != c, "(valueAtTimestamp(t0.translations,c0.timestamp)<>c0.cameraTranslation)"), + (o.trans + c, "(t0.translation+c0.cameraTranslation)"), + (o.trans - c, "(t0.translation-c0.cameraTranslation)"), + (o.trans * c, "(t0.translation*c0.cameraTranslation)"), + (o.trans / c, "(t0.translation/c0.cameraTranslation)"), + (o.trans == c, "(t0.translation=c0.cameraTranslation)"), + (o.trans < c, "(t0.translation c, "(t0.translation>c0.cameraTranslation)"), + (o.trans <= c, "(t0.translation<=c0.cameraTranslation)"), + (o.trans >= c, "(t0.translation>=c0.cameraTranslation)"), + (o.trans != c, "(t0.translation<>c0.cameraTranslation)"), (1 + c, "(1+c0.cameraTranslation)"), (1 - c, "(1-c0.cameraTranslation)"), @@ -52,12 +52,12 @@ (c0.cam, "c0.cameraTranslation"), (cast(c0.heading, 'real'), "(c0.cameraHeading)::real"), - (-o.trans, "(-valueAtTimestamp(t0.translations,c0.timestamp))"), - (~o.trans, "(NOT valueAtTimestamp(t0.translations,c0.timestamp))"), - (o.trans & o & o, "(valueAtTimestamp(t0.translations,c0.timestamp) AND valueAtTimestamp(t0.translations,c0.timestamp) AND valueAtTimestamp(t0.translations,c0.timestamp))"), - (o.trans | o | o, "(valueAtTimestamp(t0.translations,c0.timestamp) OR valueAtTimestamp(t0.translations,c0.timestamp) OR valueAtTimestamp(t0.translations,c0.timestamp))"), + (-o.trans, "(-t0.translation)"), + (~o.trans, "(NOT t0.translation)"), + (o.trans & o & o, "(t0.translation AND t0.translation AND t0.translation)"), + (o.trans | o | o, "(t0.translation OR t0.translation OR t0.translation)"), (c.time, "c0.timestamp"), - (arr(o.trans, o), "ARRAY[valueAtTimestamp(t0.translations,c0.timestamp),valueAtTimestamp(t0.translations,c0.timestamp)]"), + (arr(o.trans, o), "ARRAY[t0.translation,t0.translation]"), (o.bbox, "objectBBox(t0.itemId,c0.timestamp)"), ]) def test_simple_ops(fn, sql): @@ -77,7 +77,7 @@ def test_unnormalized_node_exception(fn, msg): @pytest.mark.parametrize("fn, msg", [ - (AtTimeNode(o.trans), "AtTimeNode is illegal prior NormalizeDefaultValue: AtTimeNode(attr=TableAttrNode(name='translations', table=ObjectTableNode[0], shorten=True))"), + (AtTimeNode(o.trans), "AtTimeNode is illegal prior NormalizeDefaultValue: AtTimeNode(attr=TableAttrNode(name='translation', table=ObjectTableNode[0], shorten=True))"), ]) def test_normalize_exception(fn, msg): with pytest.raises(Exception) as e_info: @@ -100,8 +100,8 @@ def test_predicate_node_exception(args, kwargs, msg): @pytest.mark.parametrize("fn, sql", [ - ((o.trans + c) - c.cam + o.type * c.ego / o, "(((valueAtTimestamp(t0.translations,c0.timestamp)+c0.cameraTranslation)-c0.cameraTranslation)+((t0.objectType*c0.egoTranslation)/valueAtTimestamp(t0.translations,c0.timestamp)))"), - ((o.trans == c) & ((o < c.cam) | (o == c.ego)), "((valueAtTimestamp(t0.translations,c0.timestamp)=c0.cameraTranslation) AND ((valueAtTimestamp(t0.translations,c0.timestamp)40) AND ((((((valueAtTimestamp(t0.itemHeadings,c0.timestamp)-valueAtTimestamp(t1.itemHeadings,c0.timestamp)))::numeric%360)+360)%360)<50))"), - (heading_diff(o, o1, between=[40+360, 50]), "(((((((valueAtTimestamp(t0.itemHeadings,c0.timestamp)-valueAtTimestamp(t1.itemHeadings,c0.timestamp)))::numeric%360)+360)%360)>40) AND ((((((valueAtTimestamp(t0.itemHeadings,c0.timestamp)-valueAtTimestamp(t1.itemHeadings,c0.timestamp)))::numeric%360)+360)%360)<50))"), - (heading_diff(o, o1, between=[40-360, 50]), "(((((((valueAtTimestamp(t0.itemHeadings,c0.timestamp)-valueAtTimestamp(t1.itemHeadings,c0.timestamp)))::numeric%360)+360)%360)>40) AND ((((((valueAtTimestamp(t0.itemHeadings,c0.timestamp)-valueAtTimestamp(t1.itemHeadings,c0.timestamp)))::numeric%360)+360)%360)<50))"), - (heading_diff(o, o1, between=[50, 40]), "(((((((valueAtTimestamp(t0.itemHeadings,c0.timestamp)-valueAtTimestamp(t1.itemHeadings,c0.timestamp)))::numeric%360)+360)%360)<50) OR ((((((valueAtTimestamp(t0.itemHeadings,c0.timestamp)-valueAtTimestamp(t1.itemHeadings,c0.timestamp)))::numeric%360)+360)%360)>40))"), - (heading_diff(o, o1, excluding=[40, 50]), "(((((((valueAtTimestamp(t0.itemHeadings,c0.timestamp)-valueAtTimestamp(t1.itemHeadings,c0.timestamp)))::numeric%360)+360)%360)<40) OR ((((((valueAtTimestamp(t0.itemHeadings,c0.timestamp)-valueAtTimestamp(t1.itemHeadings,c0.timestamp)))::numeric%360)+360)%360)>50))"), - (heading_diff(o, o1, excluding=[50, 40]), "(((((((valueAtTimestamp(t0.itemHeadings,c0.timestamp)-valueAtTimestamp(t1.itemHeadings,c0.timestamp)))::numeric%360)+360)%360)>50) AND ((((((valueAtTimestamp(t0.itemHeadings,c0.timestamp)-valueAtTimestamp(t1.itemHeadings,c0.timestamp)))::numeric%360)+360)%360)<40))"), + (heading_diff(o, o1), "(((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)"), + (heading_diff(o, c), "(((((t0.itemHeading-c0.cameraHeading))::numeric%360)+360)%360)"), + (heading_diff(o, c.cam), "(((((t0.itemHeading-c0.cameraHeading))::numeric%360)+360)%360)"), + (heading_diff(o, c.heading), "(((((t0.itemHeading-c0.cameraHeading))::numeric%360)+360)%360)"), + (heading_diff(o, c.ego), "(((((t0.itemHeading-c0.egoHeading))::numeric%360)+360)%360)"), + (heading_diff(o, c.egoheading), "(((((t0.itemHeading-c0.egoHeading))::numeric%360)+360)%360)"), + (heading_diff(o, o1, between=[40, 50]), "(((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)>40) AND ((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)<50))"), + (heading_diff(o, o1, between=[40+360, 50]), "(((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)>40) AND ((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)<50))"), + (heading_diff(o, o1, between=[40-360, 50]), "(((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)>40) AND ((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)<50))"), + (heading_diff(o, o1, between=[50, 40]), "(((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)<50) OR ((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)>40))"), + (heading_diff(o, o1, excluding=[40, 50]), "(((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)<40) OR ((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)>50))"), + (heading_diff(o, o1, excluding=[50, 40]), "(((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)>50) AND ((((((t0.itemHeading-t1.itemHeading))::numeric%360)+360)%360)<40))"), ]) def test_heading_diff(fn, sql): assert gen(fn) == sql diff --git a/tests/interface/utils/F/test_road_direction.py b/tests/interface/utils/F/test_road_direction.py index 380529e..6d6343a 100644 --- a/tests/interface/utils/F/test_road_direction.py +++ b/tests/interface/utils/F/test_road_direction.py @@ -4,13 +4,13 @@ @pytest.mark.parametrize("fn, sql", [ (road_direction(o), - "roadDirection(valueAtTimestamp(t0.translations,c0.timestamp),(valueAtTimestamp(t0.itemHeadings,c0.timestamp))::real)"), + "roadDirection(t0.translation,(t0.itemHeading)::real)"), (road_direction(o, c.ego), - "roadDirection(valueAtTimestamp(t0.translations,c0.timestamp),(c0.egoHeading)::real)"), + "roadDirection(t0.translation,(c0.egoHeading)::real)"), (road_direction(c), "roadDirection(c0.cameraTranslation,(c0.cameraHeading)::real)"), (road_direction(c.ego, o), - "roadDirection(c0.egoTranslation,(valueAtTimestamp(t0.itemHeadings,c0.timestamp))::real)"), + "roadDirection(c0.egoTranslation,(t0.itemHeading)::real)"), ]) def test_road_direction(fn, sql): assert gen(fn) == sql diff --git a/tests/interface/utils/F/test_same_region.py b/tests/interface/utils/F/test_same_region.py index ea4ca48..badb033 100644 --- a/tests/interface/utils/F/test_same_region.py +++ b/tests/interface/utils/F/test_same_region.py @@ -7,7 +7,7 @@ @pytest.mark.parametrize("fn, sql", [ - (same_region('intersection', o, c), "sameRegion('intersection',valueAtTimestamp(t0.translations,c0.timestamp),c0.cameraTranslation)"), + (same_region('intersection', o, c), "sameRegion('intersection',t0.translation,c0.cameraTranslation)"), ]) def test_same_retion(fn, sql): assert gen(fn) == sql diff --git a/tests/interface/utils/F/test_view_angle.py b/tests/interface/utils/F/test_view_angle.py index df09a89..206230e 100644 --- a/tests/interface/utils/F/test_view_angle.py +++ b/tests/interface/utils/F/test_view_angle.py @@ -4,9 +4,9 @@ @pytest.mark.parametrize("fn, sql", [ (view_angle(o, c), - "viewAngle(valueAtTimestamp(t0.translations,c0.timestamp),c0.cameraHeading,c0.cameraTranslation)"), + "viewAngle(t0.translation,c0.cameraHeading,c0.cameraTranslation)"), (view_angle(o, o), - "viewAngle(valueAtTimestamp(t0.translations,c0.timestamp),valueAtTimestamp(t0.itemHeadings,c0.timestamp),valueAtTimestamp(t0.translations,c0.timestamp))") + "viewAngle(t0.translation,t0.itemHeading,t0.translation)") ]) def test_view_angle(fn, sql): assert gen(fn) == sql