From 63d1622fcf4b0c167f62f0bba527ae4dafbe4041 Mon Sep 17 00:00:00 2001 From: Sean McGuire Date: Mon, 29 Jan 2024 17:30:05 -0500 Subject: [PATCH] add margin unit tests --- tests/conftest.py | 20 ++++- .../Norder=0/Dir=0/Npix=4.parquet | Bin 0 -> 9046 bytes .../Norder=1/Dir=0/Npix=44.parquet | Bin 0 -> 9306 bytes .../Norder=1/Dir=0/Npix=45.parquet | Bin 0 -> 9265 bytes .../Norder=1/Dir=0/Npix=46.parquet | Bin 0 -> 9230 bytes .../Norder=1/Dir=0/Npix=47.parquet | Bin 0 -> 9164 bytes .../small_sky_xmatch_margin/_common_metadata | Bin 0 -> 5555 bytes tests/data/small_sky_xmatch_margin/_metadata | Bin 0 -> 13663 bytes .../small_sky_xmatch_margin/catalog_info.json | 7 ++ .../provenance_info.json | 28 +++++++ .../dataset/test_catalog_info_factory.py | 4 +- .../test_margin_cache_catalog_info.py | 24 +++--- .../margin_cache/test_margin_catalog.py | 77 ++++++++++++++++++ 13 files changed, 145 insertions(+), 15 deletions(-) create mode 100644 tests/data/small_sky_xmatch_margin/Norder=0/Dir=0/Npix=4.parquet create mode 100644 tests/data/small_sky_xmatch_margin/Norder=1/Dir=0/Npix=44.parquet create mode 100644 tests/data/small_sky_xmatch_margin/Norder=1/Dir=0/Npix=45.parquet create mode 100644 tests/data/small_sky_xmatch_margin/Norder=1/Dir=0/Npix=46.parquet create mode 100644 tests/data/small_sky_xmatch_margin/Norder=1/Dir=0/Npix=47.parquet create mode 100644 tests/data/small_sky_xmatch_margin/_common_metadata create mode 100644 tests/data/small_sky_xmatch_margin/_metadata create mode 100644 tests/data/small_sky_xmatch_margin/catalog_info.json create mode 100644 tests/data/small_sky_xmatch_margin/provenance_info.json create mode 100644 tests/hipscat/catalog/margin_cache/test_margin_catalog.py diff --git a/tests/conftest.py b/tests/conftest.py index 477a0526..1ae01ade 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -9,6 +9,7 @@ from hipscat.catalog.association_catalog.partition_join_info import PartitionJoinInfo from hipscat.catalog.catalog_info import CatalogInfo from hipscat.catalog.dataset.base_catalog_info import BaseCatalogInfo +from hipscat.catalog.margin_cache import MarginCacheCatalogInfo from hipscat.inspection.almanac import Almanac from hipscat.pixel_math import HealpixPixel @@ -126,7 +127,7 @@ def source_catalog_info_with_extra() -> dict: @pytest.fixture -def margin_cache_catalog_info() -> dict: +def margin_cache_catalog_info_data() -> dict: return { "catalog_name": "test_margin", "catalog_type": "margin", @@ -189,6 +190,23 @@ def catalog_info(catalog_info_data) -> CatalogInfo: return CatalogInfo(**catalog_info_data) +@pytest.fixture +def margin_catalog_info(margin_cache_catalog_info_data) -> MarginCacheCatalogInfo: + return MarginCacheCatalogInfo(**margin_cache_catalog_info_data) + + +@pytest.fixture +def margin_catalog_pixels() -> List[HealpixPixel]: + return [ + HealpixPixel(0, 4), HealpixPixel(1, 44), HealpixPixel(1, 45), HealpixPixel(1, 46), HealpixPixel(1, 47) + ] + + +@pytest.fixture +def margin_catalog_path(test_data_dir) -> str: + return os.path.join(test_data_dir, "small_sky_xmatch_margin") + + @pytest.fixture def catalog_pixels() -> List[HealpixPixel]: return [HealpixPixel(1, 0), HealpixPixel(1, 1), HealpixPixel(2, 8)] diff --git a/tests/data/small_sky_xmatch_margin/Norder=0/Dir=0/Npix=4.parquet b/tests/data/small_sky_xmatch_margin/Norder=0/Dir=0/Npix=4.parquet new file mode 100644 index 0000000000000000000000000000000000000000..890aa2fc6c0bf960a31b766c9b172b817891fb93 GIT binary patch literal 9046 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 R6I=O@SRNsWMfg`m{{?CJC?fy> literal 0 HcmV?d00001 diff --git a/tests/data/small_sky_xmatch_margin/Norder=1/Dir=0/Npix=45.parquet b/tests/data/small_sky_xmatch_margin/Norder=1/Dir=0/Npix=45.parquet new file mode 100644 index 0000000000000000000000000000000000000000..0dae1a76252eacb855d8decdefcfd2c7abd7695b GIT binary patch literal 9265 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 T4*Vs=Uj9+3(-gG`f5-D*p~Cmd literal 0 HcmV?d00001 diff --git a/tests/data/small_sky_xmatch_margin/_common_metadata b/tests/data/small_sky_xmatch_margin/_common_metadata new file mode 100644 index 0000000000000000000000000000000000000000..29deebc4e4e1fd85f7e1163e6e746946a81a1884 GIT binary patch literal 5555 zcmc&2*>2lLP)LFxO%oJt;lK{^Ucj7VJ$ z{5^f?C$)c&kLb*jq7F)q9}JhUsNI>_xo39dGt$WJJlgwOOzl4Qjh^LbJ1VyK0Sho)tOt0zOPZ4HNmVYvMc5X<`?42>Eiss)zWHf=vh?K}X6&mC>pwcU1Y zFf=VViLj>;tZYYs@8?9GJq<}7hxD&soc#Uslb=$l)XpO~_^1X1uU`S|w;1*ixU7MG zY`1OKw5DxpjV;>FwA-l{sl8`=Z+0JhnrmwQ?!V8!q(c&8Ku3=2r$6rhkxm>-|M_M= z9a4lGEk^hy?P`t%N8AymK+&-+YPMHlp`dm!^N=t-a&2Q^T4|tmM~*j(5d*z%83Do_ zE6_|W(183)+H!&1cDs1?(}nQ%FnxW!P-az&v~A+~6)hsznid^8(1Q1cq!vqvB{k5z z>o=fHWLkQtB?X1BI~D|~m6Q|#?^x74sgv@SF?TF9E}f**71SMzU8~Tf@C^iatirs~ zSvyE7kU+1Ax7{G0!(*#e6oYTd-bL5hDi?YQ;_hB3Hm6?N!b@mPS!^T|MWZhQd zSW_QbS}+*0#!qd1s10Y>_q~}0x9tRjGPZ`kJ#Z14ExgOT%ch|(&(m}XnFCxteVy8U zMjDM%`D1vw?|yxGfX}4+J0YYFAADe4AY7LSgmektWiXCg!A}r)6yv%2akz&!JvYtja&b;WjalV=MF@ajv8T(QkjKcBr~U~~Y}KJu7aJYj5d!rb z=)_`H7bnPP(gGPRrPeWz>4f2UDXTja_%~?9o^*j zS!#*`@M!cZ{Xy57NmO@gV^svZP$yn$Hji4tDKC{e%@y6RkY3LFcB~gKc`9E)y&O$$ z`l?VGwd5>CI`Gpaljm|h-D&iUY$;TWYIj_I;ZjxLsZX1TRd zXQ21>W6*e8Y)izFmtveD3Xn^})pD#mnN;QtKdO;lsk(g}|>zVJ&cC-|*= z(}#MYkl&Y@GOweg54Y0ZUkwB;MRK7JbuJ**(5JS>TbG5Inxi8nQyd%M-^lly{Oaj$ z{i+(qW4z0`Zc`&L$?c;^Q^7CE!#63)6;3`)DUT5dv96x zO)?)LPMPXeSa14m>iBXcR>_{bir*B=EXq9H)?3^r#yYgexm7F|_B+XXSn}akU2eDo zn65GYR{n`|WrJ^G+`Z_+a-YZhIO!K9Tk_yeq?SkNGOPdHY|I9~A+ z9_Fh8&R$a-%PJEXv$zWGk8oeZ`74~{3|NsP#uN~Q_-A>T|6ozCFrb9Mcod9CVfF&Q zCFU`t%$x?_m=&L+mC*v?T0_#_WpU5O5Nr!_18`+bq4>g{SWg@+n)dc literal 0 HcmV?d00001 diff --git a/tests/data/small_sky_xmatch_margin/_metadata b/tests/data/small_sky_xmatch_margin/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..50c493b7f39a183bbd785f66e6c5fdd828af832b GIT binary patch literal 13663 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 kn