{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":59094,"databundleVersionId":7010844,"sourceType":"competition"},{"sourceId":6960988,"sourceType":"datasetVersion","datasetId":3998769},{"sourceId":6961155,"sourceType":"datasetVersion","datasetId":3955392}],"dockerImageVersionId":30579,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"## Blend for Single-Cell Perturbations ","metadata":{}},{"cell_type":"markdown","source":"#### I want to thank and wish success to\n\n-Daphne Anga https://www.kaggle.com/competitions/open-problems-single-cell-perturbations/discussion/457081 <br>\n-Mehran Kazeminia, Somayyeh Gholami https://www.kaggle.com/code/mehrankazeminia/3-op2-feature-augment-fragments-of-smiles","metadata":{}},{"cell_type":"code","source":"import os\nimport pandas as pd \nimport numpy as np","metadata":{"execution":{"iopub.status.busy":"2023-11-23T00:21:38.222215Z","iopub.execute_input":"2023-11-23T00:21:38.222678Z","iopub.status.idle":"2023-11-23T00:21:38.227758Z","shell.execute_reply.started":"2023-11-23T00:21:38.222637Z","shell.execute_reply":"2023-11-23T00:21:38.226779Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df577 = pd.read_csv('/kaggle/input/open-problems-2-blends/LB0577_ZacharyScheben_blend_SCPblend058_nbV19.csv', index_col='id')\ndf574 = pd.read_csv('/kaggle/input/testsubmissiondataset/submission.csv', index_col='id')","metadata":{"execution":{"iopub.status.busy":"2023-11-23T00:23:13.302107Z","iopub.execute_input":"2023-11-23T00:23:13.302555Z","iopub.status.idle":"2023-11-23T00:23:39.722562Z","shell.execute_reply.started":"2023-11-23T00:23:13.302523Z","shell.execute_reply":"2023-11-23T00:23:39.721177Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = 0.7*df574 + 0.3*df577\ndf[:128] = 0.55 * df574[   :128]\\\n         + 0.45 * df577[   :128]\ndf[128: ] = 0.73 * df574[128:]\\\n         + 0.27 * df577[128:]\n\ndf[249:250]  = df574[249:250]\ndf[122:123]  = df577[122:123]\ndf[ 28: 29]  = df574[28:29]\ndf[88:89]  = df577[88:89]  # 565.   561 \n#df[58: 59]  = df577[58: 59]   #  563g   563b\n#df[52: 53]  = df577[52: 53]  # 563  561     eq\n#df[215:216 ]  = df577[215:216 ]  # 562  561\ndf[185: 186]  = df577[185: 186]  # 561 561   eq\ndf[179: 180]  = df574[179: 180] #     561  563      \n#df[105: 106]  = df577[105: 106]  #   0.561+  561-      \ndf[182: 183]  = df574[182: 183] #?    0.561+\n#df[232: 233]  = df577[232: 233]  #   0.561   561++   \ndf[128: 129]  = df574[128: 129]  #    0.560   562\ndf[208: 209]  = df574[208: 209] #    0.560    561   \ndf[55:56 ]  = df574[55:56 ]     #    0.561+   561\ndf[174: 175]  = df577[174: 175]  #   0.560   559\ndf[209: 210]  = df574[209: 210] #   0.560+  560\ndf[135: 136]  = df574[135: 136] #   0.560+  560\ndf[212: 213]  = df577[212: 213] #.  0.559  0.559++\ndf[175: 176]  = df577[175: 176] #.  0.559  0.559+ .\ndf[149:150 ]  = df577[149:150 ] #   0.559- 0 558\ndf[85: 86]  = df577[85: 86]     #   -   +\ndf[198:199 ]  = df577[198:199 ] #.   .\ndf[242: 243]  = df574[242: 243] #    0.558++  ,\ndf[47: 48]  = df577[47: 48]     #    0.558  0.558    so so\ndf[81:82 ]  = df574[81:82 ]     #    ok.    fail   \ndf[146: 147]  = df577[146: 147] #    0.558. 0.557 \ndf[115: 116]  = df574[115: 116] #         \ndf[82: 83]  = df574[82: 83]     #   0.557  0.558\ndf[218:219 ]  = df574[218:219 ] #   0.557  0.558\ndf[22: 23]  = df577[22: 23]     #   0.557++   looking  and unknown second time\n\n\ndf[48: 49]  = df577[48: 49]     #\ndf[2: 3]  = df577[2: 3]         # \n\n\ndf[0: 1]  = df574[0: 1]         #\ndf[71: 72]  = df574[71: 72] *0.55 +df577[71: 72]*0.45     #  == unknown not run\ndf[236:237 ]  = df577[236:237 ] #  - \n\n\ndf[106:107 ]  = df574[106:107 ]*0.55 + df577[106:107 ]*0.45 #  + -\ndf[36: 37]  = df574[36: 37]     #  good   netral\n\ndf[95: 96]  = df577[95: 96]     #\ndf[222: 223]  = df574[222: 223] #  \ndf[132: 133]  = df577[132: 133] #  557 middle   \n\ndf[131: 132]  = df574[131: 132] #  smoll\ndf[233: 234]  = df574[233: 234] #\n\ndf[163: 164]  = df577[163: 164] #\ndf[7:8]  = df574[7:8]           #\n# df[130:131 ]  = df577[130:131 ] #  so so\n\n\n# df[206: 207]  = df577[206: 207] #\ndf[113: 114]  = df574[113: 114] #\n#df[18: 19]  = df574[18: 19]     #\n#df[145: 146]  = df574[145: 146] #\n#df[195: 196]  = df574[195: 196] #\n#df[86: 87]  = df574[86: 87]     #\n#df[240: 241]  = df574[240: 241] #\n#df[109: 110]  = df574[109: 110] #\n#df[172:173 ]  = df574[172:173 ] #\n#df[144: 145]  = df574[144: 145] #\n#df[235:236 ]  = df574[235:236 ] #\n#df[90: 91]  = df574[90: 91]     #\n#df[178:179 ]  = df574[178:179 ] #\n#df[217: 218]  = df574[217: 218] #\n#df[79: 80]  = df574[79: 80]     #\n#df[170: 171]  = df574[170: 171] #\n#df[205:205 ]  = df574[205:205 ] #\n#df[230: 231]  = df574[230: 231] #\n#df[108:109 ]  = df574[108:109 ] #\n#df[45: 46]  = df574[45: 46]     #  \n#df[43: 44]  = df574[43: 44]     #\n#df[154:155 ]  = df574[154:155 ] #\n#df[213: 214]  = df574[213: 214] #\n#df[16:17 ]  = df574[16:17 ]     #\n#df[17: 18]  = df574[17: 18]     #\n#df[142: 143]  = df574[142: 143] #\n#df[244: 245]  = df574[244: 245] #\n#df[4:5 ]  = df574[4:5 ]         #\n#df[91: 92]  = df574[91: 92]     #\n#df[225: 226]  = df574[225: 226] #\n#df[238: 239]  = df574[238: 239] #\n#df[224: 225 ]  = df574[224: 225 ]  #\n#df[245:  246]  = df574[245:  246]  #\n#df[187: 188]  = df574[187: 188] #\n#df[14: 15]  = df574[14: 15]     #\n#df[51: 52]  = df574[51: 52]     #\n#df[246: 247 ]  = df574[246: 247 ]  #\n#df[196:197 ]  = df574[196:197 ] #\n#df[26: 27]  = df574[26: 27]     #\n#df[98 : 99]  = df574[98 : 99]   #\n#df[118: 119]  = df574[118: 119] #\n#df[197: 198]  = df574[197: 198] #\n#df[119:120 ]  = df574[119:120 ] #\n#df[70: 71]  = df574[70: 71]     #\n#df[201: 202]  = df574[201: 202] #\n#df[60:61 ]  = df574[60:61 ]     #\n#df[117:118 ]  = df574[117:118 ] #\n#df[68: 69]  = df574[68: 69]     #\n#df[78:79 ]  = df574[78:79 ]     #\n#df[74: 75]  = df574[74: 75]     #\n#df[97:98 ]  = df574[97:98 ]     #\n#df[69:70 ]  = df574[69:70 ]     #\n#df[111: 112]  = df574[111: 112] #\n#df[3: 4]  = df574[3: 4]         #\n#df[103: 104]  = df574[103: 104] #\n\ndf.to_csv('submission.csv')","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# EDA RMSE","metadata":{}},{"cell_type":"markdown","source":"## LB sm_name","metadata":{}},{"cell_type":"code","source":"fn = '/kaggle/input/open-problems-single-cell-perturbations/id_map.csv'\ndf_id_map = pd.read_csv(fn,index_col = 0)\nprint(df_id_map.shape)\n\nsm_name_lb = ['FK 866',\n 'AZ628',\n 'CEP-37440',\n 'Sunitinib',\n 'Tivantinib',\n 'I-BET151',\n 'GO-6976',\n 'PF-04691502',\n 'Masitinib',\n 'BAY 87-2243',\n 'Colchicine',\n 'Ganetespib (STA-9090)',\n 'Ricolinostat',\n 'Oxybenzone',\n 'Selumetinib',\n 'AMD-070 (hydrochloride)',\n 'BMS-265246',\n 'Topotecan',\n '5-(9-Isopropyl-8-methyl-2-morpholino-9H-purin-6-yl)pyrimidin-2-amine',\n 'Pomalidomide',\n 'Dovitinib',\n 'PRT-062607',\n 'TGX 221',\n 'Isoniazid',\n 'PD-0325901',\n 'Riociguat',\n 'Azacitidine',\n 'Midostaurin',\n 'GW843682X',\n 'Tamatinib',\n 'Proscillaridin A;Proscillaridin-A',\n 'RG7090',\n 'IN1451',\n 'Raloxifene',\n 'Pitavastatin Calcium',\n 'TR-14035',\n 'BX 912',\n 'STK219801',\n 'Methotrexate',\n 'AT 7867',\n 'Scriptaid',\n 'UNII-BXU45ZH6LI',\n 'BI-D1870',\n 'Quizartinib',\n 'Tivozanib',\n 'ABT737',\n 'MK-5108',\n 'GLPG0634',\n 'TL_HRAS26',\n 'Navitoclax']\n\ndf_id_map['LB'] = 0\ndf_id_map[df_id_map['sm_name'].isin(sm_name_lb)  ] = 1","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## sqrt","metadata":{}},{"cell_type":"code","source":"prediction = df577#+0.01\nactual = df574\nsumm=0\ncol_cnt= len(prediction.iloc[0])\ndf_id_map['RMSE']= 0\ndf_id_map['RMSE*100']= 0\n\nprint (col_cnt)\nfor i in range(len(df577)):\n    sqr= np.sqrt( ((prediction.iloc[i]  -  actual.iloc[i] ) ** 2).sum(axis = 0 )/col_cnt )\n    print(df_id_map.iloc[i]['LB'], ' ', i,sqr,sqr.astype(int))\n    df_id_map.at[i,'RMSE'] = sqr\n    df_id_map.at[i,'RMSE*100'] = sqr*100\n    summ = summ+sqr\nprint(summ )\nprint(summ/len(df577) )\n\n","metadata":{"execution":{"iopub.status.busy":"2023-11-23T00:41:47.675011Z","iopub.execute_input":"2023-11-23T00:41:47.675497Z","iopub.status.idle":"2023-11-23T00:41:48.619642Z","shell.execute_reply.started":"2023-11-23T00:41:47.675423Z","shell.execute_reply":"2023-11-23T00:41:48.618353Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## LB ordered by RMSE","metadata":{}},{"cell_type":"code","source":"with pd.option_context('display.max_rows', None,\n                       'display.max_columns', None,\n                       'display.precision', 3,\n                       ):\n   print(df_id_map[df_id_map['LB']==1].sort_values(by='RMSE', ascending=False).to_string())","metadata":{},"execution_count":null,"outputs":[]}]}