{ "cells": [ { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from importlib import reload \n", "import DNAtools\n", "reload(DNAtools)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "#!wget https://files.rcsb.org/view/1KX5.pdb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analyzing DNA via 3DNA and getting a Pandas dataframe" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "created temporary directory /tmp/tmp6_j36wte\n", "Writing coords to input.pdb\n", "OUT: \n", "ERR: \n", "handling file \n", "\n", "Time used: 00:00:00:00\n", "\n" ] } ], "source": [ "a=DNAtools.X3DNA_find_pair('1KX5.pdb')\n" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "created temporary directory /tmp/tmpzbwjslbm\n", "Writing coords to input.pdb\n", "OUT: \n", "ERR: \n", "handling file \n", "\n", "Time used: 00:00:00:01\n", "\n" ] } ], "source": [ "ref=DNAtools.X3DNA_find_pair('1KX5.pdb')" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running findpair on the original input\n", "created temporary directory /tmp/tmp0alrk1_a\n", "Writing coords to input.pdb\n", "OUT: \n", "ERR: \n", "handling file \n", "\n", "Time used: 00:00:00:00\n", "\n", "created temporary directory /tmp/tmp6b39htrm\n", "Writing coords to input.pdb\n", "Writing provided find pair file\n", "Writing new find pair file\n", "OUT: \n", "......Processing structure #1: ......\n", "[i] missing ' P ' atom : residue name ' DA', chain I, number [ -73 ]\n", "[i] missing ' OP1' atom : residue name ' DA', chain I, number [ -73 ]\n", "[i] missing ' OP2' atom : residue name ' DA', chain I, number [ -73 ]\n", "[i] missing ' P ' atom : residue name ' DA', chain J, number [ -73 ]\n", "[i] missing ' OP1' atom : residue name ' DA', chain J, number [ -73 ]\n", "[i] missing ' OP2' atom : residue name ' DA', chain J, number [ -73 ]\n", "[i] missing ' P ' atom : residue name ' DA', chain I, number [ -73 ]\n", "[i] missing ' P ' atom : residue name ' DA', chain J, number [ -73 ]\n", "\n", "Time used: 00:00:00:00\n", "\n", "Processing /tmp/tmp6b39htrm/ref_frames.dat\n", "Processing /tmp/tmp6b39htrm/bp_step.par\n", "Reference BP list\n", "[]\n", "Current BP list\n", "[]\n", "OUT: b'' b'\\nTime used: 00:00:00:00\\n'\n" ] } ], "source": [ "df=DNAtools.X3DNA_analyze('1KX5.pdb',ref)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xyzBPnameShearStretchStaggerBuckleProp-TwOpening...v1_2v2_2v3_2v4_2tm_2P_2Puckering_2ssZp_2Dp_2BPnum
022.1666138.364519.4060A-T-0.324-0.578-0.336-3.7964.482-0.730...26.7-34.831.6-15.635.0187.1C3'-exo------1
119.7852136.333118.5373T-A-0.541-0.144-0.6406.210-10.273-2.306...32.6-31.319.80.533.2160.5C2'-endo2.332.272
218.4681133.047718.8262C-G-0.142-0.030-0.3642.765-4.6121.046...43.0-34.214.912.242.1144.4C2'-endo2.352.263
316.7463130.168718.7765A-T0.066-0.106-0.3267.185-14.3505.752...33.9-24.97.814.033.8137.5C1'-exo1.942.194
415.0555127.331918.4452A-T-0.003-0.1000.1913.607-10.7541.667...32.0-27.614.26.231.8150.5C2'-endo1.642.115
..................................................................
14282.3838118.7939-12.7824T-A0.101-0.1330.131-2.372-16.6064.162...35.8-31.917.55.135.7153.4C2'-endo1.822.06143
14381.4247121.7625-13.2160T-A0.060-0.131-0.2050.944-9.8361.560...29.8-31.422.4-4.032.0168.4C2'-endo1.631.97144
14479.6564124.7293-14.3770G-C-0.208-0.224-0.754-3.1590.028-2.537...42.6-37.220.46.441.9152.5C2'-endo2.101.92145
14579.3453127.9819-14.4217A-T0.226-0.174-0.1784.337-2.041-1.905...28.8-30.221.7-3.830.9168.5C2'-endo2.302.24146
14677.2924130.4636-15.8293T-A0.332-0.217-0.4768.898-2.6644.651...28.3-25.814.73.128.4155.4C2'-endo3.122.60147
\n", "

147 rows × 58 columns

\n", "
" ], "text/plain": [ " x y z BPname Shear Stretch Stagger Buckle \\\n", "0 22.1666 138.3645 19.4060 A-T -0.324 -0.578 -0.336 -3.796 \n", "1 19.7852 136.3331 18.5373 T-A -0.541 -0.144 -0.640 6.210 \n", "2 18.4681 133.0477 18.8262 C-G -0.142 -0.030 -0.364 2.765 \n", "3 16.7463 130.1687 18.7765 A-T 0.066 -0.106 -0.326 7.185 \n", "4 15.0555 127.3319 18.4452 A-T -0.003 -0.100 0.191 3.607 \n", ".. ... ... ... ... ... ... ... ... \n", "142 82.3838 118.7939 -12.7824 T-A 0.101 -0.133 0.131 -2.372 \n", "143 81.4247 121.7625 -13.2160 T-A 0.060 -0.131 -0.205 0.944 \n", "144 79.6564 124.7293 -14.3770 G-C -0.208 -0.224 -0.754 -3.159 \n", "145 79.3453 127.9819 -14.4217 A-T 0.226 -0.174 -0.178 4.337 \n", "146 77.2924 130.4636 -15.8293 T-A 0.332 -0.217 -0.476 8.898 \n", "\n", " Prop-Tw Opening ... v1_2 v2_2 v3_2 v4_2 tm_2 P_2 Puckering_2 \\\n", "0 4.482 -0.730 ... 26.7 -34.8 31.6 -15.6 35.0 187.1 C3'-exo \n", "1 -10.273 -2.306 ... 32.6 -31.3 19.8 0.5 33.2 160.5 C2'-endo \n", "2 -4.612 1.046 ... 43.0 -34.2 14.9 12.2 42.1 144.4 C2'-endo \n", "3 -14.350 5.752 ... 33.9 -24.9 7.8 14.0 33.8 137.5 C1'-exo \n", "4 -10.754 1.667 ... 32.0 -27.6 14.2 6.2 31.8 150.5 C2'-endo \n", ".. ... ... ... ... ... ... ... ... ... ... \n", "142 -16.606 4.162 ... 35.8 -31.9 17.5 5.1 35.7 153.4 C2'-endo \n", "143 -9.836 1.560 ... 29.8 -31.4 22.4 -4.0 32.0 168.4 C2'-endo \n", "144 0.028 -2.537 ... 42.6 -37.2 20.4 6.4 41.9 152.5 C2'-endo \n", "145 -2.041 -1.905 ... 28.8 -30.2 21.7 -3.8 30.9 168.5 C2'-endo \n", "146 -2.664 4.651 ... 28.3 -25.8 14.7 3.1 28.4 155.4 C2'-endo \n", "\n", " ssZp_2 Dp_2 BPnum \n", "0 --- --- 1 \n", "1 2.33 2.27 2 \n", "2 2.35 2.26 3 \n", "3 1.94 2.19 4 \n", "4 1.64 2.11 5 \n", ".. ... ... ... \n", "142 1.82 2.06 143 \n", "143 1.63 1.97 144 \n", "144 2.10 1.92 145 \n", "145 2.30 2.24 146 \n", "146 3.12 2.60 147 \n", "\n", "[147 rows x 58 columns]" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Modifying DNA" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "created temporary directory /tmp/tmp5dnd7vz3\n", "Writing coords to input.pdb\n", "OUT: \n", "ERR: \n", "handling file \n", "\n", "Time used: 00:00:00:01\n", "\n", "Running findpair on the original input\n", "created temporary directory /tmp/tmpai631bx5\n", "Writing coords to input.pdb\n", "OUT: \n", "ERR: \n", "handling file \n", "\n", "Time used: 00:00:00:00\n", "\n", "created temporary directory /tmp/tmpay316vnn\n", "Writing coords to input.pdb\n", "Writing provided find pair file\n", "Writing new find pair file\n", "OUT: \n", "......Processing structure #1: ......\n", "[i] missing ' P ' atom : residue name ' DA', chain I, number [ -73 ]\n", "[i] missing ' OP1' atom : residue name ' DA', chain I, number [ -73 ]\n", "[i] missing ' OP2' atom : residue name ' DA', chain I, number [ -73 ]\n", "[i] missing ' P ' atom : residue name ' DA', chain J, number [ -73 ]\n", "[i] missing ' OP1' atom : residue name ' DA', chain J, number [ -73 ]\n", "[i] missing ' OP2' atom : residue name ' DA', chain J, number [ -73 ]\n", "[i] missing ' P ' atom : residue name ' DA', chain I, number [ -73 ]\n", "[i] missing ' P ' atom : residue name ' DA', chain J, number [ -73 ]\n", "\n", "Time used: 00:00:00:00\n", "\n", "Processing /tmp/tmpay316vnn/ref_frames.dat\n", "Processing /tmp/tmpay316vnn/bp_step.par\n", "Reference BP list\n", "[]\n", "Current BP list\n", "[]\n", "OUT: b'' b'\\nTime used: 00:00:00:00\\n'\n" ] } ], "source": [ "ref=DNAtools.X3DNA_find_pair('1KX5.pdb')\n", "df=DNAtools.X3DNA_analyze('1KX5.pdb',ref)" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
yzBPnameShearStretchStaggerBuckleProp-TwOpeningShiftSlideRiseTiltRollTwistPairingchi_1A/S_1alpha_1
0138.364519.4060A-T-0.324-0.578-0.336-3.7964.482-0.730NaNNaNNaNNaNNaNNaNNaN-121.9anti---
1136.333118.5373T-A-0.541-0.144-0.6406.210-10.273-2.306-0.873-0.6073.0702.3540.78532.522NaN-105.4anti-67.0
2133.047718.8262C-G-0.142-0.030-0.3642.765-4.6121.0460.7800.0203.465-0.6315.20537.916NaN-104.9anti-60.4
3130.168718.7765A-T0.066-0.106-0.3267.185-14.3505.752-0.1710.1263.3481.7286.59430.949NaN-98.5anti-47.0
4127.331918.4452A-T-0.003-0.1000.1913.607-10.7541.667-0.5380.2553.265-5.5632.17435.662NaN-105.6anti-39.7
............................................................
142118.7939-12.7824T-A0.101-0.1330.131-2.372-16.6064.162-0.293-0.6303.2450.285-0.53232.207NaN-109.3anti-44.8
143121.7625-13.2160T-A0.060-0.131-0.2050.944-9.8361.5600.283-0.0743.1363.2240.45235.143NaN-108.7anti-50.5
144124.7293-14.3770G-C-0.208-0.224-0.754-3.1590.028-2.5371.0700.4743.4516.4534.02333.410NaN-94.6anti-64.8
145127.9819-14.4217A-T0.226-0.174-0.1784.337-2.041-1.905-0.825-0.0313.162-5.5655.33533.867NaN-125.3anti-44.0
146130.4636-15.8293T-A0.332-0.217-0.4768.898-2.6644.6510.894-0.9663.2592.0072.21133.877NaN-126.7anti47.3
\n", "

147 rows × 19 columns

\n", "
" ], "text/plain": [ " y z BPname Shear Stretch Stagger Buckle Prop-Tw \\\n", "0 138.3645 19.4060 A-T -0.324 -0.578 -0.336 -3.796 4.482 \n", "1 136.3331 18.5373 T-A -0.541 -0.144 -0.640 6.210 -10.273 \n", "2 133.0477 18.8262 C-G -0.142 -0.030 -0.364 2.765 -4.612 \n", "3 130.1687 18.7765 A-T 0.066 -0.106 -0.326 7.185 -14.350 \n", "4 127.3319 18.4452 A-T -0.003 -0.100 0.191 3.607 -10.754 \n", ".. ... ... ... ... ... ... ... ... \n", "142 118.7939 -12.7824 T-A 0.101 -0.133 0.131 -2.372 -16.606 \n", "143 121.7625 -13.2160 T-A 0.060 -0.131 -0.205 0.944 -9.836 \n", "144 124.7293 -14.3770 G-C -0.208 -0.224 -0.754 -3.159 0.028 \n", "145 127.9819 -14.4217 A-T 0.226 -0.174 -0.178 4.337 -2.041 \n", "146 130.4636 -15.8293 T-A 0.332 -0.217 -0.476 8.898 -2.664 \n", "\n", " Opening Shift Slide Rise Tilt Roll Twist Pairing chi_1 A/S_1 \\\n", "0 -0.730 NaN NaN NaN NaN NaN NaN NaN -121.9 anti \n", "1 -2.306 -0.873 -0.607 3.070 2.354 0.785 32.522 NaN -105.4 anti \n", "2 1.046 0.780 0.020 3.465 -0.631 5.205 37.916 NaN -104.9 anti \n", "3 5.752 -0.171 0.126 3.348 1.728 6.594 30.949 NaN -98.5 anti \n", "4 1.667 -0.538 0.255 3.265 -5.563 2.174 35.662 NaN -105.6 anti \n", ".. ... ... ... ... ... ... ... ... ... ... \n", "142 4.162 -0.293 -0.630 3.245 0.285 -0.532 32.207 NaN -109.3 anti \n", "143 1.560 0.283 -0.074 3.136 3.224 0.452 35.143 NaN -108.7 anti \n", "144 -2.537 1.070 0.474 3.451 6.453 4.023 33.410 NaN -94.6 anti \n", "145 -1.905 -0.825 -0.031 3.162 -5.565 5.335 33.867 NaN -125.3 anti \n", "146 4.651 0.894 -0.966 3.259 2.007 2.211 33.877 NaN -126.7 anti \n", "\n", " alpha_1 \n", "0 --- \n", "1 -67.0 \n", "2 -60.4 \n", "3 -47.0 \n", "4 -39.7 \n", ".. ... \n", "142 -44.8 \n", "143 -50.5 \n", "144 -64.8 \n", "145 -44.0 \n", "146 47.3 \n", "\n", "[147 rows x 19 columns]" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[:,1:20]\n" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [], "source": [ "### Let's remove Roll and Tilt from frist 20 bp steps" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [], "source": [ "df.loc[1:20,'Roll']=0\n", "df.loc[1:20,'Tilt']=0" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 NaN\n", "1 0.000\n", "2 0.000\n", "3 0.000\n", "4 0.000\n", " ... \n", "142 -0.532\n", "143 0.452\n", "144 4.023\n", "145 5.335\n", "146 2.211\n", "Name: Roll, Length: 147, dtype: float64" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[:,'Roll']" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "created temporary directory /tmp/tmpwnz_mljz\n", "OUT: b'' b''\n", "OUT: b'' b\"O3' (#311) and P (#322) on chain A have distance 4.6 over 4.5: no linkage assigned\\n\\nTime used: 00:00:00:01\\n\"\n" ] } ], "source": [ "DNAtools.build_dna(df,'1KX5_20unw.pdb', new_seq=None)" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [], "source": [ "import MDAnalysis as mda\n", "from MDAnalysis.analysis import align\n", "from MDAnalysis.analysis.rms import rmsd\n", "import nglview as nv" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ab20c8cdc6a84da1b8ba259dafc02072", "version_major": 2, "version_minor": 0 }, "text/plain": [ "NGLWidget()" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nucl=mda.Universe(\"1KX5_20unw.pdb\")\n", "nv.show_mdanalysis(nucl,gui=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Building straight DNA" ] }, { "cell_type": "code", "execution_count": 204, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 204, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.system(\"fiber -seq='AAAAAAAA' dna.pdb\")" ] }, { "cell_type": "code", "execution_count": 205, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "148460f13c4d458db315168a4b5ecb46", "version_major": 2, "version_minor": 0 }, "text/plain": [ "NGLWidget()" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dna=mda.Universe(\"dna.pdb\")\n", "nv.show_mdanalysis(dna,gui=False)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:moldyn]", "language": "python", "name": "conda-env-moldyn-py" }, "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 }