{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":67356,"databundleVersionId":8006601,"sourceType":"competition"},{"sourceId":8306040,"sourceType":"datasetVersion","datasetId":4934096}],"dockerImageVersionId":30698,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"ac1eaacc-3ae6-4d60-9510-4b5927ba480b","_cell_guid":"03d74d4a-0ba6-4c4d-94ee-49894e9859de","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:10:38.385618Z","iopub.execute_input":"2024-05-04T21:10:38.386160Z","iopub.status.idle":"2024-05-04T21:10:39.290721Z","shell.execute_reply.started":"2024-05-04T21:10:38.386116Z","shell.execute_reply":"2024-05-04T21:10:39.289833Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install duckdb\n!pip install rdkit","metadata":{"_uuid":"eff52825-c1bc-4ff1-b86c-b25d93b51ee5","_cell_guid":"67938678-fdee-44cc-93ed-517a957f7b2b","collapsed":false,"scrolled":true,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:10:42.815175Z","iopub.execute_input":"2024-05-04T21:10:42.815633Z","iopub.status.idle":"2024-05-04T21:11:11.258201Z","shell.execute_reply.started":"2024-05-04T21:10:42.815595Z","shell.execute_reply":"2024-05-04T21:11:11.257228Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport numpy as np\nfrom tqdm import tqdm\nimport duckdb\nfrom rdkit import Chem\nfrom rdkit.Chem import AllChem\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.preprocessing import OneHotEncoder\nfrom xgboost import XGBClassifier\nfrom catboost import CatBoostClassifier\nfrom lightgbm import LGBMClassifier\nfrom sklearn.metrics import average_precision_score\n\nfrom sklearn.svm import SVC\nfrom sklearn.ensemble import StackingClassifier, VotingClassifier, BaggingClassifier, RandomForestClassifier\nfrom sklearn.neural_network import MLPClassifier\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.calibration import CalibratedClassifierCV","metadata":{"_uuid":"c31163d5-46c7-4940-9282-a7fa6cfd09f8","_cell_guid":"d1db1179-371a-42be-b6bf-ba0fdb9faa9a","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:11:11.260069Z","iopub.execute_input":"2024-05-04T21:11:11.260368Z","iopub.status.idle":"2024-05-04T21:11:15.100573Z","shell.execute_reply.started":"2024-05-04T21:11:11.260341Z","shell.execute_reply":"2024-05-04T21:11:15.099808Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntrain_path = '/kaggle/input/leash-BELKA/train.parquet'\ntest_path = '/kaggle/input/leash-BELKA/test.parquet'\n\ncon = duckdb.connect()\n\ntrain_df = con.query(f\"\"\"(SELECT *\n                        FROM parquet_scan('{train_path}')\n                        WHERE binds = 0\n                        ORDER BY random()\n                        LIMIT 5000)\n                        UNION ALL\n                        (SELECT *\n                        FROM parquet_scan('{train_path}')\n                        WHERE binds = 1\n                        ORDER BY random()\n                        LIMIT 5000)\"\"\").df()\n\ncon.close()","metadata":{"_uuid":"8e1354b0-7ece-4f53-ad24-73f961872754","_cell_guid":"f2adf644-fe4d-4ad9-8bbd-3195bb9ed380","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:11:15.101629Z","iopub.execute_input":"2024-05-04T21:11:15.101917Z","iopub.status.idle":"2024-05-04T21:12:02.573973Z","shell.execute_reply.started":"2024-05-04T21:11:15.101893Z","shell.execute_reply":"2024-05-04T21:12:02.573034Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df = pd.read_csv('/kaggle/input/leash-bio-traintest-pre-processed-files/Test_preprocessed.csv')","metadata":{"_uuid":"af9575ad-0a98-4cd5-ade1-f5d7fd801a69","_cell_guid":"806054a0-5b83-45d2-b3e6-7400adef36fb","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:02.576453Z","iopub.execute_input":"2024-05-04T21:12:02.576752Z","iopub.status.idle":"2024-05-04T21:12:03.425447Z","shell.execute_reply.started":"2024-05-04T21:12:02.576726Z","shell.execute_reply":"2024-05-04T21:12:03.424380Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df","metadata":{"_uuid":"2686f9aa-77fc-42fa-9883-aa95584c976e","_cell_guid":"b850ec8f-e9c1-4a56-bf7c-447f65afaf0e","collapsed":false,"execution":{"iopub.status.busy":"2024-05-04T20:29:50.517700Z","iopub.execute_input":"2024-05-04T20:29:50.518220Z","iopub.status.idle":"2024-05-04T20:29:50.546501Z","shell.execute_reply.started":"2024-05-04T20:29:50.518189Z","shell.execute_reply":"2024-05-04T20:29:50.545452Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **New Mixed approach**","metadata":{"_uuid":"19213ac8-85fd-489b-8603-cd54136b71f5","_cell_guid":"27c20066-d485-4f20-9aa5-c217e451db92","trusted":true}},{"cell_type":"code","source":"from rdkit import Chem\nfrom rdkit.Chem import AllChem, MolFromSmiles\nfrom rdkit.Chem.Descriptors import ExactMolWt \nfrom rdkit.Chem.rdMolDescriptors import CalcNumHBA , CalcNumHBD , CalcTPSA , CalcNumRotatableBonds\nfrom rdkit.Chem.Crippen import MolLogP \n \n\n\ndef count_atoms_bonds_charges(smiles):\n    # Parse SMILES into RDKit Mol object\n    mol = MolFromSmiles(smiles)    \n    # Calculate the number of atoms and bonds\n    atom_count = mol.GetNumAtoms()\n    bond_count = mol.GetNumBonds()\n    # Calculate the molecular weight\n    molecular_weight = ExactMolWt(mol)\n    molecular_weight = round(molecular_weight, 2)\n\n    logP = MolLogP(mol)\n    logP = round(logP , 2)\n    hb_acceptor = CalcNumHBA(mol)\n    hb_donor = CalcNumHBD(mol)\n    \n    tpsa = CalcTPSA(mol)\n    \n    rotatable_bond = CalcNumRotatableBonds(mol)\n    \n    # Calculate the number of charges (positive and negative)\n    try:\n        charges = [atom.GetProp('_Charge') for atom in mol.GetAtoms()]\n        pos_charges = len([c for c in charges if c > 0])\n        neg_charges = len([c for c in charges if c < 0])\n        \n        \n    except KeyError:\n        pos_charges = 0\n        neg_charges = 0\n    \n    return {\n        'atoms': atom_count,\n        'bonds': bond_count,\n        'positive_charges': pos_charges,\n        'negative_charges': neg_charges,\n        'molecular_weight' : molecular_weight,\n        'LogP' : logP ,\n        'HBA' : hb_acceptor ,\n        'HBD' : hb_donor,\n        'TPSA' : tpsa ,\n        'Rotatable Bonds' : rotatable_bond\n    }","metadata":{"_uuid":"c179a6bc-5e6d-414f-be28-4bca714b2c6d","_cell_guid":"1d1b9464-6eef-4f3b-abf4-6c60dad776d3","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:03.426973Z","iopub.execute_input":"2024-05-04T21:12:03.427740Z","iopub.status.idle":"2024-05-04T21:12:03.458143Z","shell.execute_reply.started":"2024-05-04T21:12:03.427712Z","shell.execute_reply":"2024-05-04T21:12:03.457361Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"molecule_smiles = []\nfor i in train_df['molecule_smiles']:\n    molecule_smiles.append(i)\n    \nfrom tqdm import tqdm\nr = []\nfor i in tqdm(molecule_smiles):\n    result = count_atoms_bonds_charges(i)\n    r.append(result)","metadata":{"_uuid":"03df4f89-1956-4bd0-b009-05dcdd5c940b","_cell_guid":"239e1f5d-0d99-46d1-a823-c2b54714c38d","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:03.459367Z","iopub.execute_input":"2024-05-04T21:12:03.459732Z","iopub.status.idle":"2024-05-04T21:12:18.819337Z","shell.execute_reply.started":"2024-05-04T21:12:03.459701Z","shell.execute_reply":"2024-05-04T21:12:18.818430Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data = r\nids = train_df['id']\natoms = []\nbonds = []\npositive_charges = []\nnegative_charges = []\nndfids = []\nprotein_names = []\nmolecular_weights = []\nlogPs = []\nhb_acceptors = []\nhb_donors = []\ntpsas = [] \nrotatable_bonds = []\nbinds = []\n\nfor i in tqdm(range(0,len(data))):\n    ndfids.append(ids[i])\n    atoms.append(data[i]['atoms'])\n    bonds.append(data[i]['bonds'])\n    positive_charges.append(data[i]['positive_charges'])\n    negative_charges.append(data[i]['negative_charges'])\n    protein_names.append(train_df['protein_name'][i])\n    molecular_weights.append(data[i]['molecular_weight'])\n    logPs.append(data[i]['LogP'])\n    hb_acceptors.append(data[i]['HBA'])\n    hb_donors.append(data[i]['HBD'])\n    tpsas.append(data[i]['TPSA'])\n    rotatable_bonds.append(data[i]['Rotatable Bonds'])\n    \n    \ndf_molecule_smiles = pd.DataFrame()\ndf_molecule_smiles['ids'] = ndfids\ndf_molecule_smiles['protein_names'] = protein_names\ndf_molecule_smiles['Atoms'] = atoms\ndf_molecule_smiles['Bonds'] = bonds \ndf_molecule_smiles['molecular weight'] = molecular_weights\ndf_molecule_smiles['LogP'] = logPs\ndf_molecule_smiles['HBA'] = hb_acceptors\ndf_molecule_smiles['HBD'] = hb_donors\ndf_molecule_smiles['TPSA'] = tpsas\ndf_molecule_smiles['Rotatable Bonds'] = rotatable_bonds\ndf_molecule_smiles['binds'] = train_df['binds']\n\ntrain_df = df_molecule_smiles\ntrain_df.to_csv('train_preprocessed.csv')","metadata":{"_uuid":"f74daee6-8646-48a2-b6de-9a330c5fbe93","_cell_guid":"01b319b8-aca2-4dd7-ba87-d3e6f291aa5c","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:18.820720Z","iopub.execute_input":"2024-05-04T21:12:18.821166Z","iopub.status.idle":"2024-05-04T21:12:19.210496Z","shell.execute_reply.started":"2024-05-04T21:12:18.821132Z","shell.execute_reply":"2024-05-04T21:12:19.209504Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"RANDOM_STATE = 42\n\nonehot_encoder = OneHotEncoder(sparse_output=False)\nprotein_onehot = onehot_encoder.fit_transform(train_df['protein_names'].values.reshape(-1, 1))\ntrain_df['protein_names'] = protein_onehot\ntrain_df","metadata":{"_uuid":"a9508559-28c1-41a2-b379-639523df8a66","_cell_guid":"23906f52-2771-4450-ae02-4f2b526d9f6d","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:19.211969Z","iopub.execute_input":"2024-05-04T21:12:19.212321Z","iopub.status.idle":"2024-05-04T21:12:19.250753Z","shell.execute_reply.started":"2024-05-04T21:12:19.212288Z","shell.execute_reply":"2024-05-04T21:12:19.249843Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = train_df[['protein_names', 'Atoms', 'Bonds', 'molecular weight', 'LogP','HBA', 'HBD', 'TPSA', 'Rotatable Bonds']]\ny = train_df['binds']","metadata":{"_uuid":"8f7a6347-5dbe-4d7c-aabe-80dd60b41a16","_cell_guid":"2adc47a4-8e8e-4a84-85bc-c02758dd00a8","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:19.252084Z","iopub.execute_input":"2024-05-04T21:12:19.252418Z","iopub.status.idle":"2024-05-04T21:12:19.259771Z","shell.execute_reply.started":"2024-05-04T21:12:19.252386Z","shell.execute_reply":"2024-05-04T21:12:19.258775Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.ensemble import RandomForestRegressor\nimport matplotlib.pyplot as plt\n\nrf_regressor = RandomForestRegressor(random_state=0)\nrf_regressor.fit(X, y)\n\nrf_importances = rf_regressor.feature_importances_\nrf_sorted_indices = np.argsort(rf_importances)[::-1]\n\n# Select features with non-zero importance\nthreshold = 0.02  # Set a threshold for feature importance\nrf_selected_features = X.columns[rf_importances > threshold]\nrf_X_filtered = X[rf_selected_features]\n\n# Plot feature importances\nplt.figure(figsize=(10, 6))\nplt.title(\"Random Forest Feature Importances\")\nplt.bar(range(X.shape[1]), rf_importances[rf_sorted_indices], align='center')\nplt.xticks(range(X.shape[1]), X.columns[rf_sorted_indices], rotation=90)\nplt.xlabel(\"Feature\")\nplt.ylabel(\"Feature Importance\")\nplt.show()","metadata":{"_uuid":"a8c6356b-a3e2-48f2-9a03-cb622e69ad13","_cell_guid":"979aeaa6-7d00-4b1b-921f-1544314d4eb8","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:19.263647Z","iopub.execute_input":"2024-05-04T21:12:19.264071Z","iopub.status.idle":"2024-05-04T21:12:23.245515Z","shell.execute_reply.started":"2024-05-04T21:12:19.264038Z","shell.execute_reply":"2024-05-04T21:12:23.244619Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"mx = rf_importances[rf_sorted_indices].max()\nmn = rf_importances[rf_sorted_indices].min()\nn = X.columns[rf_sorted_indices]\ns = rf_importances[rf_sorted_indices]\nprint('\\n***** Feature Importance of Random Forest *****\\n')\nfor i in range(0 , len(s)):      \n    if s[i] == mx:\n        print(f'{n[i]} = {s[i]} ,\\n{n[i+1]} = {s[i+1]} ,\\n{n[i+2]} = {s[i+2]}')\n        break\n    else:\n        continue","metadata":{"_uuid":"b734e494-3262-407d-9552-2e5ab1d50cc2","_cell_guid":"7305d13d-c741-4e4e-8d2b-af26fffa1aed","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:23.246724Z","iopub.execute_input":"2024-05-04T21:12:23.247110Z","iopub.status.idle":"2024-05-04T21:12:23.254227Z","shell.execute_reply.started":"2024-05-04T21:12:23.247067Z","shell.execute_reply":"2024-05-04T21:12:23.253207Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.columns","metadata":{"_uuid":"e0e0350f-dc8a-483f-8782-7cf26328d75a","_cell_guid":"59218c69-879a-42c7-b234-01ab3e2fb725","collapsed":false,"execution":{"iopub.status.busy":"2024-05-04T20:30:12.517927Z","iopub.execute_input":"2024-05-04T20:30:12.518238Z","iopub.status.idle":"2024-05-04T20:30:12.530523Z","shell.execute_reply.started":"2024-05-04T20:30:12.518212Z","shell.execute_reply":"2024-05-04T20:30:12.529376Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import seaborn as sns\nsns.heatmap(train_df.loc[:,'protein_names':'binds'].corr(),annot=True)\nplt.title('Molecule SMILES')\nplt.show()","metadata":{"_uuid":"6dd23ade-278f-4da9-aa53-a646fd65f692","_cell_guid":"48d81334-a1b7-4d21-8770-07c4f88bb75f","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:23.255488Z","iopub.execute_input":"2024-05-04T21:12:23.255855Z","iopub.status.idle":"2024-05-04T21:12:23.943433Z","shell.execute_reply.started":"2024-05-04T21:12:23.255824Z","shell.execute_reply":"2024-05-04T21:12:23.942528Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import seaborn as sns\n\nsns.heatmap(train_df.loc[:,'protein_names':'binds'].corr() < 0.7,annot=True)\nplt.title('Molecule SMILES')\nplt.show()","metadata":{"_uuid":"b502437b-a507-447f-afbd-be34e6c50c7d","_cell_guid":"fd707df3-7d86-4561-8376-040a0a33ac21","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:23.944422Z","iopub.execute_input":"2024-05-04T21:12:23.944699Z","iopub.status.idle":"2024-05-04T21:12:24.400663Z","shell.execute_reply.started":"2024-05-04T21:12:23.944674Z","shell.execute_reply":"2024-05-04T21:12:24.399609Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.preprocessing import StandardScaler, MinMaxScaler\n\n\nscaler = StandardScaler()\n\nrf_X_scaled_standardized = scaler.fit_transform(rf_X_filtered)\n\n# Normalization (Min-Max scaling)\nmin_max_scaler = MinMaxScaler()\nrf_X_scaled_normalized = min_max_scaler.fit_transform(X)\n\nrf_X_filtered.columns","metadata":{"_uuid":"468c0bec-0c97-4314-8853-ab2b8b8d6435","_cell_guid":"2504cf85-be78-405f-91a3-a65d22f46c64","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:24.402109Z","iopub.execute_input":"2024-05-04T21:12:24.402456Z","iopub.status.idle":"2024-05-04T21:12:24.419316Z","shell.execute_reply.started":"2024-05-04T21:12:24.402424Z","shell.execute_reply":"2024-05-04T21:12:24.418194Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\n\nX= train_df[['molecular weight','LogP','TPSA']]\ny= train_df['binds']\n\nX_train,X_test,y_train,y_test=train_test_split(X,y, test_size=0.2, random_state=42)\n# Scale the features\nscaler = StandardScaler()\nX_train_scaled = scaler.fit_transform(X_train)\nX_test_scaled = scaler.transform(X_test)","metadata":{"_uuid":"7b6a8c8c-2d09-44bc-8aad-315e4ad08aeb","_cell_guid":"0bff7056-4c62-4019-939d-ab978ab2a03d","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:24.420519Z","iopub.execute_input":"2024-05-04T21:12:24.420826Z","iopub.status.idle":"2024-05-04T21:12:24.437151Z","shell.execute_reply.started":"2024-05-04T21:12:24.420778Z","shell.execute_reply":"2024-05-04T21:12:24.436154Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn import svm\n\nfrom sklearn.metrics import mean_squared_error\n\n\n# Create an SVM classifier\nclf = svm.SVR(kernel='rbf')\n\n# Train the classifier on the training data\nclf.fit(X_train, y_train)","metadata":{"_uuid":"a7ce1975-457f-4f85-bc35-0d662c85bab7","_cell_guid":"608e381a-b1d1-4fc1-b557-7b6bec52bcdd","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:38.198554Z","iopub.execute_input":"2024-05-04T21:12:38.199338Z","iopub.status.idle":"2024-05-04T21:12:40.556936Z","shell.execute_reply.started":"2024-05-04T21:12:38.199304Z","shell.execute_reply":"2024-05-04T21:12:40.556000Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.metrics import confusion_matrix\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\n# Get predictions on the test data\ny_pred = clf.predict(X_test)\n\nmse = mean_squared_error(y_test, y_pred)\nprint(f\"Mean Squared Error: {mse}\")","metadata":{"_uuid":"8b21af17-95d8-4962-b81c-749d7250b5ce","_cell_guid":"7d30fbb8-ded6-4406-b611-e65ac503dbdf","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:42.660939Z","iopub.execute_input":"2024-05-04T21:12:42.661304Z","iopub.status.idle":"2024-05-04T21:12:43.256871Z","shell.execute_reply.started":"2024-05-04T21:12:42.661276Z","shell.execute_reply":"2024-05-04T21:12:43.255848Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df = pd.read_csv('/kaggle/input/leash-BELKA/test.csv')\ntest_df","metadata":{"_uuid":"05157a02-31ff-4fea-8003-b8b4160a40fa","_cell_guid":"1dc85f93-f844-406b-9677-3ae20221009b","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:47.714124Z","iopub.execute_input":"2024-05-04T21:12:47.714500Z","iopub.status.idle":"2024-05-04T21:12:54.061723Z","shell.execute_reply.started":"2024-05-04T21:12:47.714472Z","shell.execute_reply":"2024-05-04T21:12:54.060831Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"molecule_smiles = []\nfor i in test_df['molecule_smiles']:\n    molecule_smiles.append(i)","metadata":{"_uuid":"a79ebf7e-57d9-4c54-869e-d93b0622cb46","_cell_guid":"064c078a-a127-439c-a39f-4a2e88e72015","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:54.063485Z","iopub.execute_input":"2024-05-04T21:12:54.063785Z","iopub.status.idle":"2024-05-04T21:12:54.445593Z","shell.execute_reply.started":"2024-05-04T21:12:54.063760Z","shell.execute_reply":"2024-05-04T21:12:54.444819Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tqdm.auto import tqdm\n\nr = []\n\nfor i in tqdm(molecule_smiles[0:200000]):\n    result = count_atoms_bonds_charges(i)\n    r.append(result)","metadata":{"_uuid":"78a6ee4e-6d73-4559-8f67-c1250e2373a2","_cell_guid":"cfb3cc38-26c8-4889-a555-b42675375d8e","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:12:54.446945Z","iopub.execute_input":"2024-05-04T21:12:54.447211Z","iopub.status.idle":"2024-05-04T21:17:56.264589Z","shell.execute_reply.started":"2024-05-04T21:12:54.447187Z","shell.execute_reply":"2024-05-04T21:17:56.263659Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in tqdm(molecule_smiles[200000:400000]):\n    result = count_atoms_bonds_charges(i)\n    r.append(result)","metadata":{"_uuid":"53c5e352-9213-4c19-856f-3985573bf23f","_cell_guid":"35337d58-791d-4476-8b55-07d8e72311cc","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:27:15.080663Z","iopub.execute_input":"2024-05-04T21:27:15.081039Z","iopub.status.idle":"2024-05-04T21:32:23.405547Z","shell.execute_reply.started":"2024-05-04T21:27:15.081013Z","shell.execute_reply":"2024-05-04T21:32:23.404456Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in tqdm(molecule_smiles[400000:800000]):\n    result = count_atoms_bonds_charges(i)\n    r.append(result)","metadata":{"execution":{"iopub.status.busy":"2024-05-04T21:32:50.437329Z","iopub.execute_input":"2024-05-04T21:32:50.438064Z","iopub.status.idle":"2024-05-04T21:43:14.989502Z","shell.execute_reply.started":"2024-05-04T21:32:50.438030Z","shell.execute_reply":"2024-05-04T21:43:14.988624Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pd.DataFrame(r).to_csv('800Ts_test_preprocessed.csv')","metadata":{"execution":{"iopub.status.busy":"2024-05-04T21:44:21.467406Z","iopub.execute_input":"2024-05-04T21:44:21.468265Z","iopub.status.idle":"2024-05-04T21:44:30.093752Z","shell.execute_reply.started":"2024-05-04T21:44:21.468221Z","shell.execute_reply":"2024-05-04T21:44:30.092834Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in tqdm(molecule_smiles[800000:1000000]):\n    result = count_atoms_bonds_charges(i)\n    r.append(result)","metadata":{"_uuid":"15958adc-8cd0-4874-8fd0-1301f51c4cdd","_cell_guid":"cc4a1361-990e-4b05-9191-fdff5987d120","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T21:44:47.788869Z","iopub.execute_input":"2024-05-04T21:44:47.789729Z","iopub.status.idle":"2024-05-04T21:49:58.168700Z","shell.execute_reply.started":"2024-05-04T21:44:47.789692Z","shell.execute_reply":"2024-05-04T21:49:58.167777Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in tqdm(molecule_smiles[1000000:1300000]):\n    result = count_atoms_bonds_charges(i)\n    r.append(result)","metadata":{"execution":{"iopub.status.busy":"2024-05-04T21:50:12.743063Z","iopub.execute_input":"2024-05-04T21:50:12.743551Z","iopub.status.idle":"2024-05-04T21:57:58.193583Z","shell.execute_reply.started":"2024-05-04T21:50:12.743518Z","shell.execute_reply":"2024-05-04T21:57:58.192678Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in tqdm(molecule_smiles[1300000:]):\n    result = count_atoms_bonds_charges(i)\n    r.append(result)","metadata":{"execution":{"iopub.status.busy":"2024-05-04T22:00:44.001423Z","iopub.execute_input":"2024-05-04T22:00:44.002044Z","iopub.status.idle":"2024-05-04T22:10:29.625475Z","shell.execute_reply.started":"2024-05-04T22:00:44.002012Z","shell.execute_reply":"2024-05-04T22:10:29.624506Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pd.DataFrame(r).to_csv('1.67Ms_test_preprocessed.csv')","metadata":{"execution":{"iopub.status.busy":"2024-05-04T22:11:26.268218Z","iopub.execute_input":"2024-05-04T22:11:26.268923Z","iopub.status.idle":"2024-05-04T22:11:44.474124Z","shell.execute_reply.started":"2024-05-04T22:11:26.268890Z","shell.execute_reply":"2024-05-04T22:11:44.473309Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data = r\nids = test_df['id']\natoms = []\nbonds = []\npositive_charges = []\nnegative_charges = []\nndfids = []\nprotein_names = []\nmolecular_weights = []\nlogPs = []\nhb_acceptors = []\nhb_donors = []\ntpsas = [] \nrotatable_bonds = []\nbinds = []\n\nfor i in tqdm(range(0,len(data))):\n    ndfids.append(ids[i])\n    atoms.append(data[i]['atoms'])\n    bonds.append(data[i]['bonds'])\n    positive_charges.append(data[i]['positive_charges'])\n    negative_charges.append(data[i]['negative_charges'])\n    protein_names.append(test_df['protein_name'][i])\n    molecular_weights.append(data[i]['molecular_weight'])\n    logPs.append(data[i]['LogP'])\n    hb_acceptors.append(data[i]['HBA'])\n    hb_donors.append(data[i]['HBD'])\n    tpsas.append(data[i]['TPSA'])\n    rotatable_bonds.append(data[i]['Rotatable Bonds'])\n    \n    \ndf_molecule_smiles = pd.DataFrame()\ndf_molecule_smiles['ids'] = ndfids\ndf_molecule_smiles['protein_names'] = protein_names\ndf_molecule_smiles['Atoms'] = atoms\ndf_molecule_smiles['Bonds'] = bonds \ndf_molecule_smiles['molecular weight'] = molecular_weights\ndf_molecule_smiles['LogP'] = logPs\ndf_molecule_smiles['HBA'] = hb_acceptors\ndf_molecule_smiles['HBD'] = hb_donors\ndf_molecule_smiles['TPSA'] = tpsas\ndf_molecule_smiles['Rotatable Bonds'] = rotatable_bonds\n\n\ntest_df = df_molecule_smiles\n\ntest_df.to_csv('test_preprocessed.csv')\ntrain_df.to_csv('train_preprocessed.csv')","metadata":{"_uuid":"4389dcf2-e726-431b-9c18-962b206725d4","_cell_guid":"bae1a643-45a9-411d-b60e-0f149721f064","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T22:11:47.051750Z","iopub.execute_input":"2024-05-04T22:11:47.052203Z","iopub.status.idle":"2024-05-04T22:12:44.519228Z","shell.execute_reply.started":"2024-05-04T22:11:47.052167Z","shell.execute_reply":"2024-05-04T22:12:44.518130Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.preprocessing import LabelEncoder\n\nle = LabelEncoder()\n\ntest_df[\"protein_names\"]  = le.fit_transform(test_df[\"protein_names\"])\n\ntest_df","metadata":{"_uuid":"1c8ac933-0f99-47cf-a012-29c8d735533a","_cell_guid":"acce7316-665a-4d05-93d2-e5734390e63f","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T22:12:44.521079Z","iopub.execute_input":"2024-05-04T22:12:44.521904Z","iopub.status.idle":"2024-05-04T22:12:44.948589Z","shell.execute_reply.started":"2024-05-04T22:12:44.521867Z","shell.execute_reply":"2024-05-04T22:12:44.947610Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Split Data for find optimize parameters in models**","metadata":{"_uuid":"81314a3b-9336-4823-9b6a-618558ce4bbf","_cell_guid":"b3b2cba4-0b29-4610-a5fc-0aa9284db1a4","trusted":true}},{"cell_type":"code","source":"sample_train = train_df[0:5000]\nsample_train = pd.concat([sample_train , train_df[-5000:]] , ignore_index= True)\nsample_train","metadata":{"_uuid":"7709f43f-4854-4722-acc8-b211a06c5f7b","_cell_guid":"d787e44b-a2ee-4212-9932-d0414be11e64","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Import the necessary libraries and modules\nfrom sklearn import svm\nimport numpy as np\nimport pandas as pd\n\n\n\n# Prepare your data\nX_train = train_df.drop(['binds','ids'], axis=1)\ny_train = train_df['binds']\n\n\n\n# Instantiate the SVR model\n# You can adjust hyperparameters like kernel, C, epsilon, gamma, etc.\nsvr = svm.SVR(gamma = 0.0001)\n\n# Fit the SVR model using the training data\nsvr.fit(X_train, y_train)","metadata":{"_uuid":"91b5d02c-b532-4ef7-80da-c911e3bdcf49","_cell_guid":"ff10cb73-f89f-4811-bd8f-54173986355a","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T22:13:14.898259Z","iopub.execute_input":"2024-05-04T22:13:14.898962Z","iopub.status.idle":"2024-05-04T22:13:18.700627Z","shell.execute_reply.started":"2024-05-04T22:13:14.898929Z","shell.execute_reply":"2024-05-04T22:13:18.699625Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_test = test_df.drop(['ids'], axis=1)\n# Make predictions on the testing data\ny_pred = svr.predict(X_test)\n\n# Create a new DataFrame with 'id' and 'binds' columns\nsubmission_df = pd.DataFrame({\n    'id': test_df['ids'],  # Assuming there is an 'id' column in the test DataFrame\n    'binds': y_pred\n})\n\n# Save the new DataFrame as a CSV file named 'submission.csv'\nsubmission_df.to_csv('submission.csv', index=False)","metadata":{"_uuid":"dc6a4c91-bcfd-419e-8ee1-ffdc32c9ad70","_cell_guid":"e186363f-45a6-4110-b739-f588ad99f4c7","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T22:15:56.913863Z","iopub.execute_input":"2024-05-04T22:15:56.914264Z","iopub.status.idle":"2024-05-04T22:26:31.193371Z","shell.execute_reply.started":"2024-05-04T22:15:56.914234Z","shell.execute_reply":"2024-05-04T22:26:31.192516Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission_df","metadata":{"_uuid":"f3cc0716-eb08-4f58-9400-851a0a22b603","_cell_guid":"cd534255-5e72-4ce5-8cc5-3388877b3da2","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-05-04T22:26:31.194923Z","iopub.execute_input":"2024-05-04T22:26:31.195199Z","iopub.status.idle":"2024-05-04T22:26:31.205148Z","shell.execute_reply.started":"2024-05-04T22:26:31.195174Z","shell.execute_reply":"2024-05-04T22:26:31.204295Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n# Make predictions on the testing data\ny_pred = svr.predict(X_test)\n\n# Evaluate the model's performance\nmse = mean_squared_error(y_test, y_pred[:2000])\nprint(f\"Mean Squared Error: {mse}\")","metadata":{"_uuid":"82c12521-70fd-4c19-a5ff-1610bdec1535","_cell_guid":"de30e7da-0754-4a99-9729-0af616a800bb","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# fig, ax = plt.subplots()\n\n# ticks = ['1' , '2' ]\n# ax.set_xticks(np.arange(len(ticks)), labels=ticks)\n# ax.set_yticks(np.arange(len(ticks)), labels=ticks)\n# plt.setp(ax.get_xticklabels(), rotation=45, ha=\"right\",\n# rotation_mode=\"anchor\")\n# s = []\n# for i in range(len(ticks)):\n#     for j in range(len(ticks)):\n#         text = ax.text(j, i, cm[i, j],\n#         ha=\"center\", va=\"center\", color=\"w\")\n#         s.append(cm[i,j])\n# plt.imshow(cm)\n# cbar = plt.colorbar()\n# cbar.set_label('Value')\n# plt.title(f\"SVM approach 1\\nAccuracy={ '%0.2f' % (accuracy*100)} %\")","metadata":{"_uuid":"40a29942-e5fa-40d1-85d0-d441a7453c77","_cell_guid":"cf540f25-aee6-4a56-a151-daa3823842a8","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# import numpy as np\n# import pandas as pd\n# from sklearn.metrics import accuracy_score, confusion_matrix, classification_report\n# import seaborn as sns\n# import matplotlib.pyplot as plt\n\n# def model_test(model, acc, title, show=True):\n#     y_pred = model.predict(X_test)\n#     score = accuracy_score(y_test, y_pred)\n#     score *= 100\n#     score = round(score, acc)\n\n#     if show:\n#         cm = confusion_matrix(y_pred, y_test)\n\n#         fig, ax = plt.subplots()\n        \n#         ticks = ['BAS' , 'HS578T' , 'MCF7' , 'MDA-MB-231']\n#         ax.set_xticks(np.arange(len(ticks)), labels=ticks)\n#         ax.set_yticks(np.arange(len(ticks)), labels=ticks)\n#         plt.setp(ax.get_xticklabels(), rotation=45, ha=\"right\",\n#         rotation_mode=\"anchor\")\n#         s = []\n#         for i in range(len(ticks)):\n#             for j in range(len(ticks)):\n#                 text = ax.text(j, i, cm[i, j],\n#                 ha=\"center\", va=\"center\", color=\"w\")\n#                 s.append(cm[i,j])\n#         print(range(0, max(s)))\n#         plt.imshow(cm)\n#         cbar = plt.colorbar()\n#         cbar.set_label('Value')\n#         plt.title(\"{}: {}%\".format(title, score))\n\n\n#         # Display the classification report\n#         report = classification_report(y_test, y_pred)\n#         print(f\"\\nClassification Report for {title}:\\n{report}\")\n#     else:\n#         print(\"{}: {}%\".format(title, score))","metadata":{"_uuid":"e6d29c97-17cf-4d09-b2f0-d1cc565d6b84","_cell_guid":"a86d4124-8269-4de6-9cf4-b38507c23410","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# def model_train(model, name):\n#     model.fit(X_train, y_train)\n#     model_test(model, 2, name, False)\n#     return model","metadata":{"_uuid":"ad2e3acc-ecf8-4aa3-a7c5-862ca48c6ae0","_cell_guid":"bf19f87e-841c-4cee-88dc-8e0f0ffc6567","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# import matplotlib.pyplot as plt\n# import seaborn as sns\n# from sklearn.model_selection import train_test_split\n# from sklearn.metrics import accuracy_score\n# from sklearn.preprocessing import LabelEncoder\n# from sklearn.metrics import confusion_matrix\n# from sklearn.svm import SVC\n# from sklearn.neighbors import KNeighborsClassifier\n# from sklearn.naive_bayes import GaussianNB\n# from sklearn.ensemble import RandomForestClassifier\n# from sklearn.tree import DecisionTreeClassifier\n# from sklearn.ensemble import AdaBoostClassifier","metadata":{"_uuid":"ca2c2dc1-cd8c-4813-88b3-218aba360ce6","_cell_guid":"25275cdb-4ece-464e-91a0-2e332bc2dd70","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# rfc = RandomForestClassifier(n_estimators = 100, max_depth=250)\n# svc = SVC(C=1,kernel='rbf')\n# gnb = GaussianNB()\n# knn = KNeighborsClassifier(n_neighbors=10)\n# dtc = DecisionTreeClassifier(max_depth=250)\n# abc = AdaBoostClassifier(n_estimators=100,learning_rate=0.5)\n# names = ['Random Forest Classifier', 'Support Vector Machine',\n#         'Gaussian Naive Bayes', 'KNeighborsClassifier',\n#         'Decision Tree Classifier', 'Ada Boost Classifier']\n# models = [rfc, svc, gnb, knn, dtc, abc]\n# print(models)","metadata":{"_uuid":"20c278ee-29fe-4369-be5d-255ca6fe1e82","_cell_guid":"7d781e80-b46f-4cc2-97fb-f53ccc60f329","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# mls = []\n# for i, j in zip(names, models):\n#     mls.append(model_train(j, i))","metadata":{"_uuid":"dd2dea19-be67-4368-b843-e05c342ae5b2","_cell_guid":"10e2aa33-f183-42c0-a213-4cacb1327458","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# predictions_test = []\n# # Calibrate probabilities on validation set\n# for model in models:\n#     calibrated_model = CalibratedClassifierCV(model, method='sigmoid', cv='prefit')\n#     calibrated_model.fit(X_val, y_val)\n#     # Evaluate calibrated model on test set\n#     calibrated_probabilities = calibrated_model.predict_proba(X_test)[:, 1]\n#     predictions_test.append(calibrated_probabilities)\n    \n# # Ensemble predictions for the test set\n# ensemble_predictions_test = np.mean(predictions_test, axis=0)","metadata":{"_uuid":"17caac0c-a3c3-4bce-97e4-4503442a53e1","_cell_guid":"9bf1c98e-4dec-4e49-a850-8a08a6a2809a","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# # Calculate the mean average precision\n# map_score = average_precision_score(y_test, ensemble_predictions_test)\n# print(f\"Mean Average Precision (mAP): {map_score:.8f}\")","metadata":{"_uuid":"c4325cc1-30ff-4c4f-9b50-8c7887e2d529","_cell_guid":"f735b794-d18b-41a6-af1a-3f4966f5f95a","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **My Old Approach**","metadata":{"_uuid":"7f55e98d-3d07-47b7-9891-66f68549d7e7","_cell_guid":"bd89df7e-67b4-4745-8f7a-2f3a03268578","trusted":true}},{"cell_type":"code","source":"# df_copy= train_df\n# df_f=df_copy[['protein_names','Bonds','Atoms','molecular weight', 'LogP', 'HBA', 'TPSA','Rotatable Bonds','binds']]\n# df_f = df_f.iloc[0:10000,:]\n# df_f","metadata":{"_uuid":"347fb0bf-f262-401a-a138-443718c3ce4c","_cell_guid":"09b67135-856e-4cc0-aab0-2bec271eeccb","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# df_f.columns","metadata":{"_uuid":"bd9d5a39-f18a-4312-a42d-3dd3e614deaa","_cell_guid":"6abde0e9-86ed-45c2-a92e-5c6255e4a580","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# import pandas as pd\n# from sklearn import svm\n# from sklearn.model_selection import train_test_split\n# from sklearn.preprocessing import LabelEncoder\n\n# le = LabelEncoder()\n\n# df_f[\"protein_names\"].loc[:\"protein_names\"] = le.fit_transform(df_f[\"protein_names\"])\n\n# X = df_f[['protein_names', 'Bonds', 'Atoms', 'molecular weight', 'LogP', 'HBA','TPSA', 'Rotatable Bonds']]\n# y = df_f[['binds']]\n\n# X_train , X_test , y_train , y_test = train_test_split(X , y, test_size = 0.2 , random_state = 42)\n# model = svm.SVC(kernel = 'linear')\n# model.fit(X , y)","metadata":{"_uuid":"c5cf802f-0409-4be9-944a-1f3a0eb3217d","_cell_guid":"cc1d402c-042d-4e02-b134-a5aeaf3fa22f","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# test_df = pd.read_csv('/kaggle/input/leash-BELKA/test.csv')\n# test_df","metadata":{"_uuid":"1bec5907-689c-4574-879b-4380430a6842","_cell_guid":"d19ba3f8-3c01-4bd5-8964-8ff3b624d930","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# molecule_smiles = []\n# for i in test_df['molecule_smiles']:\n#     molecule_smiles.append(i)\n            \n# print(f'{len(pd.Series(molecule_smiles).unique())} / {len(molecule_smiles)}')","metadata":{"_uuid":"a414ab36-5e9c-44ad-a5c5-1daae57fdb33","_cell_guid":"0e8598a3-e841-4509-b41f-eb5126281fac","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# !pip install rdkit","metadata":{"_uuid":"fa2bdabf-8e81-4fbb-97b0-22de0fe8ca60","_cell_guid":"8bd20de1-533e-4660-9417-bb3d25300fd1","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"_uuid":"a8a6c654-3663-4dad-bc72-d85f39b6d6eb","_cell_guid":"a2130594-c9af-4b1c-a3ba-113084080602","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# from tqdm import tqdm\n# r = []\n# for i in tqdm(molecule_smiles[0:500000]):\n#     result = count_atoms_bonds_charges(i)\n#     r.append(result)","metadata":{"_uuid":"f2502727-e794-4760-9a61-0f292352b2ef","_cell_guid":"328334a0-631b-429b-9740-3546940eed9b","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# r = []\n# for i in tqdm(molecule_smiles[500000:]):\n#     result = count_atoms_bonds_charges(i)\n#     r.append(result)","metadata":{"_uuid":"db56fb92-1c48-40ee-b4ab-398c87483334","_cell_guid":"f764b7bc-be18-4d0b-99a2-61bf6f548fa8","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# data = r\n# ids = train_df['id']\n# atoms = []\n# bonds = []\n# positive_charges = []\n# negative_charges = []\n# ndfids = []\n# protein_names = []\n# molecular_weights = []\n# logPs = []\n# hb_acceptors = []\n# hb_donors = []\n# tpsas = [] \n# rotatable_bonds = []\n# binds = []\n\n# for i in tqdm(range(0,len(data))):\n#     ndfids.append(ids[i])\n#     atoms.append(data[i]['atoms'])\n#     bonds.append(data[i]['bonds'])\n#     positive_charges.append(data[i]['positive_charges'])\n#     negative_charges.append(data[i]['negative_charges'])\n#     protein_names.append(train_df['protein_name'][i])\n#     molecular_weights.append(data[i]['molecular_weight'])\n#     logPs.append(data[i]['LogP'])\n#     hb_acceptors.append(data[i]['HBA'])\n#     hb_donors.append(data[i]['HBD'])\n#     tpsas.append(data[i]['TPSA'])\n#     rotatable_bonds.append(data[i]['Rotatable Bonds'])\n    \n    \n# df_molecule_smiles = pd.DataFrame()\n# df_molecule_smiles['ids'] = ndfids\n# df_molecule_smiles['protein_names'] = protein_names\n# df_molecule_smiles['Atoms'] = atoms\n# df_molecule_smiles['Bonds'] = bonds \n# df_molecule_smiles['molecular weight'] = molecular_weights\n# df_molecule_smiles['LogP'] = logPs\n# df_molecule_smiles['HBA'] = hb_acceptors\n# df_molecule_smiles['HBD'] = hb_donors\n# df_molecule_smiles['TPSA'] = tpsas\n# df_molecule_smiles['Rotatable Bonds'] = rotatable_bonds\n# df_molecule_smiles['binds'] = train_df['binds']\n\n# train_df = df_molecule_smiles\n# train_df.to_csv('train_preprocessed')","metadata":{"_uuid":"bffaa61e-decf-4bcf-9cfe-bf7d4ada141d","_cell_guid":"b093cca1-6526-4e6d-9326-5bb6fb627d64","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# from sklearn.metrics import accuracy_score\n\n# y_pred = model.predict(X_test)\n\n# accuracy = accuracy_score(y_test , y_pred)\n# accuracy","metadata":{"_uuid":"8fd362cd-7ded-4c6e-a5ab-0e2e4c2363df","_cell_guid":"c394f754-737e-43ee-ade9-f90022d2e70f","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# test_df","metadata":{"_uuid":"b61eb939-b7a3-4f79-b814-298fe768b1aa","_cell_guid":"6d4c4c60-bf55-4255-b1fc-f23c195a29de","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# # Assuming your test data is stored in a DataFrame called 'df_molecule_smiles'\n# X_test = test_df[['protein_names', 'Bonds', 'Atoms', 'molecular weight', 'LogP', 'HBA','TPSA', 'Rotatable Bonds']]\n# le = LabelEncoder()\n\n# X_test[\"protein_names\"].loc[:\"protein_names\"] = le.fit_transform(X_test[\"protein_names\"])\n# # Predict the response for the test dataset\n# y_pred = model.predict(X_test)\n\n# # Create a DataFrame with the test IDs and their corresponding predicted values\n# submission_df = pd.DataFrame({\"id\": test_df[\"ids\"], \"binds\": y_pred})\n\n# # Save the submission file\n# submission_df.to_csv(\"submission.csv\", index=False)","metadata":{"_uuid":"b1eca1f3-34f9-4b77-8bc5-ef87c27f91fb","_cell_guid":"a4a349c1-9175-4fd0-8e5d-1e83a93d17f7","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_test","metadata":{"_uuid":"ad8e7041-2596-4b46-bad1-0704541e63f7","_cell_guid":"b6ca0510-df94-4118-a84d-625198ab1861","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# a = pd.read_csv('/kaggle/working/submission.csv')\n# a","metadata":{"_uuid":"732bd7ae-dbb2-4582-80f6-cc9f682b5c0e","_cell_guid":"4508fb79-bcca-43f9-93e6-38b42804a872","collapsed":false,"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]}]}