{"cells":[{"metadata":{"papermill":{"duration":0.020302,"end_time":"2020-12-19T22:55:50.42162","exception":false,"start_time":"2020-12-19T22:55:50.401318","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Library"},{"metadata":{"execution":{"iopub.execute_input":"2020-12-19T22:55:50.469055Z","iopub.status.busy":"2020-12-19T22:55:50.468302Z","iopub.status.idle":"2020-12-19T22:55:51.34599Z","shell.execute_reply":"2020-12-19T22:55:51.345354Z"},"papermill":{"duration":0.904036,"end_time":"2020-12-19T22:55:51.346125","exception":false,"start_time":"2020-12-19T22:55:50.442089","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\nimport Levenshtein\nimport cv2\nfrom PIL import Image\nfrom tqdm.auto import tqdm","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Data Loading"},{"metadata":{"execution":{"iopub.execute_input":"2020-12-19T22:55:51.447944Z","iopub.status.busy":"2020-12-19T22:55:51.44732Z","iopub.status.idle":"2020-12-19T22:55:51.588259Z","shell.execute_reply":"2020-12-19T22:55:51.587686Z"},"papermill":{"duration":0.16734,"end_time":"2020-12-19T22:55:51.588366","exception":false,"start_time":"2020-12-19T22:55:51.421026","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"%%time\n\ntrain = pd.read_csv('../input/bms-molecular-translation/train_labels.csv')\ntest = pd.read_csv('../input/bms-molecular-translation/sample_submission.csv')\n\ndef get_train_file_path(image_id):\n    return \"../input/bms-molecular-translation/train/{}/{}/{}/{}.png\".format(\n        image_id[0], image_id[1], image_id[2], image_id \n    )\n\ndef get_test_file_path(image_id):\n    return \"../input/bms-molecular-translation/test/{}/{}/{}/{}.png\".format(\n        image_id[0], image_id[1], image_id[2], image_id \n    )","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.031387,"end_time":"2020-12-19T22:55:57.645536","exception":false,"start_time":"2020-12-19T22:55:57.614149","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Scoring function"},{"metadata":{"execution":{"iopub.execute_input":"2020-12-19T22:55:57.723607Z","iopub.status.busy":"2020-12-19T22:55:57.722921Z","iopub.status.idle":"2020-12-19T22:55:57.729789Z","shell.execute_reply":"2020-12-19T22:55:57.729313Z"},"papermill":{"duration":0.05167,"end_time":"2020-12-19T22:55:57.729917","exception":false,"start_time":"2020-12-19T22:55:57.678247","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"def get_score(y_true, y_pred):\n    scores = []\n    for true, pred in zip(y_true, y_pred):\n        score = Levenshtein.distance(true, pred)\n        scores.append(score)\n    avg_score = np.mean(scores)\n    return avg_score","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Naive baseline"},{"metadata":{"trusted":true},"cell_type":"code","source":"df = train\nc = ''\nfor l in range(16):\n    c += df['InChI'].str[l:l+1].mode()[0]\ndf = train[train['InChI'].str.contains(c)]\nprint(c)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df.shape[0]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"m = 999\ncm = ''\ny_true = df['InChI'].values\nfor c in tqdm(y_true):\n    score = get_score(y_true, [c] * len(df))\n    if score<m:\n        m = score\n        cm = c\nprint(m, cm)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_true = train['InChI'].values\nscore = get_score(y_true, [cm] * len(train))\nprint(score)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Submission"},{"metadata":{"trusted":true},"cell_type":"code","source":"test['InChI'] = cm\noutput_cols = ['image_id', 'InChI']\ndisplay(test[output_cols])\ntest[output_cols].to_csv('submission.csv.gz', compression='gzip', index=False)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}