{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\n\nimport matplotlib\nimport matplotlib.pyplot as plt\nfrom mpl_toolkits.mplot3d import Axes3D\n\nplt.rcParams[\"patch.force_edgecolor\"] = True\n#rc('text', usetex=True)\nfrom IPython.display import display # Allows the use of display() for DataFrames\nimport seaborn as sns\nsns.set(style=\"whitegrid\", palette=\"muted\", color_codes=True)\nsns.set_style(\"whitegrid\", {'grid.linestyle': '--'})\nred = sns.xkcd_rgb[\"light red\"]\ngreen = sns.xkcd_rgb[\"medium green\"]\nblue = sns.xkcd_rgb[\"denim blue\"]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Data Loading\nstructures = pd.read_csv('../input/structures.csv')\ntrain = pd.read_csv('../input/train.csv')\ntrain[\"target_exp\"] = np.log1p(np.exp(train.scalar_coupling_constant))/10 # for line width","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def draw_3d_graph(struct, train_df, ax):\n    ax.scatter(xs=struct['x'], ys=struct['y'], zs=struct['z'], s=100, color=\"r\")\n    ax.set_title(f'{train_df.iloc[0].molecule_name}, n:{train_df.shape[0]}')\n    \n    for i, tr in train_df.iterrows():\n        g0 = struct.iloc[tr.atom_index_0]\n        g1 = struct.iloc[tr.atom_index_1]\n        ax.plot3D([g0['x'], g1['x']], [g0['y'], g1['y']], [g0['z'], g1['z']], lw=tr.target_exp, color=\"gray\", alpha=0.5)\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\nn_row = 50\nn_col = 4\ncnt = 0\nplt.figure(figsize=(25, 5*n_row))\nfor i, g in structures.groupby(\"molecule_name\"):\n    data = train[train.molecule_name==i]\n    if data.shape[0]==0: continue\n    ax = plt.subplot(n_row, n_col, cnt+1, projection='3d')\n    draw_3d_graph(g, data, ax)\n    cnt += 1\n    if cnt == n_row*n_col:\n        break\nplt.tight_layout()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"mol_size = structures.groupby(\"molecule_name\").size() \nmol_size_large = mol_size[mol_size>15]\n\nn_row = 50\nn_col = 4\ncnt = 0\nplt.figure(figsize=(25, 5*n_row))\nfor i, g in structures[structures.molecule_name.isin(mol_size_large.index.tolist())].groupby(\"molecule_name\"):\n    data = train[train.molecule_name==i]\n    if data.shape[0]==0: continue\n    ax = plt.subplot(n_row, n_col, cnt+1, projection='3d')\n    draw_3d_graph(g, data, ax)\n    cnt += 1\n    if cnt == n_row*n_col:\n        break\nplt.tight_layout()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","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}