Exploring netCDF files with Python

First, we import the needed things from IPython, NumPy, Matplotlib and SciPy all at once with pylab.

This can be done individually with "import modulename", "import modulename as alias" or import only the desired functions "from modulename import function".


In [1]:
%pylab inline


Populating the interactive namespace from numpy and matplotlib

In [2]:
from netCDF4 import Dataset

In [3]:
f = Dataset("http://iridl.ldeo.columbia.edu/SOURCES/.NOAA/.NCDC/"
            +".ERSST/.version4/.sst/dods")
f


Out[3]:
<type 'netCDF4._netCDF4.Dataset'>
root group (NETCDF3_CLASSIC data model, file format UNDEFINED):
    Conventions: IRIDL
    dimensions(sizes): T(1941), X(180), Y(89), zlev(1)
    variables(dimensions): float32 Y(Y), float32 zlev(zlev), float32 X(X), float32 T(T), int16 sst(T,zlev,Y,X)
    groups: 

In [4]:
temp = f.variables['sst']
temp


Out[4]:
<type 'netCDF4._netCDF4.Variable'>
int16 sst(T, zlev, Y, X)
    pointwidth: 1.0
    missing_value: -999
    scale_factor: 0.01
    units: Celsius_scale
    valid_min: -300
    long_name: Extended reconstructed sea surface temperature
    valid_max: 4500
    standard_name: sea_surface_temperature
    iridl:hasSemantics: iridl:SeaSurfaceTemperature
    expires: 1446422400
unlimited dimensions: 
current shape = (1941, 1, 89, 180)
filling off

In [5]:
!cd /Users/lsiqueira/Desktop/python_lunchbytes
!ls -lh ersst_v4.nc
ifile = 'ersst_v4.nc'


-rw-r-----@ 1 lsiqueira  staff    59M Oct 25 17:28 ersst_v4.nc

In [6]:
f = Dataset(ifile)
temp = f.variables['sst'][:].squeeze()
lats = f.variables['Y'][:]
lons = f.variables['X'][:]
f.close()

In [7]:
shape(temp)


Out[7]:
(1941, 89, 180)

In [8]:
%%timeit
f = Dataset(ifile);
temp = f.variables['sst'][:].squeeze().mean(axis=0)


1 loops, best of 3: 638 ms per loop

In [9]:
f = Dataset(ifile)
temp = f.variables['sst'][:].squeeze().mean(axis=0)
figure(figsize=(13, 4))
imshow(flipud(temp), cmap='jet')
title('Time mean ERSST V4 1854-2015')
colorbar(label='degrees $^o$C', extend='both');


/Users/lsiqueira/anaconda/lib/python2.7/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  if self._edgecolors == str('face'):

In [10]:
from mpl_toolkits.basemap import Basemap

figure(figsize=(13, 4))
m = Basemap(projection='cyl', resolution='c', llcrnrlon=0, llcrnrlat=-90,
            urcrnrlon=360, urcrnrlat=90)
x, y = m(*np.meshgrid(lons, lats))
clevs = np.linspace(-1, 30, 64)
cs = m.pcolormesh(x,y,temp, shading='flat', cmap=plt.cm.jet)
m.drawcoastlines()
m.drawparallels(arange(-90.,90.,30.), labels=[1,0,0,0], fontsize=14)
m.drawmeridians(arange(0.,360.,60.), labels=[0,0,0,1], fontsize=14)
m.fillcontinents()
colorbar(cs, label='$^o$C', extend='both')
plt.title('Time Mean ERSST V4 1854-2015 from NumPy', fontsize=16)


Out[10]:
<matplotlib.text.Text at 0x132a1c750>

Install CDO Python bindings to use embeded CDO commands with "pip install cdo"


In [11]:
from cdo import *

In [12]:
cdo = Cdo()

In [13]:
cdo.sinfon(input=ifile)


