915 lines (914 with data), 24.3 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"ecg = pd.read_csv(\"ECG.csv\")\n",
"eeg = pd.read_csv(\"EEG.csv\")\n",
"labels = pd.read_csv(\"Labels.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"Arousal = labels[labels['Label'] == 'Arousal']\n",
"Dominance = labels[labels['Label'] == 'Dominance']\n",
"Valence = labels[labels['Label'] == 'Valence']"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"labels.shape[0] == Arousal.shape[0] + Dominance.shape[0] + Valence.shape[0]"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"Arousal = Arousal.rename({'Score':'Arousal'}, axis=1)\n",
"Dominance = Dominance.rename({'Score':'Dominance'}, axis=1)\n",
"Valence = Valence.rename({'Score':'Valence'}, axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['ECG1', 'ECG2', 'Person', 'Movie'], dtype='object')\n",
"Index(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',\n",
" '13', 'Person', 'Movie'],\n",
" dtype='object')\n",
"Index(['Score', 'Person', 'Movie', 'Label'], dtype='object')\n"
]
}
],
"source": [
"print(ecg.columns)\n",
"print(eeg.columns)\n",
"print(labels.columns)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(10975232, 16)\n",
"(21950464, 4)\n"
]
}
],
"source": [
"print(eeg.shape)\n",
"print(ecg.shape)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"ecg = pd.merge(ecg, Arousal.drop('Label', axis=1), how='left', on=['Person', 'Movie'])\n",
"ecg = pd.merge(ecg, Dominance.drop('Label', axis=1), how='left', on=['Person', 'Movie'])\n",
"ecg = pd.merge(ecg, Valence.drop('Label', axis=1), how='left', on=['Person', 'Movie'])"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"eeg = pd.merge(eeg, Arousal.drop('Label', axis=1), how='left', on=['Person', 'Movie'])\n",
"eeg = pd.merge(eeg, Dominance.drop('Label', axis=1), how='left', on=['Person', 'Movie'])\n",
"eeg = pd.merge(eeg, Valence.drop('Label', axis=1), how='left', on=['Person', 'Movie'])"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(10975232, 19)\n"
]
}
],
"source": [
"print(eeg.shape)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(10975232, 19)\n",
"(21950464, 7)\n"
]
}
],
"source": [
"print(eeg.shape)\n",
"print(ecg.shape)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" <th>13</th>\n",
" <th>Person</th>\n",
" <th>Movie</th>\n",
" <th>Arousal</th>\n",
" <th>Dominance</th>\n",
" <th>Valence</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>4388.2</td>\n",
" <td>4102.6</td>\n",
" <td>4219.5</td>\n",
" <td>4465.1</td>\n",
" <td>4370.8</td>\n",
" <td>4399.5</td>\n",
" <td>4443.1</td>\n",
" <td>4023.1</td>\n",
" <td>4365.1</td>\n",
" <td>4310.3</td>\n",
" <td>3953.8</td>\n",
" <td>4454.4</td>\n",
" <td>4326.2</td>\n",
" <td>4165.1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4375.9</td>\n",
" <td>4093.8</td>\n",
" <td>4252.8</td>\n",
" <td>4522.6</td>\n",
" <td>4435.9</td>\n",
" <td>4411.8</td>\n",
" <td>4488.7</td>\n",
" <td>4108.7</td>\n",
" <td>4399.5</td>\n",
" <td>4384.6</td>\n",
" <td>4007.7</td>\n",
" <td>4466.7</td>\n",
" <td>4372.8</td>\n",
" <td>4247.2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4378.5</td>\n",
" <td>4091.3</td>\n",
" <td>4230.3</td>\n",
" <td>4488.2</td>\n",
" <td>4370.3</td>\n",
" <td>4402.6</td>\n",
" <td>4461.0</td>\n",
" <td>4077.4</td>\n",
" <td>4378.5</td>\n",
" <td>4328.7</td>\n",
" <td>3986.2</td>\n",
" <td>4461.0</td>\n",
" <td>4328.2</td>\n",
" <td>4203.6</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4393.8</td>\n",
" <td>4101.0</td>\n",
" <td>4193.3</td>\n",
" <td>4419.0</td>\n",
" <td>4270.3</td>\n",
" <td>4392.3</td>\n",
" <td>4411.3</td>\n",
" <td>3982.6</td>\n",
" <td>4336.4</td>\n",
" <td>4213.3</td>\n",
" <td>3930.3</td>\n",
" <td>4442.6</td>\n",
" <td>4261.0</td>\n",
" <td>4100.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4396.4</td>\n",
" <td>4108.7</td>\n",
" <td>4210.8</td>\n",
" <td>4436.4</td>\n",
" <td>4310.8</td>\n",
" <td>4401.0</td>\n",
" <td>4426.7</td>\n",
" <td>3980.5</td>\n",
" <td>4349.7</td>\n",
" <td>4238.5</td>\n",
" <td>3945.1</td>\n",
" <td>4446.7</td>\n",
" <td>4289.7</td>\n",
" <td>4115.4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 7 8 \\\n",
"0 4388.2 4102.6 4219.5 4465.1 4370.8 4399.5 4443.1 4023.1 4365.1 \n",
"1 4375.9 4093.8 4252.8 4522.6 4435.9 4411.8 4488.7 4108.7 4399.5 \n",
"2 4378.5 4091.3 4230.3 4488.2 4370.3 4402.6 4461.0 4077.4 4378.5 \n",
"3 4393.8 4101.0 4193.3 4419.0 4270.3 4392.3 4411.3 3982.6 4336.4 \n",
"4 4396.4 4108.7 4210.8 4436.4 4310.8 4401.0 4426.7 3980.5 4349.7 \n",
"\n",
" 9 10 11 12 13 Person Movie Arousal Dominance \\\n",
"0 4310.3 3953.8 4454.4 4326.2 4165.1 1 1 3 2 \n",
"1 4384.6 4007.7 4466.7 4372.8 4247.2 1 1 3 2 \n",
"2 4328.7 3986.2 4461.0 4328.2 4203.6 1 1 3 2 \n",
"3 4213.3 3930.3 4442.6 4261.0 4100.0 1 1 3 2 \n",
"4 4238.5 3945.1 4446.7 4289.7 4115.4 1 1 3 2 \n",
"\n",
" Valence \n",
"0 4 \n",
"1 4 \n",
"2 4 \n",
"3 4 \n",
"4 4 "
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eeg.head()"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"ecg.to_csv(\"ECG_Labelled.csv\")\n",
"eeg.to_csv(\"EEG_Labelled.csv\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Combine ECG and EEG"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/sf/.local/lib/python3.6/site-packages/numpy/lib/arraysetops.py:472: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" mask |= (ar1 == a)\n"
]
}
],
"source": [
"ecg = pd.read_csv(\"ECG_Labelled.csv\", index_col=0)\n",
"eeg = pd.read_csv(\"EEG_Labelled.csv\", index_col=0)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" <th>13</th>\n",
" <th>Person</th>\n",
" <th>Movie</th>\n",
" <th>Arousal</th>\n",
" <th>Dominance</th>\n",
" <th>Valence</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>4388.2</td>\n",
" <td>4102.6</td>\n",
" <td>4219.5</td>\n",
" <td>4465.1</td>\n",
" <td>4370.8</td>\n",
" <td>4399.5</td>\n",
" <td>4443.1</td>\n",
" <td>4023.1</td>\n",
" <td>4365.1</td>\n",
" <td>4310.3</td>\n",
" <td>3953.8</td>\n",
" <td>4454.4</td>\n",
" <td>4326.2</td>\n",
" <td>4165.1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4375.9</td>\n",
" <td>4093.8</td>\n",
" <td>4252.8</td>\n",
" <td>4522.6</td>\n",
" <td>4435.9</td>\n",
" <td>4411.8</td>\n",
" <td>4488.7</td>\n",
" <td>4108.7</td>\n",
" <td>4399.5</td>\n",
" <td>4384.6</td>\n",
" <td>4007.7</td>\n",
" <td>4466.7</td>\n",
" <td>4372.8</td>\n",
" <td>4247.2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4378.5</td>\n",
" <td>4091.3</td>\n",
" <td>4230.3</td>\n",
" <td>4488.2</td>\n",
" <td>4370.3</td>\n",
" <td>4402.6</td>\n",
" <td>4461.0</td>\n",
" <td>4077.4</td>\n",
" <td>4378.5</td>\n",
" <td>4328.7</td>\n",
" <td>3986.2</td>\n",
" <td>4461.0</td>\n",
" <td>4328.2</td>\n",
" <td>4203.6</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4393.8</td>\n",
" <td>4101.0</td>\n",
" <td>4193.3</td>\n",
" <td>4419.0</td>\n",
" <td>4270.3</td>\n",
" <td>4392.3</td>\n",
" <td>4411.3</td>\n",
" <td>3982.6</td>\n",
" <td>4336.4</td>\n",
" <td>4213.3</td>\n",
" <td>3930.3</td>\n",
" <td>4442.6</td>\n",
" <td>4261.0</td>\n",
" <td>4100.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4396.4</td>\n",
" <td>4108.7</td>\n",
" <td>4210.8</td>\n",
" <td>4436.4</td>\n",
" <td>4310.8</td>\n",
" <td>4401.0</td>\n",
" <td>4426.7</td>\n",
" <td>3980.5</td>\n",
" <td>4349.7</td>\n",
" <td>4238.5</td>\n",
" <td>3945.1</td>\n",
" <td>4446.7</td>\n",
" <td>4289.7</td>\n",
" <td>4115.4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 7 8 \\\n",
"0 4388.2 4102.6 4219.5 4465.1 4370.8 4399.5 4443.1 4023.1 4365.1 \n",
"1 4375.9 4093.8 4252.8 4522.6 4435.9 4411.8 4488.7 4108.7 4399.5 \n",
"2 4378.5 4091.3 4230.3 4488.2 4370.3 4402.6 4461.0 4077.4 4378.5 \n",
"3 4393.8 4101.0 4193.3 4419.0 4270.3 4392.3 4411.3 3982.6 4336.4 \n",
"4 4396.4 4108.7 4210.8 4436.4 4310.8 4401.0 4426.7 3980.5 4349.7 \n",
"\n",
" 9 10 11 12 13 Person Movie Arousal Dominance \\\n",
"0 4310.3 3953.8 4454.4 4326.2 4165.1 1 1 3 2 \n",
"1 4384.6 4007.7 4466.7 4372.8 4247.2 1 1 3 2 \n",
"2 4328.7 3986.2 4461.0 4328.2 4203.6 1 1 3 2 \n",
"3 4213.3 3930.3 4442.6 4261.0 4100.0 1 1 3 2 \n",
"4 4238.5 3945.1 4446.7 4289.7 4115.4 1 1 3 2 \n",
"\n",
" Valence \n",
"0 4 \n",
"1 4 \n",
"2 4 \n",
"3 4 \n",
"4 4 "
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eeg.head()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"ecg_downsampled = ecg[np.arange(len(ecg)) % 2 == 0] # deleting all odd indices"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"44544"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ecg_downsampled[(ecg_downsampled['Person'] == 1) & (ecg_downsampled['Movie'] == 3)].shape[0]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"ecg_downsampled.reset_index(inplace=True, drop=True)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"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>ECG1</th>\n",
" <th>ECG2</th>\n",
" <th>Person</th>\n",
" <th>Movie</th>\n",
" <th>Arousal</th>\n",
" <th>Dominance</th>\n",
" <th>Valence</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2046</td>\n",
" <td>2056</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2039</td>\n",
" <td>2059</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2041</td>\n",
" <td>2060</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2039</td>\n",
" <td>2059</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2040</td>\n",
" <td>2056</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ECG1 ECG2 Person Movie Arousal Dominance Valence\n",
"0 2046 2056 1 1 3 2 4\n",
"1 2039 2059 1 1 3 2 4\n",
"2 2041 2060 1 1 3 2 4\n",
"3 2039 2059 1 1 3 2 4\n",
"4 2040 2056 1 1 3 2 4"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ecg_downsampled.head()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"44544"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eeg[(eeg['Person'] == 1) & (eeg['Movie'] == 3)].shape[0] # check"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eeg.shape[0] == ecg_downsampled.shape[0] # check"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',\n",
" '13', 'Person', 'Movie', 'Arousal', 'Dominance', 'Valence'],\n",
" dtype='object')"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eeg.columns"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"del ecg"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"combined = pd.concat([eeg, ecg_downsampled.drop(['Person', 'Movie', 'Arousal', 'Dominance', 'Valence'], axis=1)], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10975232, 7)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ecg_downsampled.shape"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10975232, 21)"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"combined.shape"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',\n",
" '13', 'Person', 'Movie', 'Arousal', 'Dominance', 'Valence', 'ECG1',\n",
" 'ECG2'],\n",
" dtype='object')"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"combined.columns"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"combined.to_csv(\"DREAMER_combined.csv\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}