{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Load Data"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np # linear algebra\nfrom scipy.stats.stats import pearsonr\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nfrom tqdm import tqdm_notebook as tqdm\nimport seaborn as sns \nimport matplotlib.pyplot as plt\nsns.set()\nimport os\nimport re","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Load CSV data"},{"metadata":{"trusted":true,"_kg_hide-input":true,"_kg_hide-output":true},"cell_type":"code","source":"def load_dir_csv(directory, csv_files=None):\n    if csv_files is None:\n        csv_files = sorted( [ f for f in os.listdir(directory) if f.endswith(\".csv\") ])    \n    csv_vars  = [ filename[:-4] for filename in csv_files ]\n    gdict = globals()\n    for filename, var in zip( csv_files, csv_vars ):\n        print(f\"{var:32s} = pd.read_csv({directory}/{filename})\")\n        gdict[var] = pd.read_csv( f\"{directory}/{filename}\" )\n        print(f\"{'nb of cols ':32s} = \" + str(len(gdict[var])))\n        display(gdict[var].head())\n\nload_dir_csv(\"../input/\", \n             [\"train.csv\", \"structures.csv\", \"mulliken_charges.csv\"])\n","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","collapsed":true,"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":false},"cell_type":"markdown","source":"# Install OpenBabel\n\nThe installation method was  demonstrated in: [Molecule with OpenBabel](https://www.kaggle.com/jmtest/molecule-with-openbabel)"},{"metadata":{"trusted":true,"_kg_hide-output":true},"cell_type":"code","source":"!conda install -y -c openbabel openbabel \nimport openbabel as ob","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## convert to smiles"},{"metadata":{"trusted":true},"cell_type":"code","source":"obConversion = ob.OBConversion()\nobConversion.SetInFormat(\"xyz\")\n\nstructdir='../input/structures/'\nmols=[]\nmols_files=os.listdir(structdir)\nmols_index=dict(map(reversed,enumerate(mols_files)))\nfor f in mols_index.keys():\n    mol = ob.OBMol()\n    obConversion.ReadFile(mol, structdir+f) \n    mols.append(mol)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"obConversion.SetOutFormat(\"smiles\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"smiles = []\nmolecule_names = []","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"%%time\nfor mol_ in mols:\n    smiles.append(re.split(r'\\t+', obConversion.WriteString(mol_))[0])\n    molecule_names.append(re.split(r'\\t+', obConversion.WriteString(mol_))[1])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"molecule_name_clean = []","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for molecule_name in molecule_names: \n    molecule_name_clean.append(re.findall(r\"[\\w']+\", molecule_name)[-2])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_smiles = pd.DataFrame({'molecule_name': molecule_name_clean, 'smiles': smiles})","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_smiles.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_smiles.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"len(structures['molecule_name'].unique())","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}