Out[13]:
[u'File format: netCDF',
 u'-1 : Institut Source   Ttype    Levels Num  Gridsize Num Dtype : Parameter name',
 u'1 : unknown  unknown  instant       1   1     16020   1  I16  : sst',
 u'Grid coordinates :',
 u'1 : lonlat       > size      : dim = 16020  nx = 180  ny = 89',
 u'X         : first = 0  last = 358  inc = 2  degree_east  circular',
 u'Y         : first = -88  last = 88  inc = 2  degree_north',
 u'Vertical coordinates :',
 u'1 : generic            meters : 0',
 u'Time coordinate :  1941 steps',
 u'RefTime =  1960-01-01 00:00:00  Units = months  Calendar = 360_day',
 u'YYYY-MM-DD hh:mm:ss  YYYY-MM-DD hh:mm:ss  YYYY-MM-DD hh:mm:ss  YYYY-MM-DD hh:mm:ss',
 u'1854-01-16 00:00:00  1854-02-16 00:00:00  1854-03-16 00:00:00  1854-04-16 00:00:00',
 u'1854-05-16 00:00:00  1854-06-16 00:00:00  1854-07-16 00:00:00  1854-08-16 00:00:00',
 u'1854-09-16 00:00:00  1854-10-16 00:00:00  1854-11-16 00:00:00  1854-12-16 00:00:00',
 u'1855-01-16 00:00:00  1855-02-16 00:00:00  1855-03-16 00:00:00  1855-04-16 00:00:00',
 u'1855-05-16 00:00:00  1855-06-16 00:00:00  1855-07-16 00:00:00  1855-08-16 00:00:00',
 u'1855-09-16 00:00:00  1855-10-16 00:00:00  1855-11-16 00:00:00  1855-12-16 00:00:00',
 u'1856-01-16 00:00:00  1856-02-16 00:00:00  1856-03-16 00:00:00  1856-04-16 00:00:00',
 u'1856-05-16 00:00:00  1856-06-16 00:00:00  1856-07-16 00:00:00  1856-08-16 00:00:00',
 u'1856-09-16 00:00:00  1856-10-16 00:00:00  1856-11-16 00:00:00  1856-12-16 00:00:00',
 u'1857-01-16 00:00:00  1857-02-16 00:00:00  1857-03-16 00:00:00  1857-04-16 00:00:00',
 u'1857-05-16 00:00:00  1857-06-16 00:00:00  1857-07-16 00:00:00  1857-08-16 00:00:00',
 u'1857-09-16 00:00:00  1857-10-16 00:00:00  1857-11-16 00:00:00  1857-12-16 00:00:00',
 u'1858-01-16 00:00:00  1858-02-16 00:00:00  1858-03-16 00:00:00  1858-04-16 00:00:00',
 u'1858-05-16 00:00:00  1858-06-16 00:00:00  1858-07-16 00:00:00  1858-08-16 00:00:00',
 u'1858-09-16 00:00:00  1858-10-16 00:00:00  1858-11-16 00:00:00  1858-12-16 00:00:00',
 u'1859-01-16 00:00:00  1859-02-16 00:00:00  1859-03-16 00:00:00  1859-04-16 00:00:00',
 u'1859-05-16 00:00:00  1859-06-16 00:00:00  1859-07-16 00:00:00  1859-08-16 00:00:00',
 u'1859-09-16 00:00:00  1859-10-16 00:00:00  1859-11-16 00:00:00  1859-12-16 00:00:00',
 u'1860-01-16 00:00:00  1860-02-16 00:00:00  1860-03-16 00:00:00  1860-04-16 00:00:00',
 u'1860-05-16 00:00:00  1860-06-16 00:00:00  1860-07-16 00:00:00  1860-08-16 00:00:00',
 u'1860-09-16 00:00:00  1860-10-16 00:00:00  1860-11-16 00:00:00  1860-12-16 00:00:00',
 u'1861-01-16 00:00:00  1861-02-16 00:00:00  1861-03-16 00:00:00  1861-04-16 00:00:00',
 u'1861-05-16 00:00:00  1861-06-16 00:00:00  1861-07-16 00:00:00  1861-08-16 00:00:00',
 u'1861-09-16 00:00:00  1861-10-16 00:00:00  1861-11-16 00:00:00  1861-12-16 00:00:00',
 u'1862-01-16 00:00:00  1862-02-16 00:00:00  1862-03-16 00:00:00  1862-04-16 00:00:00',
 u'1862-05-16 00:00:00  1862-06-16 00:00:00  1862-07-16 00:00:00  1862-08-16 00:00:00',
 u'1862-09-16 00:00:00  1862-10-16 00:00:00  1862-11-16 00:00:00  1862-12-16 00:00:00',
 u'1863-01-16 00:00:00  1863-02-16 00:00:00  1863-03-16 00:00:00  1863-04-16 00:00:00',
 u'1863-05-16 00:00:00  1863-06-16 00:00:00  1863-07-16 00:00:00  1863-08-16 00:00:00',
 u'1863-09-16 00:00:00  1863-10-16 00:00:00  1863-11-16 00:00:00  1863-12-16 00:00:00',
 u'1864-01-16 00:00:00  1864-02-16 00:00:00  1864-03-16 00:00:00  1864-04-16 00:00:00',
 u'1864-05-16 00:00:00  1864-06-16 00:00:00  1864-07-16 00:00:00  1864-08-16 00:00:00',
 u'1864-09-16 00:00:00  1864-10-16 00:00:00  1864-11-16 00:00:00  1864-12-16 00:00:00',
 u'1865-01-16 00:00:00  1865-02-16 00:00:00  1865-03-16 00:00:00  1865-04-16 00:00:00',
 u'1865-05-16 00:00:00  1865-06-16 00:00:00  1865-07-16 00:00:00  1865-08-16 00:00:00',
 u'1865-09-16 00:00:00  1865-10-16 00:00:00  1865-11-16 00:00:00  1865-12-16 00:00:00',
 u'1866-01-16 00:00:00  1866-02-16 00:00:00  1866-03-16 00:00:00  1866-04-16 00:00:00',
 u'1866-05-16 00:00:00  1866-06-16 00:00:00  1866-07-16 00:00:00  1866-08-16 00:00:00',
 u'1866-09-16 00:00:00  1866-10-16 00:00:00  1866-11-16 00:00:00  1866-12-16 00:00:00',
 u'1867-01-16 00:00:00  1867-02-16 00:00:00  1867-03-16 00:00:00  1867-04-16 00:00:00',
 u'1867-05-16 00:00:00  1867-06-16 00:00:00  1867-07-16 00:00:00  1867-08-16 00:00:00',
 u'1867-09-16 00:00:00  1867-10-16 00:00:00  1867-11-16 00:00:00  1867-12-16 00:00:00',
 u'1868-01-16 00:00:00  1868-02-16 00:00:00  1868-03-16 00:00:00  1868-04-16 00:00:00',
 u'1868-05-16 00:00:00  1868-06-16 00:00:00  1868-07-16 00:00:00  1868-08-16 00:00:00',
 u'1868-09-16 00:00:00  1868-10-16 00:00:00  1868-11-16 00:00:00  1868-12-16 00:00:00',
 u'1869-01-16 00:00:00  1869-02-16 00:00:00  1869-03-16 00:00:00  1869-04-16 00:00:00',
 u'1869-05-16 00:00:00  1869-06-16 00:00:00  1869-07-16 00:00:00  1869-08-16 00:00:00',
 u'1869-09-16 00:00:00  1869-10-16 00:00:00  1869-11-16 00:00:00  1869-12-16 00:00:00',
 u'1870-01-16 00:00:00  1870-02-16 00:00:00  1870-03-16 00:00:00  1870-04-16 00:00:00',
 u'1870-05-16 00:00:00  1870-06-16 00:00:00  1870-07-16 00:00:00  1870-08-16 00:00:00',
 u'1870-09-16 00:00:00  1870-10-16 00:00:00  1870-11-16 00:00:00  1870-12-16 00:00:00',
 u'1871-01-16 00:00:00  1871-02-16 00:00:00  1871-03-16 00:00:00  1871-04-16 00:00:00',
 u'1871-05-16 00:00:00  1871-06-16 00:00:00  1871-07-16 00:00:00  1871-08-16 00:00:00',
 u'1871-09-16 00:00:00  1871-10-16 00:00:00  1871-11-16 00:00:00  1871-12-16 00:00:00',
 u'1872-01-16 00:00:00  1872-02-16 00:00:00  1872-03-16 00:00:00  1872-04-16 00:00:00',
 u'1872-05-16 00:00:00  1872-06-16 00:00:00  1872-07-16 00:00:00  1872-08-16 00:00:00',
 u'1872-09-16 00:00:00  1872-10-16 00:00:00  1872-11-16 00:00:00  1872-12-16 00:00:00',
 u'1873-01-16 00:00:00  1873-02-16 00:00:00  1873-03-16 00:00:00  1873-04-16 00:00:00',
 u'1873-05-16 00:00:00  1873-06-16 00:00:00  1873-07-16 00:00:00  1873-08-16 00:00:00',
 u'1873-09-16 00:00:00  1873-10-16 00:00:00  1873-11-16 00:00:00  1873-12-16 00:00:00',
 u'1874-01-16 00:00:00  1874-02-16 00:00:00  1874-03-16 00:00:00  1874-04-16 00:00:00',
 u'1874-05-16 00:00:00  1874-06-16 00:00:00  1874-07-16 00:00:00  1874-08-16 00:00:00',
 u'1874-09-16 00:00:00  1874-10-16 00:00:00  1874-11-16 00:00:00  1874-12-16 00:00:00',
 u'1875-01-16 00:00:00  1875-02-16 00:00:00  1875-03-16 00:00:00  1875-04-16 00:00:00',
 u'1875-05-16 00:00:00  1875-06-16 00:00:00  1875-07-16 00:00:00  1875-08-16 00:00:00',
 u'1875-09-16 00:00:00  1875-10-16 00:00:00  1875-11-16 00:00:00  1875-12-16 00:00:00',
 u'1876-01-16 00:00:00  1876-02-16 00:00:00  1876-03-16 00:00:00  1876-04-16 00:00:00',
 u'1876-05-16 00:00:00  1876-06-16 00:00:00  1876-07-16 00:00:00  1876-08-16 00:00:00',
 u'1876-09-16 00:00:00  1876-10-16 00:00:00  1876-11-16 00:00:00  1876-12-16 00:00:00',
 u'1877-01-16 00:00:00  1877-02-16 00:00:00  1877-03-16 00:00:00  1877-04-16 00:00:00',
 u'1877-05-16 00:00:00  1877-06-16 00:00:00  1877-07-16 00:00:00  1877-08-16 00:00:00',
 u'1877-09-16 00:00:00  1877-10-16 00:00:00  1877-11-16 00:00:00  1877-12-16 00:00:00',
 u'1878-01-16 00:00:00  1878-02-16 00:00:00  1878-03-16 00:00:00  1878-04-16 00:00:00',
 u'1878-05-16 00:00:00  1878-06-16 00:00:00  1878-07-16 00:00:00  1878-08-16 00:00:00',
 u'1878-09-16 00:00:00  1878-10-16 00:00:00  1878-11-16 00:00:00  1878-12-16 00:00:00',
 u'1879-01-16 00:00:00  1879-02-16 00:00:00  1879-03-16 00:00:00  1879-04-16 00:00:00',
 u'1879-05-16 00:00:00  1879-06-16 00:00:00  1879-07-16 00:00:00  1879-08-16 00:00:00',
 u'1879-09-16 00:00:00  1879-10-16 00:00:00  1879-11-16 00:00:00  1879-12-16 00:00:00',
 u'1880-01-16 00:00:00  1880-02-16 00:00:00  1880-03-16 00:00:00  1880-04-16 00:00:00',
 u'1880-05-16 00:00:00  1880-06-16 00:00:00  1880-07-16 00:00:00  1880-08-16 00:00:00',
 u'1880-09-16 00:00:00  1880-10-16 00:00:00  1880-11-16 00:00:00  1880-12-16 00:00:00',
 u'1881-01-16 00:00:00  1881-02-16 00:00:00  1881-03-16 00:00:00  1881-04-16 00:00:00',
 u'1881-05-16 00:00:00  1881-06-16 00:00:00  1881-07-16 00:00:00  1881-08-16 00:00:00',
 u'1881-09-16 00:00:00  1881-10-16 00:00:00  1881-11-16 00:00:00  1881-12-16 00:00:00',
 u'1882-01-16 00:00:00  1882-02-16 00:00:00  1882-03-16 00:00:00  1882-04-16 00:00:00',
 u'1882-05-16 00:00:00  1882-06-16 00:00:00  1882-07-16 00:00:00  1882-08-16 00:00:00',
 u'1882-09-16 00:00:00  1882-10-16 00:00:00  1882-11-16 00:00:00  1882-12-16 00:00:00',
 u'1883-01-16 00:00:00  1883-02-16 00:00:00  1883-03-16 00:00:00  1883-04-16 00:00:00',
 u'1883-05-16 00:00:00  1883-06-16 00:00:00  1883-07-16 00:00:00  1883-08-16 00:00:00',
 u'1883-09-16 00:00:00  1883-10-16 00:00:00  1883-11-16 00:00:00  1883-12-16 00:00:00',
 u'1884-01-16 00:00:00  1884-02-16 00:00:00  1884-03-16 00:00:00  1884-04-16 00:00:00',
 u'1884-05-16 00:00:00  1884-06-16 00:00:00  1884-07-16 00:00:00  1884-08-16 00:00:00',
 u'1884-09-16 00:00:00  1884-10-16 00:00:00  1884-11-16 00:00:00  1884-12-16 00:00:00',
 u'1885-01-16 00:00:00  1885-02-16 00:00:00  1885-03-16 00:00:00  1885-04-16 00:00:00',
 u'1885-05-16 00:00:00  1885-06-16 00:00:00  1885-07-16 00:00:00  1885-08-16 00:00:00',
 u'1885-09-16 00:00:00  1885-10-16 00:00:00  1885-11-16 00:00:00  1885-12-16 00:00:00',
 u'1886-01-16 00:00:00  1886-02-16 00:00:00  1886-03-16 00:00:00  1886-04-16 00:00:00',
 u'1886-05-16 00:00:00  1886-06-16 00:00:00  1886-07-16 00:00:00  1886-08-16 00:00:00',
 u'1886-09-16 00:00:00  1886-10-16 00:00:00  1886-11-16 00:00:00  1886-12-16 00:00:00',
 u'1887-01-16 00:00:00  1887-02-16 00:00:00  1887-03-16 00:00:00  1887-04-16 00:00:00',
 u'1887-05-16 00:00:00  1887-06-16 00:00:00  1887-07-16 00:00:00  1887-08-16 00:00:00',
 u'1887-09-16 00:00:00  1887-10-16 00:00:00  1887-11-16 00:00:00  1887-12-16 00:00:00',
 u'1888-01-16 00:00:00  1888-02-16 00:00:00  1888-03-16 00:00:00  1888-04-16 00:00:00',
 u'1888-05-16 00:00:00  1888-06-16 00:00:00  1888-07-16 00:00:00  1888-08-16 00:00:00',
 u'1888-09-16 00:00:00  1888-10-16 00:00:00  1888-11-16 00:00:00  1888-12-16 00:00:00',
 u'1889-01-16 00:00:00  1889-02-16 00:00:00  1889-03-16 00:00:00  1889-04-16 00:00:00',
 u'1889-05-16 00:00:00  1889-06-16 00:00:00  1889-07-16 00:00:00  1889-08-16 00:00:00',
 u'1889-09-16 00:00:00  1889-10-16 00:00:00  1889-11-16 00:00:00  1889-12-16 00:00:00',
 u'1890-01-16 00:00:00  1890-02-16 00:00:00  1890-03-16 00:00:00  1890-04-16 00:00:00',
 u'1890-05-16 00:00:00  1890-06-16 00:00:00  1890-07-16 00:00:00  1890-08-16 00:00:00',
 u'1890-09-16 00:00:00  1890-10-16 00:00:00  1890-11-16 00:00:00  1890-12-16 00:00:00',
 u'1891-01-16 00:00:00  1891-02-16 00:00:00  1891-03-16 00:00:00  1891-04-16 00:00:00',
 u'1891-05-16 00:00:00  1891-06-16 00:00:00  1891-07-16 00:00:00  1891-08-16 00:00:00',
 u'1891-09-16 00:00:00  1891-10-16 00:00:00  1891-11-16 00:00:00  1891-12-16 00:00:00',
 u'1892-01-16 00:00:00  1892-02-16 00:00:00  1892-03-16 00:00:00  1892-04-16 00:00:00',
 u'1892-05-16 00:00:00  1892-06-16 00:00:00  1892-07-16 00:00:00  1892-08-16 00:00:00',
 u'1892-09-16 00:00:00  1892-10-16 00:00:00  1892-11-16 00:00:00  1892-12-16 00:00:00',
 u'1893-01-16 00:00:00  1893-02-16 00:00:00  1893-03-16 00:00:00  1893-04-16 00:00:00',
 u'1893-05-16 00:00:00  1893-06-16 00:00:00  1893-07-16 00:00:00  1893-08-16 00:00:00',
 u'1893-09-16 00:00:00  1893-10-16 00:00:00  1893-11-16 00:00:00  1893-12-16 00:00:00',
 u'1894-01-16 00:00:00  1894-02-16 00:00:00  1894-03-16 00:00:00  1894-04-16 00:00:00',
 u'1894-05-16 00:00:00  1894-06-16 00:00:00  1894-07-16 00:00:00  1894-08-16 00:00:00',
 u'1894-09-16 00:00:00  1894-10-16 00:00:00  1894-11-16 00:00:00  1894-12-16 00:00:00',
 u'1895-01-16 00:00:00  1895-02-16 00:00:00  1895-03-16 00:00:00  1895-04-16 00:00:00',
 u'1895-05-16 00:00:00  1895-06-16 00:00:00  1895-07-16 00:00:00  1895-08-16 00:00:00',
 u'1895-09-16 00:00:00  1895-10-16 00:00:00  1895-11-16 00:00:00  1895-12-16 00:00:00',
 u'1896-01-16 00:00:00  1896-02-16 00:00:00  1896-03-16 00:00:00  1896-04-16 00:00:00',
 u'1896-05-16 00:00:00  1896-06-16 00:00:00  1896-07-16 00:00:00  1896-08-16 00:00:00',
 u'1896-09-16 00:00:00  1896-10-16 00:00:00  1896-11-16 00:00:00  1896-12-16 00:00:00',
 u'1897-01-16 00:00:00  1897-02-16 00:00:00  1897-03-16 00:00:00  1897-04-16 00:00:00',
 u'1897-05-16 00:00:00  1897-06-16 00:00:00  1897-07-16 00:00:00  1897-08-16 00:00:00',
 u'1897-09-16 00:00:00  1897-10-16 00:00:00  1897-11-16 00:00:00  1897-12-16 00:00:00',
 u'1898-01-16 00:00:00  1898-02-16 00:00:00  1898-03-16 00:00:00  1898-04-16 00:00:00',
 u'1898-05-16 00:00:00  1898-06-16 00:00:00  1898-07-16 00:00:00  1898-08-16 00:00:00',
 u'1898-09-16 00:00:00  1898-10-16 00:00:00  1898-11-16 00:00:00  1898-12-16 00:00:00',
 u'1899-01-16 00:00:00  1899-02-16 00:00:00  1899-03-16 00:00:00  1899-04-16 00:00:00',
 u'1899-05-16 00:00:00  1899-06-16 00:00:00  1899-07-16 00:00:00  1899-08-16 00:00:00',
 u'1899-09-16 00:00:00  1899-10-16 00:00:00  1899-11-16 00:00:00  1899-12-16 00:00:00',
 u'1900-01-16 00:00:00  1900-02-16 00:00:00  1900-03-16 00:00:00  1900-04-16 00:00:00',
 u'1900-05-16 00:00:00  1900-06-16 00:00:00  1900-07-16 00:00:00  1900-08-16 00:00:00',
 u'1900-09-16 00:00:00  1900-10-16 00:00:00  1900-11-16 00:00:00  1900-12-16 00:00:00',
 u'1901-01-16 00:00:00  1901-02-16 00:00:00  1901-03-16 00:00:00  1901-04-16 00:00:00',
 u'1901-05-16 00:00:00  1901-06-16 00:00:00  1901-07-16 00:00:00  1901-08-16 00:00:00',
 u'1901-09-16 00:00:00  1901-10-16 00:00:00  1901-11-16 00:00:00  1901-12-16 00:00:00',
 u'1902-01-16 00:00:00  1902-02-16 00:00:00  1902-03-16 00:00:00  1902-04-16 00:00:00',
 u'1902-05-16 00:00:00  1902-06-16 00:00:00  1902-07-16 00:00:00  1902-08-16 00:00:00',
 u'1902-09-16 00:00:00  1902-10-16 00:00:00  1902-11-16 00:00:00  1902-12-16 00:00:00',
 u'1903-01-16 00:00:00  1903-02-16 00:00:00  1903-03-16 00:00:00  1903-04-16 00:00:00',
 u'1903-05-16 00:00:00  1903-06-16 00:00:00  1903-07-16 00:00:00  1903-08-16 00:00:00',
 u'1903-09-16 00:00:00  1903-10-16 00:00:00  1903-11-16 00:00:00  1903-12-16 00:00:00',
 u'1904-01-16 00:00:00  1904-02-16 00:00:00  1904-03-16 00:00:00  1904-04-16 00:00:00',
 u'1904-05-16 00:00:00  1904-06-16 00:00:00  1904-07-16 00:00:00  1904-08-16 00:00:00',
 u'1904-09-16 00:00:00  1904-10-16 00:00:00  1904-11-16 00:00:00  1904-12-16 00:00:00',
 u'1905-01-16 00:00:00  1905-02-16 00:00:00  1905-03-16 00:00:00  1905-04-16 00:00:00',
 u'1905-05-16 00:00:00  1905-06-16 00:00:00  1905-07-16 00:00:00  1905-08-16 00:00:00',
 u'1905-09-16 00:00:00  1905-10-16 00:00:00  1905-11-16 00:00:00  1905-12-16 00:00:00',
 u'1906-01-16 00:00:00  1906-02-16 00:00:00  1906-03-16 00:00:00  1906-04-16 00:00:00',
 u'1906-05-16 00:00:00  1906-06-16 00:00:00  1906-07-16 00:00:00  1906-08-16 00:00:00',
 u'1906-09-16 00:00:00  1906-10-16 00:00:00  1906-11-16 00:00:00  1906-12-16 00:00:00',
 u'1907-01-16 00:00:00  1907-02-16 00:00:00  1907-03-16 00:00:00  1907-04-16 00:00:00',
 u'1907-05-16 00:00:00  1907-06-16 00:00:00  1907-07-16 00:00:00  1907-08-16 00:00:00',
 u'1907-09-16 00:00:00  1907-10-16 00:00:00  1907-11-16 00:00:00  1907-12-16 00:00:00',
 u'1908-01-16 00:00:00  1908-02-16 00:00:00  1908-03-16 00:00:00  1908-04-16 00:00:00',
 u'1908-05-16 00:00:00  1908-06-16 00:00:00  1908-07-16 00:00:00  1908-08-16 00:00:00',
 u'1908-09-16 00:00:00  1908-10-16 00:00:00  1908-11-16 00:00:00  1908-12-16 00:00:00',
 u'1909-01-16 00:00:00  1909-02-16 00:00:00  1909-03-16 00:00:00  1909-04-16 00:00:00',
 u'1909-05-16 00:00:00  1909-06-16 00:00:00  1909-07-16 00:00:00  1909-08-16 00:00:00',
 u'1909-09-16 00:00:00  1909-10-16 00:00:00  1909-11-16 00:00:00  1909-12-16 00:00:00',
 u'1910-01-16 00:00:00  1910-02-16 00:00:00  1910-03-16 00:00:00  1910-04-16 00:00:00',
 u'1910-05-16 00:00:00  1910-06-16 00:00:00  1910-07-16 00:00:00  1910-08-16 00:00:00',
 u'1910-09-16 00:00:00  1910-10-16 00:00:00  1910-11-16 00:00:00  1910-12-16 00:00:00',
 u'1911-01-16 00:00:00  1911-02-16 00:00:00  1911-03-16 00:00:00  1911-04-16 00:00:00',
 u'1911-05-16 00:00:00  1911-06-16 00:00:00  1911-07-16 00:00:00  1911-08-16 00:00:00',
 u'1911-09-16 00:00:00  1911-10-16 00:00:00  1911-11-16 00:00:00  1911-12-16 00:00:00',
 u'1912-01-16 00:00:00  1912-02-16 00:00:00  1912-03-16 00:00:00  1912-04-16 00:00:00',
 u'1912-05-16 00:00:00  1912-06-16 00:00:00  1912-07-16 00:00:00  1912-08-16 00:00:00',
 u'1912-09-16 00:00:00  1912-10-16 00:00:00  1912-11-16 00:00:00  1912-12-16 00:00:00',
 u'1913-01-16 00:00:00  1913-02-16 00:00:00  1913-03-16 00:00:00  1913-04-16 00:00:00',
 u'1913-05-16 00:00:00  1913-06-16 00:00:00  1913-07-16 00:00:00  1913-08-16 00:00:00',
 u'1913-09-16 00:00:00  1913-10-16 00:00:00  1913-11-16 00:00:00  1913-12-16 00:00:00',
 u'1914-01-16 00:00:00  1914-02-16 00:00:00  1914-03-16 00:00:00  1914-04-16 00:00:00',
 u'1914-05-16 00:00:00  1914-06-16 00:00:00  1914-07-16 00:00:00  1914-08-16 00:00:00',
 u'1914-09-16 00:00:00  1914-10-16 00:00:00  1914-11-16 00:00:00  1914-12-16 00:00:00',
 u'1915-01-16 00:00:00  1915-02-16 00:00:00  1915-03-16 00:00:00  1915-04-16 00:00:00',
 u'1915-05-16 00:00:00  1915-06-16 00:00:00  1915-07-16 00:00:00  1915-08-16 00:00:00',
 u'1915-09-16 00:00:00  1915-10-16 00:00:00  1915-11-16 00:00:00  1915-12-16 00:00:00',
 u'1916-01-16 00:00:00  1916-02-16 00:00:00  1916-03-16 00:00:00  1916-04-16 00:00:00',
 u'1916-05-16 00:00:00  1916-06-16 00:00:00  1916-07-16 00:00:00  1916-08-16 00:00:00',
 u'1916-09-16 00:00:00  1916-10-16 00:00:00  1916-11-16 00:00:00  1916-12-16 00:00:00',
 u'1917-01-16 00:00:00  1917-02-16 00:00:00  1917-03-16 00:00:00  1917-04-16 00:00:00',
 u'1917-05-16 00:00:00  1917-06-16 00:00:00  1917-07-16 00:00:00  1917-08-16 00:00:00',
 u'1917-09-16 00:00:00  1917-10-16 00:00:00  1917-11-16 00:00:00  1917-12-16 00:00:00',
 u'1918-01-16 00:00:00  1918-02-16 00:00:00  1918-03-16 00:00:00  1918-04-16 00:00:00',
 u'1918-05-16 00:00:00  1918-06-16 00:00:00  1918-07-16 00:00:00  1918-08-16 00:00:00',
 u'1918-09-16 00:00:00  1918-10-16 00:00:00  1918-11-16 00:00:00  1918-12-16 00:00:00',
 u'1919-01-16 00:00:00  1919-02-16 00:00:00  1919-03-16 00:00:00  1919-04-16 00:00:00',
 u'1919-05-16 00:00:00  1919-06-16 00:00:00  1919-07-16 00:00:00  1919-08-16 00:00:00',
 u'1919-09-16 00:00:00  1919-10-16 00:00:00  1919-11-16 00:00:00  1919-12-16 00:00:00',
 u'1920-01-16 00:00:00  1920-02-16 00:00:00  1920-03-16 00:00:00  1920-04-16 00:00:00',
 u'1920-05-16 00:00:00  1920-06-16 00:00:00  1920-07-16 00:00:00  1920-08-16 00:00:00',
 u'1920-09-16 00:00:00  1920-10-16 00:00:00  1920-11-16 00:00:00  1920-12-16 00:00:00',
 u'1921-01-16 00:00:00  1921-02-16 00:00:00  1921-03-16 00:00:00  1921-04-16 00:00:00',
 u'1921-05-16 00:00:00  1921-06-16 00:00:00  1921-07-16 00:00:00  1921-08-16 00:00:00',
 u'1921-09-16 00:00:00  1921-10-16 00:00:00  1921-11-16 00:00:00  1921-12-16 00:00:00',
 u'1922-01-16 00:00:00  1922-02-16 00:00:00  1922-03-16 00:00:00  1922-04-16 00:00:00',
 u'1922-05-16 00:00:00  1922-06-16 00:00:00  1922-07-16 00:00:00  1922-08-16 00:00:00',
 u'1922-09-16 00:00:00  1922-10-16 00:00:00  1922-11-16 00:00:00  1922-12-16 00:00:00',
 u'1923-01-16 00:00:00  1923-02-16 00:00:00  1923-03-16 00:00:00  1923-04-16 00:00:00',
 u'1923-05-16 00:00:00  1923-06-16 00:00:00  1923-07-16 00:00:00  1923-08-16 00:00:00',
 u'1923-09-16 00:00:00  1923-10-16 00:00:00  1923-11-16 00:00:00  1923-12-16 00:00:00',
 u'1924-01-16 00:00:00  1924-02-16 00:00:00  1924-03-16 00:00:00  1924-04-16 00:00:00',
 u'1924-05-16 00:00:00  1924-06-16 00:00:00  1924-07-16 00:00:00  1924-08-16 00:00:00',
 u'1924-09-16 00:00:00  1924-10-16 00:00:00  1924-11-16 00:00:00  1924-12-16 00:00:00',
 u'1925-01-16 00:00:00  1925-02-16 00:00:00  1925-03-16 00:00:00  1925-04-16 00:00:00',
 u'1925-05-16 00:00:00  1925-06-16 00:00:00  1925-07-16 00:00:00  1925-08-16 00:00:00',
 u'1925-09-16 00:00:00  1925-10-16 00:00:00  1925-11-16 00:00:00  1925-12-16 00:00:00',
 u'1926-01-16 00:00:00  1926-02-16 00:00:00  1926-03-16 00:00:00  1926-04-16 00:00:00',
 u'1926-05-16 00:00:00  1926-06-16 00:00:00  1926-07-16 00:00:00  1926-08-16 00:00:00',
 u'1926-09-16 00:00:00  1926-10-16 00:00:00  1926-11-16 00:00:00  1926-12-16 00:00:00',
 u'1927-01-16 00:00:00  1927-02-16 00:00:00  1927-03-16 00:00:00  1927-04-16 00:00:00',
 u'1927-05-16 00:00:00  1927-06-16 00:00:00  1927-07-16 00:00:00  1927-08-16 00:00:00',
 u'1927-09-16 00:00:00  1927-10-16 00:00:00  1927-11-16 00:00:00  1927-12-16 00:00:00',
 u'1928-01-16 00:00:00  1928-02-16 00:00:00  1928-03-16 00:00:00  1928-04-16 00:00:00',
 u'1928-05-16 00:00:00  1928-06-16 00:00:00  1928-07-16 00:00:00  1928-08-16 00:00:00',
 u'1928-09-16 00:00:00  1928-10-16 00:00:00  1928-11-16 00:00:00  1928-12-16 00:00:00',
 u'1929-01-16 00:00:00  1929-02-16 00:00:00  1929-03-16 00:00:00  1929-04-16 00:00:00',
 u'1929-05-16 00:00:00  1929-06-16 00:00:00  1929-07-16 00:00:00  1929-08-16 00:00:00',
 u'1929-09-16 00:00:00  1929-10-16 00:00:00  1929-11-16 00:00:00  1929-12-16 00:00:00',
 u'1930-01-16 00:00:00  1930-02-16 00:00:00  1930-03-16 00:00:00  1930-04-16 00:00:00',
 u'1930-05-16 00:00:00  1930-06-16 00:00:00  1930-07-16 00:00:00  1930-08-16 00:00:00',
 u'1930-09-16 00:00:00  1930-10-16 00:00:00  1930-11-16 00:00:00  1930-12-16 00:00:00',
 u'1931-01-16 00:00:00  1931-02-16 00:00:00  1931-03-16 00:00:00  1931-04-16 00:00:00',
 u'1931-05-16 00:00:00  1931-06-16 00:00:00  1931-07-16 00:00:00  1931-08-16 00:00:00',
 u'1931-09-16 00:00:00  1931-10-16 00:00:00  1931-11-16 00:00:00  1931-12-16 00:00:00',
 u'1932-01-16 00:00:00  1932-02-16 00:00:00  1932-03-16 00:00:00  1932-04-16 00:00:00',
 u'1932-05-16 00:00:00  1932-06-16 00:00:00  1932-07-16 00:00:00  1932-08-16 00:00:00',
 u'1932-09-16 00:00:00  1932-10-16 00:00:00  1932-11-16 00:00:00  1932-12-16 00:00:00',
 u'1933-01-16 00:00:00  1933-02-16 00:00:00  1933-03-16 00:00:00  1933-04-16 00:00:00',
 u'1933-05-16 00:00:00  1933-06-16 00:00:00  1933-07-16 00:00:00  1933-08-16 00:00:00',
 u'1933-09-16 00:00:00  1933-10-16 00:00:00  1933-11-16 00:00:00  1933-12-16 00:00:00',
 u'1934-01-16 00:00:00  1934-02-16 00:00:00  1934-03-16 00:00:00  1934-04-16 00:00:00',
 u'1934-05-16 00:00:00  1934-06-16 00:00:00  1934-07-16 00:00:00  1934-08-16 00:00:00',
 u'1934-09-16 00:00:00  1934-10-16 00:00:00  1934-11-16 00:00:00  1934-12-16 00:00:00',
 u'1935-01-16 00:00:00  1935-02-16 00:00:00  1935-03-16 00:00:00  1935-04-16 00:00:00',
 u'1935-05-16 00:00:00  1935-06-16 00:00:00  1935-07-16 00:00:00  1935-08-16 00:00:00',
 u'1935-09-16 00:00:00  1935-10-16 00:00:00  1935-11-16 00:00:00  1935-12-16 00:00:00',
 u'1936-01-16 00:00:00  1936-02-16 00:00:00  1936-03-16 00:00:00  1936-04-16 00:00:00',
 u'1936-05-16 00:00:00  1936-06-16 00:00:00  1936-07-16 00:00:00  1936-08-16 00:00:00',
 u'1936-09-16 00:00:00  1936-10-16 00:00:00  1936-11-16 00:00:00  1936-12-16 00:00:00',
 u'1937-01-16 00:00:00  1937-02-16 00:00:00  1937-03-16 00:00:00  1937-04-16 00:00:00',
 u'1937-05-16 00:00:00  1937-06-16 00:00:00  1937-07-16 00:00:00  1937-08-16 00:00:00',
 u'1937-09-16 00:00:00  1937-10-16 00:00:00  1937-11-16 00:00:00  1937-12-16 00:00:00',
 u'1938-01-16 00:00:00  1938-02-16 00:00:00  1938-03-16 00:00:00  1938-04-16 00:00:00',
 u'1938-05-16 00:00:00  1938-06-16 00:00:00  1938-07-16 00:00:00  1938-08-16 00:00:00',
 u'1938-09-16 00:00:00  1938-10-16 00:00:00  1938-11-16 00:00:00  1938-12-16 00:00:00',
 u'1939-01-16 00:00:00  1939-02-16 00:00:00  1939-03-16 00:00:00  1939-04-16 00:00:00',
 u'1939-05-16 00:00:00  1939-06-16 00:00:00  1939-07-16 00:00:00  1939-08-16 00:00:00',
 u'1939-09-16 00:00:00  1939-10-16 00:00:00  1939-11-16 00:00:00  1939-12-16 00:00:00',
 u'1940-01-16 00:00:00  1940-02-16 00:00:00  1940-03-16 00:00:00  1940-04-16 00:00:00',
 u'1940-05-16 00:00:00  1940-06-16 00:00:00  1940-07-16 00:00:00  1940-08-16 00:00:00',
 u'1940-09-16 00:00:00  1940-10-16 00:00:00  1940-11-16 00:00:00  1940-12-16 00:00:00',
 u'1941-01-16 00:00:00  1941-02-16 00:00:00  1941-03-16 00:00:00  1941-04-16 00:00:00',
 u'1941-05-16 00:00:00  1941-06-16 00:00:00  1941-07-16 00:00:00  1941-08-16 00:00:00',
 u'1941-09-16 00:00:00  1941-10-16 00:00:00  1941-11-16 00:00:00  1941-12-16 00:00:00',
 u'1942-01-16 00:00:00  1942-02-16 00:00:00  1942-03-16 00:00:00  1942-04-16 00:00:00',
 u'1942-05-16 00:00:00  1942-06-16 00:00:00  1942-07-16 00:00:00  1942-08-16 00:00:00',
 u'1942-09-16 00:00:00  1942-10-16 00:00:00  1942-11-16 00:00:00  1942-12-16 00:00:00',
 u'1943-01-16 00:00:00  1943-02-16 00:00:00  1943-03-16 00:00:00  1943-04-16 00:00:00',
 u'1943-05-16 00:00:00  1943-06-16 00:00:00  1943-07-16 00:00:00  1943-08-16 00:00:00',
 u'1943-09-16 00:00:00  1943-10-16 00:00:00  1943-11-16 00:00:00  1943-12-16 00:00:00',
 u'1944-01-16 00:00:00  1944-02-16 00:00:00  1944-03-16 00:00:00  1944-04-16 00:00:00',
 u'1944-05-16 00:00:00  1944-06-16 00:00:00  1944-07-16 00:00:00  1944-08-16 00:00:00',
 u'1944-09-16 00:00:00  1944-10-16 00:00:00  1944-11-16 00:00:00  1944-12-16 00:00:00',
 u'1945-01-16 00:00:00  1945-02-16 00:00:00  1945-03-16 00:00:00  1945-04-16 00:00:00',
 u'1945-05-16 00:00:00  1945-06-16 00:00:00  1945-07-16 00:00:00  1945-08-16 00:00:00',
 u'1945-09-16 00:00:00  1945-10-16 00:00:00  1945-11-16 00:00:00  1945-12-16 00:00:00',
 u'1946-01-16 00:00:00  1946-02-16 00:00:00  1946-03-16 00:00:00  1946-04-16 00:00:00',
 u'1946-05-16 00:00:00  1946-06-16 00:00:00  1946-07-16 00:00:00  1946-08-16 00:00:00',
 u'1946-09-16 00:00:00  1946-10-16 00:00:00  1946-11-16 00:00:00  1946-12-16 00:00:00',
 u'1947-01-16 00:00:00  1947-02-16 00:00:00  1947-03-16 00:00:00  1947-04-16 00:00:00',
 u'1947-05-16 00:00:00  1947-06-16 00:00:00  1947-07-16 00:00:00  1947-08-16 00:00:00',
 u'1947-09-16 00:00:00  1947-10-16 00:00:00  1947-11-16 00:00:00  1947-12-16 00:00:00',
 u'1948-01-16 00:00:00  1948-02-16 00:00:00  1948-03-16 00:00:00  1948-04-16 00:00:00',
 u'1948-05-16 00:00:00  1948-06-16 00:00:00  1948-07-16 00:00:00  1948-08-16 00:00:00',
 u'1948-09-16 00:00:00  1948-10-16 00:00:00  1948-11-16 00:00:00  1948-12-16 00:00:00',
 u'1949-01-16 00:00:00  1949-02-16 00:00:00  1949-03-16 00:00:00  1949-04-16 00:00:00',
 u'1949-05-16 00:00:00  1949-06-16 00:00:00  1949-07-16 00:00:00  1949-08-16 00:00:00',
 u'1949-09-16 00:00:00  1949-10-16 00:00:00  1949-11-16 00:00:00  1949-12-16 00:00:00',
 u'1950-01-16 00:00:00  1950-02-16 00:00:00  1950-03-16 00:00:00  1950-04-16 00:00:00',
 u'1950-05-16 00:00:00  1950-06-16 00:00:00  1950-07-16 00:00:00  1950-08-16 00:00:00',
 u'1950-09-16 00:00:00  1950-10-16 00:00:00  1950-11-16 00:00:00  1950-12-16 00:00:00',
 u'1951-01-16 00:00:00  1951-02-16 00:00:00  1951-03-16 00:00:00  1951-04-16 00:00:00',
 u'1951-05-16 00:00:00  1951-06-16 00:00:00  1951-07-16 00:00:00  1951-08-16 00:00:00',
 u'1951-09-16 00:00:00  1951-10-16 00:00:00  1951-11-16 00:00:00  1951-12-16 00:00:00',
 u'1952-01-16 00:00:00  1952-02-16 00:00:00  1952-03-16 00:00:00  1952-04-16 00:00:00',
 u'1952-05-16 00:00:00  1952-06-16 00:00:00  1952-07-16 00:00:00  1952-08-16 00:00:00',
 u'1952-09-16 00:00:00  1952-10-16 00:00:00  1952-11-16 00:00:00  1952-12-16 00:00:00',
 u'1953-01-16 00:00:00  1953-02-16 00:00:00  1953-03-16 00:00:00  1953-04-16 00:00:00',
 u'1953-05-16 00:00:00  1953-06-16 00:00:00  1953-07-16 00:00:00  1953-08-16 00:00:00',
 u'1953-09-16 00:00:00  1953-10-16 00:00:00  1953-11-16 00:00:00  1953-12-16 00:00:00',
 u'1954-01-16 00:00:00  1954-02-16 00:00:00  1954-03-16 00:00:00  1954-04-16 00:00:00',
 u'1954-05-16 00:00:00  1954-06-16 00:00:00  1954-07-16 00:00:00  1954-08-16 00:00:00',
 u'1954-09-16 00:00:00  1954-10-16 00:00:00  1954-11-16 00:00:00  1954-12-16 00:00:00',
 u'1955-01-16 00:00:00  1955-02-16 00:00:00  1955-03-16 00:00:00  1955-04-16 00:00:00',
 u'1955-05-16 00:00:00  1955-06-16 00:00:00  1955-07-16 00:00:00  1955-08-16 00:00:00',
 u'1955-09-16 00:00:00  1955-10-16 00:00:00  1955-11-16 00:00:00  1955-12-16 00:00:00',
 u'1956-01-16 00:00:00  1956-02-16 00:00:00  1956-03-16 00:00:00  1956-04-16 00:00:00',
 u'1956-05-16 00:00:00  1956-06-16 00:00:00  1956-07-16 00:00:00  1956-08-16 00:00:00',
 u'1956-09-16 00:00:00  1956-10-16 00:00:00  1956-11-16 00:00:00  1956-12-16 00:00:00',
 u'1957-01-16 00:00:00  1957-02-16 00:00:00  1957-03-16 00:00:00  1957-04-16 00:00:00',
 u'1957-05-16 00:00:00  1957-06-16 00:00:00  1957-07-16 00:00:00  1957-08-16 00:00:00',
 u'1957-09-16 00:00:00  1957-10-16 00:00:00  1957-11-16 00:00:00  1957-12-16 00:00:00',
 u'1958-01-16 00:00:00  1958-02-16 00:00:00  1958-03-16 00:00:00  1958-04-16 00:00:00',
 u'1958-05-16 00:00:00  1958-06-16 00:00:00  1958-07-16 00:00:00  1958-08-16 00:00:00',
 u'1958-09-16 00:00:00  1958-10-16 00:00:00  1958-11-16 00:00:00  1958-12-16 00:00:00',
 u'1959-01-16 00:00:00  1959-02-16 00:00:00  1959-03-16 00:00:00  1959-04-16 00:00:00',
 u'1959-05-16 00:00:00  1959-06-16 00:00:00  1959-07-16 00:00:00  1959-08-16 00:00:00',
 u'1959-09-16 00:00:00  1959-10-16 00:00:00  1959-11-16 00:00:00  1959-12-16 00:00:00',
 u'1960-01-16 00:00:00  1960-02-16 00:00:00  1960-03-16 00:00:00  1960-04-16 00:00:00',
 u'1960-05-16 00:00:00  1960-06-16 00:00:00  1960-07-16 00:00:00  1960-08-16 00:00:00',
 u'1960-09-16 00:00:00  1960-10-16 00:00:00  1960-11-16 00:00:00  1960-12-16 00:00:00',
 u'1961-01-16 00:00:00  1961-02-16 00:00:00  1961-03-16 00:00:00  1961-04-16 00:00:00',
 u'1961-05-16 00:00:00  1961-06-16 00:00:00  1961-07-16 00:00:00  1961-08-16 00:00:00',
 u'1961-09-16 00:00:00  1961-10-16 00:00:00  1961-11-16 00:00:00  1961-12-16 00:00:00',
 u'1962-01-16 00:00:00  1962-02-16 00:00:00  1962-03-16 00:00:00  1962-04-16 00:00:00',
 u'1962-05-16 00:00:00  1962-06-16 00:00:00  1962-07-16 00:00:00  1962-08-16 00:00:00',
 u'1962-09-16 00:00:00  1962-10-16 00:00:00  1962-11-16 00:00:00  1962-12-16 00:00:00',
 u'1963-01-16 00:00:00  1963-02-16 00:00:00  1963-03-16 00:00:00  1963-04-16 00:00:00',
 u'1963-05-16 00:00:00  1963-06-16 00:00:00  1963-07-16 00:00:00  1963-08-16 00:00:00',
 u'1963-09-16 00:00:00  1963-10-16 00:00:00  1963-11-16 00:00:00  1963-12-16 00:00:00',
 u'1964-01-16 00:00:00  1964-02-16 00:00:00  1964-03-16 00:00:00  1964-04-16 00:00:00',
 u'1964-05-16 00:00:00  1964-06-16 00:00:00  1964-07-16 00:00:00  1964-08-16 00:00:00',
 u'1964-09-16 00:00:00  1964-10-16 00:00:00  1964-11-16 00:00:00  1964-12-16 00:00:00',
 u'1965-01-16 00:00:00  1965-02-16 00:00:00  1965-03-16 00:00:00  1965-04-16 00:00:00',
 u'1965-05-16 00:00:00  1965-06-16 00:00:00  1965-07-16 00:00:00  1965-08-16 00:00:00',
 u'1965-09-16 00:00:00  1965-10-16 00:00:00  1965-11-16 00:00:00  1965-12-16 00:00:00',
 u'1966-01-16 00:00:00  1966-02-16 00:00:00  1966-03-16 00:00:00  1966-04-16 00:00:00',
 u'1966-05-16 00:00:00  1966-06-16 00:00:00  1966-07-16 00:00:00  1966-08-16 00:00:00',
 u'1966-09-16 00:00:00  1966-10-16 00:00:00  1966-11-16 00:00:00  1966-12-16 00:00:00',
 u'1967-01-16 00:00:00  1967-02-16 00:00:00  1967-03-16 00:00:00  1967-04-16 00:00:00',
 u'1967-05-16 00:00:00  1967-06-16 00:00:00  1967-07-16 00:00:00  1967-08-16 00:00:00',
 u'1967-09-16 00:00:00  1967-10-16 00:00:00  1967-11-16 00:00:00  1967-12-16 00:00:00',
 u'1968-01-16 00:00:00  1968-02-16 00:00:00  1968-03-16 00:00:00  1968-04-16 00:00:00',
 u'1968-05-16 00:00:00  1968-06-16 00:00:00  1968-07-16 00:00:00  1968-08-16 00:00:00',
 u'1968-09-16 00:00:00  1968-10-16 00:00:00  1968-11-16 00:00:00  1968-12-16 00:00:00',
 u'1969-01-16 00:00:00  1969-02-16 00:00:00  1969-03-16 00:00:00  1969-04-16 00:00:00',
 u'1969-05-16 00:00:00  1969-06-16 00:00:00  1969-07-16 00:00:00  1969-08-16 00:00:00',
 u'1969-09-16 00:00:00  1969-10-16 00:00:00  1969-11-16 00:00:00  1969-12-16 00:00:00',
 u'1970-01-16 00:00:00  1970-02-16 00:00:00  1970-03-16 00:00:00  1970-04-16 00:00:00',
 u'1970-05-16 00:00:00  1970-06-16 00:00:00  1970-07-16 00:00:00  1970-08-16 00:00:00',
 u'1970-09-16 00:00:00  1970-10-16 00:00:00  1970-11-16 00:00:00  1970-12-16 00:00:00',
 u'1971-01-16 00:00:00  1971-02-16 00:00:00  1971-03-16 00:00:00  1971-04-16 00:00:00',
 u'1971-05-16 00:00:00  1971-06-16 00:00:00  1971-07-16 00:00:00  1971-08-16 00:00:00',
 u'1971-09-16 00:00:00  1971-10-16 00:00:00  1971-11-16 00:00:00  1971-12-16 00:00:00',
 u'1972-01-16 00:00:00  1972-02-16 00:00:00  1972-03-16 00:00:00  1972-04-16 00:00:00',
 u'1972-05-16 00:00:00  1972-06-16 00:00:00  1972-07-16 00:00:00  1972-08-16 00:00:00',
 u'1972-09-16 00:00:00  1972-10-16 00:00:00  1972-11-16 00:00:00  1972-12-16 00:00:00',
 u'1973-01-16 00:00:00  1973-02-16 00:00:00  1973-03-16 00:00:00  1973-04-16 00:00:00',
 u'1973-05-16 00:00:00  1973-06-16 00:00:00  1973-07-16 00:00:00  1973-08-16 00:00:00',
 u'1973-09-16 00:00:00  1973-10-16 00:00:00  1973-11-16 00:00:00  1973-12-16 00:00:00',
 u'1974-01-16 00:00:00  1974-02-16 00:00:00  1974-03-16 00:00:00  1974-04-16 00:00:00',
 u'1974-05-16 00:00:00  1974-06-16 00:00:00  1974-07-16 00:00:00  1974-08-16 00:00:00',
 u'1974-09-16 00:00:00  1974-10-16 00:00:00  1974-11-16 00:00:00  1974-12-16 00:00:00',
 u'1975-01-16 00:00:00  1975-02-16 00:00:00  1975-03-16 00:00:00  1975-04-16 00:00:00',
 u'1975-05-16 00:00:00  1975-06-16 00:00:00  1975-07-16 00:00:00  1975-08-16 00:00:00',
 u'1975-09-16 00:00:00  1975-10-16 00:00:00  1975-11-16 00:00:00  1975-12-16 00:00:00',
 u'1976-01-16 00:00:00  1976-02-16 00:00:00  1976-03-16 00:00:00  1976-04-16 00:00:00',
 u'1976-05-16 00:00:00  1976-06-16 00:00:00  1976-07-16 00:00:00  1976-08-16 00:00:00',
 u'1976-09-16 00:00:00  1976-10-16 00:00:00  1976-11-16 00:00:00  1976-12-16 00:00:00',
 u'1977-01-16 00:00:00  1977-02-16 00:00:00  1977-03-16 00:00:00  1977-04-16 00:00:00',
 u'1977-05-16 00:00:00  1977-06-16 00:00:00  1977-07-16 00:00:00  1977-08-16 00:00:00',
 u'1977-09-16 00:00:00  1977-10-16 00:00:00  1977-11-16 00:00:00  1977-12-16 00:00:00',
 u'1978-01-16 00:00:00  1978-02-16 00:00:00  1978-03-16 00:00:00  1978-04-16 00:00:00',
 u'1978-05-16 00:00:00  1978-06-16 00:00:00  1978-07-16 00:00:00  1978-08-16 00:00:00',
 u'1978-09-16 00:00:00  1978-10-16 00:00:00  1978-11-16 00:00:00  1978-12-16 00:00:00',
 u'1979-01-16 00:00:00  1979-02-16 00:00:00  1979-03-16 00:00:00  1979-04-16 00:00:00',
 u'1979-05-16 00:00:00  1979-06-16 00:00:00  1979-07-16 00:00:00  1979-08-16 00:00:00',
 u'1979-09-16 00:00:00  1979-10-16 00:00:00  1979-11-16 00:00:00  1979-12-16 00:00:00',
 u'1980-01-16 00:00:00  1980-02-16 00:00:00  1980-03-16 00:00:00  1980-04-16 00:00:00',
 u'1980-05-16 00:00:00  1980-06-16 00:00:00  1980-07-16 00:00:00  1980-08-16 00:00:00',
 u'1980-09-16 00:00:00  1980-10-16 00:00:00  1980-11-16 00:00:00  1980-12-16 00:00:00',
 u'1981-01-16 00:00:00  1981-02-16 00:00:00  1981-03-16 00:00:00  1981-04-16 00:00:00',
 u'1981-05-16 00:00:00  1981-06-16 00:00:00  1981-07-16 00:00:00  1981-08-16 00:00:00',
 u'1981-09-16 00:00:00  1981-10-16 00:00:00  1981-11-16 00:00:00  1981-12-16 00:00:00',
 u'1982-01-16 00:00:00  1982-02-16 00:00:00  1982-03-16 00:00:00  1982-04-16 00:00:00',
 u'1982-05-16 00:00:00  1982-06-16 00:00:00  1982-07-16 00:00:00  1982-08-16 00:00:00',
 u'1982-09-16 00:00:00  1982-10-16 00:00:00  1982-11-16 00:00:00  1982-12-16 00:00:00',
 u'1983-01-16 00:00:00  1983-02-16 00:00:00  1983-03-16 00:00:00  1983-04-16 00:00:00',
 u'1983-05-16 00:00:00  1983-06-16 00:00:00  1983-07-16 00:00:00  1983-08-16 00:00:00',
 u'1983-09-16 00:00:00  1983-10-16 00:00:00  1983-11-16 00:00:00  1983-12-16 00:00:00',
 u'1984-01-16 00:00:00  1984-02-16 00:00:00  1984-03-16 00:00:00  1984-04-16 00:00:00',
 u'1984-05-16 00:00:00  1984-06-16 00:00:00  1984-07-16 00:00:00  1984-08-16 00:00:00',
 u'1984-09-16 00:00:00  1984-10-16 00:00:00  1984-11-16 00:00:00  1984-12-16 00:00:00',
 u'1985-01-16 00:00:00  1985-02-16 00:00:00  1985-03-16 00:00:00  1985-04-16 00:00:00',
 u'1985-05-16 00:00:00  1985-06-16 00:00:00  1985-07-16 00:00:00  1985-08-16 00:00:00',
 u'1985-09-16 00:00:00  1985-10-16 00:00:00  1985-11-16 00:00:00  1985-12-16 00:00:00',
 u'1986-01-16 00:00:00  1986-02-16 00:00:00  1986-03-16 00:00:00  1986-04-16 00:00:00',
 u'1986-05-16 00:00:00  1986-06-16 00:00:00  1986-07-16 00:00:00  1986-08-16 00:00:00',
 u'1986-09-16 00:00:00  1986-10-16 00:00:00  1986-11-16 00:00:00  1986-12-16 00:00:00',
 u'1987-01-16 00:00:00  1987-02-16 00:00:00  1987-03-16 00:00:00  1987-04-16 00:00:00',
 u'1987-05-16 00:00:00  1987-06-16 00:00:00  1987-07-16 00:00:00  1987-08-16 00:00:00',
 u'1987-09-16 00:00:00  1987-10-16 00:00:00  1987-11-16 00:00:00  1987-12-16 00:00:00',
 u'1988-01-16 00:00:00  1988-02-16 00:00:00  1988-03-16 00:00:00  1988-04-16 00:00:00',
 u'1988-05-16 00:00:00  1988-06-16 00:00:00  1988-07-16 00:00:00  1988-08-16 00:00:00',
 u'1988-09-16 00:00:00  1988-10-16 00:00:00  1988-11-16 00:00:00  1988-12-16 00:00:00',
 u'1989-01-16 00:00:00  1989-02-16 00:00:00  1989-03-16 00:00:00  1989-04-16 00:00:00',
 u'1989-05-16 00:00:00  1989-06-16 00:00:00  1989-07-16 00:00:00  1989-08-16 00:00:00',
 u'1989-09-16 00:00:00  1989-10-16 00:00:00  1989-11-16 00:00:00  1989-12-16 00:00:00',
 u'1990-01-16 00:00:00  1990-02-16 00:00:00  1990-03-16 00:00:00  1990-04-16 00:00:00',
 u'1990-05-16 00:00:00  1990-06-16 00:00:00  1990-07-16 00:00:00  1990-08-16 00:00:00',
 u'1990-09-16 00:00:00  1990-10-16 00:00:00  1990-11-16 00:00:00  1990-12-16 00:00:00',
 u'1991-01-16 00:00:00  1991-02-16 00:00:00  1991-03-16 00:00:00  1991-04-16 00:00:00',
 u'1991-05-16 00:00:00  1991-06-16 00:00:00  1991-07-16 00:00:00  1991-08-16 00:00:00',
 u'1991-09-16 00:00:00  1991-10-16 00:00:00  1991-11-16 00:00:00  1991-12-16 00:00:00',
 u'1992-01-16 00:00:00  1992-02-16 00:00:00  1992-03-16 00:00:00  1992-04-16 00:00:00',
 u'1992-05-16 00:00:00  1992-06-16 00:00:00  1992-07-16 00:00:00  1992-08-16 00:00:00',
 u'1992-09-16 00:00:00  1992-10-16 00:00:00  1992-11-16 00:00:00  1992-12-16 00:00:00',
 u'1993-01-16 00:00:00  1993-02-16 00:00:00  1993-03-16 00:00:00  1993-04-16 00:00:00',
 u'1993-05-16 00:00:00  1993-06-16 00:00:00  1993-07-16 00:00:00  1993-08-16 00:00:00',
 u'1993-09-16 00:00:00  1993-10-16 00:00:00  1993-11-16 00:00:00  1993-12-16 00:00:00',
 u'1994-01-16 00:00:00  1994-02-16 00:00:00  1994-03-16 00:00:00  1994-04-16 00:00:00',
 u'1994-05-16 00:00:00  1994-06-16 00:00:00  1994-07-16 00:00:00  1994-08-16 00:00:00',
 u'1994-09-16 00:00:00  1994-10-16 00:00:00  1994-11-16 00:00:00  1994-12-16 00:00:00',
 u'1995-01-16 00:00:00  1995-02-16 00:00:00  1995-03-16 00:00:00  1995-04-16 00:00:00',
 u'1995-05-16 00:00:00  1995-06-16 00:00:00  1995-07-16 00:00:00  1995-08-16 00:00:00',
 u'1995-09-16 00:00:00  1995-10-16 00:00:00  1995-11-16 00:00:00  1995-12-16 00:00:00',
 u'1996-01-16 00:00:00  1996-02-16 00:00:00  1996-03-16 00:00:00  1996-04-16 00:00:00',
 u'1996-05-16 00:00:00  1996-06-16 00:00:00  1996-07-16 00:00:00  1996-08-16 00:00:00',
 u'1996-09-16 00:00:00  1996-10-16 00:00:00  1996-11-16 00:00:00  1996-12-16 00:00:00',
 u'1997-01-16 00:00:00  1997-02-16 00:00:00  1997-03-16 00:00:00  1997-04-16 00:00:00',
 u'1997-05-16 00:00:00  1997-06-16 00:00:00  1997-07-16 00:00:00  1997-08-16 00:00:00',
 u'1997-09-16 00:00:00  1997-10-16 00:00:00  1997-11-16 00:00:00  1997-12-16 00:00:00',
 u'1998-01-16 00:00:00  1998-02-16 00:00:00  1998-03-16 00:00:00  1998-04-16 00:00:00',
 u'1998-05-16 00:00:00  1998-06-16 00:00:00  1998-07-16 00:00:00  1998-08-16 00:00:00',
 u'1998-09-16 00:00:00  1998-10-16 00:00:00  1998-11-16 00:00:00  1998-12-16 00:00:00',
 u'1999-01-16 00:00:00  1999-02-16 00:00:00  1999-03-16 00:00:00  1999-04-16 00:00:00',
 u'1999-05-16 00:00:00  1999-06-16 00:00:00  1999-07-16 00:00:00  1999-08-16 00:00:00',
 u'1999-09-16 00:00:00  1999-10-16 00:00:00  1999-11-16 00:00:00  1999-12-16 00:00:00',
 u'2000-01-16 00:00:00  2000-02-16 00:00:00  2000-03-16 00:00:00  2000-04-16 00:00:00',
 u'2000-05-16 00:00:00  2000-06-16 00:00:00  2000-07-16 00:00:00  2000-08-16 00:00:00',
 u'2000-09-16 00:00:00  2000-10-16 00:00:00  2000-11-16 00:00:00  2000-12-16 00:00:00',
 u'2001-01-16 00:00:00  2001-02-16 00:00:00  2001-03-16 00:00:00  2001-04-16 00:00:00',
 u'2001-05-16 00:00:00  2001-06-16 00:00:00  2001-07-16 00:00:00  2001-08-16 00:00:00',
 u'2001-09-16 00:00:00  2001-10-16 00:00:00  2001-11-16 00:00:00  2001-12-16 00:00:00',
 u'2002-01-16 00:00:00  2002-02-16 00:00:00  2002-03-16 00:00:00  2002-04-16 00:00:00',
 u'2002-05-16 00:00:00  2002-06-16 00:00:00  2002-07-16 00:00:00  2002-08-16 00:00:00',
 u'2002-09-16 00:00:00  2002-10-16 00:00:00  2002-11-16 00:00:00  2002-12-16 00:00:00',
 u'2003-01-16 00:00:00  2003-02-16 00:00:00  2003-03-16 00:00:00  2003-04-16 00:00:00',
 u'2003-05-16 00:00:00  2003-06-16 00:00:00  2003-07-16 00:00:00  2003-08-16 00:00:00',
 u'2003-09-16 00:00:00  2003-10-16 00:00:00  2003-11-16 00:00:00  2003-12-16 00:00:00',
 u'2004-01-16 00:00:00  2004-02-16 00:00:00  2004-03-16 00:00:00  2004-04-16 00:00:00',
 u'2004-05-16 00:00:00  2004-06-16 00:00:00  2004-07-16 00:00:00  2004-08-16 00:00:00',
 u'2004-09-16 00:00:00  2004-10-16 00:00:00  2004-11-16 00:00:00  2004-12-16 00:00:00',
 u'2005-01-16 00:00:00  2005-02-16 00:00:00  2005-03-16 00:00:00  2005-04-16 00:00:00',
 u'2005-05-16 00:00:00  2005-06-16 00:00:00  2005-07-16 00:00:00  2005-08-16 00:00:00',
 u'2005-09-16 00:00:00  2005-10-16 00:00:00  2005-11-16 00:00:00  2005-12-16 00:00:00',
 u'2006-01-16 00:00:00  2006-02-16 00:00:00  2006-03-16 00:00:00  2006-04-16 00:00:00',
 u'2006-05-16 00:00:00  2006-06-16 00:00:00  2006-07-16 00:00:00  2006-08-16 00:00:00',
 u'2006-09-16 00:00:00  2006-10-16 00:00:00  2006-11-16 00:00:00  2006-12-16 00:00:00',
 u'2007-01-16 00:00:00  2007-02-16 00:00:00  2007-03-16 00:00:00  2007-04-16 00:00:00',
 u'2007-05-16 00:00:00  2007-06-16 00:00:00  2007-07-16 00:00:00  2007-08-16 00:00:00',
 u'2007-09-16 00:00:00  2007-10-16 00:00:00  2007-11-16 00:00:00  2007-12-16 00:00:00',
 u'2008-01-16 00:00:00  2008-02-16 00:00:00  2008-03-16 00:00:00  2008-04-16 00:00:00',
 u'2008-05-16 00:00:00  2008-06-16 00:00:00  2008-07-16 00:00:00  2008-08-16 00:00:00',
 u'2008-09-16 00:00:00  2008-10-16 00:00:00  2008-11-16 00:00:00  2008-12-16 00:00:00',
 u'2009-01-16 00:00:00  2009-02-16 00:00:00  2009-03-16 00:00:00  2009-04-16 00:00:00',
 u'2009-05-16 00:00:00  2009-06-16 00:00:00  2009-07-16 00:00:00  2009-08-16 00:00:00',
 u'2009-09-16 00:00:00  2009-10-16 00:00:00  2009-11-16 00:00:00  2009-12-16 00:00:00',
 u'2010-01-16 00:00:00  2010-02-16 00:00:00  2010-03-16 00:00:00  2010-04-16 00:00:00',
 u'2010-05-16 00:00:00  2010-06-16 00:00:00  2010-07-16 00:00:00  2010-08-16 00:00:00',
 u'2010-09-16 00:00:00  2010-10-16 00:00:00  2010-11-16 00:00:00  2010-12-16 00:00:00',
 u'2011-01-16 00:00:00  2011-02-16 00:00:00  2011-03-16 00:00:00  2011-04-16 00:00:00',
 u'2011-05-16 00:00:00  2011-06-16 00:00:00  2011-07-16 00:00:00  2011-08-16 00:00:00',
 u'2011-09-16 00:00:00  2011-10-16 00:00:00  2011-11-16 00:00:00  2011-12-16 00:00:00',
 u'2012-01-16 00:00:00  2012-02-16 00:00:00  2012-03-16 00:00:00  2012-04-16 00:00:00',
 u'2012-05-16 00:00:00  2012-06-16 00:00:00  2012-07-16 00:00:00  2012-08-16 00:00:00',
 u'2012-09-16 00:00:00  2012-10-16 00:00:00  2012-11-16 00:00:00  2012-12-16 00:00:00',
 u'2013-01-16 00:00:00  2013-02-16 00:00:00  2013-03-16 00:00:00  2013-04-16 00:00:00',
 u'2013-05-16 00:00:00  2013-06-16 00:00:00  2013-07-16 00:00:00  2013-08-16 00:00:00',
 u'2013-09-16 00:00:00  2013-10-16 00:00:00  2013-11-16 00:00:00  2013-12-16 00:00:00',
 u'2014-01-16 00:00:00  2014-02-16 00:00:00  2014-03-16 00:00:00  2014-04-16 00:00:00',
 u'2014-05-16 00:00:00  2014-06-16 00:00:00  2014-07-16 00:00:00  2014-08-16 00:00:00',
 u'2014-09-16 00:00:00  2014-10-16 00:00:00  2014-11-16 00:00:00  2014-12-16 00:00:00',
 u'2015-01-16 00:00:00  2015-02-16 00:00:00  2015-03-16 00:00:00  2015-04-16 00:00:00',
 u'2015-05-16 00:00:00  2015-06-16 00:00:00  2015-07-16 00:00:00  2015-08-16 00:00:00',
 u'2015-09-16 00:00:00']

