Powered By Blogger

Thursday, February 20, 2025

Binding Affinity Code MB + TP53

DATAFRAME:

import pandas as pd

import json


# Binding Affinity Data (Hardcoded from your input)

binding_affinity_json = """

[

    {

        "Model": 1,

        "Calculated affinity (kcal/mol)": -8.216

    },

    {

        "Model": 2,

        "Calculated affinity (kcal/mol)": -7.926

    },

    {

        "Model": 3,

        "Calculated affinity (kcal/mol)": -7.855

    },

    {

        "Model": 4,

        "Calculated affinity (kcal/mol)": -7.572

    },

    {

        "Model": 5,

        "Calculated affinity (kcal/mol)": -7.552

    },

    {

        "Model": 6,

        "Calculated affinity (kcal/mol)": -7.472

    },

    {

        "Model": 7,

        "Calculated affinity (kcal/mol)": -7.465

    },

    {

        "Model": 8,

        "Calculated affinity (kcal/mol)": -7.444

    },

    {

        "Model": 9,

        "Calculated affinity (kcal/mol)": -7.435

    },

    {

        "Model": 10,

        "Calculated affinity (kcal/mol)": -7.264

    },

    {

        "Model": 11,

        "Calculated affinity (kcal/mol)": -7.247

    },

    {

        "Model": 12,

        "Calculated affinity (kcal/mol)": -7.237

    },

    {

        "Model": 13,

        "Calculated affinity (kcal/mol)": -7.183

    },

    {

        "Model": 14,

        "Calculated affinity (kcal/mol)": -7.098

    },

    {

        "Model": 15,

        "Calculated affinity (kcal/mol)": -7.095

    },

    {

        "Model": 16,

        "Calculated affinity (kcal/mol)": -7.052

    },

    {

        "Model": 17,

        "Calculated affinity (kcal/mol)": -6.903

    },

    {

        "Model": 18,

        "Calculated affinity (kcal/mol)": -6.786

    },

    {

        "Model": 19,

        "Calculated affinity (kcal/mol)": -6.644

    },

    {

        "Model": 20,

        "Calculated affinity (kcal/mol)": -6.635

    }

]

"""


binding_affinity_data = json.loads(binding_affinity_json)

binding_affinity_df = pd.DataFrame(binding_affinity_data)


print("Binding Affinity Data (DataFrame):")

print(binding_affinity_df)


ML CODE:


import pandas as pd

import json

from sklearn.model_selection import train_test_split

from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor

from sklearn.svm import SVR

from sklearn.metrics import mean_squared_error, r2_score

from sklearn.preprocessing import StandardScaler

from sklearn.pipeline import Pipeline


# Binding Affinity Data (Hardcoded from your input)

binding_affinity_json = """

[

    {

        "Model": 1,

        "Calculated affinity (kcal/mol)": -8.216

    },

    {

        "Model": 2,

        "Calculated affinity (kcal/mol)": -7.926

    },

    {

        "Model": 3,

        "Calculated affinity (kcal/mol)": -7.855

    },

    {

        "Model": 4,

        "Calculated affinity (kcal/mol)": -7.572

    },

    {

        "Model": 5,

        "Calculated affinity (kcal/mol)": -7.552

    },

    {

        "Model": 6,

        "Calculated affinity (kcal/mol)": -7.472

    },

    {

        "Model": 7,

        "Calculated affinity (kcal/mol)": -7.465

    },

    {

        "Model": 8,

        "Calculated affinity (kcal/mol)": -7.444

    },

    {

        "Model": 9,

        "Calculated affinity (kcal/mol)": -7.435

    },

    {

        "Model": 10,

        "Calculated affinity (kcal/mol)": -7.264

    },

    {

        "Model": 11,

        "Calculated affinity (kcal/mol)": -7.247

    },

    {

        "Model": 12,

        "Calculated affinity (kcal/mol)": -7.237

    },

    {

        "Model": 13,

        "Calculated affinity (kcal/mol)": -7.183

    },

    {

        "Model": 14,

        "Calculated affinity (kcal/mol)": -7.098

    },

    {

        "Model": 15,

        "Calculated affinity (kcal/mol)": -7.095

    },

    {

        "Model": 16,

        "Calculated affinity (kcal/mol)": -7.052

    },

    {

        "Model": 17,

        "Calculated affinity (kcal/mol)": -6.903

    },

    {

        "Model": 18,

        "Calculated affinity (kcal/mol)": -6.786

    },

    {

        "Model": 19,

        "Calculated affinity (kcal/mol)": -6.644

    },

    {

        "Model": 20,

        "Calculated affinity (kcal/mol)": -6.635

    }

]

"""


binding_affinity_data = json.loads(binding_affinity_json)

binding_affinity_df = pd.DataFrame(binding_affinity_data)


# Data Cleaning: Remove rows with null values

binding_affinity_df = binding_affinity_df.dropna()


# Define features (X) and target (y)

X = binding_affinity_df[['Model']]

y = binding_affinity_df['Calculated affinity (kcal/mol)']


# Data Splitting

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)


# --- Regression Models ---

# 1. Random Forest Regressor

rf_pipeline = Pipeline([

    ('scaler', StandardScaler()),

    ('rf', RandomForestRegressor(random_state=42))

])


# 2. Gradient Boosting Regressor

gb_pipeline = Pipeline([

    ('scaler', StandardScaler()),

    ('gb', GradientBoostingRegressor(random_state=42))

])


# 3. Support Vector Regressor

svr_pipeline = Pipeline([

    ('scaler', StandardScaler()),

    ('svr', SVR())

])


# --- Training and Evaluation ---

def train_evaluate_regressor(pipeline, model_name, X_train, y_train, X_test, y_test):

    print(f"Training and Evaluating {model_name}...")

    pipeline.fit(X_train, y_train)

    y_pred = pipeline.predict(X_test)

    mse = mean_squared_error(y_test, y_pred)

    r2 = r2_score(y_test, y_pred)

    print(f"{model_name} Mean Squared Error: {mse:.4f}")

    print(f"{model_name} R-squared: {r2:.4f}")

    return pipeline


# Train and Evaluate Models

rf_pipeline = train_evaluate_regressor(rf_pipeline, "Random Forest", X_train, y_train, X_test, y_test)

gb_pipeline = train_evaluate_regressor(gb_pipeline, "Gradient Boosting", X_train, y_train, X_test, y_test)

svr_pipeline = train_evaluate_regressor(svr_pipeline, "Support Vector Regression", X_train, y_train, X_test, y_test)


Binding Affinity of MP + TP53 © 2025 by Mrinmoy Chakraborty is licensed under CC BY-NC-ND 4.0 

No comments:

Post a Comment

From Paikpara’s Lanes to Titagarh’s Bazaar—My Food Memories

  Hello, I'm a food lover born in Paikpara, Kolkata. From 1957 to 1996, I grew up in the lanes of Paikpara, and now I live in Rahara. My...