diff --git a/_toc.yml b/_toc.yml
index a974a7e6e..b6d299de8 100644
--- a/_toc.yml
+++ b/_toc.yml
@@ -1,4 +1,4 @@
-# Table of content
+# Table of contents
# Learn more at https://jupyterbook.org/customize/toc.html
#
- file: landing-page
@@ -50,4 +50,6 @@
sections:
- file: core/pandas/pandas_fullNotebook
- file: core/data-formats
+ sections:
+ - file: core/data-formats/netcdf-cf
- file: core/xarray
diff --git a/core/data-formats/netcdf-cf.ipynb b/core/data-formats/netcdf-cf.ipynb
new file mode 100644
index 000000000..e696eba09
--- /dev/null
+++ b/core/data-formats/netcdf-cf.ipynb
@@ -0,0 +1,1120 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# NetCDF and CF: The Basics\n",
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Overview\n",
+ "\n",
+ "1. [Gridded Data](#gridded)\n",
+ "1. [Observation Data](#obs)\n",
+ "1. [References](#references)\n",
+ "\n",
+ "This notebook will introduce you to the basics of Climate and Forecasting (CF) metadata for netCDF data files. Along with an introduction to netCDF, we will introduce the CF data model and discuss some netCDF implementation details to consider when deciding how to write data with CF and netCDF. We will cover gridded data as well as in situ data, and touch on storing geometries data in CF."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Prerequisites\n",
+ "\n",
+ "| Concepts | Importance | Notes |\n",
+ "| --- | --- | --- |\n",
+ "| [Datetime](../datetime) | Necessary | |\n",
+ "| [Numpy](../numpy) | Necessary | |\n",
+ "\n",
+ "\n",
+ "- **Experience level**: **beginner**\n",
+ "- **Time to learn**: **medium**"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Imports"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from datetime import datetime, timedelta\n",
+ "\n",
+ "import numpy as np\n",
+ "from cftime import date2num\n",
+ "from netCDF4 import Dataset\n",
+ "from pyproj import Proj"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "## Gridded Data"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's say we're working with some numerical weather forecast model output. Let's walk through the steps necessary to store this data in netCDF, using the Climate and Forecasting metadata conventions to ensure that our data are available to as many tools as possible.\n",
+ "\n",
+ "To start, let's assume the following about our data:\n",
+ "* There are three spatial dimensions (`x`, `y`, and `press`) and one temporal dimension (`times`)\n",
+ "* The native coordinate system of the model is on a regular 3km x 3km grid (`x` and `y`) that represents the Earth on a Lambert conformal projection.\n",
+ "* The vertical dimension (`press`) consists of several discrete pressure levels in units of hPa.\n",
+ "* The time dimension consists of twelve consecutive hours (`times`), beginning at 2200 UTC on the current day.\n",
+ "\n",
+ "We'll also go ahead and generate our dimensional arrays:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "start = datetime.utcnow().replace(hour=22, minute=0, second=0, microsecond=0)\n",
+ "times = np.array([start + timedelta(hours=h) for h in range(13)])\n",
+ "\n",
+ "x = np.arange(-150, 153, 3)\n",
+ "y = np.arange(-100, 100, 3)\n",
+ "\n",
+ "press = np.array([1000, 925, 850, 700, 500, 300, 250])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Next, let's create a multidimensional array of random values to hold our variable of interest ... in this case, temperature (`temps`). Note that the dimensions correspond to the ones we just created above."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "temps = np.random.randn(times.size, press.size, y.size, x.size)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Creating the file and dimensions\n",
+ "\n",
+ "The first step is to create a new file in netCDF format and set up the shared dimensions we'll be using in the file. We'll be using the `netCDF4` library to do all of the requisite netCDF API calls."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "nc = Dataset('forecast_model.nc', 'w', format='NETCDF4_CLASSIC', diskless=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We're going to start by adding some global attribute metadata. These are recommendations from the standard (not required), but they're easy to add and help users keep the data straight, so let's go ahead and do it."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "nc.Conventions = 'CF-1.7'\n",
+ "nc.title = 'Forecast model run'\n",
+ "nc.institution = 'Unidata'\n",
+ "nc.source = 'WRF-1.5'\n",
+ "nc.history = str(datetime.utcnow()) + ' Python'\n",
+ "nc.references = ''\n",
+ "nc.comment = ''"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "At this point, this is the plain-text representation of this netCDF dataset:\n",
+ "```\n",
+ "netcdf forecast_model {\n",
+ " attributes:\n",
+ " :Conventions = \"CF-1.7\" ;\n",
+ " :title = \"Forecast model run\" ;\n",
+ " :institution = \"Unidata\" ;\n",
+ " :source = \"WRF-1.5\" ;\n",
+ " :history = \"2019-07-16 02:21:52.005718 Python\" ;\n",
+ " :references = \"\" ;\n",
+ " :comment = \"\" ;\n",
+ "}\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "
Info
\n",
+ " This plain-text representation is known as netCDF Common Data Format Language, or
CDL.\n",
+ "
\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Next, before adding variables to the file to define each of the data fields in this file, we need to define the dimensions that exist in this data set. We set each of `x`, `y`, and `pressure` to the size of the corresponding array. We set `forecast_time` to be an \"unlimited\" dimension, which allows the dataset to grow along that dimension if we write additional data to it later."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\n",
+ "root group (NETCDF4_CLASSIC data model, file format HDF5):\n",
+ " Conventions: CF-1.7\n",
+ " title: Forecast model run\n",
+ " institution: Unidata\n",
+ " source: WRF-1.5\n",
+ " history: 2021-06-15 20:00:38.802193 Python\n",
+ " references: \n",
+ " comment: \n",
+ " dimensions(sizes): forecast_time(0), x(101), y(67), pressure(7)\n",
+ " variables(dimensions): \n",
+ " groups: "
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "nc.createDimension('forecast_time', None)\n",
+ "nc.createDimension('x', x.size)\n",
+ "nc.createDimension('y', y.size)\n",
+ "nc.createDimension('pressure', press.size)\n",
+ "nc"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The CDL representation now shows our dimensions:\n",
+ "```\n",
+ "netcdf forecast_model {\n",
+ " dimensions:\n",
+ " forecast_time = UNLIMITED (currently 13) ;\n",
+ " x = 101 ;\n",
+ " y = 67 ;\n",
+ " pressure = 7 ;\n",
+ " attributes:\n",
+ " :Conventions = \"CF-1.7\" ;\n",
+ " :title = \"Forecast model run\" ;\n",
+ " :institution = \"Unidata\" ;\n",
+ " :source = \"WRF-1.5\" ;\n",
+ " :history = \"2019-07-16 02:21:52.005718 Python\" ;\n",
+ " :references = \"\" ;\n",
+ " :comment = \"\" ;\n",
+ "}\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Creating and filling a variable"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "So far, all we've done is outlined basic information about our dataset: broad metadata and the dimensions of our dataset. Now we create a `netCDF4 variable` to hold one particular data field for our dataset, in this case the forecast air temperature. When defining this variable, we specify the datatype for the values being stored, the relevant dimensions, as well as enable optional `zlib`-based compression."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "temps_var = nc.createVariable(\n",
+ " 'Temperature',\n",
+ " datatype=np.float32,\n",
+ " dimensions=('forecast_time', 'pressure', 'y', 'x'),\n",
+ " zlib=True,\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now that we have the variable, we tell Python to write our array of data to it."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\n",
+ "float32 Temperature(forecast_time, pressure, y, x)\n",
+ "unlimited dimensions: forecast_time\n",
+ "current shape = (13, 7, 67, 101)\n",
+ "filling on, default _FillValue of 9.969209968386869e+36 used"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "temps_var[:] = temps\n",
+ "temps_var"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "If instead we wanted to write data sporadically, like once per time step, we could do that instead (though the `for` loop below might actually be at a higher level in the program:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "next_slice = 0\n",
+ "for temp_slice in temps:\n",
+ " temps_var[next_slice] = temp_slice\n",
+ " next_slice += 1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "At this point, this is the CDL representation of our dataset:\n",
+ "```\n",
+ "netcdf forecast_model {\n",
+ " dimensions:\n",
+ " forecast_time = UNLIMITED (currently 13) ;\n",
+ " x = 101 ;\n",
+ " y = 67 ;\n",
+ " pressure = 7 ;\n",
+ " variables:\n",
+ " float Temperature(forecast_time, pressure, y, x) ;\n",
+ " attributes:\n",
+ " :Conventions = \"CF-1.7\" ;\n",
+ " :title = \"Forecast model run\" ;\n",
+ " :institution = \"Unidata\" ;\n",
+ " :source = \"WRF-1.5\" ;\n",
+ " :history = \"2019-07-16 02:21:52.005718 Python\" ;\n",
+ " :references = \"\" ;\n",
+ " :comment = \"\" ;\n",
+ "}\n",
+ "```\n",
+ "We can also add attributes to this variable to define metadata. The CF conventions require a `units` attribute to be set for all variables that represent a dimensional quantity. The value of this attribute needs to be parsable by the [UDUNITS](https://www.unidata.ucar.edu/software/udunits/) library. Here we set it to a value of `'Kelvin'`. We also set the standard (optional) attributes of `long_name` and `standard_name`. The former contains a longer description of the variable, while the latter comes from a controlled vocabulary in the CF conventions. This allows users of data to understand, in a standard fashion, what a variable represents. If we had missing values, we could also set the `missing_value` attribute to an appropriate value."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "> **NASA Dataset Interoperability Recommendations:**\n",
+ ">\n",
+ "> Section 2.2 - Include Basic CF Attributes\n",
+ ">\n",
+ "> Include where applicable: `units`, `long_name`, `standard_name`, `valid_min` / `valid_max`, `scale_factor` / `add_offset` and others."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\n",
+ "float32 Temperature(forecast_time, pressure, y, x)\n",
+ " units: Kelvin\n",
+ " standard_name: air_temperature\n",
+ " long_name: Forecast air temperature\n",
+ " missing_value: -9999.0\n",
+ "unlimited dimensions: forecast_time\n",
+ "current shape = (13, 7, 67, 101)\n",
+ "filling on, default _FillValue of 9.969209968386869e+36 used"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "temps_var.units = 'Kelvin'\n",
+ "temps_var.standard_name = 'air_temperature'\n",
+ "temps_var.long_name = 'Forecast air temperature'\n",
+ "temps_var.missing_value = -9999\n",
+ "temps_var"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The resulting CDL (truncated to the variables only) looks like:\n",
+ "```\n",
+ " variables:\n",
+ " float Temperature(forecast_time, pressure, y, x) ;\n",
+ " Temperature:units = \"Kelvin\" ;\n",
+ " Temperature:standard_name = \"air_temperature\" ;\n",
+ " Temperature:long_name = \"Forecast air temperature\" ;\n",
+ " Temperature:missing_value = -9999.0 ;\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Coordinate variables"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "To properly orient our data in time and space, we need to go beyond dimensions (which define common sizes and alignment) and include values along these dimensions, which are called \"Coordinate Variables\". Generally, these are defined by creating a one dimensional variable with the same name as the respective dimension.\n",
+ "\n",
+ "To start, we define variables which define our `x` and `y` coordinate values. These variables include `standard_name`s which allow associating them with projections (more on this later) as well as an optional `axis` attribute to make clear what standard direction this coordinate refers to."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "x_var = nc.createVariable('x', np.float32, ('x',))\n",
+ "x_var[:] = x\n",
+ "x_var.units = 'km'\n",
+ "x_var.axis = 'X' # Optional\n",
+ "x_var.standard_name = 'projection_x_coordinate'\n",
+ "x_var.long_name = 'x-coordinate in projected coordinate system'\n",
+ "\n",
+ "y_var = nc.createVariable('y', np.float32, ('y',))\n",
+ "y_var[:] = y\n",
+ "y_var.units = 'km'\n",
+ "y_var.axis = 'Y' # Optional\n",
+ "y_var.standard_name = 'projection_y_coordinate'\n",
+ "y_var.long_name = 'y-coordinate in projected coordinate system'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We also define a coordinate variable `pressure` to reference our data in the vertical dimension. The `standard_name` of `'air_pressure'` is sufficient to identify this coordinate variable as the vertical axis, but let's go ahead and specify the `axis` as well. We also specify the attribute `positive` to indicate whether the variable increases when going up or down. In the case of pressure, this is technically optional."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "press_var = nc.createVariable('pressure', np.float32, ('pressure',))\n",
+ "press_var[:] = press\n",
+ "press_var.units = 'hPa'\n",
+ "press_var.axis = 'Z' # Optional\n",
+ "press_var.standard_name = 'air_pressure'\n",
+ "press_var.positive = 'down' # Optional"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Time coordinates must contain a `units` attribute with a string value with a form similar to `'seconds since 2019-01-06 12:00:00.00'`. 'seconds', 'minutes', 'hours', and 'days' are the most commonly used units for time. Due to the variable length of months and years, they are not recommended.\n",
+ "\n",
+ "Before we can write data, we need to first need to convert our list of Python `datetime` instances to numeric values. We can use the `date2num` method from the `cftime` library to make this easy to convert using the unit string as defined above."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34])"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "time_units = 'hours since {:%Y-%m-%d 00:00}'.format(times[0])\n",
+ "time_vals = date2num(times, time_units)\n",
+ "time_vals"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now we can create the `forecast_time` variable just as we did before for the other coordinate variables:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "time_var = nc.createVariable('forecast_time', np.int32, ('forecast_time',))\n",
+ "time_var[:] = time_vals\n",
+ "time_var.units = time_units\n",
+ "time_var.axis = 'T' # Optional\n",
+ "time_var.standard_name = 'time' # Optional\n",
+ "time_var.long_name = 'time'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The CDL representation of the variables now contains much more information:\n",
+ "```\n",
+ " dimensions:\n",
+ " forecast_time = UNLIMITED (currently 13) ;\n",
+ " x = 101 ;\n",
+ " y = 67 ;\n",
+ " pressure = 7 ;\n",
+ " variables:\n",
+ " float x(x) ;\n",
+ " x:units = \"km\" ;\n",
+ " x:axis = \"X\" ;\n",
+ " x:standard_name = \"projection_x_coordinate\" ;\n",
+ " x:long_name = \"x-coordinate in projected coordinate system\" ;\n",
+ " float y(y) ;\n",
+ " y:units = \"km\" ;\n",
+ " y:axis = \"Y\" ;\n",
+ " y:standard_name = \"projection_y_coordinate\" ;\n",
+ " y:long_name = \"y-coordinate in projected coordinate system\" ;\n",
+ " float pressure(pressure) ;\n",
+ " pressure:units = \"hPa\" ;\n",
+ " pressure:axis = \"Z\" ;\n",
+ " pressure:standard_name = \"air_pressure\" ;\n",
+ " pressure:positive = \"down\" ;\n",
+ " float forecast_time(forecast_time) ;\n",
+ " forecast_time:units = \"hours since 2019-07-16 00:00\" ;\n",
+ " forecast_time:axis = \"T\" ;\n",
+ " forecast_time:standard_name = \"time\" ;\n",
+ " forecast_time:long_name = \"time\" ;\n",
+ " float Temperature(forecast_time, pressure, y, x) ;\n",
+ " Temperature:units = \"Kelvin\" ;\n",
+ " Temperature:standard_name = \"air_temperature\" ;\n",
+ " Temperature:long_name = \"Forecast air temperature\" ;\n",
+ " Temperature:missing_value = -9999.0 ;\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Auxilliary Coordinates"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Our data are still not CF-compliant because they do not contain latitude and longitude information, which is needed to properly locate the data. To solve this, we need to add variables with latitude and longitude. These are called \"auxillary coordinate variables\", not because they are extra, but because they are not simple one-dimensional variables.\n",
+ "\n",
+ "Below, we first generate longitude and latitude values from our projected coordinates using the `pyproj` library."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X, Y = np.meshgrid(x, y)\n",
+ "lcc = Proj({'proj': 'lcc', 'lon_0': -105, 'lat_0': 40, 'a': 6371000.0, 'lat_1': 25})\n",
+ "lon, lat = lcc(X * 1000, Y * 1000, inverse=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now we can create the needed variables. Both are dimensioned on `y` and `x` and are two-dimensional. The longitude variable is identified as actually containing such information by its required units of `'degrees_east'`, as well as the optional `'longitude'` `standard_name` attribute. The case is the same for latitude, except the units are `'degrees_north'` and the `standard_name` is `'latitude'`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "lon_var = nc.createVariable('lon', np.float64, ('y', 'x'))\n",
+ "lon_var[:] = lon\n",
+ "lon_var.units = 'degrees_east'\n",
+ "lon_var.standard_name = 'longitude' # Optional\n",
+ "lon_var.long_name = 'longitude'\n",
+ "\n",
+ "lat_var = nc.createVariable('lat', np.float64, ('y', 'x'))\n",
+ "lat_var[:] = lat\n",
+ "lat_var.units = 'degrees_north'\n",
+ "lat_var.standard_name = 'latitude' # Optional\n",
+ "lat_var.long_name = 'latitude'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "With the variables created, we identify these variables as containing coordinates for the `Temperature` variable by setting the `coordinates` value to a space-separated list of the names of the auxilliary coordinate variables:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "temps_var.coordinates = 'lon lat'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This yields the following CDL:\n",
+ "```\n",
+ " double lon(y, x);\n",
+ " lon:units = \"degrees_east\";\n",
+ " lon:long_name = \"longitude coordinate\";\n",
+ " lon:standard_name = \"longitude\";\n",
+ " double lat(y, x);\n",
+ " lat:units = \"degrees_north\";\n",
+ " lat:long_name = \"latitude coordinate\";\n",
+ " lat:standard_name = \"latitude\";\n",
+ " float Temperature(time, y, x);\n",
+ " Temperature:units = \"Kelvin\" ;\n",
+ " Temperature:standard_name = \"air_temperature\" ;\n",
+ " Temperature:long_name = \"Forecast air temperature\" ;\n",
+ " Temperature:missing_value = -9999.0 ;\n",
+ " Temperature:coordinates = \"lon lat\";\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Coordinate System Information"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "With our data specified on a Lambert conformal projected grid, it would be good to include this information in our metadata. We can do this using a \"grid mapping\" variable. This uses a dummy scalar variable as a namespace for holding all of the required information. Relevant variables then reference the dummy variable with their `grid_mapping` attribute.\n",
+ "\n",
+ "Below we create a variable and set it up for a Lambert conformal conic projection on a spherical earth. The `grid_mapping_name` attribute describes which of the CF-supported grid mappings we are specifying. The names of additional attributes vary between the mappings."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\n",
+ "int32 lambert_projection()\n",
+ " grid_mapping_name: lambert_conformal_conic\n",
+ " standard_parallel: 25.0\n",
+ " latitude_of_projection_origin: 40.0\n",
+ " longitude_of_central_meridian: -105.0\n",
+ " semi_major_axis: 6371000.0\n",
+ "unlimited dimensions: \n",
+ "current shape = ()\n",
+ "filling on, default _FillValue of -2147483647 used"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "proj_var = nc.createVariable('lambert_projection', np.int32, ())\n",
+ "proj_var.grid_mapping_name = 'lambert_conformal_conic'\n",
+ "proj_var.standard_parallel = 25.0\n",
+ "proj_var.latitude_of_projection_origin = 40.0\n",
+ "proj_var.longitude_of_central_meridian = -105.0\n",
+ "proj_var.semi_major_axis = 6371000.0\n",
+ "proj_var"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now that we created the variable, all that's left is to set the `grid_mapping` attribute on our `Temperature` variable to the name of our dummy variable:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "temps_var.grid_mapping = 'lambert_projection' # or proj_var.name"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This yields the CDL:\n",
+ "```\n",
+ " variables:\n",
+ " int lambert_projection ;\n",
+ " lambert_projection:grid_mapping_name = \"lambert_conformal_conic ;\n",
+ " lambert_projection:standard_parallel = 25.0 ;\n",
+ " lambert_projection:latitude_of_projection_origin = 40.0 ;\n",
+ " lambert_projection:longitude_of_central_meridian = -105.0 ;\n",
+ " lambert_projection:semi_major_axis = 6371000.0 ;\n",
+ " float Temperature(forecast_time, pressure, y, x) ;\n",
+ " Temperature:units = \"Kelvin\" ;\n",
+ " Temperature:standard_name = \"air_temperature\" ;\n",
+ " Temperature:long_name = \"Forecast air temperature\" ;\n",
+ " Temperature:missing_value = -9999.0 ;\n",
+ " Temperature:coordinates = \"lon lat\" ;\n",
+ " Temperature:grid_mapping = \"lambert_projection\" ;\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Cell Bounds\n",
+ "\n",
+ "> **NASA Dataset Interoperability Recommendations:**\n",
+ ">\n",
+ "> Section 2.3 - Use CF “bounds” attributes\n",
+ ">\n",
+ "> CF conventions state: “When gridded data does not represent the point values of a field but instead represents some characteristic of the field within cells of finite ‘volume,’ a complete description of the variable should include metadata that describes the domain or extent of each cell, and the characteristic of the field that the cell values represent.”\n",
+ "\n",
+ "For example, if a rain guage is read every 3 hours but only dumped every six hours, it might look like this\n",
+ " \n",
+ "```\n",
+ "netcdf precip_bucket_bounds {\n",
+ " dimensions:\n",
+ " lat = 12 ;\n",
+ " lon = 19 ;\n",
+ " time = 8 ;\n",
+ " tbv = 2;\n",
+ " variables:\n",
+ " float lat(lat) ;\n",
+ " float lon(lon) ;\n",
+ " float time(time) ;\n",
+ " time:units = \"hours since 2019-07-12 00:00:00.00\";\n",
+ " time:bounds = \"time_bounds\" ;\n",
+ " float time_bounds(time,tbv)\n",
+ " float precip(time, lat, lon) ;\n",
+ " precip:units = \"inches\" ;\n",
+ " data:\n",
+ " time = 3, 6, 9, 12, 15, 18, 21, 24;\n",
+ " time_bounds = 0, 3, 0, 6, 6, 9, 6, 12, 12, 15, 12, 18, 18, 21, 18, 24;\n",
+ "}\n",
+ "```\n",
+ "\n",
+ "So the time coordinate looks like\n",
+ "```\n",
+ "|---X\n",
+ "|-------X\n",
+ " |---X\n",
+ " |-------X\n",
+ " |---X\n",
+ " |-------X\n",
+ " |---X\n",
+ " |-------X\n",
+ "0 3 6 9 12 15 18 21 24\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "## Observational Data\n",
+ "\n",
+ "So far we've focused on how to handle storing data that are arranged in a grid. What about in-situ data, often termed \"observational\" data? CF describes this as *Conventions for Discrete Sampling Geometeries (DSG)*.\n",
+ "\n",
+ "For data that are regularly sampled (e.g., from a vertical profiler site), this is straightforward. First, let's define some sample profile data for three hypothetical profilers located at Boulder, Norman, and Albany. We'll assume that the profiler reports data every 10m, from 10 m up to (but not including) 1000 m."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "lons = np.array([-97.1, -105, -73.8])\n",
+ "lats = np.array([35.25, 40, 42.75])\n",
+ "heights = np.linspace(10, 1000, 10)\n",
+ "temps = np.random.randn(lats.size, heights.size)\n",
+ "stids = ['KBOU', 'KOUN', 'KALB']"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Creation and basic setup\n",
+ "First we create a new file and define some dimensions. Since this is profile data, heights will be one dimension. We use station as our other dimension. We also set the global `featureType` attribute to `'profile'` to indicate that this file holds \"an ordered set of data points along a vertical line at a fixed horizontal position and fixed time\". We also add a dimension to assist in storing our string station ids."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\n",
+ "root group (NETCDF4_CLASSIC data model, file format HDF5):\n",
+ " Conventions: CF-1.7\n",
+ " featureType: profile\n",
+ " dimensions(sizes): station(3), heights(10), str_len(4)\n",
+ " variables(dimensions): \n",
+ " groups: "
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "nc.close()\n",
+ "nc = Dataset('obs_data.nc', 'w', format='NETCDF4_CLASSIC', diskless=True)\n",
+ "nc.createDimension('station', lats.size)\n",
+ "nc.createDimension('heights', heights.size)\n",
+ "nc.createDimension('str_len', 4)\n",
+ "nc.Conventions = 'CF-1.7'\n",
+ "nc.featureType = 'profile'\n",
+ "nc"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Which gives this CDL:\n",
+ "```\n",
+ "netcdf obs_data {\n",
+ " dimensions:\n",
+ " station = 3 ;\n",
+ " heights = 10 ;\n",
+ " str_len = 4 ;\n",
+ " attributes:\n",
+ " :Conventions = \"CF-1.7\" ;\n",
+ " :featureType = \"profile\" ;\n",
+ "}\n",
+ "```\n",
+ "We can create our coordinates with:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "lon_var = nc.createVariable('lon', np.float64, ('station',))\n",
+ "lon_var.units = 'degrees_east'\n",
+ "lon_var.standard_name = 'longitude'\n",
+ "\n",
+ "lat_var = nc.createVariable('lat', np.float64, ('station',))\n",
+ "lat_var.units = 'degrees_north'\n",
+ "lat_var.standard_name = 'latitude'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The standard refers to these as \"instance variables\" because each one refers to an instance of a feature. From here we can create our `height` coordinate variable:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "heights_var = nc.createVariable('heights', np.float32, ('heights',))\n",
+ "heights_var.units = 'meters'\n",
+ "heights_var.standard_name = 'altitude'\n",
+ "heights_var.positive = 'up'\n",
+ "heights_var[:] = heights"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Station IDs\n",
+ "Now we can also write our station IDs to a variable. This is a 2D variable, but one of the dimensions is simply there to facilitate treating strings as character arrays. We also assign this an attribute `cf_role` with a value of `'profile_id'` to facilitate software to identify individual profiles:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "stid_var = nc.createVariable('stid', 'c', ('station', 'str_len'))\n",
+ "stid_var.cf_role = 'profile_id'\n",
+ "stid_var.long_name = 'Station identifier'\n",
+ "stid_var[:] = stids"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now our CDL looks like:\n",
+ "```\n",
+ "netcdf obs_data {\n",
+ " dimensions:\n",
+ " station = 3 ;\n",
+ " heights = 10 ;\n",
+ " str_len = 4 ;\n",
+ " variables:\n",
+ " double lon(station) ;\n",
+ " lon:units = \"degrees_east\" ;\n",
+ " lon:standard_name = \"longitude\" ;\n",
+ " double lat(station) ;\n",
+ " lat:units = \"degrees_north\" ;\n",
+ " lat:standard_name = \"latitude\" ;\n",
+ " float heights(heights) ;\n",
+ " heights:units = \"meters\" ;\n",
+ " heights:standard_name = \"altitude\";\n",
+ " heights:positive = \"up\" ;\n",
+ " char stid(station, str_len) ;\n",
+ " stid:cf_role = \"profile_id\" ;\n",
+ " stid:long_name = \"Station identifier\" ;\n",
+ " attributes:\n",
+ " :Conventions = \"CF-1.7\" ;\n",
+ " :featureType = \"profile\" ;\n",
+ "}\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Writing the field\n",
+ "Now all that's left is to write our profile data, which looks fairly standard. We also add a scalar variable for the time at which these profiles were captured:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "time_var = nc.createVariable('time', np.float32, ())\n",
+ "time_var.units = 'minutes since 2019-07-16 17:00'\n",
+ "time_var.standard_name = 'time'\n",
+ "time_var[:] = [5.0]\n",
+ "\n",
+ "temp_var = nc.createVariable('temperature', np.float32, ('station', 'heights'))\n",
+ "temp_var.units = 'celsius'\n",
+ "temp_var.standard_name = 'air_temperature'\n",
+ "temp_var.coordinates = 'lon lat heights time'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Note the use of the `coordinates` attribute to store the names of the auxilliary coordinate variables since they're all dimensioned on `station` and not proper coordinate variables. This yields the CDL for the variables:\n",
+ "```\n",
+ " variables:\n",
+ " double lon(station) ;\n",
+ " lon:units = \"degrees_east\" ;\n",
+ " lon:standard_name = \"longitude\" ;\n",
+ " double lat(station) ;\n",
+ " lat:units = \"degrees_north\" ;\n",
+ " lat:standard_name = \"latitude\" ;\n",
+ " float heights(heights) ;\n",
+ " heights:units = \"meters\" ;\n",
+ " heights:standard_name = \"altitude\";\n",
+ " heights:positive = \"up\" ;\n",
+ " char stid(station, str_len) ;\n",
+ " stid:cf_role = \"profile_id\" ;\n",
+ " stid:long_name = \"Station identifier\" ;\n",
+ " float time ;\n",
+ " time:units = \"minutes since 2019-07-16 17:00\" ;\n",
+ " time:standard_name = \"time\" ;\n",
+ " float temperature(station, heights) ;\n",
+ " temperature:units = \"celsius\" ;\n",
+ " temperature:standard_name = \"air_temperature\" ;\n",
+ " temperature:coordinates = \"lon lat heights time\" ;\n",
+ "```\n",
+ "\n",
+ "These standards for storing DSG extend to time series, trajectories, and combinations of them. They also can extend for differing amounts of data per feature using ragged arrays. For more information see the [main document](http://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/cf-conventions.html#discrete-sampling-geometries) or the [annotated DSG examples](http://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/cf-conventions.html#appendix-examples-discrete-geometries)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Summary\n",
+ "We have discussed and created examples of **netCDF** `Dataset`s, both gridded and in-situ, that follow the Climate and Forecast (**CF**) Conventions. These `Dataset`s are *self-describing*, in that their attributes, or *metadata*, are included. Other libraries in the Python scientific software ecosystem, such as `xarray` and `MetPy` can thus easily read in (and write to) and analyze these `Dataset`s."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## What's Next?\n",
+ "In subsequent notebooks, we will work with netCDF `Dataset`s culled from \"real-life\" model and in-situ sources."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "## Resources and References\n",
+ "\n",
+ "- CF Conventions doc ([1.7](http://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/cf-conventions.html))\n",
+ "- Jonathan Gregory's old [CF presentation](http://cfconventions.org/Data/cf-documents/overview/viewgraphs.pdf)\n",
+ "- [NASA ESDS “Dataset Interoperability Recommendations for Earth Science”][https://earthdata.nasa.gov/user-resources/standards-and-references/dataset-interoperability-recommendations-for-earth-science)\n",
+ "- CF Data Model (cfdm) python package [tutorial](https://ncas-cms.github.io/cfdm/tutorial.html)\n",
+ "- Tim Whiteaker's cfgeom python package (GitHub [repo](https://github.com/twhiteaker/CFGeom))([tutorial]( https://twhiteaker.github.io/CFGeom/tutorial.html))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "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.9.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/core/pandas/nino_analyzed_output.csv b/core/pandas/nino_analyzed_output.csv
new file mode 100644
index 000000000..1336c9ae0
--- /dev/null
+++ b/core/pandas/nino_analyzed_output.csv
@@ -0,0 +1,473 @@
+datetime,Nino12,Nino12anom,Nino3,Nino3anom,Nino4,Nino4anom,Nino34,Nino34anom,month,Nino34_degK
+1982-01-01,24.29,-0.17,25.87,0.24,28.3,0.0,26.72,0.15,1,299.87
+1982-02-01,25.49,-0.58,26.38,0.01,28.21,0.11,26.7,-0.02,2,299.84999999999997
+1982-03-01,25.21,-1.31,26.98,-0.16,28.41,0.22,27.2,-0.02,3,300.34999999999997
+1982-04-01,24.5,-0.97,27.68,0.18,28.92,0.42,28.02,0.24,4,301.16999999999996
+1982-05-01,23.97,-0.23,27.79,0.71,29.49,0.7,28.54,0.69,5,301.69
+1982-06-01,22.89,0.07,27.46,1.03,29.76,0.92,28.75,1.1,6,301.9
+1982-07-01,22.47,0.87,26.44,0.82,29.38,0.58,28.1,0.88,7,301.25
+1982-08-01,21.75,1.1,26.15,1.16,29.04,0.36,27.93,1.11,8,301.08
+1982-09-01,21.8,1.44,26.52,1.67,29.16,0.47,28.11,1.39,9,301.26
+1982-10-01,22.94,2.12,27.11,2.19,29.38,0.72,28.64,1.95,10,301.78999999999996
+1982-11-01,24.59,3.0,27.62,2.64,29.23,0.6,28.81,2.16,11,301.96
+1982-12-01,26.13,3.34,28.39,3.25,29.15,0.66,29.21,2.64,12,302.35999999999996
+1983-01-01,27.42,2.96,28.92,3.29,29.0,0.7,29.36,2.79,1,302.51
+1983-02-01,28.09,2.02,28.92,2.55,28.79,0.69,29.13,2.41,2,302.28
+1983-03-01,28.68,2.16,29.1,1.96,28.76,0.57,29.03,1.81,3,302.17999999999995
+1983-04-01,28.56,3.09,29.12,1.62,28.85,0.35,28.91,1.13,4,302.06
+1983-05-01,28.19,3.99,28.97,1.89,29.08,0.29,28.89,1.04,5,302.03999999999996
+1983-06-01,27.44,4.62,28.15,1.72,28.88,0.04,28.24,0.59,6,301.39
+1983-07-01,25.95,4.35,26.62,1.0,28.65,-0.15,27.07,-0.15,7,300.21999999999997
+1983-08-01,23.78,3.13,25.87,0.88,28.38,-0.3,26.53,-0.29,8,299.67999999999995
+1983-09-01,22.24,1.88,25.24,0.39,28.23,-0.46,26.44,-0.28,9,299.59
+1983-10-01,21.86,1.04,24.61,-0.31,27.75,-0.91,25.87,-0.82,10,299.02
+1983-11-01,21.9,0.31,24.17,-0.81,27.76,-0.87,25.58,-1.07,11,298.72999999999996
+1983-12-01,23.01,0.22,24.44,-0.7,27.82,-0.67,25.59,-0.98,12,298.73999999999995
+1984-01-01,24.18,-0.28,24.82,-0.81,27.64,-0.66,25.64,-0.93,1,298.78999999999996
+1984-02-01,25.18,-0.89,26.22,-0.15,27.25,-0.85,26.39,-0.33,2,299.53999999999996
+1984-03-01,26.0,-0.52,27.12,-0.02,27.21,-0.98,26.86,-0.36,3,300.01
+1984-04-01,25.16,-0.31,27.34,-0.16,27.7,-0.8,27.39,-0.39,4,300.53999999999996
+1984-05-01,23.23,-0.97,26.46,-0.62,27.95,-0.84,27.39,-0.46,5,300.53999999999996
+1984-06-01,21.96,-0.86,25.38,-1.05,28.13,-0.71,26.86,-0.79,6,300.01
+1984-07-01,21.24,-0.36,24.96,-0.66,28.35,-0.45,26.74,-0.48,7,299.89
+1984-08-01,20.17,-0.48,24.5,-0.49,28.17,-0.51,26.34,-0.48,8,299.48999999999995
+1984-09-01,20.37,0.01,24.35,-0.5,28.61,-0.08,26.43,-0.29,9,299.58
+1984-10-01,20.52,-0.3,23.95,-0.97,28.28,-0.38,25.93,-0.76,10,299.08
+1984-11-01,21.5,-0.09,24.03,-0.95,27.99,-0.64,25.41,-1.24,11,298.56
+1984-12-01,22.58,-0.21,23.7,-1.44,27.44,-1.05,25.0,-1.57,12,298.15
+1985-01-01,23.59,-0.87,24.51,-1.12,27.71,-0.59,25.43,-1.14,1,298.58
+1985-02-01,24.87,-1.2,25.19,-1.18,27.55,-0.55,25.67,-1.05,2,298.82
+1985-03-01,25.74,-0.78,26.11,-1.03,27.38,-0.81,26.23,-0.99,3,299.38
+1985-04-01,24.25,-1.22,26.52,-0.98,27.72,-0.78,26.8,-0.98,4,299.95
+1985-05-01,22.29,-1.91,26.12,-0.96,28.06,-0.73,27.11,-0.74,5,300.26
+1985-06-01,21.75,-1.07,25.6,-0.83,28.08,-0.76,26.86,-0.79,6,300.01
+1985-07-01,20.44,-1.16,24.74,-0.88,28.28,-0.52,26.69,-0.53,7,299.84
+1985-08-01,19.29,-1.36,24.4,-0.59,28.32,-0.36,26.5,-0.32,8,299.65
+1985-09-01,19.44,-0.92,24.15,-0.7,28.33,-0.36,26.25,-0.47,9,299.4
+1985-10-01,19.9,-0.92,24.15,-0.77,28.28,-0.38,26.19,-0.5,10,299.34
+1985-11-01,20.69,-0.9,24.28,-0.7,28.52,-0.11,26.19,-0.46,11,299.34
+1985-12-01,22.4,-0.39,24.29,-0.85,28.53,0.04,26.11,-0.46,12,299.26
+1986-01-01,24.61,0.15,24.73,-0.9,28.11,-0.19,25.79,-0.78,1,298.94
+1986-02-01,26.06,-0.01,25.81,-0.56,27.93,-0.17,25.94,-0.78,2,299.09
+1986-03-01,25.91,-0.61,26.84,-0.3,27.97,-0.22,26.65,-0.57,3,299.79999999999995
+1986-04-01,24.58,-0.89,27.17,-0.33,28.21,-0.29,27.44,-0.34,4,300.59
+1986-05-01,23.38,-0.82,26.68,-0.4,28.58,-0.21,27.5,-0.35,5,300.65
+1986-06-01,21.98,-0.84,26.3,-0.13,28.84,0.0,27.69,0.04,6,300.84
+1986-07-01,21.12,-0.48,25.7,0.08,28.9,0.1,27.37,0.15,7,300.52
+1986-08-01,20.97,0.32,25.02,0.03,29.04,0.36,27.15,0.33,8,300.29999999999995
+1986-09-01,20.44,0.08,25.25,0.4,29.18,0.49,27.33,0.61,9,300.47999999999996
+1986-10-01,21.07,0.25,25.62,0.7,29.38,0.72,27.57,0.88,10,300.71999999999997
+1986-11-01,22.03,0.44,25.92,0.94,29.4,0.77,27.73,1.08,11,300.88
+1986-12-01,23.0,0.21,25.86,0.72,29.19,0.7,27.7,1.13,12,300.84999999999997
+1987-01-01,25.3,0.84,26.69,1.06,29.02,0.72,27.91,1.34,1,301.06
+1987-02-01,27.14,1.07,27.42,1.05,28.93,0.83,28.02,1.3,2,301.16999999999996
+1987-03-01,28.01,1.49,28.2,1.06,29.04,0.85,28.47,1.25,3,301.62
+1987-04-01,27.17,1.7,28.49,0.99,29.21,0.71,28.8,1.02,4,301.95
+1987-05-01,25.58,1.38,28.22,1.14,29.25,0.46,28.75,0.9,5,301.9
+1987-06-01,24.06,1.24,27.71,1.28,29.53,0.69,29.03,1.38,6,302.17999999999995
+1987-07-01,22.78,1.18,27.07,1.45,29.47,0.67,28.8,1.58,7,301.95
+1987-08-01,21.73,1.08,26.52,1.53,29.41,0.73,28.58,1.76,8,301.72999999999996
+1987-09-01,21.45,1.09,26.57,1.72,29.51,0.82,28.39,1.67,9,301.53999999999996
+1987-10-01,22.39,1.57,26.2,1.28,29.61,0.95,28.07,1.38,10,301.21999999999997
+1987-11-01,22.63,1.04,26.13,1.15,29.8,1.17,27.99,1.34,11,301.14
+1987-12-01,23.47,0.68,26.2,1.06,29.44,0.95,27.6,1.03,12,300.75
+1988-01-01,24.64,0.18,26.12,0.49,29.13,0.83,27.32,0.75,1,300.46999999999997
+1988-02-01,25.74,-0.33,26.55,0.18,28.69,0.59,27.22,0.5,2,300.37
+1988-03-01,25.78,-0.74,27.14,0.0,28.2,0.01,27.31,0.09,3,300.46
+1988-04-01,24.54,-0.93,26.73,-0.77,28.15,-0.35,27.32,-0.46,4,300.46999999999997
+1988-05-01,23.6,-0.6,25.22,-1.86,28.36,-0.43,26.48,-1.37,5,299.63
+1988-06-01,21.27,-1.55,24.46,-1.97,28.13,-0.71,26.11,-1.54,6,299.26
+1988-07-01,20.26,-1.34,23.71,-1.91,27.88,-0.92,25.57,-1.65,7,298.71999999999997
+1988-08-01,19.12,-1.53,23.37,-1.62,27.68,-1.0,25.24,-1.58,8,298.39
+1988-09-01,19.19,-1.17,23.61,-1.24,27.63,-1.06,25.43,-1.29,9,298.58
+1988-10-01,19.5,-1.32,23.17,-1.75,27.06,-1.6,24.62,-2.07,10,297.77
+1988-11-01,20.55,-1.04,23.03,-1.95,26.76,-1.87,24.27,-2.38,11,297.41999999999996
+1988-12-01,21.8,-0.99,23.07,-2.07,26.75,-1.74,24.33,-2.24,12,297.47999999999996
+1989-01-01,24.09,-0.37,24.15,-1.48,26.54,-1.76,24.53,-2.04,1,297.67999999999995
+1989-02-01,26.26,0.19,25.61,-0.76,26.55,-1.55,25.33,-1.39,2,298.47999999999996
+1989-03-01,26.66,0.14,26.02,-1.12,27.0,-1.19,25.9,-1.32,3,299.04999999999995
+1989-04-01,25.63,0.16,26.67,-0.83,27.54,-0.96,26.69,-1.09,4,299.84
+1989-05-01,23.18,-1.02,26.37,-0.71,28.14,-0.65,27.09,-0.76,5,300.23999999999995
+1989-06-01,22.0,-0.82,26.08,-0.35,27.94,-0.9,26.98,-0.67,6,300.13
+1989-07-01,21.12,-0.48,25.28,-0.34,28.2,-0.6,26.74,-0.48,7,299.89
+1989-08-01,20.32,-0.33,24.56,-0.43,28.14,-0.54,26.33,-0.49,8,299.47999999999996
+1989-09-01,19.87,-0.49,24.45,-0.4,28.25,-0.44,26.25,-0.47,9,299.4
+1989-10-01,20.33,-0.49,24.49,-0.43,28.39,-0.27,26.26,-0.43,10,299.40999999999997
+1989-11-01,21.31,-0.28,24.56,-0.42,28.23,-0.4,26.24,-0.41,11,299.39
+1989-12-01,22.19,-0.6,24.71,-0.43,28.52,0.03,26.38,-0.19,12,299.53
+1990-01-01,24.02,-0.44,25.34,-0.29,28.56,0.26,26.55,-0.02,1,299.7
+1990-02-01,25.88,-0.19,26.37,0.0,28.62,0.52,26.95,0.23,2,300.09999999999997
+1990-03-01,26.16,-0.36,27.03,-0.11,28.78,0.59,27.46,0.24,3,300.60999999999996
+1990-04-01,25.22,-0.25,27.67,0.17,28.93,0.43,28.02,0.24,4,301.16999999999996
+1990-05-01,24.05,-0.15,27.35,0.27,28.96,0.17,28.06,0.21,5,301.21
+1990-06-01,22.68,-0.14,26.45,0.02,28.94,0.1,27.58,-0.07,6,300.72999999999996
+1990-07-01,21.0,-0.6,25.45,-0.17,28.98,0.18,27.25,0.03,7,300.4
+1990-08-01,20.25,-0.4,25.06,0.07,29.17,0.49,27.05,0.23,8,300.2
+1990-09-01,20.13,-0.23,24.85,0.0,29.04,0.35,26.75,0.03,9,299.9
+1990-10-01,20.28,-0.54,24.9,-0.02,29.23,0.57,26.98,0.29,10,300.13
+1990-11-01,20.84,-0.75,24.82,-0.16,29.06,0.43,26.72,0.07,11,299.87
+1990-12-01,22.45,-0.34,25.08,-0.06,29.14,0.65,26.91,0.34,12,300.06
+1991-01-01,23.86,-0.6,25.65,0.02,29.0,0.7,27.01,0.44,1,300.15999999999997
+1991-02-01,25.97,-0.1,26.27,-0.1,28.73,0.63,26.93,0.21,2,300.08
+1991-03-01,26.51,-0.01,26.99,-0.15,28.64,0.45,27.25,0.03,3,300.4
+1991-04-01,24.99,-0.48,27.32,-0.18,29.13,0.63,27.98,0.2,4,301.13
+1991-05-01,24.37,0.17,27.58,0.5,29.42,0.63,28.35,0.5,5,301.5
+1991-06-01,23.05,0.23,27.34,0.91,29.35,0.51,28.36,0.71,6,301.51
+1991-07-01,22.05,0.45,26.57,0.95,29.26,0.46,27.92,0.7,7,301.07
+1991-08-01,21.08,0.43,25.47,0.48,29.25,0.57,27.44,0.62,8,300.59
+1991-09-01,20.75,0.39,25.05,0.2,29.19,0.5,27.07,0.35,9,300.21999999999997
+1991-10-01,21.13,0.31,25.6,0.68,29.44,0.78,27.63,0.94,10,300.78
+1991-11-01,22.18,0.59,25.98,1.0,29.45,0.82,27.86,1.21,11,301.01
+1991-12-01,23.43,0.64,26.52,1.38,29.45,0.96,28.37,1.8,12,301.52
+1992-01-01,24.83,0.37,27.0,1.37,29.06,0.76,28.41,1.84,1,301.56
+1992-02-01,26.68,0.61,27.67,1.3,29.02,0.92,28.63,1.91,2,301.78
+1992-03-01,27.76,1.24,28.33,1.19,29.08,0.89,28.83,1.61,3,301.97999999999996
+1992-04-01,27.68,2.21,28.72,1.22,29.42,0.92,29.14,1.36,4,302.28999999999996
+1992-05-01,26.31,2.11,28.43,1.35,29.46,0.67,28.99,1.14,5,302.14
+1992-06-01,23.82,1.0,26.66,0.23,29.31,0.47,28.02,0.37,6,301.16999999999996
+1992-07-01,21.95,0.35,25.53,-0.09,29.35,0.55,27.53,0.31,7,300.67999999999995
+1992-08-01,20.55,-0.1,24.7,-0.29,28.9,0.22,26.64,-0.18,8,299.78999999999996
+1992-09-01,20.06,-0.3,24.52,-0.33,28.79,0.1,26.48,-0.24,9,299.63
+1992-10-01,20.82,0.0,24.62,-0.3,28.69,0.03,26.34,-0.35,10,299.48999999999995
+1992-11-01,21.49,-0.1,24.79,-0.19,28.7,0.07,26.51,-0.14,11,299.65999999999997
+1992-12-01,22.48,-0.31,25.01,-0.13,28.76,0.27,26.73,0.16,12,299.88
+1993-01-01,24.43,-0.03,25.56,-0.07,28.6,0.3,26.69,0.12,1,299.84
+1993-02-01,26.49,0.42,26.61,0.24,28.41,0.31,26.97,0.25,2,300.12
+1993-03-01,27.17,0.65,27.54,0.4,28.6,0.41,27.66,0.44,3,300.81
+1993-04-01,26.44,0.97,28.45,0.95,28.93,0.43,28.59,0.81,4,301.73999999999995
+1993-05-01,25.15,0.95,28.16,1.08,29.13,0.34,28.82,0.97,5,301.96999999999997
+1993-06-01,23.76,0.94,27.11,0.68,29.17,0.33,28.28,0.63,6,301.42999999999995
+1993-07-01,22.06,0.46,25.77,0.15,29.2,0.4,27.55,0.33,7,300.7
+1993-08-01,21.05,0.4,24.93,-0.06,28.94,0.26,26.84,0.02,8,299.98999999999995
+1993-09-01,20.83,0.47,24.97,0.12,29.07,0.38,26.92,0.2,9,300.07
+1993-10-01,20.99,0.17,25.21,0.29,28.9,0.24,26.93,0.24,10,300.08
+1993-11-01,21.64,0.05,25.17,0.19,28.97,0.34,26.91,0.26,11,300.06
+1993-12-01,22.75,-0.04,25.32,0.18,28.9,0.41,26.76,0.19,12,299.90999999999997
+1994-01-01,24.32,-0.14,25.71,0.08,28.47,0.17,26.6,0.03,1,299.75
+1994-02-01,25.79,-0.28,26.07,-0.3,28.07,-0.03,26.59,-0.13,2,299.73999999999995
+1994-03-01,25.43,-1.09,26.89,-0.25,28.26,0.07,27.27,0.05,3,300.41999999999996
+1994-04-01,24.32,-1.15,27.06,-0.44,28.62,0.12,27.9,0.12,4,301.04999999999995
+1994-05-01,23.22,-0.98,26.97,-0.11,29.0,0.21,28.04,0.19,5,301.19
+1994-06-01,22.43,-0.39,26.5,0.07,29.18,0.34,27.99,0.34,6,301.14
+1994-07-01,21.21,-0.39,25.19,-0.43,29.4,0.6,27.35,0.13,7,300.5
+1994-08-01,19.7,-0.95,24.71,-0.28,29.46,0.78,27.35,0.53,8,300.5
+1994-09-01,20.16,-0.2,24.81,-0.04,29.23,0.54,27.0,0.28,9,300.15
+1994-10-01,21.53,0.71,25.53,0.61,29.45,0.79,27.49,0.8,10,300.64
+1994-11-01,22.41,0.82,25.87,0.89,29.63,1.0,27.87,1.22,11,301.02
+1994-12-01,23.61,0.82,26.07,0.93,29.5,1.01,27.87,1.3,12,301.02
+1995-01-01,25.33,0.87,26.34,0.71,29.2,0.9,27.55,0.98,1,300.7
+1995-02-01,26.43,0.36,26.87,0.5,29.01,0.91,27.45,0.73,2,300.59999999999997
+1995-03-01,26.12,-0.4,27.08,-0.06,28.96,0.77,27.63,0.41,3,300.78
+1995-04-01,24.47,-1.0,27.1,-0.4,28.89,0.39,27.93,0.15,4,301.08
+1995-05-01,23.1,-1.1,26.4,-0.68,29.15,0.36,27.73,-0.12,5,300.88
+1995-06-01,22.45,-0.37,26.2,-0.23,29.01,0.17,27.59,-0.06,6,300.73999999999995
+1995-07-01,21.23,-0.37,25.42,-0.2,28.78,-0.02,27.01,-0.21,7,300.15999999999997
+1995-08-01,20.01,-0.64,24.33,-0.66,28.43,-0.25,26.33,-0.49,8,299.47999999999996
+1995-09-01,20.17,-0.19,24.02,-0.83,28.25,-0.44,25.96,-0.76,9,299.10999999999996
+1995-10-01,20.15,-0.67,24.01,-0.91,28.07,-0.59,25.67,-1.02,10,298.82
+1995-11-01,21.2,-0.39,24.03,-0.95,27.97,-0.66,25.66,-0.99,11,298.81
+1995-12-01,22.02,-0.77,24.19,-0.95,28.07,-0.42,25.57,-1.0,12,298.71999999999997
+1996-01-01,23.84,-0.62,24.96,-0.67,27.92,-0.38,25.74,-0.83,1,298.89
+1996-02-01,25.71,-0.36,25.72,-0.65,27.57,-0.53,25.85,-0.87,2,299.0
+1996-03-01,26.09,-0.43,26.71,-0.43,27.71,-0.48,26.62,-0.6,3,299.77
+1996-04-01,23.85,-1.62,26.72,-0.78,28.07,-0.43,27.36,-0.42,4,300.51
+1996-05-01,22.89,-1.31,26.33,-0.75,28.43,-0.36,27.37,-0.48,5,300.52
+1996-06-01,21.56,-1.26,25.89,-0.54,28.55,-0.29,27.32,-0.33,6,300.46999999999997
+1996-07-01,20.02,-1.58,25.35,-0.27,28.5,-0.3,27.09,-0.13,7,300.23999999999995
+1996-08-01,19.53,-1.12,24.6,-0.39,28.54,-0.14,26.56,-0.26,8,299.71
+1996-09-01,19.24,-1.12,24.37,-0.48,28.43,-0.26,26.35,-0.37,9,299.5
+1996-10-01,19.95,-0.87,24.37,-0.55,28.42,-0.24,26.24,-0.45,10,299.39
+1996-11-01,20.26,-1.33,24.38,-0.6,28.33,-0.3,26.19,-0.46,11,299.34
+1996-12-01,21.61,-1.18,24.2,-0.94,28.44,-0.05,26.02,-0.55,12,299.16999999999996
+1997-01-01,23.67,-0.79,24.7,-0.93,28.41,0.11,25.96,-0.61,1,299.10999999999996
+1997-02-01,25.74,-0.33,25.75,-0.62,28.33,0.23,26.36,-0.36,2,299.51
+1997-03-01,26.95,0.43,26.98,-0.16,28.52,0.33,27.03,-0.19,3,300.17999999999995
+1997-04-01,26.64,1.17,27.59,0.09,29.32,0.82,28.03,0.25,4,301.17999999999995
+1997-05-01,26.71,2.51,28.06,0.98,29.45,0.66,28.6,0.75,5,301.75
+1997-06-01,26.27,3.45,28.14,1.71,29.4,0.56,28.94,1.29,6,302.09
+1997-07-01,25.59,3.99,28.01,2.39,29.5,0.7,28.92,1.7,7,302.07
+1997-08-01,24.8,4.15,27.84,2.85,29.26,0.58,28.84,2.02,8,301.98999999999995
+1997-09-01,24.4,4.04,27.84,2.99,29.32,0.63,28.93,2.21,9,302.08
+1997-10-01,24.58,3.76,28.17,3.25,29.32,0.66,29.23,2.54,10,302.38
+1997-11-01,25.63,4.04,28.55,3.57,29.49,0.86,29.32,2.67,11,302.46999999999997
+1997-12-01,26.92,4.13,28.76,3.62,29.32,0.83,29.26,2.69,12,302.40999999999997
+1998-01-01,28.22,3.76,28.94,3.31,29.01,0.71,29.1,2.53,1,302.25
+1998-02-01,28.98,2.91,28.93,2.56,28.87,0.77,28.86,2.14,2,302.01
+1998-03-01,29.15,2.63,29.14,2.0,28.65,0.46,28.67,1.45,3,301.82
+1998-04-01,28.61,3.14,29.09,1.59,28.53,0.03,28.56,0.78,4,301.71
+1998-05-01,27.69,3.49,28.17,1.09,28.71,-0.08,28.47,0.62,5,301.62
+1998-06-01,25.18,2.36,26.0,-0.43,28.61,-0.23,26.72,-0.93,6,299.87
+1998-07-01,23.43,1.83,25.24,-0.38,28.07,-0.73,25.94,-1.28,7,299.09
+1998-08-01,21.77,1.12,24.63,-0.36,27.77,-0.91,25.49,-1.33,8,298.64
+1998-09-01,20.87,0.51,24.19,-0.66,27.88,-0.81,25.61,-1.11,9,298.76
+1998-10-01,21.16,0.34,24.06,-0.86,27.33,-1.33,25.34,-1.35,10,298.48999999999995
+1998-11-01,21.43,-0.16,24.11,-0.87,27.23,-1.4,25.18,-1.47,11,298.33
+1998-12-01,22.56,-0.23,23.86,-1.28,27.11,-1.38,24.79,-1.78,12,297.94
+1999-01-01,23.73,-0.73,24.41,-1.22,26.59,-1.71,24.9,-1.67,1,298.04999999999995
+1999-02-01,25.64,-0.43,25.57,-0.8,26.52,-1.58,25.41,-1.31,2,298.56
+1999-03-01,26.62,0.1,26.67,-0.47,26.9,-1.29,26.25,-0.97,3,299.4
+1999-04-01,24.3,-1.17,26.66,-0.84,27.35,-1.15,26.84,-0.94,4,299.98999999999995
+1999-05-01,23.46,-0.74,26.44,-0.64,27.87,-0.92,26.97,-0.88,5,300.12
+1999-06-01,21.83,-0.99,25.59,-0.84,28.01,-0.83,26.6,-1.05,6,299.75
+1999-07-01,20.44,-1.16,24.85,-0.77,27.92,-0.88,26.35,-0.87,7,299.5
+1999-08-01,19.75,-0.9,24.02,-0.97,27.73,-0.95,25.59,-1.23,8,298.73999999999995
+1999-09-01,19.23,-1.13,23.72,-1.13,27.82,-0.87,25.71,-1.01,9,298.85999999999996
+1999-10-01,20.05,-0.77,23.75,-1.17,27.85,-0.81,25.64,-1.05,10,298.78999999999996
+1999-11-01,20.51,-1.08,23.46,-1.52,27.56,-1.07,25.12,-1.53,11,298.27
+1999-12-01,21.72,-1.07,23.54,-1.6,27.23,-1.26,24.9,-1.67,12,298.04999999999995
+2000-01-01,23.86,-0.6,23.88,-1.75,26.96,-1.34,24.65,-1.92,1,297.79999999999995
+2000-02-01,25.71,-0.36,25.31,-1.06,26.66,-1.44,25.19,-1.53,2,298.34
+2000-03-01,26.19,-0.33,26.61,-0.53,26.76,-1.43,26.08,-1.14,3,299.22999999999996
+2000-04-01,25.84,0.37,27.46,-0.04,27.37,-1.13,27.01,-0.77,4,300.15999999999997
+2000-05-01,24.1,-0.1,26.8,-0.28,27.81,-0.98,27.12,-0.73,5,300.27
+2000-06-01,22.25,-0.57,25.84,-0.59,28.11,-0.73,27.03,-0.62,6,300.17999999999995
+2000-07-01,20.59,-1.01,25.13,-0.49,28.2,-0.6,26.72,-0.5,7,299.87
+2000-08-01,20.1,-0.55,24.47,-0.52,28.32,-0.36,26.45,-0.37,8,299.59999999999997
+2000-09-01,19.94,-0.42,24.35,-0.5,28.44,-0.25,26.21,-0.51,9,299.35999999999996
+2000-10-01,20.37,-0.45,24.41,-0.51,28.17,-0.49,25.96,-0.73,10,299.10999999999996
+2000-11-01,20.6,-0.99,24.17,-0.81,28.09,-0.54,25.78,-0.87,11,298.92999999999995
+2000-12-01,22.22,-0.57,24.43,-0.71,27.6,-0.89,25.59,-0.98,12,298.73999999999995
+2001-01-01,23.88,-0.58,24.99,-0.64,27.5,-0.8,25.74,-0.83,1,298.89
+2001-02-01,25.91,-0.16,26.06,-0.31,27.27,-0.83,26.11,-0.61,2,299.26
+2001-03-01,27.44,0.92,27.23,0.09,27.62,-0.57,26.84,-0.38,3,299.98999999999995
+2001-04-01,26.69,1.22,27.52,0.02,28.19,-0.31,27.52,-0.26,4,300.66999999999996
+2001-05-01,23.77,-0.43,26.89,-0.19,28.64,-0.15,27.6,-0.25,5,300.75
+2001-06-01,21.74,-1.08,26.35,-0.08,28.83,-0.01,27.68,0.03,6,300.83
+2001-07-01,20.88,-0.72,25.43,-0.19,29.06,0.26,27.32,0.1,7,300.46999999999997
+2001-08-01,19.9,-0.75,24.72,-0.27,28.96,0.28,26.87,0.05,8,300.02
+2001-09-01,19.39,-0.97,24.27,-0.58,29.14,0.45,26.55,-0.17,9,299.7
+2001-10-01,19.52,-1.3,24.45,-0.47,29.01,0.35,26.59,-0.1,10,299.73999999999995
+2001-11-01,20.49,-1.1,24.35,-0.63,28.96,0.33,26.45,-0.2,11,299.59999999999997
+2001-12-01,21.96,-0.83,24.6,-0.54,28.6,0.11,26.17,-0.4,12,299.32
+2002-01-01,23.64,-0.82,25.09,-0.54,28.81,0.51,26.5,-0.07,1,299.65
+2002-02-01,26.06,-0.01,26.21,-0.16,28.76,0.66,26.95,0.23,2,300.09999999999997
+2002-03-01,27.53,1.01,27.22,0.08,28.68,0.49,27.32,0.1,3,300.46999999999997
+2002-04-01,26.53,1.06,27.56,0.06,29.09,0.59,27.94,0.16,4,301.09
+2002-05-01,24.8,0.6,27.24,0.16,29.45,0.66,28.15,0.3,5,301.29999999999995
+2002-06-01,22.67,-0.15,27.06,0.63,29.63,0.79,28.43,0.78,6,301.58
+2002-07-01,21.01,-0.59,26.03,0.41,29.49,0.69,27.98,0.76,7,301.13
+2002-08-01,19.94,-0.71,25.47,0.48,29.4,0.72,27.79,0.97,8,300.94
+2002-09-01,19.89,-0.47,25.54,0.69,29.44,0.75,27.83,1.11,9,300.97999999999996
+2002-10-01,21.16,0.34,25.85,0.93,29.56,0.9,28.05,1.36,10,301.2
+2002-11-01,22.25,0.66,26.37,1.39,29.83,1.2,28.27,1.62,11,301.41999999999996
+2002-12-01,23.44,0.65,26.48,1.34,29.49,1.0,28.09,1.52,12,301.23999999999995
+2003-01-01,24.38,-0.08,26.38,0.75,29.25,0.95,27.76,1.19,1,300.90999999999997
+2003-02-01,25.81,-0.26,26.7,0.33,29.03,0.93,27.49,0.77,2,300.64
+2003-03-01,25.97,-0.55,27.28,0.14,29.03,0.84,27.81,0.59,3,300.96
+2003-04-01,24.44,-1.03,27.15,-0.35,28.96,0.46,27.81,0.03,4,300.96
+2003-05-01,22.49,-1.71,26.14,-0.94,28.92,0.13,27.37,-0.48,5,300.52
+2003-06-01,21.58,-1.24,25.83,-0.6,29.09,0.25,27.48,-0.17,6,300.63
+2003-07-01,20.75,-0.85,25.75,0.13,29.11,0.31,27.43,0.21,7,300.58
+2003-08-01,20.14,-0.51,25.04,0.05,29.05,0.37,26.85,0.03,8,300.0
+2003-09-01,20.0,-0.36,24.97,0.12,29.02,0.33,26.96,0.24,9,300.10999999999996
+2003-10-01,20.99,0.17,25.33,0.41,29.22,0.56,27.19,0.5,10,300.34
+2003-11-01,21.92,0.33,25.4,0.42,29.31,0.68,27.05,0.4,11,300.2
+2003-12-01,22.99,0.2,25.56,0.42,29.02,0.53,26.89,0.32,12,300.03999999999996
+2004-01-01,24.6,0.14,25.92,0.29,28.83,0.53,26.74,0.17,1,299.89
+2004-02-01,25.81,-0.26,26.46,0.09,28.59,0.49,26.86,0.14,2,300.01
+2004-03-01,25.94,-0.58,27.16,0.02,28.43,0.24,27.1,-0.12,3,300.25
+2004-04-01,25.32,-0.15,27.37,-0.13,28.75,0.25,27.84,0.06,4,300.98999999999995
+2004-05-01,23.05,-1.15,26.72,-0.36,29.16,0.37,28.06,0.21,5,301.21
+2004-06-01,21.6,-1.22,26.27,-0.16,29.17,0.33,27.76,0.11,6,300.90999999999997
+2004-07-01,20.71,-0.89,25.41,-0.21,29.39,0.59,27.69,0.47,7,300.84
+2004-08-01,19.62,-1.03,25.05,0.06,29.31,0.63,27.54,0.72,8,300.69
+2004-09-01,20.07,-0.29,25.17,0.32,29.6,0.91,27.47,0.75,9,300.62
+2004-10-01,20.92,0.1,25.32,0.4,29.55,0.89,27.38,0.69,10,300.53
+2004-11-01,21.96,0.37,25.46,0.48,29.57,0.94,27.31,0.66,11,300.46
+2004-12-01,22.94,0.15,25.77,0.63,29.4,0.91,27.31,0.74,12,300.46
+2005-01-01,24.47,0.01,25.89,0.26,29.21,0.91,27.1,0.53,1,300.25
+2005-02-01,25.49,-0.58,26.2,-0.17,28.83,0.73,26.96,0.24,2,300.10999999999996
+2005-03-01,25.6,-0.92,27.01,-0.13,28.91,0.72,27.55,0.33,3,300.7
+2005-04-01,24.9,-0.57,27.77,0.27,28.96,0.46,28.07,0.29,4,301.21999999999997
+2005-05-01,24.4,0.2,27.48,0.4,29.18,0.39,28.2,0.35,5,301.34999999999997
+2005-06-01,22.47,-0.35,26.81,0.38,29.18,0.34,28.05,0.4,6,301.2
+2005-07-01,21.18,-0.42,25.93,0.31,29.05,0.25,27.47,0.25,7,300.62
+2005-08-01,20.61,-0.04,25.19,0.2,28.86,0.18,26.88,0.06,8,300.03
+2005-09-01,19.71,-0.65,24.57,-0.28,28.84,0.15,26.63,-0.09,9,299.78
+2005-10-01,19.72,-1.1,24.69,-0.23,28.89,0.23,26.75,0.06,10,299.9
+2005-11-01,20.62,-0.97,24.28,-0.7,28.67,0.04,26.34,-0.31,11,299.48999999999995
+2005-12-01,22.29,-0.5,24.28,-0.86,28.35,-0.14,25.89,-0.68,12,299.03999999999996
+2006-01-01,24.33,-0.13,25.0,-0.63,27.68,-0.62,25.64,-0.93,1,298.78999999999996
+2006-02-01,26.46,0.39,26.08,-0.29,27.39,-0.71,26.08,-0.64,2,299.22999999999996
+2006-03-01,26.77,0.25,26.54,-0.6,27.79,-0.4,26.57,-0.65,3,299.71999999999997
+2006-04-01,24.15,-1.32,27.25,-0.25,28.38,-0.12,27.59,-0.19,4,300.73999999999995
+2006-05-01,23.86,-0.34,27.04,-0.04,28.91,0.12,27.91,0.06,5,301.06
+2006-06-01,22.77,-0.05,26.44,0.01,29.15,0.31,27.85,0.2,6,301.0
+2006-07-01,22.19,0.59,25.8,0.18,29.07,0.27,27.35,0.13,7,300.5
+2006-08-01,21.59,0.94,25.45,0.46,29.22,0.54,27.22,0.4,8,300.37
+2006-09-01,21.43,1.07,25.74,0.89,29.4,0.71,27.34,0.62,9,300.48999999999995
+2006-10-01,22.22,1.4,25.96,1.04,29.44,0.78,27.47,0.78,10,300.62
+2006-11-01,22.69,1.1,26.07,1.09,29.63,1.0,27.73,1.08,11,300.88
+2006-12-01,23.45,0.66,26.36,1.22,29.47,0.98,27.76,1.19,12,300.90999999999997
+2007-01-01,24.99,0.53,26.5,0.87,28.93,0.63,27.26,0.69,1,300.40999999999997
+2007-02-01,26.24,0.17,26.45,0.08,28.62,0.52,26.81,0.09,2,299.96
+2007-03-01,25.74,-0.78,26.79,-0.35,28.57,0.38,27.18,-0.04,3,300.33
+2007-04-01,24.3,-1.17,27.13,-0.37,28.7,0.2,27.78,0.0,4,300.92999999999995
+2007-05-01,22.73,-1.47,26.35,-0.73,28.86,0.07,27.57,-0.28,5,300.71999999999997
+2007-06-01,21.59,-1.23,25.83,-0.6,28.98,0.14,27.55,-0.1,6,300.7
+2007-07-01,20.27,-1.33,24.79,-0.83,28.81,0.01,26.79,-0.43,7,299.94
+2007-08-01,19.16,-1.49,23.86,-1.13,28.58,-0.1,26.2,-0.62,8,299.34999999999997
+2007-09-01,18.57,-1.79,23.52,-1.33,28.12,-0.57,25.77,-0.95,9,298.91999999999996
+2007-10-01,18.8,-2.02,23.36,-1.56,27.86,-0.8,25.22,-1.47,10,298.37
+2007-11-01,19.49,-2.1,23.17,-1.81,27.42,-1.21,25.06,-1.59,11,298.21
+2007-12-01,21.02,-1.77,23.59,-1.55,27.3,-1.19,24.97,-1.6,12,298.12
+2008-01-01,23.86,-0.6,24.13,-1.5,26.62,-1.68,24.71,-1.86,1,297.85999999999996
+2008-02-01,26.32,0.25,25.05,-1.32,26.43,-1.67,24.83,-1.89,2,297.97999999999996
+2008-03-01,27.3,0.78,26.56,-0.58,26.84,-1.35,26.07,-1.15,3,299.21999999999997
+2008-04-01,25.89,0.42,27.18,-0.32,27.44,-1.06,26.83,-0.95,4,299.97999999999996
+2008-05-01,24.41,0.21,27.08,0.0,27.9,-0.89,27.18,-0.67,5,300.33
+2008-06-01,23.55,0.73,26.53,0.1,28.08,-0.76,27.17,-0.48,6,300.32
+2008-07-01,22.63,1.03,26.12,0.5,28.25,-0.55,27.19,-0.03,7,300.34
+2008-08-01,21.79,1.14,25.63,0.64,28.18,-0.5,26.85,0.03,8,300.0
+2008-09-01,21.19,0.83,25.09,0.24,28.14,-0.55,26.44,-0.28,9,299.59
+2008-10-01,20.75,-0.07,24.79,-0.13,28.29,-0.37,26.33,-0.36,10,299.47999999999996
+2008-11-01,21.44,-0.15,24.75,-0.23,28.08,-0.55,26.3,-0.35,11,299.45
+2008-12-01,22.43,-0.36,24.6,-0.54,27.72,-0.77,25.74,-0.83,12,298.89
+2009-01-01,24.42,-0.1,25.03,-0.6,27.42,-0.88,25.54,-1.03,1,298.69
+2009-02-01,26.03,-0.11,25.85,-0.52,27.37,-0.73,26.04,-0.68,2,299.19
+2009-03-01,26.38,-0.26,26.44,-0.7,27.79,-0.4,26.67,-0.55,3,299.82
+2009-04-01,25.98,0.37,27.39,-0.11,28.37,-0.13,27.5,-0.27,4,300.65
+2009-05-01,24.83,0.56,27.4,0.32,28.99,0.2,28.03,0.18,5,301.17999999999995
+2009-06-01,23.73,0.85,27.12,0.69,29.2,0.36,28.11,0.47,6,301.26
+2009-07-01,22.63,1.02,26.56,0.94,29.21,0.4,27.94,0.72,7,301.09
+2009-08-01,21.64,1.0,25.94,0.95,29.21,0.53,27.53,0.71,8,300.67999999999995
+2009-09-01,20.82,0.47,25.66,0.8,29.28,0.58,27.47,0.75,9,300.62
+2009-10-01,20.96,0.17,25.73,0.81,29.65,0.99,27.63,0.94,10,300.78
+2009-11-01,22.11,0.51,26.23,1.26,29.88,1.25,28.19,1.54,11,301.34
+2009-12-01,23.16,0.35,26.67,1.53,29.67,1.18,28.3,1.72,12,301.45
+2010-01-01,24.82,0.3,26.63,1.0,29.51,1.21,28.07,1.5,1,301.21999999999997
+2010-02-01,26.08,-0.06,27.12,0.75,29.1,1.0,27.94,1.22,2,301.09
+2010-03-01,26.24,-0.4,27.73,0.6,29.21,1.02,28.29,1.08,3,301.44
+2010-04-01,26.05,0.45,28.05,0.55,29.25,0.74,28.36,0.59,4,301.51
+2010-05-01,24.28,0.0,26.97,-0.11,29.03,0.24,27.68,-0.17,5,300.83
+2010-06-01,22.6,-0.27,25.75,-0.68,28.64,-0.21,27.0,-0.65,6,300.15
+2010-07-01,20.08,-1.54,24.53,-1.09,28.09,-0.71,26.09,-1.13,7,299.23999999999995
+2010-08-01,19.27,-1.37,23.87,-1.12,27.47,-1.2,25.5,-1.32,8,298.65
+2010-09-01,18.9,-1.44,23.59,-1.26,27.13,-1.56,25.07,-1.65,9,298.21999999999997
+2010-10-01,19.06,-1.73,23.25,-1.66,27.06,-1.6,25.01,-1.68,10,298.15999999999997
+2010-11-01,20.03,-1.56,23.4,-1.58,27.07,-1.57,25.07,-1.58,11,298.21999999999997
+2010-12-01,21.48,-1.34,23.5,-1.64,26.89,-1.6,24.95,-1.62,12,298.09999999999997
+2011-01-01,24.08,-0.44,24.31,-1.32,26.72,-1.58,24.93,-1.64,1,298.08
+2011-02-01,26.22,0.08,25.55,-0.82,26.95,-1.15,25.46,-1.27,2,298.60999999999996
+2011-03-01,26.21,-0.43,26.39,-0.75,27.42,-0.77,26.23,-0.98,3,299.38
+2011-04-01,25.76,0.16,27.18,-0.32,27.86,-0.64,27.02,-0.76,4,300.16999999999996
+2011-05-01,24.89,0.62,26.94,-0.14,28.28,-0.51,27.42,-0.43,5,300.57
+2011-06-01,23.72,0.85,26.54,0.1,28.47,-0.37,27.46,-0.18,6,300.60999999999996
+2011-07-01,22.07,0.45,25.61,-0.01,28.47,-0.33,26.96,-0.26,7,300.10999999999996
+2011-08-01,20.64,0.0,24.58,-0.42,28.32,-0.36,26.19,-0.64,8,299.34
+2011-09-01,19.75,-0.59,24.22,-0.63,28.05,-0.64,25.98,-0.74,9,299.13
+2011-10-01,20.19,-0.6,23.97,-0.95,27.94,-0.72,25.72,-0.97,10,298.87
+2011-11-01,20.79,-0.8,23.89,-1.09,27.87,-0.77,25.6,-1.05,11,298.75
+2011-12-01,21.85,-0.96,24.2,-0.94,27.39,-1.1,25.53,-1.04,12,298.67999999999995
+2012-01-01,23.88,-0.64,24.9,-0.73,27.09,-1.21,25.49,-1.08,1,298.64
+2012-02-01,26.3,0.16,26.19,-0.18,27.2,-0.9,26.03,-0.69,2,299.17999999999995
+2012-03-01,26.91,0.27,26.92,-0.21,27.53,-0.66,26.63,-0.58,3,299.78
+2012-04-01,26.9,1.3,27.58,0.08,28.16,-0.34,27.38,-0.39,4,300.53
+2012-05-01,25.48,1.2,27.23,0.15,28.53,-0.26,27.8,-0.05,5,300.95
+2012-06-01,24.47,1.59,27.09,0.66,28.73,-0.11,27.95,0.31,6,301.09999999999997
+2012-07-01,22.61,0.99,26.54,0.92,28.86,0.06,27.75,0.53,7,300.9
+2012-08-01,20.99,0.35,25.72,0.73,29.1,0.42,27.55,0.73,8,300.7
+2012-09-01,20.83,0.49,25.28,0.43,29.12,0.43,27.24,0.51,9,300.39
+2012-10-01,20.68,-0.11,24.93,0.01,29.16,0.5,26.98,0.29,10,300.13
+2012-11-01,21.21,-0.38,25.11,0.14,29.17,0.54,27.01,0.36,11,300.15999999999997
+2012-12-01,22.13,-0.68,24.91,-0.23,28.71,0.23,26.46,-0.11,12,299.60999999999996
+2013-01-01,24.0,-0.52,25.06,-0.57,28.28,-0.02,26.16,-0.41,1,299.31
+2013-02-01,25.74,-0.41,25.9,-0.46,28.06,-0.04,26.32,-0.4,2,299.46999999999997
+2013-03-01,26.71,0.07,27.21,0.07,27.95,-0.24,27.0,-0.22,3,300.15
+2013-04-01,24.74,-0.86,27.35,-0.15,28.47,-0.03,27.68,-0.1,4,300.83
+2013-05-01,22.89,-1.38,26.39,-0.69,28.71,-0.08,27.57,-0.27,5,300.71999999999997
+2013-06-01,21.48,-1.4,25.8,-0.64,28.76,-0.08,27.43,-0.21,6,300.58
+2013-07-01,20.29,-1.33,24.97,-0.66,28.76,-0.04,26.91,-0.31,7,300.06
+2013-08-01,19.66,-0.98,24.44,-0.55,28.71,0.03,26.54,-0.28,8,299.69
+2013-09-01,19.78,-0.57,24.72,-0.13,28.7,0.01,26.65,-0.07,9,299.79999999999995
+2013-10-01,20.16,-0.63,24.7,-0.21,28.7,0.04,26.36,-0.33,10,299.51
+2013-11-01,21.06,-0.54,24.81,-0.17,28.91,0.27,26.65,0.01,11,299.79999999999995
+2013-12-01,22.61,-0.2,25.1,-0.04,28.64,0.15,26.53,-0.04,12,299.67999999999995
+2014-01-01,24.79,0.27,25.26,-0.37,28.14,-0.17,26.06,-0.51,1,299.21
+2014-02-01,25.4,-0.75,25.56,-0.81,28.37,0.27,26.18,-0.55,2,299.33
+2014-03-01,25.86,-0.78,26.9,-0.24,28.71,0.52,26.99,-0.22,3,300.14
+2014-04-01,25.23,-0.37,27.73,0.23,29.13,0.63,28.01,0.24,4,301.15999999999997
+2014-05-01,25.57,1.3,27.69,0.61,29.56,0.77,28.31,0.46,5,301.46
+2014-06-01,24.51,1.64,27.32,0.89,29.43,0.59,28.11,0.46,6,301.26
+2014-07-01,22.98,1.36,26.27,0.65,29.09,0.29,27.4,0.18,7,300.54999999999995
+2014-08-01,21.91,1.27,25.51,0.52,29.14,0.46,27.02,0.2,8,300.16999999999996
+2014-09-01,21.3,0.96,25.31,0.45,29.34,0.65,27.17,0.45,9,300.32
+2014-10-01,21.54,0.75,25.58,0.66,29.31,0.64,27.17,0.49,10,300.32
+2014-11-01,22.33,0.74,25.88,0.91,29.52,0.88,27.5,0.85,11,300.65
+2014-12-01,22.9,0.08,25.94,0.8,29.4,0.91,27.35,0.78,12,300.5
+2015-01-01,24.13,-0.39,25.99,0.36,29.16,0.86,27.1,0.53,1,300.25
+2015-02-01,25.59,-0.55,26.55,0.18,29.12,1.02,27.29,0.56,2,300.44
+2015-03-01,26.69,0.06,27.29,0.15,29.32,1.13,27.79,0.58,3,300.94
+2015-04-01,26.95,1.35,28.17,0.67,29.73,1.23,28.56,0.78,4,301.71
+2015-05-01,26.71,2.43,28.28,1.19,29.88,1.09,28.88,1.03,5,302.03
+2015-06-01,25.42,2.54,28.1,1.66,29.93,1.09,28.96,1.32,6,302.10999999999996
+2015-07-01,24.48,2.87,27.79,2.17,29.8,1.0,28.82,1.6,7,301.96999999999997
+2015-08-01,22.88,2.24,27.33,2.34,29.66,0.98,28.89,2.07,8,302.03999999999996
+2015-09-01,22.91,2.57,27.48,2.63,29.73,1.04,29.0,2.28,9,302.15
+2015-10-01,23.31,2.52,27.58,2.66,29.79,1.12,29.15,2.46,10,302.29999999999995
+2015-11-01,23.83,2.24,27.91,2.93,30.3,1.67,29.6,2.95,11,302.75
+2015-12-01,25.01,2.19,27.99,2.85,30.11,1.63,29.39,2.82,12,302.53999999999996
+2016-01-01,25.93,1.41,28.21,2.58,29.65,1.35,29.17,2.6,1,302.32
+2016-02-01,26.81,0.67,28.36,1.99,29.55,1.45,29.12,2.4,2,302.27
+2016-03-01,27.57,0.93,28.7,1.57,29.53,1.34,28.9,1.68,3,302.04999999999995
+2016-04-01,25.83,0.23,28.34,0.84,29.39,0.89,28.87,1.09,4,302.02
+2016-05-01,24.55,0.27,27.11,0.03,29.39,0.6,28.15,0.3,5,301.29999999999995
+2016-06-01,23.17,0.29,26.31,-0.12,29.36,0.52,27.53,-0.12,6,300.67999999999995
+2016-07-01,21.79,0.17,25.14,-0.48,29.06,0.26,26.73,-0.49,7,299.88
+2016-08-01,21.03,0.39,24.53,-0.46,28.68,-0.0,26.28,-0.54,8,299.42999999999995
+2016-09-01,20.87,0.53,24.67,-0.18,28.48,-0.21,26.11,-0.61,9,299.26
+2016-10-01,21.18,0.39,24.47,-0.45,28.26,-0.4,25.96,-0.73,10,299.10999999999996
+2016-11-01,21.68,0.09,24.58,-0.4,28.27,-0.37,26.1,-0.55,11,299.25
+2016-12-01,23.35,0.53,24.78,-0.36,28.35,-0.14,26.16,-0.41,12,299.31
+2017-01-01,25.75,1.23,25.61,-0.02,28.18,-0.12,26.25,-0.32,1,299.4
+2017-02-01,27.76,1.62,27.0,0.63,28.03,-0.07,26.87,0.14,2,300.02
+2017-03-01,28.52,1.89,27.7,0.57,28.13,-0.06,27.34,0.13,3,300.48999999999995
+2017-04-01,26.53,0.93,28.09,0.59,28.65,0.15,28.1,0.32,4,301.25
+2017-05-01,25.06,0.78,27.6,0.51,29.08,0.29,28.3,0.46,5,301.45
+2017-06-01,22.98,0.1,26.73,0.3,29.39,0.55,28.19,0.55,6,301.34
+2017-07-01,21.54,-0.07,25.85,0.23,29.21,0.4,27.61,0.39,7,300.76
+2017-08-01,20.19,-0.45,24.82,-0.17,28.87,0.19,26.67,-0.15,8,299.82
+2017-09-01,19.67,-0.67,24.17,-0.68,28.69,0.0,26.29,-0.43,9,299.44
+2017-10-01,19.45,-1.34,24.28,-0.64,28.55,-0.11,26.23,-0.46,10,299.38
+2017-11-01,20.44,-1.15,23.92,-1.05,28.46,-0.18,25.79,-0.86,11,298.94
+2017-12-01,21.44,-1.38,24.05,-1.09,28.24,-0.25,25.8,-0.77,12,298.95
+2018-01-01,23.71,-0.81,24.48,-1.14,28.03,-0.27,25.82,-0.75,1,298.96999999999997
+2018-02-01,25.57,-0.57,25.36,-1.01,27.86,-0.24,25.83,-0.9,2,298.97999999999996
+2018-03-01,25.83,-0.8,26.37,-0.76,28.14,-0.05,26.48,-0.73,3,299.63
+2018-04-01,24.58,-1.02,27.12,-0.38,28.63,0.12,27.42,-0.36,4,300.57
+2018-05-01,23.73,-0.54,26.94,-0.15,29.01,0.22,27.72,-0.13,5,300.87
+2018-06-01,22.19,-0.69,26.72,0.29,29.16,0.32,27.85,0.2,6,301.0
+2018-07-01,21.43,-0.19,26.05,0.43,29.1,0.3,27.52,0.3,7,300.66999999999996
+2018-08-01,20.66,0.02,25.14,0.15,29.19,0.51,27.11,0.29,8,300.26
+2018-09-01,20.31,-0.03,25.2,0.35,29.17,0.48,27.1,0.38,9,300.25
+2018-10-01,21.23,0.43,25.78,0.86,29.61,0.95,27.55,0.86,10,300.7
+2018-11-01,22.27,0.68,26.02,1.05,29.59,0.95,27.64,0.99,11,300.78999999999996
+2018-12-01,23.6,0.78,26.12,0.98,29.52,1.03,27.53,0.96,12,300.67999999999995
+2019-01-01,25.1,0.57,26.17,0.55,29.0,0.65,27.08,0.52,1,300.22999999999996
+2019-02-01,26.45,0.24,26.91,0.55,29.06,0.86,27.41,0.68,2,300.56
+2019-03-01,26.8,0.07,27.89,0.71,29.1,0.77,28.22,0.95,3,301.37
+2019-04-01,25.68,-0.01,28.17,0.56,29.24,0.56,28.6,0.71,4,301.75
+2019-05-01,24.38,-0.08,27.69,0.51,29.58,0.63,28.57,0.62,5,301.71999999999997
+2019-06-01,22.62,-0.38,26.81,0.27,29.62,0.6,28.24,0.47,6,301.39
+2019-07-01,21.34,-0.33,25.68,-0.07,29.73,0.77,27.63,0.3,7,300.78
+2019-08-01,20.2,-0.46,24.89,-0.15,29.5,0.68,26.97,0.1,8,300.12
+2019-09-01,19.5,-0.83,24.61,-0.23,29.33,0.55,26.7,-0.03,9,299.84999999999997
+2019-10-01,20.02,-0.71,25.12,0.17,29.64,0.88,27.31,0.59,10,300.46
+2019-11-01,21.32,-0.22,25.46,0.41,29.47,0.7,27.26,0.51,11,300.40999999999997
+2019-12-01,23.16,0.4,25.47,0.26,29.5,0.91,27.07,0.43,12,300.21999999999997
+2020-01-01,24.55,0.02,25.81,0.2,29.28,0.93,27.09,0.53,1,300.23999999999995
+2020-02-01,26.56,0.35,26.61,0.24,29.17,0.98,27.14,0.41,2,300.28999999999996
+2020-03-01,27.11,0.38,27.43,0.24,29.22,0.89,27.82,0.55,3,300.96999999999997
+2020-04-01,26.0,0.32,28.01,0.4,29.29,0.61,28.32,0.44,4,301.46999999999997
+2020-05-01,24.24,-0.22,26.82,-0.36,28.94,-0.01,27.59,-0.36,5,300.73999999999995
+2020-06-01,22.13,-0.87,25.75,-0.79,29.07,0.05,27.3,-0.47,6,300.45
+2020-07-01,20.44,-1.23,25.08,-0.66,28.83,-0.13,26.89,-0.44,7,300.03999999999996
+2020-08-01,19.69,-0.97,24.42,-0.62,28.47,-0.35,26.18,-0.69,8,299.33
+2020-09-01,19.48,-0.85,23.58,-1.26,28.29,-0.49,25.77,-0.96,9,298.91999999999996
+2020-10-01,19.67,-1.07,23.61,-1.34,27.89,-0.87,25.3,-1.42,10,298.45
+2020-11-01,20.94,-0.61,23.82,-1.23,27.91,-0.86,25.34,-1.42,11,298.48999999999995
+2020-12-01,22.16,-0.6,24.38,-0.83,27.65,-0.95,25.53,-1.12,12,298.67999999999995
+2021-01-01,23.89,-0.64,25.06,-0.55,27.1,-1.25,25.58,-0.99,1,298.72999999999996
+2021-02-01,25.55,-0.66,25.8,-0.57,27.2,-1.0,25.81,-0.92,2,298.96
+2021-03-01,26.48,-0.26,26.8,-0.39,27.79,-0.55,26.75,-0.51,3,299.9
+2021-04-01,24.89,-0.8,26.96,-0.65,28.47,-0.21,27.4,-0.49,4,300.54999999999995
diff --git a/environment.yml b/environment.yml
index f0e6daf2d..e08c8a6d3 100644
--- a/environment.yml
+++ b/environment.yml
@@ -11,6 +11,8 @@ dependencies:
- sqlalchemy<1.4
- cartopy
- xarray
+ - netcdf4
+ - pyproj
- pip
- pip:
# works for regular pip packages
diff --git a/preamble/template.ipynb b/preamble/template.ipynb
index aaa806f09..ad912f32f 100644
--- a/preamble/template.ipynb
+++ b/preamble/template.ipynb
@@ -284,9 +284,9 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python [conda env:pythia-book-dev]",
+ "display_name": "Python3",
"language": "python",
- "name": "conda-env-pythia-book-dev-py"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {