diff --git a/acmc/phen.py b/acmc/phen.py index 9b82186d7b4cc7c82b530d5bc1ca86bbe0edc03e..0fb669ce46c37ee92eb17238e4483d5ddb9ffe36 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"])