From 54541645f929f8792120528ab88b5c194a162493 Mon Sep 17 00:00:00 2001 From: Melissa DeLucchi Date: Fri, 14 Jun 2024 15:30:03 -0400 Subject: [PATCH] Cross-correlation alignment method and docstrings. --- src/corrgi/__init__.py | 3 --- src/corrgi/alignment.py | 31 ++++++++++++++++++++++++++--- src/corrgi/example_module.py | 23 --------------------- tests/corrgi/test_alignment.py | 12 ++++++++++- tests/corrgi/test_example_module.py | 13 ------------ 5 files changed, 39 insertions(+), 43 deletions(-) delete mode 100644 src/corrgi/example_module.py delete mode 100644 tests/corrgi/test_example_module.py diff --git a/src/corrgi/__init__.py b/src/corrgi/__init__.py index b564b85..e69de29 100644 --- a/src/corrgi/__init__.py +++ b/src/corrgi/__init__.py @@ -1,3 +0,0 @@ -from .example_module import greetings, meaning - -__all__ = ["greetings", "meaning"] diff --git a/src/corrgi/alignment.py b/src/corrgi/alignment.py index 9171627..4c4213b 100644 --- a/src/corrgi/alignment.py +++ b/src/corrgi/alignment.py @@ -16,7 +16,16 @@ def autocorrelation_alignment(catalog: Catalog) -> PixelAlignment: - """TODO""" + """Determine all pairs of partitions that should be correlated within the same catalog. + + This considers all combinations, without duplicates between the "primary" and "join" + pixels in the alignment. + + Args: + catalog (Catalog): catalog for autocorrelation + Returns: + alignment object where the `aligned` columns simply match the left pixel. + """ upper_triangle = [ [left.order, left.pixel, right.order, right.pixel, left.order, left.pixel] for (left, right) in itertools.combinations(catalog.get_healpix_pixels(), 2) @@ -33,5 +42,21 @@ def autocorrelation_alignment(catalog: Catalog) -> PixelAlignment: def crosscorrelation_alignment(catalog_left: Catalog, catalog_right: Catalog) -> PixelAlignment: - """TODO""" - pass + """Determine all pairs of partitions that should be correlated between two catalogs. + + This considers the full cross-product of pixels. + + Args: + catalog_left (Catalog): left side of the cross-correlation + catalog_right (Catalog): right side of the cross-correlation + Returns: + alignment object where the `aligned` columns simply match the left pixel. + """ + full_product = [ + [left.order, left.pixel, right.order, right.pixel, left.order, left.pixel] + for (left, right) in itertools.product( + catalog_left.get_healpix_pixels(), catalog_right.get_healpix_pixels() + ) + ] + result_mapping = pd.DataFrame(full_product, columns=column_names) + return PixelAlignment(catalog_left.pixel_tree, result_mapping, PixelAlignmentType.OUTER) diff --git a/src/corrgi/example_module.py b/src/corrgi/example_module.py deleted file mode 100644 index f76e837..0000000 --- a/src/corrgi/example_module.py +++ /dev/null @@ -1,23 +0,0 @@ -"""An example module containing simplistic functions.""" - - -def greetings() -> str: - """A friendly greeting for a future friend. - - Returns - ------- - str - A typical greeting from a software engineer. - """ - return "Hello from LINCC-Frameworks!" - - -def meaning() -> int: - """The meaning of life, the universe, and everything. - - Returns - ------- - int - The meaning of life. - """ - return 42 diff --git a/tests/corrgi/test_alignment.py b/tests/corrgi/test_alignment.py index 5286496..8840b44 100644 --- a/tests/corrgi/test_alignment.py +++ b/tests/corrgi/test_alignment.py @@ -1,8 +1,18 @@ import hipscat -from corrgi.alignment import autocorrelation_alignment +from corrgi.alignment import autocorrelation_alignment, crosscorrelation_alignment def test_autocorrelation_alignment(data_catalog_dir): data_catalog = hipscat.read_from_hipscat(data_catalog_dir) alignment = autocorrelation_alignment(data_catalog) assert len(alignment.pixel_mapping) == 28 + + +def test_crosscorrelation_alignment(dr7_lrg_catalog_dir, dr7_lrg_rand_catalog_dir): + dr7_catalog = hipscat.read_from_hipscat(dr7_lrg_catalog_dir) + dr7_rand_catalog = hipscat.read_from_hipscat(dr7_lrg_rand_catalog_dir) + alignment = crosscorrelation_alignment(dr7_catalog, dr7_rand_catalog) + ## dr7_catalog has 12 partitions + ## dr7_rand_catalog has 22 partitions + ## 12*21 = 252 + assert len(alignment.pixel_mapping) == 252 diff --git a/tests/corrgi/test_example_module.py b/tests/corrgi/test_example_module.py deleted file mode 100644 index 64cb10f..0000000 --- a/tests/corrgi/test_example_module.py +++ /dev/null @@ -1,13 +0,0 @@ -from corrgi import example_module - - -def test_greetings() -> None: - """Verify the output of the `greetings` function""" - output = example_module.greetings() - assert output == "Hello from LINCC-Frameworks!" - - -def test_meaning() -> None: - """Verify the output of the `meaning` function""" - output = example_module.meaning() - assert output == 42