KeshavaKumar/Personalized_Medicine_Composition_Optimization
0
1import pandas as pd
2
3def optimize_composition(disease, medicine_df):
4 """Optimize tablet composition by filtering out unnecessary chemicals while maintaining effectiveness."""
5 filtered_meds = medicine_df[medicine_df["Uses"].str.contains(disease, case=False, na=False)]
6 if filtered_meds.empty:
7 return "No medicine found for this disease."
8
9 optimized_compositions = []
10 for _, row in filtered_meds.iterrows():
11 composition = row["Composition"].split(",")
12 side_effects = row["Side_effects"].split(",") if pd.notna(row["Side_effects"]) else []
13
14 # Remove chemicals linked to common side effects
15 optimized_comp = [chem.strip() for chem in composition if chem.strip().lower() not in [s.lower() for s in side_effects]]
16 removed_chemicals = [chem.strip() for chem in composition if chem.strip().lower() in [s.lower() for s in side_effects]]
17
18 optimized_compositions.append({
19 "Medicine Name": row["Medicine Name"],
20 "Previous Composition": row["Composition"],
21 "Optimized Composition": ", ".join(optimized_comp),
22 "Removed Chemicals": ", ".join(removed_chemicals) if removed_chemicals else "None",
23 "Manufacturer": row["Manufacturer"],
24 "Description": f"For {row['Medicine Name']}, the optimized composition removes unnecessary chemicals ({', '.join(removed_chemicals) if removed_chemicals else 'None'}) to minimize side effects while retaining effectiveness."
25 })
26
27 return pd.DataFrame(optimized_compositions)
28
29# Load medicine dataset
30medicine_df = pd.read_csv("Medicine_Details.csv")
31
32# Example usage
33disease_input = "Bacterial infections"
34optimized_meds = optimize_composition(disease_input, medicine_df)
35print(optimized_meds)
36 