{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Modelling sun and sky irradiance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- This notebook explain how to use astk functions to simulate the natural lighting of a scenesky irradiance for diiferent conditions.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conventions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " - Radiation fluxes are expressed in terms of irradiance of a horizontal unit placed at earth surface(total energetic flux passing through a square meter of ground). \n", " - The standard measurement of radiation at earth surface is the global horizontal irradiance (ghi, W.m-2 i.e. J.m-2.s-1), that captures radiations coming from the sun and from the sky in the shortwave domain (visible light)\n", " - The sun contribution is called direct normal irradiance (dni), whereas sky contribution is called diffuse horizontal irradiance (dhi)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports and setup location" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "scrolled": true }, "outputs": [], "source": [ "from openalea.astk.data_access import montpellier_spring_2013\n", "from openalea.astk.sky_irradiance import sky_irradiance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Specify a location on earth:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "Montpellier ={\n", "'longitude': 3.87,\n", "'latitude': 43.61,\n", "'altitude': 56,\n", "'timezone': 'Europe/Paris'}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulating clear sky conditions" ] }, { "cell_type": "code", "execution_count": 3, "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", "
azimuthzenithelevationghidnidhippfd
2000-06-21 07:00:00+02:0065.22252281.7815748.21842669.608228133.66864550.500666167.643135
2000-06-21 08:00:00+02:0074.72389771.64700918.352991241.741681432.873390105.442654528.836249
2000-06-21 09:00:00+02:0084.23020761.00310028.996900428.277428708.49064384.827871897.324728
2000-06-21 10:00:00+02:0094.52506650.16916939.830831603.268306781.227518102.8740991233.792552
2000-06-21 11:00:00+02:00106.93611339.51764450.482356751.612236811.181337125.8437021515.360865
2000-06-21 12:00:00+02:00124.10194729.71267660.287324862.071318805.824816162.1948351723.771894
2000-06-21 13:00:00+02:00150.97466822.30584267.694158926.637555815.663749172.0090871845.290578
2000-06-21 14:00:00+02:00189.03686720.36259369.637407940.709766813.385068178.1536511871.754717
2000-06-21 15:00:00+02:00222.84735025.21780064.782200903.290967801.009537178.6218551801.370007
2000-06-21 16:00:00+02:00244.56512034.00729355.992707817.036014809.396716146.0733381638.894191
2000-06-21 17:00:00+02:00259.10320244.31628945.683711688.127892792.097153121.3870181395.154930
2000-06-21 18:00:00+02:00270.32738555.10790834.892092526.051805757.09148792.9707381086.065369
2000-06-21 19:00:00+02:00280.14211165.89461924.105381343.602529611.13281894.005988731.774188
2000-06-21 20:00:00+02:00289.56681276.34947113.650529158.912224318.90451783.651016359.130268
2000-06-21 21:00:00+02:00299.25875486.0990973.90090315.6215440.00000015.62154441.965131
\n", "
" ], "text/plain": [ " azimuth zenith elevation ghi \\\n", "2000-06-21 07:00:00+02:00 65.222522 81.781574 8.218426 69.608228 \n", "2000-06-21 08:00:00+02:00 74.723897 71.647009 18.352991 241.741681 \n", "2000-06-21 09:00:00+02:00 84.230207 61.003100 28.996900 428.277428 \n", "2000-06-21 10:00:00+02:00 94.525066 50.169169 39.830831 603.268306 \n", "2000-06-21 11:00:00+02:00 106.936113 39.517644 50.482356 751.612236 \n", "2000-06-21 12:00:00+02:00 124.101947 29.712676 60.287324 862.071318 \n", "2000-06-21 13:00:00+02:00 150.974668 22.305842 67.694158 926.637555 \n", "2000-06-21 14:00:00+02:00 189.036867 20.362593 69.637407 940.709766 \n", "2000-06-21 15:00:00+02:00 222.847350 25.217800 64.782200 903.290967 \n", "2000-06-21 16:00:00+02:00 244.565120 34.007293 55.992707 817.036014 \n", "2000-06-21 17:00:00+02:00 259.103202 44.316289 45.683711 688.127892 \n", "2000-06-21 18:00:00+02:00 270.327385 55.107908 34.892092 526.051805 \n", "2000-06-21 19:00:00+02:00 280.142111 65.894619 24.105381 343.602529 \n", "2000-06-21 20:00:00+02:00 289.566812 76.349471 13.650529 158.912224 \n", "2000-06-21 21:00:00+02:00 299.258754 86.099097 3.900903 15.621544 \n", "\n", " dni dhi ppfd \n", "2000-06-21 07:00:00+02:00 133.668645 50.500666 167.643135 \n", "2000-06-21 08:00:00+02:00 432.873390 105.442654 528.836249 \n", "2000-06-21 09:00:00+02:00 708.490643 84.827871 897.324728 \n", "2000-06-21 10:00:00+02:00 781.227518 102.874099 1233.792552 \n", "2000-06-21 11:00:00+02:00 811.181337 125.843702 1515.360865 \n", "2000-06-21 12:00:00+02:00 805.824816 162.194835 1723.771894 \n", "2000-06-21 13:00:00+02:00 815.663749 172.009087 1845.290578 \n", "2000-06-21 14:00:00+02:00 813.385068 178.153651 1871.754717 \n", "2000-06-21 15:00:00+02:00 801.009537 178.621855 1801.370007 \n", "2000-06-21 16:00:00+02:00 809.396716 146.073338 1638.894191 \n", "2000-06-21 17:00:00+02:00 792.097153 121.387018 1395.154930 \n", "2000-06-21 18:00:00+02:00 757.091487 92.970738 1086.065369 \n", "2000-06-21 19:00:00+02:00 611.132818 94.005988 731.774188 \n", "2000-06-21 20:00:00+02:00 318.904517 83.651016 359.130268 \n", "2000-06-21 21:00:00+02:00 0.000000 15.621544 41.965131 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ " sky_irr = sky_irradiance(daydate='2000-06-21', **Montpellier)\n", " sky_irr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulating cloudy conditions" ] }, { "cell_type": "code", "execution_count": 4, "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", "
azimuthzenithelevationghidnidhippfd
2000-06-21 07:00:00+02:0065.22252281.7815748.21842613.9216460.00000013.92164637.808178
2000-06-21 08:00:00+02:0074.72389771.64700918.35299148.3483360.00000048.348336120.629656
2000-06-21 09:00:00+02:0084.23020761.00310028.99690085.6554860.00000085.655486205.795668
2000-06-21 10:00:00+02:0094.52506650.16916939.830831120.6536610.000000120.653661283.847764
2000-06-21 11:00:00+02:00106.93611339.51764450.482356150.3224470.105614150.240974349.281690
2000-06-21 12:00:00+02:00124.10194729.71267660.287324172.4142640.618064171.877462397.754979
2000-06-21 13:00:00+02:00150.97466822.30584267.694158185.3275112.164173183.325281426.028282
2000-06-21 14:00:00+02:00189.03686720.36259369.637407188.1419532.292383185.992823432.186277
2000-06-21 15:00:00+02:00222.84735025.21780064.782200180.6581930.783678179.949204415.808807
2000-06-21 16:00:00+02:00244.56512034.00729355.992707163.4072030.422203163.057211378.010644
2000-06-21 17:00:00+02:00259.10320244.31628945.683711137.6255780.000000137.625578321.337452
2000-06-21 18:00:00+02:00270.32738555.10790834.892092105.2103610.000000105.210361249.555017
2000-06-21 19:00:00+02:00280.14211165.89461924.10538168.7205060.00000068.720506167.479703
2000-06-21 20:00:00+02:00289.56681276.34947113.65052931.7824450.00000031.78244581.596061
2000-06-21 21:00:00+02:00299.25875486.0990973.9009033.1243090.0000003.1243099.353447
\n", "
" ], "text/plain": [ " azimuth zenith elevation ghi \\\n", "2000-06-21 07:00:00+02:00 65.222522 81.781574 8.218426 13.921646 \n", "2000-06-21 08:00:00+02:00 74.723897 71.647009 18.352991 48.348336 \n", "2000-06-21 09:00:00+02:00 84.230207 61.003100 28.996900 85.655486 \n", "2000-06-21 10:00:00+02:00 94.525066 50.169169 39.830831 120.653661 \n", "2000-06-21 11:00:00+02:00 106.936113 39.517644 50.482356 150.322447 \n", "2000-06-21 12:00:00+02:00 124.101947 29.712676 60.287324 172.414264 \n", "2000-06-21 13:00:00+02:00 150.974668 22.305842 67.694158 185.327511 \n", "2000-06-21 14:00:00+02:00 189.036867 20.362593 69.637407 188.141953 \n", "2000-06-21 15:00:00+02:00 222.847350 25.217800 64.782200 180.658193 \n", "2000-06-21 16:00:00+02:00 244.565120 34.007293 55.992707 163.407203 \n", "2000-06-21 17:00:00+02:00 259.103202 44.316289 45.683711 137.625578 \n", "2000-06-21 18:00:00+02:00 270.327385 55.107908 34.892092 105.210361 \n", "2000-06-21 19:00:00+02:00 280.142111 65.894619 24.105381 68.720506 \n", "2000-06-21 20:00:00+02:00 289.566812 76.349471 13.650529 31.782445 \n", "2000-06-21 21:00:00+02:00 299.258754 86.099097 3.900903 3.124309 \n", "\n", " dni dhi ppfd \n", "2000-06-21 07:00:00+02:00 0.000000 13.921646 37.808178 \n", "2000-06-21 08:00:00+02:00 0.000000 48.348336 120.629656 \n", "2000-06-21 09:00:00+02:00 0.000000 85.655486 205.795668 \n", "2000-06-21 10:00:00+02:00 0.000000 120.653661 283.847764 \n", "2000-06-21 11:00:00+02:00 0.105614 150.240974 349.281690 \n", "2000-06-21 12:00:00+02:00 0.618064 171.877462 397.754979 \n", "2000-06-21 13:00:00+02:00 2.164173 183.325281 426.028282 \n", "2000-06-21 14:00:00+02:00 2.292383 185.992823 432.186277 \n", "2000-06-21 15:00:00+02:00 0.783678 179.949204 415.808807 \n", "2000-06-21 16:00:00+02:00 0.422203 163.057211 378.010644 \n", "2000-06-21 17:00:00+02:00 0.000000 137.625578 321.337452 \n", "2000-06-21 18:00:00+02:00 0.000000 105.210361 249.555017 \n", "2000-06-21 19:00:00+02:00 0.000000 68.720506 167.479703 \n", "2000-06-21 20:00:00+02:00 0.000000 31.782445 81.596061 \n", "2000-06-21 21:00:00+02:00 0.000000 3.124309 9.353447 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ " sky_irr = sky_irradiance(daydate='2000-06-21', attenuation=0.2,**Montpellier)\n", " sky_irr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulating actual irradiances" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In general, meteorological conditions are between overcast and clear sky conditions. The cursor between theses two extremes is a function of the ratio between actual irradiance (measured) and clear sky irradiance. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "get some meteorological data" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [], "source": [ "meteo_db = montpellier_spring_2013()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "2013-05-26 00:00:00+02:00 0.000000\n", "2013-05-26 01:00:00+02:00 0.000000\n", "2013-05-26 02:00:00+02:00 0.000000\n", "2013-05-26 03:00:00+02:00 0.000000\n", "2013-05-26 04:00:00+02:00 0.000000\n", "2013-05-26 05:00:00+02:00 0.000000\n", "2013-05-26 06:00:00+02:00 31.615385\n", "2013-05-26 07:00:00+02:00 166.370370\n", "2013-05-26 08:00:00+02:00 335.425926\n", "2013-05-26 09:00:00+02:00 505.481481\n", "2013-05-26 10:00:00+02:00 660.689655\n", "2013-05-26 11:00:00+02:00 783.516667\n", "2013-05-26 12:00:00+02:00 865.300000\n", "2013-05-26 13:00:00+02:00 887.883333\n", "2013-05-26 14:00:00+02:00 843.233333\n", "2013-05-26 15:00:00+02:00 861.366667\n", "2013-05-26 16:00:00+02:00 700.766667\n", "2013-05-26 17:00:00+02:00 576.966667\n", "2013-05-26 18:00:00+02:00 415.766667\n", "2013-05-26 19:00:00+02:00 241.550000\n", "2013-05-26 20:00:00+02:00 68.566667\n", "2013-05-26 21:00:00+02:00 1.433333\n", "2013-05-26 22:00:00+02:00 0.000000\n", "2013-05-26 23:00:00+02:00 0.000000\n", "2013-05-27 00:00:00+02:00 0.000000\n", "Name: ghi, dtype: float64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas\n", "when = pandas.date_range(start='2013-05-26', freq='h', periods=25,\n", " tz='Europe/Paris')\n", "observed = meteo_db.loc[when,'ghi']\n", "observed" ] }, { "cell_type": "code", "execution_count": 7, "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", "
azimuthzenithelevationghidnidhippfd
2013-05-26 07:00:00+02:0067.39467882.9022887.097712166.370370382.539320119.103104372.883646
2013-05-26 08:00:00+02:0076.99827872.59551317.404487335.425926708.145583123.608595712.692855
2013-05-26 09:00:00+02:0086.67087561.83137728.168623505.481481756.869728148.1874601043.076789
2013-05-26 10:00:00+02:0097.24079650.95309739.046903660.689655850.791955124.7278561339.890179
2013-05-26 11:00:00+02:00110.08222140.36799649.632004783.516667882.613527111.0532331573.703322
2013-05-26 12:00:00+02:00127.79025930.80950559.190495865.300000820.208961160.8430801729.864628
2013-05-26 13:00:00+02:00154.61985623.89855466.101446887.883333676.893420269.0239291775.511620
2013-05-26 14:00:00+02:00190.45856022.43756467.562436843.233333578.462848308.5624381695.371933
2013-05-26 15:00:00+02:00222.02555227.34016562.659835861.366667669.045851267.0562531725.259707
2013-05-26 16:00:00+02:00243.12927936.02797653.972024700.766667530.630224271.6301391425.687318
2013-05-26 17:00:00+02:00257.65829646.28731843.712682576.966667510.687303224.0600751188.519867
2013-05-26 18:00:00+02:00268.99637957.09215632.907844415.766667402.926728196.860848876.394984
2013-05-26 19:00:00+02:00278.93894267.93721122.062789241.550000248.774528148.104704530.208075
2013-05-26 20:00:00+02:00288.49473378.47651411.52348668.5666676.65800967.236599165.803474
2013-05-26 21:00:00+02:00298.33805988.2297521.7702481.4333330.0000001.4333334.500906
\n", "
" ], "text/plain": [ " azimuth zenith elevation ghi \\\n", "2013-05-26 07:00:00+02:00 67.394678 82.902288 7.097712 166.370370 \n", "2013-05-26 08:00:00+02:00 76.998278 72.595513 17.404487 335.425926 \n", "2013-05-26 09:00:00+02:00 86.670875 61.831377 28.168623 505.481481 \n", "2013-05-26 10:00:00+02:00 97.240796 50.953097 39.046903 660.689655 \n", "2013-05-26 11:00:00+02:00 110.082221 40.367996 49.632004 783.516667 \n", "2013-05-26 12:00:00+02:00 127.790259 30.809505 59.190495 865.300000 \n", "2013-05-26 13:00:00+02:00 154.619856 23.898554 66.101446 887.883333 \n", "2013-05-26 14:00:00+02:00 190.458560 22.437564 67.562436 843.233333 \n", "2013-05-26 15:00:00+02:00 222.025552 27.340165 62.659835 861.366667 \n", "2013-05-26 16:00:00+02:00 243.129279 36.027976 53.972024 700.766667 \n", "2013-05-26 17:00:00+02:00 257.658296 46.287318 43.712682 576.966667 \n", "2013-05-26 18:00:00+02:00 268.996379 57.092156 32.907844 415.766667 \n", "2013-05-26 19:00:00+02:00 278.938942 67.937211 22.062789 241.550000 \n", "2013-05-26 20:00:00+02:00 288.494733 78.476514 11.523486 68.566667 \n", "2013-05-26 21:00:00+02:00 298.338059 88.229752 1.770248 1.433333 \n", "\n", " dni dhi ppfd \n", "2013-05-26 07:00:00+02:00 382.539320 119.103104 372.883646 \n", "2013-05-26 08:00:00+02:00 708.145583 123.608595 712.692855 \n", "2013-05-26 09:00:00+02:00 756.869728 148.187460 1043.076789 \n", "2013-05-26 10:00:00+02:00 850.791955 124.727856 1339.890179 \n", "2013-05-26 11:00:00+02:00 882.613527 111.053233 1573.703322 \n", "2013-05-26 12:00:00+02:00 820.208961 160.843080 1729.864628 \n", "2013-05-26 13:00:00+02:00 676.893420 269.023929 1775.511620 \n", "2013-05-26 14:00:00+02:00 578.462848 308.562438 1695.371933 \n", "2013-05-26 15:00:00+02:00 669.045851 267.056253 1725.259707 \n", "2013-05-26 16:00:00+02:00 530.630224 271.630139 1425.687318 \n", "2013-05-26 17:00:00+02:00 510.687303 224.060075 1188.519867 \n", "2013-05-26 18:00:00+02:00 402.926728 196.860848 876.394984 \n", "2013-05-26 19:00:00+02:00 248.774528 148.104704 530.208075 \n", "2013-05-26 20:00:00+02:00 6.658009 67.236599 165.803474 \n", "2013-05-26 21:00:00+02:00 0.000000 1.433333 4.500906 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sky_irr = sky_irradiance(dates=observed.index, ghi=observed)\n", "sky_irr" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.14" } }, "nbformat": 4, "nbformat_minor": 4 }