Compute the field time mean value using CDO and return it as a numpy array without writing nc file to disk.


In [14]:
%%timeit
cdo.timmean(input=ifile,returnCdf=True).variables['sst'][:]


1 loops, best of 3: 1.24 s per loop

In [15]:
tavg_cdo = cdo.timmean(input=ifile,returnCdf=True).variables['sst'][:] 

figure(figsize=(13, 4))
m = Basemap(projection='cyl', resolution='c', llcrnrlon=0, llcrnrlat=-90,
            urcrnrlon=360, urcrnrlat=90)
x, y = m(*np.meshgrid(lons, lats))
clevs = np.linspace(-1, 30, 64)
cs = m.pcolormesh(x,y,tavg_cdo.squeeze(), shading='flat', cmap=plt.cm.jet)
m.drawcoastlines()
m.drawparallels((-90, -60, -30, 0, 30, 60, 90), labels=[1,0,0,0], fontsize=14)
m.drawmeridians((0, 60, 120, 180, 240, 300, 360), labels=[0,0,0,1], fontsize=14)
m.fillcontinents()
colorbar(cs, label='degrees $^o$C', extend='both')
plt.title('Time Mean ERSST V4 1854-2015 from CDO ', fontsize=16)


Out[15]:
<matplotlib.text.Text at 0x13137fa10>

In [16]:
diff = tavg_cdo.squeeze() - temp
diff.max()


Out[16]:
0.0050185128378537058

In [17]:
ifile = '20101221-JPL-L4UHfnd-GLOB-v01-fv04-MUR.nc'
f = Dataset(ifile)
temp = f.variables['analysed_sst']
temp


Out[17]:
<type 'netCDF4._netCDF4.Variable'>
int16 analysed_sst(time, lat, lon)
    long_name: analysed sea surface temperature
    standard_name: sea_surface_foundation_temperature
    units: kelvin
    _FillValue: -32768
    add_offset: 298.15
    scale_factor: 0.001
    valid_min: -32767
    valid_max: 32767
unlimited dimensions: 
current shape = (1, 5097, 9102)
filling off

In [18]:
temp = f.variables['analysed_sst'][:].squeeze()
lats = f.variables['lat'][:]
lons = f.variables['lon'][:]
f.close()

In [19]:
from matplotlib.patches import Polygon
from mpl_toolkits.axes_grid1.inset_locator import inset_axes


def make_map(llcrnrlon=-100, urcrnrlon=-50, llcrnrlat=15, urcrnrlat=50,
             projection='cyl', resolution='l', figsize=(10, 3.5), inset=True):
    
    m = Basemap(llcrnrlon=llcrnrlon, urcrnrlon=urcrnrlon,
                llcrnrlat=llcrnrlat, urcrnrlat=urcrnrlat,
                projection=projection, resolution=resolution)
    
    fig, ax = plt.subplots(figsize=figsize)
    m.drawcoastlines()
    m.bluemarble()
    meridians = np.arange(llcrnrlon, urcrnrlon + 2, 10)
    parallels = np.arange(llcrnrlat, urcrnrlat + 1, 10)
    m.drawparallels(parallels, linewidth=0, labels=[1, 0, 0, 0], fontsize=20)
    m.drawmeridians(meridians, linewidth=0, labels=[0, 0, 0, 1], fontsize=20)
    m.llcrnrlon = llcrnrlon
    m.urcrnrlon = urcrnrlon
    m.llcrnrlat = llcrnrlat
    m.urcrnrlat = urcrnrlat
    m.ax = ax

    if inset:
        axin = inset_axes(m.ax, width="45%", height="45%", loc=4)
        # Global inset map.
        inmap = Basemap(projection='ortho', lon_0=-60, lat_0=35,
                        ax=axin, anchor='NE')
        inmap.drawcountries(color='white')
        inmap.fillcontinents(color='gray')
        bx, by = inmap(m.boundarylons, m.boundarylats)
        xy = list(zip(bx, by))
        mapboundary = Polygon(xy, edgecolor='k', linewidth=1, fill=False)
        inmap.ax.add_patch(mapboundary)
    return fig, m

In [20]:
x, y = m(*np.meshgrid(lons, lats))
fig, m = make_map(llcrnrlon=-100, urcrnrlon=-40, llcrnrlat=19.5,
                  urcrnrlat=50, figsize=(15, 5))
clevs = np.linspace(0, 28, 128)
cs = m.contourf(x, y, temp-273.15, clevs, latlon=True, animated =True)
csc = m.contour(x, y, temp-273.15, colors='k',
                latlon=True, alpha=0.5)
_ = m.ax.clabel(csc, fmt='%1.0f $^o$C', fontsize=8, inline=1)


/Users/lsiqueira/anaconda/lib/python2.7/site-packages/matplotlib/collections.py:650: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  if self._edgecolors_original != str('face'):
/Users/lsiqueira/anaconda/lib/python2.7/site-packages/matplotlib/text.py:52: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
  if rotation in ('horizontal', None):
/Users/lsiqueira/anaconda/lib/python2.7/site-packages/matplotlib/text.py:54: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
  elif rotation == 'vertical':

Time Series analysis with Pandas (statistical package)


In [21]:
import pandas as pd
import numpy as np

In [22]:
pd.set_option('max_rows',15)

In [23]:
!wget http://www.cpc.ncep.noaa.gov/products/precip/CWlink/daily_ao_index/monthly.ao.index.b50.current.ascii
!wget http://www.cpc.ncep.noaa.gov/products/precip/CWlink/pna/norm.nao.monthly.b5001.current.ascii


--2015-10-28 17:16:31--  http://www.cpc.ncep.noaa.gov/products/precip/CWlink/daily_ao_index/monthly.ao.index.b50.current.ascii
Resolving www.cpc.ncep.noaa.gov... 140.90.101.63
Connecting to www.cpc.ncep.noaa.gov|140.90.101.63|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 19725 (19K) [text/plain]
Saving to: 'monthly.ao.index.b50.current.ascii.2'

100%[======================================>] 19,725      12.0KB/s   in 1.6s   

2015-10-28 17:16:34 (12.0 KB/s) - 'monthly.ao.index.b50.current.ascii.2' saved [19725/19725]

--2015-10-28 17:16:34--  http://www.cpc.ncep.noaa.gov/products/precip/CWlink/pna/norm.nao.monthly.b5001.current.ascii
Resolving www.cpc.ncep.noaa.gov... 140.90.101.63
Connecting to www.cpc.ncep.noaa.gov|140.90.101.63|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 18936 (18K) [text/plain]
Saving to: 'norm.nao.monthly.b5001.current.ascii.2'

100%[======================================>] 18,936      23.3KB/s   in 0.8s   

2015-10-28 17:16:35 (23.3 KB/s) - 'norm.nao.monthly.b5001.current.ascii.2' saved [18936/18936]


