DavMelchi commited on
Commit
449287c
·
1 Parent(s): e976fb1

adding NEI symetrique checking

Browse files
Files changed (1) hide show
  1. queries/process_neighbors.py +28 -0
queries/process_neighbors.py CHANGED
@@ -33,6 +33,31 @@ WCEL_TARGET = [
33
  ]
34
 
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  def process_neighbors_data(file_path: str):
37
  """
38
  Process data from the specified file path.
@@ -84,6 +109,7 @@ def process_neighbors_data(file_path: str):
84
  df_adce_final.rename(
85
  columns={"ID_BTS": "SOURCE_ID", "lac_id": "TARGET_LAC_ID"}, inplace=True
86
  )
 
87
 
88
  # process ADJS data
89
  df_adjs = dfs["ADJS"]
@@ -120,6 +146,7 @@ def process_neighbors_data(file_path: str):
120
  df_adjs_final.rename(
121
  columns={"ID_WCEL": "SOURCE_ID", "lac_id": "TARGET_LAC_ID"}, inplace=True
122
  )
 
123
 
124
  # process ADJI DATA
125
  df_adji = dfs["ADJI"]
@@ -140,6 +167,7 @@ def process_neighbors_data(file_path: str):
140
  df_adji_final.rename(
141
  columns={"ID_WCEL": "SOURCE_ID", "lac_id": "TARGET_LAC_ID"}, inplace=True
142
  )
 
143
 
144
  # process ADJG DATA
145
  df_adjg = dfs["ADJG"]
 
33
  ]
34
 
35
 
36
+ def check_symmetry(df: pd.DataFrame):
37
+ """
38
+ Check for symmetric relationships in a dataframe of network neighbors.
39
+ For each source-target pair, checks if the reverse target-source pair exists.
40
+
41
+ Args:
42
+ df: pandas DataFrame with columns 'SOURCE_NAME' and 'TARGET_NAME'
43
+
44
+ Returns:
45
+ DataFrame with added 'SYMETRIQUE' column ('YES' if symmetric, 'NO' otherwise)
46
+ """
47
+ # Create a set of all (source, target) pairs for fast lookup
48
+ pairs = set(zip(df["SOURCE_NAME"], df["TARGET_NAME"]))
49
+
50
+ # Check for each row if the reverse relationship exists
51
+ df["SYMETRIQUE"] = df.apply(
52
+ lambda row: (
53
+ "YES" if (row["TARGET_NAME"], row["SOURCE_NAME"]) in pairs else "NO"
54
+ ),
55
+ axis=1,
56
+ )
57
+
58
+ return df
59
+
60
+
61
  def process_neighbors_data(file_path: str):
62
  """
63
  Process data from the specified file path.
 
109
  df_adce_final.rename(
110
  columns={"ID_BTS": "SOURCE_ID", "lac_id": "TARGET_LAC_ID"}, inplace=True
111
  )
112
+ df_adce_final = check_symmetry(df_adce_final)
113
 
114
  # process ADJS data
115
  df_adjs = dfs["ADJS"]
 
146
  df_adjs_final.rename(
147
  columns={"ID_WCEL": "SOURCE_ID", "lac_id": "TARGET_LAC_ID"}, inplace=True
148
  )
149
+ df_adjs_final = check_symmetry(df_adjs_final)
150
 
151
  # process ADJI DATA
152
  df_adji = dfs["ADJI"]
 
167
  df_adji_final.rename(
168
  columns={"ID_WCEL": "SOURCE_ID", "lac_id": "TARGET_LAC_ID"}, inplace=True
169
  )
170
+ df_adji_final = check_symmetry(df_adji_final)
171
 
172
  # process ADJG DATA
173
  df_adjg = dfs["ADJG"]