Spaces:
Running
Running
Update main.py
Browse files
main.py
CHANGED
@@ -63,20 +63,32 @@ async def retrieve_trial(request: QueryRequest):
|
|
63 |
|
64 |
matched_trials = []
|
65 |
for idx, dist in zip(indices[0], distances[0]):
|
66 |
-
if idx < len(df_trials):
|
67 |
nct_id = df_trials.iloc[idx]["NCT Number"]
|
68 |
trial_data = get_trial_info(nct_id)
|
69 |
|
70 |
if trial_data:
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
else:
|
75 |
-
trial_data["similarity"] = float(round(100 / (1 + dist), 2))
|
76 |
|
|
|
|
|
|
|
77 |
matched_trials.append(trial_data)
|
78 |
|
79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
|
81 |
# --- Root Endpoint ---
|
82 |
@app.get("/")
|
|
|
63 |
|
64 |
matched_trials = []
|
65 |
for idx, dist in zip(indices[0], distances[0]):
|
66 |
+
if idx < len(df_trials):
|
67 |
nct_id = df_trials.iloc[idx]["NCT Number"]
|
68 |
trial_data = get_trial_info(nct_id)
|
69 |
|
70 |
if trial_data:
|
71 |
+
# **NEW FIX: Ensure distance is a valid number**
|
72 |
+
if np.isnan(dist) or np.isinf(dist):
|
73 |
+
dist = 1e9 # Set large number instead of NaN/Inf
|
|
|
|
|
74 |
|
75 |
+
similarity = float(round(100 / (1 + dist), 2))
|
76 |
+
trial_data["similarity"] = max(0.0, similarity) # No negative similarity
|
77 |
+
|
78 |
matched_trials.append(trial_data)
|
79 |
|
80 |
+
# **NEW FIX: Convert NaN values to None before returning JSON**
|
81 |
+
def clean_json(data):
|
82 |
+
if isinstance(data, dict):
|
83 |
+
return {k: clean_json(v) for k, v in data.items()}
|
84 |
+
elif isinstance(data, list):
|
85 |
+
return [clean_json(v) for v in data]
|
86 |
+
elif isinstance(data, float) and (np.isnan(data) or np.isinf(data)):
|
87 |
+
return None # Convert NaN/Inf to None
|
88 |
+
return data
|
89 |
+
|
90 |
+
return {"matched_trials": clean_json(matched_trials)}
|
91 |
+
|
92 |
|
93 |
# --- Root Endpoint ---
|
94 |
@app.get("/")
|