In [24]:
ao = np.loadtxt('monthly.ao.index.b50.current.ascii')
ao


Out[24]:
array([[  1.95000000e+03,   1.00000000e+00,  -6.03100000e-02],
       [  1.95000000e+03,   2.00000000e+00,   6.26810000e-01],
       [  1.95000000e+03,   3.00000000e+00,  -8.12750000e-03],
       ..., 
       [  2.01500000e+03,   7.00000000e+00,  -1.10790000e+00],
       [  2.01500000e+03,   8.00000000e+00,  -6.89020000e-01],
       [  2.01500000e+03,   9.00000000e+00,  -1.64510000e-01]])

In [25]:
dates = pd.date_range('1950-01', '2015-10', freq='M')
AO = pd.Series(ao[:,2], index=dates)
AO


Out[25]:
1950-01-31   -0.060310
1950-02-28    0.626810
1950-03-31   -0.008127
1950-04-30    0.555100
1950-05-31    0.071577
1950-06-30    0.538570
1950-07-31   -0.802480
                ...   
2015-03-31    1.837400
2015-04-30    1.215700
2015-05-31    0.762760
2015-06-30    0.427040
2015-07-31   -1.107900
2015-08-31   -0.689020
2015-09-30   -0.164510
Freq: M, dtype: float64

