From 960ad9876277c78c56feba79f60699742d13ce58 Mon Sep 17 00:00:00 2001
From: Jakub Dylag <jjd1c23@soton.ac.uk>
Date: Fri, 23 May 2025 10:56:54 +0100
Subject: [PATCH] phen.py separate reverse mapping merge

---
 acmc/phen.py | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/acmc/phen.py b/acmc/phen.py
index 9b82186..0fb669c 100644
--- a/acmc/phen.py
+++ b/acmc/phen.py
@@ -705,7 +705,7 @@ def translate_codes(
             # otherwise do reverse mapping if enabled and it exists
             elif do_reverse_translate and map_path_reversed.exists():
                 codes = _translate_codes(
-                    map_path_reversed, source_df, source_code_type, codes
+                    map_path_reversed, source_df, source_code_type, codes, reverse=True
                 )
             else:
                 _logger.warning(
@@ -723,12 +723,19 @@ def translate_codes(
     return codes
 
 
-def _translate_codes(map_path, source_df, source_code_type, codes) -> pd.DataFrame:
+def _translate_codes(
+    map_path, source_df, source_code_type, codes, reverse=False
+) -> pd.DataFrame:
     # get mapping
     df_map = pd.read_parquet(map_path)
 
     # do mapping
-    translated_df = pd.merge(source_df[source_code_type], df_map, how="left")
+    if not (reverse):
+        translated_df = pd.merge(source_df[source_code_type], df_map, how="left")
+    else:
+        translated_df = pd.merge(
+            source_df[source_code_type], df_map, how="left"
+        )  # output codes from target as reversed
 
     # normalise the output
     translated_df.columns = pd.Index(["SOURCE_CONCEPT", "CONCEPT"])
-- 
GitLab