{"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"}],"dockerImageVersionId":30698,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# EDA(in japanese)\n## P-Values for \"BB\" and \"protein_name\" with hierarchical clustering\n##### (P-Values:  https://chemrxiv.org/engage/chemrxiv/article-details/6438943f08c86922ffeffe57)","metadata":{}},{"cell_type":"code","source":"!pip install rdkit\n!pip install duckdb","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import duckdb\nimport pandas as pd\nimport numpy as np\n\ntrain_path = '/kaggle/input/leash-BELKA/train.parquet'\ntest_path = '/kaggle/input/leash-BELKA/test.parquet'","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#############\n### P_BB1 ###\n#############\n\ncon = duckdb.connect()\n\ndf_P_BB1 = con.query(f\"\"\"(SELECT buildingblock1_smiles\n               , SUM(binds)/COUNT(binds) AS P_BB1\n               , COUNT(binds) as BB1_cnt\n               , protein_name\n               FROM parquet_scan('{train_path}')\n               group by buildingblock1_smiles,protein_name)\n               \"\"\").df()\n\ncon.close()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_P_BB1_BRD4 = df_P_BB1.loc[df_P_BB1[\"protein_name\"]==\"BRD4\"]\ndf_P_BB1_BRD4.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_P_BB1_HSA = df_P_BB1.loc[df_P_BB1[\"protein_name\"]==\"HSA\"]\ndf_P_BB1_HSA.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_P_BB1_sEH = df_P_BB1.loc[df_P_BB1[\"protein_name\"]==\"sEH\"]\ndf_P_BB1_sEH.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#############\n### P_BB2 ###\n#############\n\ncon = duckdb.connect()\n\ndf_P_BB2 = con.query(f\"\"\"(SELECT buildingblock2_smiles\n               , SUM(binds)/COUNT(binds) AS P_BB2\n               , COUNT(binds) as BB2_cnt\n               , protein_name\n               FROM parquet_scan('{train_path}')\n               group by buildingblock2_smiles, protein_name)\"\"\").df()\n\ncon.close()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_P_BB2_BRD4 = df_P_BB2.loc[df_P_BB2[\"protein_name\"]==\"BRD4\"]\ndf_P_BB2_BRD4.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_P_BB2_HSA = df_P_BB2.loc[df_P_BB2[\"protein_name\"]==\"HSA\"]\ndf_P_BB2_HSA.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_P_BB2_sEH = df_P_BB2.loc[df_P_BB2[\"protein_name\"]==\"sEH\"]\ndf_P_BB2_sEH.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#############\n### P_BB3 ###\n#############\n\ncon = duckdb.connect()\n\ndf_P_BB3 = con.query(f\"\"\"(SELECT buildingblock3_smiles\n               , SUM(binds)/COUNT(binds) AS P_BB3\n               , COUNT(binds) as BB3_cnt\n               , protein_name\n               FROM parquet_scan('{train_path}')\n               group by buildingblock3_smiles, protein_name)\"\"\").df()\ncon.close()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_P_BB3_BRD4 = df_P_BB3.loc[df_P_BB3[\"protein_name\"]==\"BRD4\"]\ndf_P_BB3_BRD4.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_P_BB3_HSA = df_P_BB3.loc[df_P_BB3[\"protein_name\"]==\"HSA\"]\ndf_P_BB3_HSA.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_P_BB3_sEH = df_P_BB3.loc[df_P_BB3[\"protein_name\"]==\"sEH\"]\ndf_P_BB3_sEH.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"BB１_BRD4の固有データ数：\",len(df_P_BB1_BRD4))\nprint(\"BB１_HSAの固有データ数：\",len(df_P_BB1_HSA))\nprint(\"BB１_sEHの固有データ数：\",len(df_P_BB1_sEH))\nprint(\"BB2_BRD4の固有データ数：\",len(df_P_BB2_BRD4))\nprint(\"BB2_HSAの固有データ数：\",len(df_P_BB2_HSA))\nprint(\"BB2_sEHの固有データ数：\",len(df_P_BB2_sEH))\nprint(\"BB3_BRD4の固有データ数：\",len(df_P_BB3_BRD4))\nprint(\"BB3_HSAの固有データ数：\",len(df_P_BB3_HSA))\nprint(\"BB3_sEHの固有データ数：\",len(df_P_BB3_sEH))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"BB一つの時のグラフ","metadata":{}},{"cell_type":"code","source":"import matplotlib.pyplot as plt","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# グラフを作成\nfig, axs = plt.subplots(3,3)\n\n# 1つ目のヒストグラムを描画\naxs[0,0].hist(df_P_BB1_BRD4[\"P_BB1\"].values,bins = 100, range=(0, 0.05))\naxs[0,0].set_title('BB1_BRD4')\naxs[0,0].set_ylim(0, 70)\n\n# 2つ目のヒストグラムを描画\naxs[0,1].hist(df_P_BB1_HSA[\"P_BB1\"].values,bins = 100, range=(0, 0.05))\naxs[0,1].set_title('BB1_HSA')\naxs[0,1].set_ylim(0, 70)\n\n# 3つ目のヒストグラムを描画\naxs[0,2].hist(df_P_BB1_sEH[\"P_BB1\"].values,bins = 100, range=(0, 0.05))\naxs[0,2].set_title('BB1_sEH')\naxs[0,2].set_ylim(0, 70)\n\n# 4つ目のヒストグラムを描画\naxs[1,0].hist(df_P_BB2_BRD4[\"P_BB2\"].values,bins = 100, range=(0, 0.05))\naxs[1,0].set_title('BB2_BRD4')\naxs[1,0].set_ylim(0, 70)\n\n# 5つ目のヒストグラムを描画\naxs[1,1].hist(df_P_BB2_HSA[\"P_BB2\"].values,bins = 100, range=(0, 0.05))\naxs[1,1].set_title('BB2_HSA')\naxs[1,1].set_ylim(0, 70)\n\n# 6つ目のヒストグラムを描画\naxs[1,2].hist(df_P_BB2_sEH[\"P_BB2\"].values,bins = 100, range=(0, 0.05))\naxs[1,2].set_title('BB2_sEH')\naxs[1,2].set_ylim(0, 70)\n\n# 7つ目のヒストグラムを描画\naxs[2,0].hist(df_P_BB3_BRD4[\"P_BB3\"].values,bins = 100, range=(0, 0.05))\naxs[2,0].set_title('BB3_BRD4')\naxs[2,0].set_ylim(0, 70)\n\n# 8つ目のヒストグラムを描画\naxs[2,1].hist(df_P_BB3_HSA[\"P_BB3\"].values,bins = 100, range=(0, 0.05))\naxs[2,1].set_title('BB3_HSA')\naxs[2,1].set_ylim(0, 70)\n\n# 9つ目のヒストグラムを描画\naxs[2,2].hist(df_P_BB3_sEH[\"P_BB3\"].values,bins = 100, range=(0, 0.05))\naxs[2,2].set_title('BB3_sEH')\naxs[2,2].set_ylim(0, 70)\n\n# グラフを調整\nfig.tight_layout()\n\n# グラフを表示\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# グラフを作成\nfig, axs = plt.subplots(3,3)\n\n# 1つ目のヒストグラムを描画\naxs[0,0].scatter(df_P_BB1_BRD4[\"P_BB1\"].values, df_P_BB1_BRD4[\"BB1_cnt\"].values)\naxs[0,0].set_title('BB1_BRD4')\n\n# 2つ目のヒストグラムを描画\naxs[0,1].scatter(df_P_BB1_HSA[\"P_BB1\"].values, df_P_BB1_HSA[\"BB1_cnt\"].values)\naxs[0,1].set_title('BB1_HSA')\n\n# 3つ目のヒストグラムを描画\naxs[0,2].scatter(df_P_BB1_sEH[\"P_BB1\"].values, df_P_BB1_sEH[\"BB1_cnt\"].values)\naxs[0,2].set_title('BB1_sEH')\n\n# 4つ目のヒストグラムを描画\naxs[1,0].scatter(df_P_BB2_BRD4[\"P_BB2\"].values, df_P_BB2_BRD4[\"BB2_cnt\"].values)\naxs[1,0].set_title('BB2_BRD4')\n\n# 5つ目のヒストグラムを描画\naxs[1,1].scatter(df_P_BB2_HSA[\"P_BB2\"].values, df_P_BB2_HSA[\"BB2_cnt\"].values)\naxs[1,1].set_title('BB2_HSA')\n\n# 6つ目のヒストグラムを描画\naxs[1,2].scatter(df_P_BB2_sEH[\"P_BB2\"].values, df_P_BB2_sEH[\"BB2_cnt\"].values)\naxs[1,2].set_title('BB2_sEH')\n\n# 7つ目のヒストグラムを描画\naxs[2,0].scatter(df_P_BB3_BRD4[\"P_BB3\"].values, df_P_BB3_BRD4[\"BB3_cnt\"].values)\naxs[2,0].set_title('BB3_BRD4')\n\n# 8つ目のヒストグラムを描画\naxs[2,1].scatter(df_P_BB3_HSA[\"P_BB3\"].values, df_P_BB3_HSA[\"BB3_cnt\"].values)\naxs[2,1].set_title('BB3_HSA')\n\n# 9つ目のヒストグラムを描画\naxs[2,2].scatter(df_P_BB3_sEH[\"P_BB3\"].values, df_P_BB3_sEH[\"BB3_cnt\"].values)\naxs[2,2].set_title('BB3_sEH')\n\n# グラフを調整\nfig.tight_layout()\n\n# グラフを表示\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 3D Tanimoto scores","metadata":{}},{"cell_type":"code","source":"!pip install rdkit","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import rdkit\nfrom rdkit import Chem\nfrom rdkit.Chem import AllChem\nfrom rdkit import DataStructs\nfrom rdkit.DataStructs import FingerprintSimilarity\nfrom rdkit.Chem.Fingerprints import FingerprintMols\nfrom scipy.cluster.hierarchy import linkage, dendrogram,fcluster\n\nfrom rdkit.Chem import Descriptors, MACCSkeys, AllChem\nfrom rdkit.ML.Descriptors import MoleculeDescriptors","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### SMILESからMorgan FP","metadata":{}},{"cell_type":"code","source":"# generate SMILES List\nsmiles_BB1_BRD4_list = df_P_BB1_BRD4['buildingblock1_smiles'].tolist()\nsmiles_BB1_HSA_list = df_P_BB1_HSA['buildingblock1_smiles'].tolist()\nsmiles_BB1_sEH_list = df_P_BB1_sEH['buildingblock1_smiles'].tolist()\nsmiles_BB2_BRD4_list = df_P_BB2_BRD4['buildingblock2_smiles'].tolist()\nsmiles_BB2_HSA_list = df_P_BB2_HSA['buildingblock2_smiles'].tolist()\nsmiles_BB2_sEH_list = df_P_BB2_sEH['buildingblock2_smiles'].tolist()\nsmiles_BB3_BRD4_list = df_P_BB3_BRD4['buildingblock3_smiles'].tolist()\nsmiles_BB3_HSA_list = df_P_BB3_HSA['buildingblock3_smiles'].tolist()\nsmiles_BB3_sEH_list = df_P_BB3_sEH['buildingblock3_smiles'].tolist()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def smiles_to_mfpt(smiles_list, radius=2, nBits=1024):\n    \"\"\"\n    SmilesのリストをMorgan Fingerprintのリストに変換します。\n\n    引数:\n        smiles_list: Smilesのリスト\n        radius: Morgan Fingerprintの半径 (デフォルト: 2)\n        nBits: Morgan Fingerprintのビット数 (デフォルト: 1024)\n\n    返り値:\n        Morgan Fingerprintのリスト\n    \"\"\"\n\n    mfpt_list = []\n    for smiles in smiles_list:\n        # Smilesから分子オブジェクトを作成\n        mol = Chem.MolFromSmiles(smiles)\n\n        # Morgan Fingerprintを生成\n        fp = AllChem.GetMorganFingerprintAsBitVect(mol, radius, nBits=nBits)\n\n        # Morgan Fingerprintをリストに変換\n        mfpt_list.append(fp)\n\n    return mfpt_list","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# SMILES to MorganFP List\nmfpt_BB1_BRD4_list = smiles_to_mfpt(smiles_BB1_BRD4_list)\nmfpt_BB1_HSA_list = smiles_to_mfpt(smiles_BB1_HSA_list)\nmfpt_BB1_sEH_list = smiles_to_mfpt(smiles_BB1_sEH_list)\nmfpt_BB2_BRD4_list = smiles_to_mfpt(smiles_BB2_BRD4_list)\nmfpt_BB2_HSA_list = smiles_to_mfpt(smiles_BB2_HSA_list)\nmfpt_BB2_sEH_list = smiles_to_mfpt(smiles_BB2_sEH_list)\nmfpt_BB3_BRD4_list = smiles_to_mfpt(smiles_BB3_BRD4_list)\nmfpt_BB3_HSA_list = smiles_to_mfpt(smiles_BB3_HSA_list)\nmfpt_BB3_sEH_list = smiles_to_mfpt(smiles_BB3_sEH_list)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# MFPT List to Dataframe\n#mfpt_BB1_BRD4 = pd.DataFrame(mfpt_BB1_BRD4_list)\n#mfpt_BB1_HSA = pd.DataFrame(mfpt_BB1_HSA_list)\n#mfpt_BB1_sEH = pd.DataFrame(mfpt_BB1_sEH_list)\n#mfpt_BB2_BRD4 = pd.DataFrame(mfpt_BB2_BRD4_list)\n#mfpt_BB2_HSA = pd.DataFrame(mfpt_BB2_HSA_list)\n#mfpt_BB2_sEH = pd.DataFrame(mfpt_BB2_sEH_list)\n#mfpt_BB3_BRD4 = pd.DataFrame(mfpt_BB3_BRD4_list)\n#mfpt_BB3_HSA = pd.DataFrame(mfpt_BB3_HSA_list)\n#mfpt_BB3_sEH = pd.DataFrame(mfpt_BB3_sEH_list)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### MorganFP→Tanimoto score","metadata":{}},{"cell_type":"code","source":"def calculate_distance_matrix(mfpt_list):\n  \"\"\"\n  Morgan FingerprintのリストからTanimotoスコアを算出し、距離行列を作成します。\n\n  引数:\n    mfpt_list: Morgan Fingerprintのリスト\n\n  返り値:\n    Tanimotoスコアを格納した正方行列\n  \"\"\"\n\n  # 分子の数\n  num_molecules = len(mfpt_list)\n\n  # 正方行列を作成\n  distance_matrix = [[0.0 for _ in range(num_molecules)] for _ in range(num_molecules)]\n\n  # 全通りのTanimotoスコアを算出\n  for i in range(num_molecules):\n    for j in range(i, num_molecules):\n        # Morgan Fingerprintを取得\n        fp1 = mfpt_list[i]\n        fp2 = mfpt_list[j]\n        \n        # Tanimotoスコアを算出\n        tanimoto_score = DataStructs.FingerprintSimilarity(fp1,fp2, metric=DataStructs.TanimotoSimilarity)\n        \n        # 距離を算出(1 - Tanimoto score)\n        distance = 1 - tanimoto_score\n        \n        # 距離行列に格納\n        distance_matrix[i][j] = distance\n        distance_matrix[j][i] = distance \n      \n  return distance_matrix","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"distance_matrix_BB1_BRD4 = calculate_distance_matrix(mfpt_BB1_BRD4_list)\ndistance_matrix_BB1_HSA = calculate_distance_matrix(mfpt_BB1_HSA_list)\ndistance_matrix_BB1_sEH = calculate_distance_matrix(mfpt_BB1_sEH_list)\ndistance_matrix_BB2_BRD4 = calculate_distance_matrix(mfpt_BB2_BRD4_list)\ndistance_matrix_BB2_HSA = calculate_distance_matrix(mfpt_BB2_HSA_list)\ndistance_matrix_BB2_sEH = calculate_distance_matrix(mfpt_BB2_sEH_list)\ndistance_matrix_BB3_BRD4 = calculate_distance_matrix(mfpt_BB3_BRD4_list)\ndistance_matrix_BB3_HSA = calculate_distance_matrix(mfpt_BB3_HSA_list)\ndistance_matrix_BB3_sEH = calculate_distance_matrix(mfpt_BB3_sEH_list)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Hierarchical Clustering","metadata":{}},{"cell_type":"code","source":"def hierarchical_clustering(distance_matrix):\n  \"\"\"\n  距離行列を用いて階層クラスタリングを実行し、デンドログラムを描画\n\n  引数:\n    distance_score_matrix: 距離行列\n  \"\"\"\n\n  # ウォード法による階層型クラスタリングを実行\n  # 他には平均連結法、単連結法、完全連結法がある\n  linkage_matrix = linkage(distance_matrix, method='ward')\n\n  # デンドログラムを描画\n  dendrogram(linkage_matrix)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### BB1","metadata":{}},{"cell_type":"code","source":"# Clustring\nhierarchical_clustering(distance_matrix_BB1_BRD4)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# set Distance\nlinkage_matrix_BB1_BRD4 = linkage(distance_matrix_BB1_BRD4, method='ward')\ncluster_labels_BB1_BRD4 = fcluster(linkage_matrix_BB1_BRD4, t=12, criterion='distance')\n\n# df_P_BB2 + cluster label\ndf_cluster_labels_BB1_BRD4 = pd.DataFrame(cluster_labels_BB1_BRD4)\ndf_P_BB1_BRD4[\"cluster\"] = df_cluster_labels_BB1_BRD4\ndf_P_BB1_BRD4.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#set Distance\nlinkage_matrix_BB1_HSA = linkage(distance_matrix_BB1_HSA, method='ward')\ncluster_labels_BB1_HSA = fcluster(linkage_matrix_BB1_HSA, t=12, criterion='distance')\n\n# df_P_BB2 + cluster label\ndf_cluster_labels_BB1_HSA = pd.DataFrame(cluster_labels_BB1_HSA)\ndf_P_BB1_HSA[\"cluster\"] = df_cluster_labels_BB1_HSA\ndf_P_BB1_HSA.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# set Distance\nlinkage_matrix_BB1_sEH = linkage(distance_matrix_BB1_sEH, method='ward')\ncluster_labels_BB1_sEH = fcluster(linkage_matrix_BB1_sEH, t=12, criterion='distance')\n\n# df_P_BB2 + cluster label\ndf_cluster_labels_BB1_sEH = pd.DataFrame(cluster_labels_BB1_sEH)\ndf_P_BB1_sEH[\"cluster\"] = df_cluster_labels_BB1_sEH\ndf_P_BB1_sEH.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hierarchical_clustering(distance_matrix_BB2_BRD4)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# set Distance\nlinkage_matrix_BB2_BRD4 = linkage(distance_matrix_BB2_BRD4, method='ward')\ncluster_labels_BB2_BRD4 = fcluster(linkage_matrix_BB2_BRD4, t=20, criterion='distance')\n\n# df_P_BB2 + cluster label\ndf_cluster_labels_BB2_BRD4= pd.DataFrame(cluster_labels_BB2_BRD4)\ndf_P_BB2_BRD4[\"cluster\"] = df_cluster_labels_BB2_BRD4\ndf_P_BB2_BRD4.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#set Distance\nlinkage_matrix_BB2_HSA = linkage(distance_matrix_BB2_HSA, method='ward')\ncluster_labels_BB2_HSA = fcluster(linkage_matrix_BB2_HSA, t=20, criterion='distance')\n\n# df_P_BB2 + cluster label\ndf_cluster_labels_BB2_HSA = pd.DataFrame(cluster_labels_BB2_HSA)\ndf_P_BB2_HSA[\"cluster\"] = df_cluster_labels_BB2_HSA\ndf_P_BB2_HSA.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# set Distance\nlinkage_matrix_BB2_sEH = linkage(distance_matrix_BB2_sEH, method='ward')\ncluster_labels_BB2_sEH = fcluster(linkage_matrix_BB2_sEH, t=20, criterion='distance')\n\n# df_P_BB2 + cluster label\ndf_cluster_labels_BB2_sEH = pd.DataFrame(cluster_labels_BB2_sEH)\ndf_P_BB2_sEH[\"cluster\"] = df_cluster_labels_BB2_sEH\ndf_P_BB2_sEH.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hierarchical_clustering(distance_matrix_BB3_BRD4)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# set Distance\nlinkage_matrix_BB3_BRD4 = linkage(distance_matrix_BB3_BRD4, method='ward')\ncluster_labels_BB3_BRD4 = fcluster(linkage_matrix_BB3_BRD4, t=22, criterion='distance')\n\n# df_P_BB3 + cluster label\ndf_cluster_labels_BB3_BRD4= pd.DataFrame(cluster_labels_BB3_BRD4)\ndf_P_BB3_BRD4[\"cluster\"] = df_cluster_labels_BB3_BRD4\ndf_P_BB3_BRD4.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# set Distance\nlinkage_matrix_BB3_HSA = linkage(distance_matrix_BB3_HSA, method='ward')\ncluster_labels_BB3_HSA = fcluster(linkage_matrix_BB3_HSA, t=22, criterion='distance')\n\n# df_P_BB3 + cluster label\ndf_cluster_labels_BB3_HSA = pd.DataFrame(cluster_labels_BB3_HSA)\ndf_P_BB3_HSA[\"cluster\"] = df_cluster_labels_BB3_HSA\ndf_P_BB3_HSA.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# set Distance\nlinkage_matrix_BB3_sEH = linkage(distance_matrix_BB3_sEH, method='ward')\ncluster_labels_BB3_sEH = fcluster(linkage_matrix_BB3_sEH, t=22, criterion='distance')\n\n# df_P_BB3 + cluster label\ndf_cluster_labels_BB3_sEH = pd.DataFrame(cluster_labels_BB3_sEH)\ndf_P_BB3_sEH[\"cluster\"] = df_cluster_labels_BB3_sEH\ndf_P_BB3_sEH.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## P-Values / \"Cluster\" & \"protein_name\"","metadata":{}},{"cell_type":"markdown","source":"#### BB1\n##### -BRD4","metadata":{}},{"cell_type":"code","source":"df_P_BB1_BRD4_clst_1 = df_P_BB1_BRD4[df_P_BB1_BRD4[\"cluster\"]==1]\ndf_P_BB1_BRD4_clst_2 = df_P_BB1_BRD4[df_P_BB1_BRD4[\"cluster\"]==2]\ndf_P_BB1_BRD4_clst_3 = df_P_BB1_BRD4[df_P_BB1_BRD4[\"cluster\"]==3]\n\nprint(\"BB1_BRD4_cluster1：\",df_P_BB1_BRD4_clst_1[\"P_BB1\"].describe())\nprint(\"BB1_BRD4_cluster2：\",df_P_BB1_BRD4_clst_2[\"P_BB1\"].describe())\nprint(\"BB1_BRD4_cluster3：\",df_P_BB1_BRD4_clst_3[\"P_BB1\"].describe())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport numpy as np\n\n# グラフを作成\nfig, axs = plt.subplots(2,2)\n\n# 1つ目のヒストグラムを描画\naxs[0,0].hist(df_P_BB1_BRD4_clst_1[\"P_BB1\"].values, range=(0,0.03))\naxs[0,0].set_title('BB1_cluster1')\naxs[0,0].set_ylim(0, 40)\n\n# 2つ目のヒストグラムを描画\naxs[0,1].hist(df_P_BB1_BRD4_clst_2[\"P_BB1\"].values, range=(0,0.03))\naxs[0,1].set_title('BB1_cluster2')\naxs[0,1].set_ylim(0, 40)\n\n# 3つ目のヒストグラムを描画\naxs[1,0].hist(df_P_BB1_BRD4_clst_3[\"P_BB1\"].values, range=(0,0.03))\naxs[1,0].set_title('BB1_cluster3')\naxs[1,0].set_ylim(0, 40)\n\n# グラフを調整\nfig.tight_layout()\n\n# グラフを表示\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"##### -HSA","metadata":{}},{"cell_type":"code","source":"df_P_BB1_HSA_clst_1 = df_P_BB1_HSA[df_P_BB1_HSA[\"cluster\"]==1]\ndf_P_BB1_HSA_clst_2 = df_P_BB1_HSA[df_P_BB1_HSA[\"cluster\"]==2]\ndf_P_BB1_HSA_clst_3 = df_P_BB1_HSA[df_P_BB1_HSA[\"cluster\"]==3]\n\nprint(\"BB1_HSA_cluster1：\",df_P_BB1_HSA_clst_1[\"P_BB1\"].describe())\nprint(\"BB1_HSA_cluster2：\",df_P_BB1_HSA_clst_2[\"P_BB1\"].describe())\nprint(\"BB1_HSA_cluster3：\",df_P_BB1_HSA_clst_3[\"P_BB1\"].describe())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# グラフを作成\nfig, axs = plt.subplots(2,2)\n\n# 1つ目のヒストグラムを描画\naxs[0,0].hist(df_P_BB1_HSA_clst_1[\"P_BB1\"].values, range=(0,0.03))\naxs[0,0].set_title('BB1_HSA_cluster1')\naxs[0,0].set_ylim(0, 40)\n\n# 2つ目のヒストグラムを描画\naxs[0,1].hist(df_P_BB1_HSA_clst_2[\"P_BB1\"].values, range=(0,0.03))\naxs[0,1].set_title('BB1_HSA_cluster2')\naxs[0,1].set_ylim(0, 40)\n\n# 3つ目のヒストグラムを描画\naxs[1,0].hist(df_P_BB1_HSA_clst_3[\"P_BB1\"].values, range=(0,0.03))\naxs[1,0].set_title('BB1_HSA_cluster3')\naxs[1,0].set_ylim(0, 40)\n\n# グラフを調整\nfig.tight_layout()\n\n# グラフを表示\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"##### -sEH","metadata":{}},{"cell_type":"code","source":"df_P_BB1_sEH_clst_1 = df_P_BB1_sEH[df_P_BB1_sEH[\"cluster\"]==1]\ndf_P_BB1_sEH_clst_2 = df_P_BB1_sEH[df_P_BB1_sEH[\"cluster\"]==2]\ndf_P_BB1_sEH_clst_3 = df_P_BB1_sEH[df_P_BB1_sEH[\"cluster\"]==3]\n\nprint(\"BB1_sEH_cluster1：\",df_P_BB1_sEH_clst_1[\"P_BB1\"].describe())\nprint(\"BB1_sEH_cluster2：\",df_P_BB1_sEH_clst_2[\"P_BB1\"].describe())\nprint(\"BB1_sEH_cluster3：\",df_P_BB1_sEH_clst_3[\"P_BB1\"].describe())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# グラフを作成\nfig, axs = plt.subplots(2,2)\n\n# 1つ目のヒストグラムを描画\naxs[0,0].hist(df_P_BB1_sEH_clst_1[\"P_BB1\"].values, range=(0,0.03))\naxs[0,0].set_title('BB1_sEH_cluster1')\naxs[0,0].set_ylim(0, 40)\n\n# 2つ目のヒストグラムを描画\naxs[0,1].hist(df_P_BB1_sEH_clst_2[\"P_BB1\"].values, range=(0,0.03))\naxs[0,1].set_title('BB1_sEH_cluster2')\naxs[0,1].set_ylim(0, 40)\n\n# 3つ目のヒストグラムを描画\naxs[1,0].hist(df_P_BB1_sEH_clst_3[\"P_BB1\"].values, range=(0,0.03))\naxs[1,0].set_title('BB1_sEH_cluster3')\naxs[1,0].set_ylim(0, 40)\n\n# グラフを調整\nfig.tight_layout()\n\n# グラフを表示\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### BB2\n##### -BRD4","metadata":{}},{"cell_type":"code","source":"df_P_BB2_BRD4_clst_1 = df_P_BB2_BRD4[df_P_BB2_BRD4[\"cluster\"]==1]\ndf_P_BB2_BRD4_clst_2 = df_P_BB2_BRD4[df_P_BB2_BRD4[\"cluster\"]==2]\ndf_P_BB2_BRD4_clst_3 = df_P_BB2_BRD4[df_P_BB2_BRD4[\"cluster\"]==3]\n\nprint(\"BB2_BRD4_cluster1：\",df_P_BB2_BRD4_clst_1[\"P_BB2\"].describe())\nprint(\"BB2_BRD4_cluster2：\",df_P_BB2_BRD4_clst_2[\"P_BB2\"].describe())\nprint(\"BB2_BRD4_cluster3：\",df_P_BB2_BRD4_clst_3[\"P_BB2\"].describe())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport numpy as np\n\n# グラフを作成\nfig, axs = plt.subplots(2,2)\n\n# 1つ目のヒストグラムを描画\naxs[0,0].hist(df_P_BB2_BRD4_clst_1[\"P_BB2\"].values, range=(0,0.03))\naxs[0,0].set_title('BB2_cluster1')\naxs[0,0].set_ylim(0, 40)\n\n# 2つ目のヒストグラムを描画\naxs[0,1].hist(df_P_BB2_BRD4_clst_2[\"P_BB2\"].values, range=(0,0.03))\naxs[0,1].set_title('BB2_cluster2')\naxs[0,1].set_ylim(0, 40)\n\n# 3つ目のヒストグラムを描画\naxs[1,0].hist(df_P_BB2_BRD4_clst_3[\"P_BB2\"].values, range=(0,0.03))\naxs[1,0].set_title('BB2_cluster3')\naxs[1,0].set_ylim(0, 40)\n\n# グラフを調整\nfig.tight_layout()\n\n# グラフを表示\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"##### -HSA","metadata":{}},{"cell_type":"code","source":"df_P_BB2_HSA_clst_1 = df_P_BB2_HSA[df_P_BB2_HSA[\"cluster\"]==1]\ndf_P_BB2_HSA_clst_2 = df_P_BB2_HSA[df_P_BB2_HSA[\"cluster\"]==2]\ndf_P_BB2_HSA_clst_3 = df_P_BB2_HSA[df_P_BB2_HSA[\"cluster\"]==3]\n\nprint(\"BB2_HSA_cluster1：\",df_P_BB2_HSA_clst_1[\"P_BB2\"].describe())\nprint(\"BB2_HSA_cluster2：\",df_P_BB2_HSA_clst_2[\"P_BB2\"].describe())\nprint(\"BB2_HSA_cluster3：\",df_P_BB2_HSA_clst_3[\"P_BB2\"].describe())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# グラフを作成\nfig, axs = plt.subplots(2,2)\n\n# 1つ目のヒストグラムを描画\naxs[0,0].hist(df_P_BB2_HSA_clst_1[\"P_BB2\"].values, range=(0,0.03))\naxs[0,0].set_title('BB2_HSA_cluster1')\naxs[0,0].set_ylim(0, 40)\n\n# 2つ目のヒストグラムを描画\naxs[0,1].hist(df_P_BB2_HSA_clst_2[\"P_BB2\"].values, range=(0,0.03))\naxs[0,1].set_title('BB2_HSA_cluster2')\naxs[0,1].set_ylim(0, 40)\n\n# 3つ目のヒストグラムを描画\naxs[1,0].hist(df_P_BB2_HSA_clst_3[\"P_BB2\"].values, range=(0,0.03))\naxs[1,0].set_title('BB2_HSA_cluster3')\naxs[1,0].set_ylim(0, 40)\n\n# グラフを調整\nfig.tight_layout()\n\n# グラフを表示\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"##### -sEH","metadata":{}},{"cell_type":"code","source":"df_P_BB2_sEH_clst_1 = df_P_BB2_sEH[df_P_BB2_sEH[\"cluster\"]==1]\ndf_P_BB2_sEH_clst_2 = df_P_BB2_sEH[df_P_BB2_sEH[\"cluster\"]==2]\ndf_P_BB2_sEH_clst_3 = df_P_BB2_sEH[df_P_BB2_sEH[\"cluster\"]==3]\n\nprint(\"BB2_sEH_cluster1：\",df_P_BB2_sEH_clst_1[\"P_BB2\"].describe())\nprint(\"BB2_sEH_cluster2：\",df_P_BB2_sEH_clst_2[\"P_BB2\"].describe())\nprint(\"BB2_sEH_cluster3：\",df_P_BB2_sEH_clst_3[\"P_BB2\"].describe())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# グラフを作成\nfig, axs = plt.subplots(2,2)\n\n# 1つ目のヒストグラムを描画\naxs[0,0].hist(df_P_BB2_sEH_clst_1[\"P_BB2\"].values, range=(0,0.03))\naxs[0,0].set_title('BB2_sEH_cluster1')\naxs[0,0].set_ylim(0, 40)\n\n# 2つ目のヒストグラムを描画\naxs[0,1].hist(df_P_BB2_sEH_clst_2[\"P_BB2\"].values, range=(0,0.03))\naxs[0,1].set_title('BB2_sEH_cluster2')\naxs[0,1].set_ylim(0, 40)\n\n# 3つ目のヒストグラムを描画\naxs[1,0].hist(df_P_BB2_sEH_clst_3[\"P_BB2\"].values, range=(0,0.03))\naxs[1,0].set_title('BB2_sEH_cluster3')\naxs[1,0].set_ylim(0, 40)\n\n# グラフを調整\nfig.tight_layout()\n\n# グラフを表示\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### BB3\n##### -BRD4","metadata":{}},{"cell_type":"code","source":"df_P_BB3_BRD4_clst_1 = df_P_BB3_BRD4[df_P_BB3_BRD4[\"cluster\"]==1]\ndf_P_BB3_BRD4_clst_2 = df_P_BB3_BRD4[df_P_BB3_BRD4[\"cluster\"]==2]\ndf_P_BB3_BRD4_clst_3 = df_P_BB3_BRD4[df_P_BB3_BRD4[\"cluster\"]==3]\n\nprint(\"BB3_BRD4_cluster1：\",df_P_BB3_BRD4_clst_1[\"P_BB3\"].describe())\nprint(\"BB3_BRD4_cluster2：\",df_P_BB3_BRD4_clst_2[\"P_BB3\"].describe())\nprint(\"BB3_BRD4_cluster3：\",df_P_BB3_BRD4_clst_3[\"P_BB3\"].describe())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport numpy as np\n\n# グラフを作成\nfig, axs = plt.subplots(2,2)\n\n# 1つ目のヒストグラムを描画\naxs[0,0].hist(df_P_BB3_BRD4_clst_1[\"P_BB3\"].values, range=(0,0.03))\naxs[0,0].set_title('BB3_cluster1')\naxs[0,0].set_ylim(0, 40)\n\n# 2つ目のヒストグラムを描画\naxs[0,1].hist(df_P_BB3_BRD4_clst_2[\"P_BB3\"].values, range=(0,0.03))\naxs[0,1].set_title('BB3_cluster2')\naxs[0,1].set_ylim(0, 40)\n\n# 3つ目のヒストグラムを描画\naxs[1,0].hist(df_P_BB3_BRD4_clst_3[\"P_BB3\"].values, range=(0,0.03))\naxs[1,0].set_title('BB3_cluster3')\naxs[1,0].set_ylim(0, 40)\n\n# グラフを調整\nfig.tight_layout()\n\n# グラフを表示\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"##### -HSA","metadata":{}},{"cell_type":"code","source":"df_P_BB3_HSA_clst_1 = df_P_BB3_HSA[df_P_BB3_HSA[\"cluster\"]==1]\ndf_P_BB3_HSA_clst_2 = df_P_BB3_HSA[df_P_BB3_HSA[\"cluster\"]==2]\ndf_P_BB3_HSA_clst_3 = df_P_BB3_HSA[df_P_BB3_HSA[\"cluster\"]==3]\n\nprint(\"BB3_HSA_cluster1：\",df_P_BB3_HSA_clst_1[\"P_BB3\"].describe())\nprint(\"BB3_HSA_cluster2：\",df_P_BB3_HSA_clst_2[\"P_BB3\"].describe())\nprint(\"BB3_HSA_cluster3：\",df_P_BB3_HSA_clst_3[\"P_BB3\"].describe())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# グラフを作成\nfig, axs = plt.subplots(2,2)\n\n# 1つ目のヒストグラムを描画\naxs[0,0].hist(df_P_BB3_HSA_clst_1[\"P_BB3\"].values, range=(0,0.03))\naxs[0,0].set_title('BB3_HSA_cluster1')\naxs[0,0].set_ylim(0, 40)\n\n# 2つ目のヒストグラムを描画\naxs[0,1].hist(df_P_BB3_HSA_clst_2[\"P_BB3\"].values, range=(0,0.03))\naxs[0,1].set_title('BB3_HSA_cluster2')\naxs[0,1].set_ylim(0, 40)\n\n# 3つ目のヒストグラムを描画\naxs[1,0].hist(df_P_BB3_HSA_clst_3[\"P_BB3\"].values, range=(0,0.03))\naxs[1,0].set_title('BB3_HSA_cluster3')\naxs[1,0].set_ylim(0, 40)\n\n# グラフを調整\nfig.tight_layout()\n\n# グラフを表示\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"##### -sEH","metadata":{}},{"cell_type":"code","source":"df_P_BB3_sEH_clst_1 = df_P_BB3_sEH[df_P_BB3_sEH[\"cluster\"]==1]\ndf_P_BB3_sEH_clst_2 = df_P_BB3_sEH[df_P_BB3_sEH[\"cluster\"]==2]\ndf_P_BB3_sEH_clst_3 = df_P_BB3_sEH[df_P_BB3_sEH[\"cluster\"]==3]\n\nprint(\"BB3_sEH_cluster1：\",df_P_BB3_sEH_clst_1[\"P_BB3\"].describe())\nprint(\"BB3_sEH_cluster2：\",df_P_BB3_sEH_clst_2[\"P_BB3\"].describe())\nprint(\"BB3_sEH_cluster3：\",df_P_BB3_sEH_clst_3[\"P_BB3\"].describe())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# グラフを作成\nfig, axs = plt.subplots(2,2)\n\n# 1つ目のヒストグラムを描画\naxs[0,0].hist(df_P_BB3_sEH_clst_1[\"P_BB3\"].values, range=(0,0.03))\naxs[0,0].set_title('BB3_sEH_cluster1')\naxs[0,0].set_ylim(0, 40)\n\n# 2つ目のヒストグラムを描画\naxs[0,1].hist(df_P_BB3_sEH_clst_2[\"P_BB3\"].values, range=(0,0.03))\naxs[0,1].set_title('BB3_sEH_cluster2')\naxs[0,1].set_ylim(0, 40)\n\n# 3つ目のヒストグラムを描画\naxs[1,0].hist(df_P_BB3_sEH_clst_3[\"P_BB3\"].values, range=(0,0.03))\naxs[1,0].set_title('BB3_sEH_cluster3')\naxs[1,0].set_ylim(0, 40)\n\n# グラフを調整\nfig.tight_layout()\n\n# グラフを表示\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# BB1+BB2+BB3(molecule) / clustering\n#### Hierarchical Clustering is a memory monster.\n#### I utilized k-means method for all of data clustering.","metadata":{}},{"cell_type":"code","source":"#############\n### mol ###\n#############\n\ncon = duckdb.connect()\n\ndf_mol_BRD4 = con.query(f\"\"\"(SELECT molecule_smiles\n               , protein_name\n               , binds\n               FROM parquet_scan('{train_path}')\n               WHERE protein_name IN ('BRD4') AND\n                     binds = 0\n               ORDER BY random()\n               LIMIT 5000)\n               UNION ALL\n               (SELECT molecule_smiles\n               , protein_name\n               , binds\n               FROM parquet_scan('{train_path}')\n               WHERE protein_name IN ('BRD4') AND\n                     binds = 1\n               ORDER BY random()\n               LIMIT 1000);\"\"\").df()\n\ncon.close()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"con = duckdb.connect()\n\ndf_mol_HSA = con.query(f\"\"\"(SELECT molecule_smiles\n               , protein_name\n               , binds\n               FROM parquet_scan('{train_path}')\n               WHERE protein_name IN ('HSA')\n               ORDER BY random()\n               LIMIT 1000000\n               );\"\"\").df()\n\ncon.close()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"con = duckdb.connect()\n\ndf_mol_sEH = con.query(f\"\"\"(SELECT molecule_smiles\n               , protein_name\n               , binds\n               FROM parquet_scan('{train_path}')\n               WHERE protein_name IN ('sEH')\n               ORDER BY random()\n               LIMIT 50000\n               );\"\"\").df()\n\ncon.close()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#df_mol_BRD4 = df_mol.loc[df_mol[\"protein_name\"]==\"BRD4\"]\ndf_mol_BRD4.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#df_mol_HSA = df_mol.loc[df_mol[\"protein_name\"]==\"HSA\"]\ndf_mol_HSA.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#df_mol_sEH = df_mol.loc[df_mol[\"protein_name\"]==\"sEH\"]\ndf_mol_sEH.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"smiles_BRD4_list = df_mol_BRD4['molecule_smiles'].tolist()\n#smiles_HSA_list = df_mol_HSA['molecule_smiles'].tolist()\n#smiles_sEH_list = df_mol_sEH['molecule_smiles'].tolist()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"mfpt_BRD4_list = smiles_to_mfpt(smiles_BRD4_list)\n#mfpt_HSA_list = smiles_to_mfpt(smiles_HSA_list)\n#mfpt_sEH_list = smiles_to_mfpt(smiles_sEH_list)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"distance_matrix_BRD4 = calculate_distance_matrix(mfpt_BRD4_list)\n#distance_matrix_HSA = calculate_distance_matrix(mfpt_HSA_list)\n#distance_matrix_sEH = calculate_distance_matrix(mfpt_sEH_list)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hierarchical_clustering(distance_matrix_BRD4)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# set Distance\nlinkage_matrix_BRD4 = linkage(distance_matrix_BRD4, method='ward')\ncluster_labels_BRD4 = fcluster(linkage_matrix_BRD4, t=48, criterion='distance')\n\n# df_P_BB2 + cluster label\ndf_cluster_labels_BRD4 = pd.DataFrame(cluster_labels_BRD4)\ndf_mol_BRD4[\"cluster\"] = df_cluster_labels_BRD4\ndf_mol_BRD4.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_mol_BRD4_clst_1 = df_mol_BRD4[df_mol_BRD4[\"cluster\"]==1]\ndf_mol_BRD4_clst_2 = df_mol_BRD4[df_mol_BRD4[\"cluster\"]==2]\ndf_mol_BRD4_clst_3 = df_mol_BRD4[df_mol_BRD4[\"cluster\"]==3]\ndf_mol_BRD4_clst_4 = df_mol_BRD4[df_mol_BRD4[\"cluster\"]==4]\ndf_mol_BRD4_clst_5 = df_mol_BRD4[df_mol_BRD4[\"cluster\"]==5]\ndf_mol_BRD4_clst_6 = df_mol_BRD4[df_mol_BRD4[\"cluster\"]==6]\ndf_mol_BRD4_clst_7 = df_mol_BRD4[df_mol_BRD4[\"cluster\"]==7]\ndf_mol_BRD4_clst_8 = df_mol_BRD4[df_mol_BRD4[\"cluster\"]==8]\n\nprint(\"BB1_BRD4_cluster1：\",df_mol_BRD4_clst_1[\"binds\"].describe())\nprint(\"BB1_BRD4_cluster2：\",df_mol_BRD4_clst_2[\"binds\"].describe())\nprint(\"BB1_BRD4_cluster3：\",df_mol_BRD4_clst_3[\"binds\"].describe())\nprint(\"BB1_BRD4_cluster4：\",df_mol_BRD4_clst_4[\"binds\"].describe())\nprint(\"BB1_BRD4_cluster5：\",df_mol_BRD4_clst_5[\"binds\"].describe())\nprint(\"BB1_BRD4_cluster6：\",df_mol_BRD4_clst_6[\"binds\"].describe())\nprint(\"BB1_BRD4_cluster7：\",df_mol_BRD4_clst_7[\"binds\"].describe())\nprint(\"BB1_BRD4_cluster8：\",df_mol_BRD4_clst_8[\"binds\"].describe())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# プロトタイプベースクラスタリング（k-means法）\n#### -計算効率が良い\n#### -事前にクラスタ数(k)を決める必要がある\n#### -kの決定にはエルボー法orシルエット図を用いる","metadata":{}}]}