In [26]:
!head norm.nao.monthly.b5001.current.ascii


 1950    1  0.92000E+00
 1950    2  0.40000E+00
 1950    3 -0.36000E+00
 1950    4  0.73000E+00
 1950    5 -0.59000E+00
 1950    6 -0.60000E-01
 1950    7 -0.12600E+01
 1950    8 -0.50000E-01
 1950    9  0.25000E+00
 1950   10  0.85000E+00

In [27]:
NAO = pd.read_table('norm.nao.monthly.b5001.current.ascii', sep='\s*', \
              parse_dates={'dates':[0, 1]}, header=None, index_col=0, squeeze=True, engine='python' )
  • first argument is obviously the file name
  • '\s*' - regular expression, that describe separator.
  • parse_dates - combine columns 0 and 1, convert resulting column to dates and give it the name "dates"
  • header - don't use 0 row as header
  • index_col - make column 0 (this will be already result of the parse_dates parsing)
  • squeeze - create Series instead of DataFrame.

In [28]:
NAO


Out[28]:
dates
1950-01-01    0.920000
1950-02-01    0.400000
1950-03-01   -0.360000
1950-04-01    0.730000
1950-05-01   -0.590000
1950-06-01   -0.060000
1950-07-01   -1.260000
                ...   
2015-03-01    1.449700
2015-04-01    0.725350
2015-05-01    0.145520
2015-06-01   -0.066822
2015-07-01   -3.179000
2015-08-01   -0.760360
2015-09-01   -0.648460
Name: 2, dtype: float64

In [29]:
aonao = pd.DataFrame({'AO':AO, 'NAO':NAO})

In [30]:
aonao.head(10)


Out[30]:
AO NAO
1950-01-01 NaN 0.92
1950-01-31 -0.060310 NaN
1950-02-01 NaN 0.40
1950-02-28 0.626810 NaN
1950-03-01 NaN -0.36
1950-03-31 -0.008127 NaN
1950-04-01 NaN 0.73
1950-04-30 0.555100 NaN
1950-05-01 NaN -0.59
1950-05-31 0.071577 NaN

In [31]:
aonao = pd.DataFrame({'AO':AO.to_period(freq='M'),
                      'NAO':NAO.to_period(freq='M')} )

In [32]:
aonao.head(10)


Out[32]:
AO NAO
1950-01 -0.060310 0.92
1950-02 0.626810 0.40
1950-03 -0.008127 -0.36
1950-04 0.555100 0.73
1950-05 0.071577 -0.59
1950-06 0.538570 -0.06
1950-07 -0.802480 -1.26
1950-08 -0.851010 -0.05
1950-09 0.357970 0.25
1950-10 -0.378900 0.85

In [33]:
aonao['2013-12':'2014-05']


Out[33]:
AO NAO
2013-12 1.474900 0.94566
2014-01 -0.968760 0.29026
2014-02 0.043775 1.33520
2014-03 1.205800 0.79827
2014-04 0.971970 0.30522
2014-05 0.464210 -0.92250

In [34]:
NAO[NAO > 0]


Out[34]:
dates
1950-01-01    0.92000
1950-02-01    0.40000
1950-04-01    0.73000
1950-09-01    0.25000
1950-10-01    0.85000
1951-01-01    0.08000
1951-02-01    0.70000
               ...   
2014-11-01    0.67797
2014-12-01    1.85750
2015-01-01    1.78870
2015-02-01    1.32280
2015-03-01    1.44970
2015-04-01    0.72535
2015-05-01    0.14552
Name: 2, dtype: float64

Get everything at once


In [35]:
aonao.describe()


Out[35]:
AO NAO
count 789.000000 789.000000
mean -0.121171 -0.024088
std 1.006019 1.009317
min -4.265700 -3.180000
25% -0.668270 -0.760360
50% -0.047510 0.010000
75% 0.475080 0.680000
max 3.495300 3.040000

By the way getting correlation coefficients among all members of the Data Frame is as simple as:


In [36]:
aonao.corr()


Out[36]:
AO NAO
AO 1.000000 0.611348
NAO 0.611348 1.000000

In [37]:
AO_mm = AO.resample("A")
AO.plot(style='k-', alpha = 0.3)
AO_mm.plot(style='b--', linewidth =2)


Out[37]:
<matplotlib.axes._subplots.AxesSubplot at 0x12d58ad10>

In [38]:
aonao['mon'] = aonao.index.month
aonao


Out[38]:
AO NAO mon
1950-01 -0.060310 0.920000 1
1950-02 0.626810 0.400000 2
1950-03 -0.008127 -0.360000 3
1950-04 0.555100 0.730000 4
1950-05 0.071577 -0.590000 5
1950-06 0.538570 -0.060000 6
1950-07 -0.802480 -1.260000 7
... ... ... ...
2015-03 1.837400 1.449700 3
2015-04 1.215700 0.725350 4
2015-05 0.762760 0.145520 5
2015-06 0.427040 -0.066822 6
2015-07 -1.107900 -3.179000 7
2015-08 -0.689020 -0.760360 8
2015-09 -0.164510 -0.648460 9

789 rows × 3 columns


In [39]:
monmean = aonao['1950':'2013'].groupby('mon').aggregate(mean)
monmean.plot(kind='bar')


Out[39]:
<matplotlib.axes._subplots.AxesSubplot at 0x12d58a610>

In order to see what is going on there it is useful to look at the box plots for every month:


In [40]:
ax = aonao.boxplot(column=['AO'], by='mon')



In [41]:
ax = aonao.boxplot(column=['NAO'], by='mon')


While NAO show more or less uniform spread, AO have pronounced seasonal variations, with largest spread during winter months.


In [42]:
pd.rolling_mean(aonao[['AO','NAO']][aonao.mon==2], window=10).plot()


Out[42]:
<matplotlib.axes._subplots.AxesSubplot at 0x12ec31a10>

F2Py - Use the Fortran performance within Python


In [43]:
%install_ext https://raw.github.com/mgaitan/fortran_magic/master/fortranmagic.py


Installed fortranmagic.py. To use it, type:
  %load_ext fortranmagic
/Users/lsiqueira/anaconda/lib/python2.7/site-packages/IPython/core/magics/extension.py:47: UserWarning: %install_ext` is deprecated, please distribute your extension(s)as a python packages.
  "as a python packages.", UserWarning)

In [44]:
%load_ext fortranmagic


/Users/lsiqueira/anaconda/lib/python2.7/site-packages/IPython/utils/path.py:264: UserWarning: get_ipython_cache_dir has moved to the IPython.paths module
  warn("get_ipython_cache_dir has moved to the IPython.paths module")

In [45]:
%%fortran

subroutine old_sin(x, y)
    real, intent(in) :: x
    real, intent(out) :: y

    y = sin(x)

end subroutine old_sin

In [46]:
%timeit old_sin(1.0)


The slowest run took 30.12 times longer than the fastest. This could mean that an intermediate result is being cached 
10000000 loops, best of 3: 135 ns per loop

In [47]:
old_sin(30.* np.pi / 180.)


Out[47]:
0.5

Lets use Numpy version


In [48]:
import numpy as np
%timeit np.sin(30.* np.pi / 180.)


The slowest run took 28.77 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 796 ns per loop

In [49]:
single(np.sin(30.* np.pi / 180.))


Out[49]:
0.5

Even got python documentation for old_sin


In [50]:
#old_sin?
np.sin?

Good old Fortran!


In [51]:
from IPython.display import Image

Image("http://s18.postimg.org/xoghfy291/Olde_Fortran_Malt_Liquor.jpg")


Out[51]: