{"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\nimport matplotlib.pyplot as plt\nimport seaborn as sb\n\nplt.style.use('ggplot')\n%matplotlib inline\n\n# dipole_moments = pd.read_csv(\"../input/dipole_moments.csv\")\n# magnetic_shielding_tensors = pd.read_csv(\"../input/magnetic_shielding_tensors.csv\")\n# mulliken_charges = pd.read_csv(\"../input/mulliken_charges.csv\")\n# potential_energy = pd.read_csv(\"../input/potential_energy.csv\")\n# scalar_coupling_contributions = pd.read_csv(\"../input/scalar_coupling_contributions.csv\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train = pd.read_csv(\"../input/train.csv\")\ntest = pd.read_csv(\"../input/test.csv\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let's start by doing a simple analysis of the data."},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"train.sample(3)","execution_count":42,"outputs":[{"output_type":"execute_result","execution_count":42,"data":{"text/plain":"              id           ...            scalar_coupling_constant\n3190761  3190761           ...                             8.01552\n1798762  1798762           ...                             3.07635\n4542294  4542294           ...                            28.51080\n\n[3 rows x 6 columns]","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>molecule_name</th>\n      <th>atom_index_0</th>\n      <th>atom_index_1</th>\n      <th>type</th>\n      <th>scalar_coupling_constant</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>3190761</th>\n      <td>3190761</td>\n      <td>dsgdb9nsd_092746</td>\n      <td>15</td>\n      <td>5</td>\n      <td>3JHC</td>\n      <td>8.01552</td>\n    </tr>\n    <tr>\n      <th>1798762</th>\n      <td>1798762</td>\n      <td>dsgdb9nsd_058286</td>\n      <td>12</td>\n      <td>4</td>\n      <td>3JHC</td>\n      <td>3.07635</td>\n    </tr>\n    <tr>\n      <th>4542294</th>\n      <td>4542294</td>\n      <td>dsgdb9nsd_126746</td>\n      <td>15</td>\n      <td>5</td>\n      <td>2JHC</td>\n      <td>28.51080</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"The training has an id for each row, the name of the molecule where the coupling constant originates (the corresponding XYZ file is located at ./structures/.xyz).`atom_index_0` and `atom_index_1` is the atom indices of the atom-pair creating the coupling. `type` is the type of the coupling and `scalar_coupling_constant` is the scalar coupling constant that we want to be able to predict."},{"metadata":{"trusted":true},"cell_type":"code","source":"test.sample(3)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"The test set structure is the same as the training except that we don't have the `scalar_coupling_constant` column. Among the other datasets, the most promising seems to be structures.csv, as it is the only one that is available for both training and testing sets. All the other dataframes are available only for the former."},{"metadata":{"trusted":true},"cell_type":"code","source":"structures = pd.read_csv(\"../input/structures.csv\")\nstructures.sample(3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"molecule_1 = structures.iloc[:5,:]\nmolecule_1","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import plotly.plotly as py\nfrom plotly.offline import init_notebook_mode, iplot\ninit_notebook_mode(connected=True)\nimport plotly.graph_objs as go","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"The first molecule is methane (CH4). Let's check its structure using plotly."},{"metadata":{"trusted":true},"cell_type":"code","source":"trace1 = go.Scatter3d(\n    x=molecule_1.x,\n    y=molecule_1.y,\n    z=molecule_1.z,\n    mode='markers',\n    marker=dict(\n        size=10,\n        color='rgb(255,0,0)',                # set color to an array/list of desired values      \n    )\n)\n\ndata = [trace1]\nlayout = go.Layout(\n    margin=dict(\n        l=0,\n        r=0,\n        b=0,\n        t=0  \n    )\n    \n)\nfig = go.Figure(data=data, layout=layout)\niplot(fig)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Well, that's pretty much what I expected from my high school chemistry classes. We could plot more molecule structures, but let's focus on other aspects of the data now. "},{"metadata":{"trusted":true},"cell_type":"code","source":"sb.countplot(train['type']);","execution_count":41,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"There are some couplings that are more usual than others. 3JHC and 2JHC are the most common, followed by 1JHC. Couplings between Hydrogen and Nitrogen atoms are less frequent. "},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize = (15,8))\nsb.distplot(train.scalar_coupling_constant);","execution_count":46,"outputs":[{"output_type":"stream","text":"/opt/conda/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning:\n\nUsing a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n\n","name":"stderr"},{"output_type":"display_data","data":{"text/plain":"<Figure size 1080x576 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"We see two clearly different distributions of coupling constants. One around 0 and one around 80. What could be different?"},{"metadata":{"trusted":true},"cell_type":"code","source":"scalar_abv_sixty = train[train.scalar_coupling_constant > 60]\nscalar_abv_sixty.sample(5)","execution_count":63,"outputs":[{"output_type":"execute_result","execution_count":63,"data":{"text/plain":"              id           ...            scalar_coupling_constant\n3739838  3739838           ...                             87.8931\n1762832  1762832           ...                             84.9877\n4530124  4530124           ...                             88.3449\n3039571  3039571           ...                             89.9151\n2171934  2171934           ...                             85.5520\n\n[5 rows x 6 columns]","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>molecule_name</th>\n      <th>atom_index_0</th>\n      <th>atom_index_1</th>\n      <th>type</th>\n      <th>scalar_coupling_constant</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>3739838</th>\n      <td>3739838</td>\n      <td>dsgdb9nsd_106815</td>\n      <td>14</td>\n      <td>3</td>\n      <td>1JHC</td>\n      <td>87.8931</td>\n    </tr>\n    <tr>\n      <th>1762832</th>\n      <td>1762832</td>\n      <td>dsgdb9nsd_057402</td>\n      <td>21</td>\n      <td>6</td>\n      <td>1JHC</td>\n      <td>84.9877</td>\n    </tr>\n    <tr>\n      <th>4530124</th>\n      <td>4530124</td>\n      <td>dsgdb9nsd_126369</td>\n      <td>9</td>\n      <td>0</td>\n      <td>1JHC</td>\n      <td>88.3449</td>\n    </tr>\n    <tr>\n      <th>3039571</th>\n      <td>3039571</td>\n      <td>dsgdb9nsd_089286</td>\n      <td>14</td>\n      <td>2</td>\n      <td>1JHC</td>\n      <td>89.9151</td>\n    </tr>\n    <tr>\n      <th>2171934</th>\n      <td>2171934</td>\n      <td>dsgdb9nsd_067655</td>\n      <td>11</td>\n      <td>0</td>\n      <td>1JHC</td>\n      <td>85.5520</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"By selecting a random sample of 5 rows, they have their type in common. Is this a general rule?"},{"metadata":{"trusted":true},"cell_type":"code","source":"scalar_abv_sixty.type.unique()","execution_count":64,"outputs":[{"output_type":"execute_result","execution_count":64,"data":{"text/plain":"array(['1JHC', '1JHN', '3JHC'], dtype=object)"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"Actually this is not general, as there are 1JHN and 3JHC as well (but no 2JHC). Let's check the distribution."},{"metadata":{"trusted":true},"cell_type":"code","source":"scalar_abv_sixty.type.value_counts()","execution_count":65,"outputs":[{"output_type":"execute_result","execution_count":65,"data":{"text/plain":"1JHC    709416\n1JHN      5505\n3JHC        16\nName: type, dtype: int64"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"Several 1JHC are in this group, with a small set of 1JHN and 3JHC. It is worth checking the number of each type in the whole training set."},{"metadata":{"trusted":true},"cell_type":"code","source":"train.type.value_counts()","execution_count":58,"outputs":[{"output_type":"execute_result","execution_count":58,"data":{"text/plain":"3JHC    1510379\n2JHC    1140674\n1JHC     709416\n3JHH     590611\n2JHH     378036\n3JHN     166415\n2JHN     119253\n1JHN      43363\nName: type, dtype: int64"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"That's interesting. ALL 1JHC couplings are above 60. This must be good to leverage in our predictive models. Just a really small number of 3JHC are above this threshold, so this is extremely rare for this type of coupling. Perhaps this will turn out to be a good feature to use in our models."}],"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}