|
|
|
@ -2,10 +2,7 @@
@@ -2,10 +2,7 @@
|
|
|
|
|
"cells": [ |
|
|
|
|
{ |
|
|
|
|
"cell_type": "markdown", |
|
|
|
|
"metadata": { |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"source": [ |
|
|
|
|
"# Cartopy Examples" |
|
|
|
|
] |
|
|
|
@ -13,11 +10,7 @@
@@ -13,11 +10,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"%matplotlib inline" |
|
|
|
@ -27,9 +20,6 @@
@@ -27,9 +20,6 @@
|
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true, |
|
|
|
|
"scrolled": false |
|
|
|
|
}, |
|
|
|
|
"outputs": [], |
|
|
|
@ -115,11 +105,7 @@
@@ -115,11 +105,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"%matplotlib inline\n", |
|
|
|
@ -203,9 +189,6 @@
@@ -203,9 +189,6 @@
|
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true, |
|
|
|
|
"scrolled": false |
|
|
|
|
}, |
|
|
|
|
"outputs": [], |
|
|
|
@ -343,9 +326,6 @@
@@ -343,9 +326,6 @@
|
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true, |
|
|
|
|
"scrolled": false |
|
|
|
|
}, |
|
|
|
|
"outputs": [], |
|
|
|
@ -411,11 +391,7 @@
@@ -411,11 +391,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"%matplotlib inline\n", |
|
|
|
@ -484,11 +460,7 @@
@@ -484,11 +460,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import (absolute_import, division, print_function, unicode_literals)\n", |
|
|
|
@ -568,11 +540,7 @@
@@ -568,11 +540,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
@ -606,11 +574,7 @@
@@ -606,11 +574,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
@ -631,10 +595,7 @@
@@ -631,10 +595,7 @@
|
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "markdown", |
|
|
|
|
"metadata": { |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"source": [ |
|
|
|
|
"# Basemap Examples" |
|
|
|
|
] |
|
|
|
@ -642,11 +603,7 @@
@@ -642,11 +603,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"\n", |
|
|
|
@ -704,11 +661,7 @@
@@ -704,11 +661,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"%matplotlib inline\n", |
|
|
|
@ -781,11 +734,7 @@
@@ -781,11 +734,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"%matplotlib inline\n", |
|
|
|
@ -921,11 +870,7 @@
@@ -921,11 +870,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
@ -960,11 +905,7 @@
@@ -960,11 +905,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
@ -986,11 +927,7 @@
@@ -986,11 +927,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"# SLP\n", |
|
|
|
@ -1041,11 +978,7 @@
@@ -1041,11 +978,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
@ -1079,11 +1012,7 @@
@@ -1079,11 +1012,7 @@
|
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": false, |
|
|
|
|
"deletable": true, |
|
|
|
|
"editable": true |
|
|
|
|
}, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
@ -1101,6 +1030,233 @@
@@ -1101,6 +1030,233 @@
|
|
|
|
|
"\n", |
|
|
|
|
"print (bounds)" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "markdown", |
|
|
|
|
"metadata": {}, |
|
|
|
|
"source": [ |
|
|
|
|
"# OpenMP Routines" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
|
"\n", |
|
|
|
|
"from wrf import omp_enabled\n", |
|
|
|
|
"\n", |
|
|
|
|
"print(omp_enabled())" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
|
"\n", |
|
|
|
|
"from wrf import omp_get_num_procs\n", |
|
|
|
|
"\n", |
|
|
|
|
"print(omp_get_num_procs())" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
|
"\n", |
|
|
|
|
"from wrf import omp_set_num_threads, omp_get_max_threads\n", |
|
|
|
|
"\n", |
|
|
|
|
"omp_set_num_threads(4)\n", |
|
|
|
|
"\n", |
|
|
|
|
"print(omp_get_max_threads())" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
|
"\n", |
|
|
|
|
"from wrf import omp_set_schedule, omp_get_schedule, OMP_SCHED_GUIDED\n", |
|
|
|
|
"\n", |
|
|
|
|
"omp_set_schedule(OMP_SCHED_GUIDED, 0)\n", |
|
|
|
|
"\n", |
|
|
|
|
"sched, modifier = omp_get_schedule()\n", |
|
|
|
|
"\n", |
|
|
|
|
"print(sched, modifier)" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "markdown", |
|
|
|
|
"metadata": {}, |
|
|
|
|
"source": [ |
|
|
|
|
"# Loop and Fill Technique" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function, division\n", |
|
|
|
|
"\n", |
|
|
|
|
"import numpy as np\n", |
|
|
|
|
"from netCDF4 import Dataset\n", |
|
|
|
|
"from wrf import getvar, ALL_TIMES\n", |
|
|
|
|
"\n", |
|
|
|
|
"filename_list = [\"/Users/ladwig/Documents/wrf_files/wrf_vortex_multi/wrfout_d02_2005-08-28_00:00:00\",\n", |
|
|
|
|
" \"/Users/ladwig/Documents/wrf_files/wrf_vortex_multi/wrfout_d02_2005-08-28_12:00:00\", \n", |
|
|
|
|
" \"/Users/ladwig/Documents/wrf_files/wrf_vortex_multi/wrfout_d02_2005-08-29_00:00:00\"]\n", |
|
|
|
|
"\n", |
|
|
|
|
"# Result shape (hardcoded for this example, modify as necessary)\n", |
|
|
|
|
"result_shape = (9, 29, 96, 96)\n", |
|
|
|
|
"\n", |
|
|
|
|
"# Only need 4-byte floats\n", |
|
|
|
|
"z_final = np.empty(result_shape, np.float32)\n", |
|
|
|
|
"\n", |
|
|
|
|
"# Modify this number if using more than 1 time per file\n", |
|
|
|
|
"times_per_file = 4\n", |
|
|
|
|
"\n", |
|
|
|
|
"for timeidx in xrange(result_shape[0]):\n", |
|
|
|
|
" # Compute the file index and the time index inside the file\n", |
|
|
|
|
" fileidx = timeidx // times_per_file\n", |
|
|
|
|
" file_timeidx = timeidx % times_per_file\n", |
|
|
|
|
"\n", |
|
|
|
|
" f = Dataset(filename_list[fileidx]) \n", |
|
|
|
|
" z = getvar(f, \"z\", file_timeidx)\n", |
|
|
|
|
"\n", |
|
|
|
|
" z_final[timeidx,:] = z[:]\n", |
|
|
|
|
" f.close()\n" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "markdown", |
|
|
|
|
"metadata": {}, |
|
|
|
|
"source": [ |
|
|
|
|
"# Using the cache argument" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
|
"\n", |
|
|
|
|
"import time\n", |
|
|
|
|
"from netCDF4 import Dataset\n", |
|
|
|
|
"from wrf import getvar, ALL_TIMES, extract_vars\n", |
|
|
|
|
"\n", |
|
|
|
|
"wrf_filenames = [\"/Users/ladwig/Documents/wrf_files/wrf_vortex_multi/wrfout_d02_2005-08-28_00:00:00\",\n", |
|
|
|
|
" \"/Users/ladwig/Documents/wrf_files/wrf_vortex_multi/wrfout_d02_2005-08-28_12:00:00\", \n", |
|
|
|
|
" \"/Users/ladwig/Documents/wrf_files/wrf_vortex_multi/wrfout_d02_2005-08-29_00:00:00\"]\n", |
|
|
|
|
"\n", |
|
|
|
|
"wrfin = [Dataset(x) for x in wrf_filenames]\n", |
|
|
|
|
"\n", |
|
|
|
|
"start = time.time()\n", |
|
|
|
|
"my_cache = extract_vars(wrfin, ALL_TIMES, (\"P\", \"PSFC\", \"PB\", \"PH\", \"PHB\", \"T\", \"QVAPOR\", \n", |
|
|
|
|
" \"HGT\", \"U\", \"V\", \"W\"))\n", |
|
|
|
|
"end = time.time()\n", |
|
|
|
|
"print (\"Time taken to build cache: \", (end-start), \"s\")\n", |
|
|
|
|
"\n", |
|
|
|
|
"vars = (\"avo\", \"eth\", \"cape_2d\", \"cape_3d\", \"ctt\", \"dbz\", \"mdbz\", \n", |
|
|
|
|
" \"geopt\", \"helicity\", \"lat\", \"lon\", \"omg\", \"p\", \"pressure\", \n", |
|
|
|
|
" \"pvo\", \"pw\", \"rh2\", \"rh\", \"slp\", \"ter\", \"td2\", \"td\", \"tc\", \n", |
|
|
|
|
" \"theta\", \"tk\", \"tv\", \"twb\", \"updraft_helicity\", \"ua\", \"va\", \n", |
|
|
|
|
" \"wa\", \"uvmet10\", \"uvmet\", \"z\", \"cfrac\", \"zstag\", \"geopt_stag\")\n", |
|
|
|
|
"\n", |
|
|
|
|
"start = time.time()\n", |
|
|
|
|
"for var in vars:\n", |
|
|
|
|
" v = getvar(wrfin, var, ALL_TIMES)\n", |
|
|
|
|
"end = time.time()\n", |
|
|
|
|
"no_cache_time = (end-start)\n", |
|
|
|
|
"\n", |
|
|
|
|
"print (\"Time taken without variable cache: \", no_cache_time, \"s\")\n", |
|
|
|
|
"\n", |
|
|
|
|
"start = time.time()\n", |
|
|
|
|
"for var in vars:\n", |
|
|
|
|
" v = getvar(wrfin, var, ALL_TIMES, cache=my_cache)\n", |
|
|
|
|
"end = time.time()\n", |
|
|
|
|
"cache_time = (end-start)\n", |
|
|
|
|
"\n", |
|
|
|
|
"print (\"Time taken with variable cache: \", cache_time, \"s\")\n", |
|
|
|
|
"\n", |
|
|
|
|
"improvement = ((no_cache_time-cache_time)/no_cache_time) * 100 \n", |
|
|
|
|
"print (\"The cache decreased computation time by: \", improvement, \"%\")" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "markdown", |
|
|
|
|
"metadata": {}, |
|
|
|
|
"source": [ |
|
|
|
|
"# Using the cache argument with OpenMP" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"cell_type": "code", |
|
|
|
|
"execution_count": null, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"outputs": [], |
|
|
|
|
"source": [ |
|
|
|
|
"from __future__ import print_function\n", |
|
|
|
|
"\n", |
|
|
|
|
"import time\n", |
|
|
|
|
"from netCDF4 import Dataset\n", |
|
|
|
|
"from wrf import getvar, ALL_TIMES, extract_vars, omp_set_num_threads, omp_get_num_procs\n", |
|
|
|
|
"\n", |
|
|
|
|
"wrf_filenames = [\"/Users/ladwig/Documents/wrf_files/wrf_vortex_multi/wrfout_d02_2005-08-28_00:00:00\",\n", |
|
|
|
|
" \"/Users/ladwig/Documents/wrf_files/wrf_vortex_multi/wrfout_d02_2005-08-28_12:00:00\", \n", |
|
|
|
|
" \"/Users/ladwig/Documents/wrf_files/wrf_vortex_multi/wrfout_d02_2005-08-29_00:00:00\"]\n", |
|
|
|
|
"\n", |
|
|
|
|
"wrfin = [Dataset(x) for x in wrf_filenames]\n", |
|
|
|
|
"\n", |
|
|
|
|
"start = time.time()\n", |
|
|
|
|
"my_cache = extract_vars(wrfin, ALL_TIMES, (\"P\", \"PSFC\", \"PB\", \"PH\", \"PHB\", \"T\", \"QVAPOR\", \n", |
|
|
|
|
" \"HGT\", \"U\", \"V\", \"W\"))\n", |
|
|
|
|
"end = time.time()\n", |
|
|
|
|
"print (\"Time taken to build cache: \", (end-start), \"s\")\n", |
|
|
|
|
"\n", |
|
|
|
|
"omp_set_num_threads(omp_get_num_procs())\n", |
|
|
|
|
"\n", |
|
|
|
|
"vars = (\"avo\", \"eth\", \"cape_2d\", \"cape_3d\", \"ctt\", \"dbz\", \"mdbz\", \n", |
|
|
|
|
" \"geopt\", \"helicity\", \"lat\", \"lon\", \"omg\", \"p\", \"pressure\", \n", |
|
|
|
|
" \"pvo\", \"pw\", \"rh2\", \"rh\", \"slp\", \"ter\", \"td2\", \"td\", \"tc\", \n", |
|
|
|
|
" \"theta\", \"tk\", \"tv\", \"twb\", \"updraft_helicity\", \"ua\", \"va\", \n", |
|
|
|
|
" \"wa\", \"uvmet10\", \"uvmet\", \"z\", \"cfrac\", \"zstag\", \"geopt_stag\")\n", |
|
|
|
|
"\n", |
|
|
|
|
"start = time.time()\n", |
|
|
|
|
"for var in vars:\n", |
|
|
|
|
" v = getvar(wrfin, var, ALL_TIMES)\n", |
|
|
|
|
"end = time.time()\n", |
|
|
|
|
"no_cache_time = (end-start)\n", |
|
|
|
|
"\n", |
|
|
|
|
"print (\"Time taken without variable cache: \", no_cache_time, \"s\")\n", |
|
|
|
|
"\n", |
|
|
|
|
"start = time.time()\n", |
|
|
|
|
"for var in vars:\n", |
|
|
|
|
" v = getvar(wrfin, var, ALL_TIMES, cache=my_cache)\n", |
|
|
|
|
"end = time.time()\n", |
|
|
|
|
"cache_time = (end-start)\n", |
|
|
|
|
"\n", |
|
|
|
|
"print (\"Time taken with variable cache: \", cache_time, \"s\")\n", |
|
|
|
|
"\n", |
|
|
|
|
"improvement = ((no_cache_time-cache_time)/no_cache_time) * 100 \n", |
|
|
|
|
"print (\"The cache decreased computation time by: \", improvement, \"%\")\n", |
|
|
|
|
"\n", |
|
|
|
|
"omp_set_num_threads(1)" |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
"metadata": { |
|
|
|
@ -1119,7 +1275,7 @@
@@ -1119,7 +1275,7 @@
|
|
|
|
|
"name": "python", |
|
|
|
|
"nbconvert_exporter": "python", |
|
|
|
|
"pygments_lexer": "ipython2", |
|
|
|
|
"version": "2.7.12" |
|
|
|
|
"version": "2.7.13" |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
"nbformat": 4, |
|
|
|
|