In [1]:
%load_ext load_style
%load_style talk.css


EOF decomposition of SST anomalies in the Pacific with scikit-learn


In [2]:
import os, sys
import pandas as pd
import numpy as np
from numpy import ma
from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap

In [3]:
%matplotlib inline

In [4]:
dpath = os.path.join(os.environ['HOME'],'data/SST/ER_SST/V4')
#dpath = os.path.join(os.environ['HOME'],'data/SST/ER_SST/')

load the SST data


In [5]:
import xray

In [6]:
ncfname = os.path.join(dpath,'ersst.realtime.nc')

In [7]:
dset = xray.open_dataset(ncfname)

In [8]:
dset


Out[8]:
<xray.Dataset>
Dimensions:   (lat: 89, lon: 180, nv: 2, time: 804, zlev: 1)
Coordinates:
  * time      (time) datetime64[ns] 1948-01-15 1948-02-15 1948-03-15 1948-04-15 ...
  * zlev      (zlev) float32 0.0
  * lat       (lat) float32 -88.0 -86.0 -84.0 -82.0 -80.0 -78.0 -76.0 -74.0 -72.0 -70.0 ...
  * lon       (lon) float32 0.0 2.0 4.0 6.0 8.0 10.0 12.0 14.0 16.0 18.0 20.0 22.0 24.0 ...
  * nv        (nv) int64 0 1
Variables:
    lat_bnds  (lat, nv) float32 -89.0 -87.0 -87.0 -85.0 -85.0 -83.0 -83.0 -81.0 -81.0 ...
    lon_bnds  (lon, nv) float32 -1.0 1.0 1.0 3.0 3.0 5.0 5.0 7.0 7.0 9.0 9.0 11.0 11.0 ...
    sst       (time, zlev, lat, lon) float64 nan nan nan nan nan nan nan nan nan nan nan ...
    anom      (time, zlev, lat, lon) float64 nan nan nan nan nan nan nan nan nan nan nan ...
Attributes:
    Conventions: CF-1.6
    Metadata_Conventions: CF-1.6, Unidata Dataset Discovery v1.0
    metadata_link: C00884
    id: ersst.v4.194801
    naming_authority: gov.noaa.ncdc
    title: NOAA Extended Reconstructed Sea Surface Temperature (ERSST), Version 4 (in situ only)
    summary: ERSST.v4 is developped based on v3b after revisions of 11 parameters using updated data sets and advanced knowledge of ERSST analysis
    institution: NOAA/NESDIS/NCDC
    creator_name: Boyin Huang
    creator_email: boyin.huang@noaa.gov
    date_created: 2014-10-24
    production_version: Beta Version 4
    history: Fri Feb 13 15:18:09 2015: ncrcat ersst.194801_ft.nc ersst.194802_ft.nc ersst.194803_ft.nc ersst.194804_ft.nc ersst.194805_ft.nc ersst.194806_ft.nc ersst.194807_ft.nc ersst.194808_ft.nc ersst.194809_ft.nc ersst.194810_ft.nc ersst.194811_ft.nc ersst.194812_ft.nc ersst.194901_ft.nc ersst.194902_ft.nc ersst.194903_ft.nc ersst.194904_ft.nc ersst.194905_ft.nc ersst.194906_ft.nc ersst.194907_ft.nc ersst.194908_ft.nc ersst.194909_ft.nc ersst.194910_ft.nc ersst.194911_ft.nc ersst.194912_ft.nc ersst.195001_ft.nc ersst.195002_ft.nc ersst.195003_ft.nc ersst.195004_ft.nc ersst.195005_ft.nc ersst.195006_ft.nc ersst.195007_ft.nc ersst.195008_ft.nc ersst.195009_ft.nc ersst.195010_ft.nc ersst.195011_ft.nc ersst.195012_ft.nc ersst.195101_ft.nc ersst.195102_ft.nc ersst.195103_ft.nc ersst.195104_ft.nc ersst.195105_ft.nc ersst.195106_ft.nc ersst.195107_ft.nc ersst.195108_ft.nc ersst.195109_ft.nc ersst.195110_ft.nc ersst.195111_ft.nc ersst.195112_ft.nc ersst.195201_ft.nc ersst.195202_ft.nc ersst.195203_ft.nc ersst.195204_ft.nc ersst.195205_ft.nc ersst.195206_ft.nc ersst.195207_ft.nc ersst.195208_ft.nc ersst.195209_ft.nc ersst.195210_ft.nc ersst.195211_ft.nc ersst.195212_ft.nc ersst.195301_ft.nc ersst.195302_ft.nc ersst.195303_ft.nc ersst.195304_ft.nc ersst.195305_ft.nc ersst.195306_ft.nc ersst.195307_ft.nc ersst.195308_ft.nc ersst.195309_ft.nc ersst.195310_ft.nc ersst.195311_ft.nc ersst.195312_ft.nc ersst.195401_ft.nc ersst.195402_ft.nc ersst.195403_ft.nc ersst.195404_ft.nc ersst.195405_ft.nc ersst.195406_ft.nc ersst.195407_ft.nc ersst.195408_ft.nc ersst.195409_ft.nc ersst.195410_ft.nc ersst.195411_ft.nc ersst.195412_ft.nc ersst.195501_ft.nc ersst.195502_ft.nc ersst.195503_ft.nc ersst.195504_ft.nc ersst.195505_ft.nc ersst.195506_ft.nc ersst.195507_ft.nc ersst.195508_ft.nc ersst.195509_ft.nc ersst.195510_ft.nc ersst.195511_ft.nc ersst.195512_ft.nc ersst.195601_ft.nc ersst.195602_ft.nc ersst.195603_ft.nc ersst.195604_ft.nc ersst.195605_ft.nc ersst.195606_ft.nc ersst.195607_ft.nc ersst.195608_ft.nc ersst.195609_ft.nc ersst.195610_ft.nc ersst.195611_ft.nc ersst.195612_ft.nc ersst.195701_ft.nc ersst.195702_ft.nc ersst.195703_ft.nc ersst.195704_ft.nc ersst.195705_ft.nc ersst.195706_ft.nc ersst.195707_ft.nc ersst.195708_ft.nc ersst.195709_ft.nc ersst.195710_ft.nc ersst.195711_ft.nc ersst.195712_ft.nc ersst.195801_ft.nc ersst.195802_ft.nc ersst.195803_ft.nc ersst.195804_ft.nc ersst.195805_ft.nc ersst.195806_ft.nc ersst.195807_ft.nc ersst.195808_ft.nc ersst.195809_ft.nc ersst.195810_ft.nc ersst.195811_ft.nc ersst.195812_ft.nc ersst.195901_ft.nc ersst.195902_ft.nc ersst.195903_ft.nc ersst.195904_ft.nc ersst.195905_ft.nc ersst.195906_ft.nc ersst.195907_ft.nc ersst.195908_ft.nc ersst.195909_ft.nc ersst.195910_ft.nc ersst.195911_ft.nc ersst.195912_ft.nc ersst.196001_ft.nc ersst.196002_ft.nc ersst.196003_ft.nc ersst.196004_ft.nc ersst.196005_ft.nc ersst.196006_ft.nc ersst.196007_ft.nc ersst.196008_ft.nc ersst.196009_ft.nc ersst.196010_ft.nc ersst.196011_ft.nc ersst.196012_ft.nc ersst.196101_ft.nc ersst.196102_ft.nc ersst.196103_ft.nc ersst.196104_ft.nc ersst.196105_ft.nc ersst.196106_ft.nc ersst.196107_ft.nc ersst.196108_ft.nc ersst.196109_ft.nc ersst.196110_ft.nc ersst.196111_ft.nc ersst.196112_ft.nc ersst.196201_ft.nc ersst.196202_ft.nc ersst.196203_ft.nc ersst.196204_ft.nc ersst.196205_ft.nc ersst.196206_ft.nc ersst.196207_ft.nc ersst.196208_ft.nc ersst.196209_ft.nc ersst.196210_ft.nc ersst.196211_ft.nc ersst.196212_ft.nc ersst.196301_ft.nc ersst.196302_ft.nc ersst.196303_ft.nc ersst.196304_ft.nc ersst.196305_ft.nc ersst.196306_ft.nc ersst.196307_ft.nc ersst.196308_ft.nc ersst.196309_ft.nc ersst.196310_ft.nc ersst.196311_ft.nc ersst.196312_ft.nc ersst.196401_ft.nc ersst.196402_ft.nc ersst.196403_ft.nc ersst.196404_ft.nc ersst.196405_ft.nc ersst.196406_ft.nc ersst.196407_ft.nc ersst.196408_ft.nc ersst.196409_ft.nc ersst.196410_ft.nc ersst.196411_ft.nc ersst.196412_ft.nc ersst.196501_ft.nc ersst.196502_ft.nc ersst.196503_ft.nc ersst.196504_ft.nc ersst.196505_ft.nc ersst.196506_ft.nc ersst.196507_ft.nc ersst.196508_ft.nc ersst.196509_ft.nc ersst.196510_ft.nc ersst.196511_ft.nc ersst.196512_ft.nc ersst.196601_ft.nc ersst.196602_ft.nc ersst.196603_ft.nc ersst.196604_ft.nc ersst.196605_ft.nc ersst.196606_ft.nc ersst.196607_ft.nc ersst.196608_ft.nc ersst.196609_ft.nc ersst.196610_ft.nc ersst.196611_ft.nc ersst.196612_ft.nc ersst.196701_ft.nc ersst.196702_ft.nc ersst.196703_ft.nc ersst.196704_ft.nc ersst.196705_ft.nc ersst.196706_ft.nc ersst.196707_ft.nc ersst.196708_ft.nc ersst.196709_ft.nc ersst.196710_ft.nc ersst.196711_ft.nc ersst.196712_ft.nc ersst.196801_ft.nc ersst.196802_ft.nc ersst.196803_ft.nc ersst.196804_ft.nc ersst.196805_ft.nc ersst.196806_ft.nc ersst.196807_ft.nc ersst.196808_ft.nc ersst.196809_ft.nc ersst.196810_ft.nc ersst.196811_ft.nc ersst.196812_ft.nc ersst.196901_ft.nc ersst.196902_ft.nc ersst.196903_ft.nc ersst.196904_ft.nc ersst.196905_ft.nc ersst.196906_ft.nc ersst.196907_ft.nc ersst.196908_ft.nc ersst.196909_ft.nc ersst.196910_ft.nc ersst.196911_ft.nc ersst.196912_ft.nc ersst.197001_ft.nc ersst.197002_ft.nc ersst.197003_ft.nc ersst.197004_ft.nc ersst.197005_ft.nc ersst.197006_ft.nc ersst.197007_ft.nc ersst.197008_ft.nc ersst.197009_ft.nc ersst.197010_ft.nc ersst.197011_ft.nc ersst.197012_ft.nc ersst.197101_ft.nc ersst.197102_ft.nc ersst.197103_ft.nc ersst.197104_ft.nc ersst.197105_ft.nc ersst.197106_ft.nc ersst.197107_ft.nc ersst.197108_ft.nc ersst.197109_ft.nc ersst.197110_ft.nc ersst.197111_ft.nc ersst.197112_ft.nc ersst.197201_ft.nc ersst.197202_ft.nc ersst.197203_ft.nc ersst.197204_ft.nc ersst.197205_ft.nc ersst.197206_ft.nc ersst.197207_ft.nc ersst.197208_ft.nc ersst.197209_ft.nc ersst.197210_ft.nc ersst.197211_ft.nc ersst.197212_ft.nc ersst.197301_ft.nc ersst.197302_ft.nc ersst.197303_ft.nc ersst.197304_ft.nc ersst.197305_ft.nc ersst.197306_ft.nc ersst.197307_ft.nc ersst.197308_ft.nc ersst.197309_ft.nc ersst.197310_ft.nc ersst.197311_ft.nc ersst.197312_ft.nc ersst.197401_ft.nc ersst.197402_ft.nc ersst.197403_ft.nc ersst.197404_ft.nc ersst.197405_ft.nc ersst.197406_ft.nc ersst.197407_ft.nc ersst.197408_ft.nc ersst.197409_ft.nc ersst.197410_ft.nc ersst.197411_ft.nc ersst.197412_ft.nc ersst.197501_ft.nc ersst.197502_ft.nc ersst.197503_ft.nc ersst.197504_ft.nc ersst.197505_ft.nc ersst.197506_ft.nc ersst.197507_ft.nc ersst.197508_ft.nc ersst.197509_ft.nc ersst.197510_ft.nc ersst.197511_ft.nc ersst.197512_ft.nc ersst.197601_ft.nc ersst.197602_ft.nc ersst.197603_ft.nc ersst.197604_ft.nc ersst.197605_ft.nc ersst.197606_ft.nc ersst.197607_ft.nc ersst.197608_ft.nc ersst.197609_ft.nc ersst.197610_ft.nc ersst.197611_ft.nc ersst.197612_ft.nc ersst.197701_ft.nc ersst.197702_ft.nc ersst.197703_ft.nc ersst.197704_ft.nc ersst.197705_ft.nc ersst.197706_ft.nc ersst.197707_ft.nc ersst.197708_ft.nc ersst.197709_ft.nc ersst.197710_ft.nc ersst.197711_ft.nc ersst.197712_ft.nc ersst.197801_ft.nc ersst.197802_ft.nc ersst.197803_ft.nc ersst.197804_ft.nc ersst.197805_ft.nc ersst.197806_ft.nc ersst.197807_ft.nc ersst.197808_ft.nc ersst.197809_ft.nc ersst.197810_ft.nc ersst.197811_ft.nc ersst.197812_ft.nc ersst.197901_ft.nc ersst.197902_ft.nc ersst.197903_ft.nc ersst.197904_ft.nc ersst.197905_ft.nc ersst.197906_ft.nc ersst.197907_ft.nc ersst.197908_ft.nc ersst.197909_ft.nc ersst.197910_ft.nc ersst.197911_ft.nc ersst.197912_ft.nc ersst.198001_ft.nc ersst.198002_ft.nc ersst.198003_ft.nc ersst.198004_ft.nc ersst.198005_ft.nc ersst.198006_ft.nc ersst.198007_ft.nc ersst.198008_ft.nc ersst.198009_ft.nc ersst.198010_ft.nc ersst.198011_ft.nc ersst.198012_ft.nc ersst.198101_ft.nc ersst.198102_ft.nc ersst.198103_ft.nc ersst.198104_ft.nc ersst.198105_ft.nc ersst.198106_ft.nc ersst.198107_ft.nc ersst.198108_ft.nc ersst.198109_ft.nc ersst.198110_ft.nc ersst.198111_ft.nc ersst.198112_ft.nc ersst.198201_ft.nc ersst.198202_ft.nc ersst.198203_ft.nc ersst.198204_ft.nc ersst.198205_ft.nc ersst.198206_ft.nc ersst.198207_ft.nc ersst.198208_ft.nc ersst.198209_ft.nc ersst.198210_ft.nc ersst.198211_ft.nc ersst.198212_ft.nc ersst.198301_ft.nc ersst.198302_ft.nc ersst.198303_ft.nc ersst.198304_ft.nc ersst.198305_ft.nc ersst.198306_ft.nc ersst.198307_ft.nc ersst.198308_ft.nc ersst.198309_ft.nc ersst.198310_ft.nc ersst.198311_ft.nc ersst.198312_ft.nc ersst.198401_ft.nc ersst.198402_ft.nc ersst.198403_ft.nc ersst.198404_ft.nc ersst.198405_ft.nc ersst.198406_ft.nc ersst.198407_ft.nc ersst.198408_ft.nc ersst.198409_ft.nc ersst.198410_ft.nc ersst.198411_ft.nc ersst.198412_ft.nc ersst.198501_ft.nc ersst.198502_ft.nc ersst.198503_ft.nc ersst.198504_ft.nc ersst.198505_ft.nc ersst.198506_ft.nc ersst.198507_ft.nc ersst.198508_ft.nc ersst.198509_ft.nc ersst.198510_ft.nc ersst.198511_ft.nc ersst.198512_ft.nc ersst.198601_ft.nc ersst.198602_ft.nc ersst.198603_ft.nc ersst.198604_ft.nc ersst.198605_ft.nc ersst.198606_ft.nc ersst.198607_ft.nc ersst.198608_ft.nc ersst.198609_ft.nc ersst.198610_ft.nc ersst.198611_ft.nc ersst.198612_ft.nc ersst.198701_ft.nc ersst.198702_ft.nc ersst.198703_ft.nc ersst.198704_ft.nc ersst.198705_ft.nc ersst.198706_ft.nc ersst.198707_ft.nc ersst.198708_ft.nc ersst.198709_ft.nc ersst.198710_ft.nc ersst.198711_ft.nc ersst.198712_ft.nc ersst.198801_ft.nc ersst.198802_ft.nc ersst.198803_ft.nc ersst.198804_ft.nc ersst.198805_ft.nc ersst.198806_ft.nc ersst.198807_ft.nc ersst.198808_ft.nc ersst.198809_ft.nc ersst.198810_ft.nc ersst.198811_ft.nc ersst.198812_ft.nc ersst.198901_ft.nc ersst.198902_ft.nc ersst.198903_ft.nc ersst.198904_ft.nc ersst.198905_ft.nc ersst.198906_ft.nc ersst.198907_ft.nc ersst.198908_ft.nc ersst.198909_ft.nc ersst.198910_ft.nc ersst.198911_ft.nc ersst.198912_ft.nc ersst.199001_ft.nc ersst.199002_ft.nc ersst.199003_ft.nc ersst.199004_ft.nc ersst.199005_ft.nc ersst.199006_ft.nc ersst.199007_ft.nc ersst.199008_ft.nc ersst.199009_ft.nc ersst.199010_ft.nc ersst.199011_ft.nc ersst.199012_ft.nc ersst.199101_ft.nc ersst.199102_ft.nc ersst.199103_ft.nc ersst.199104_ft.nc ersst.199105_ft.nc ersst.199106_ft.nc ersst.199107_ft.nc ersst.199108_ft.nc ersst.199109_ft.nc ersst.199110_ft.nc ersst.199111_ft.nc ersst.199112_ft.nc ersst.199201_ft.nc ersst.199202_ft.nc ersst.199203_ft.nc ersst.199204_ft.nc ersst.199205_ft.nc ersst.199206_ft.nc ersst.199207_ft.nc ersst.199208_ft.nc ersst.199209_ft.nc ersst.199210_ft.nc ersst.199211_ft.nc ersst.199212_ft.nc ersst.199301_ft.nc ersst.199302_ft.nc ersst.199303_ft.nc ersst.199304_ft.nc ersst.199305_ft.nc ersst.199306_ft.nc ersst.199307_ft.nc ersst.199308_ft.nc ersst.199309_ft.nc ersst.199310_ft.nc ersst.199311_ft.nc ersst.199312_ft.nc ersst.199401_ft.nc ersst.199402_ft.nc ersst.199403_ft.nc ersst.199404_ft.nc ersst.199405_ft.nc ersst.199406_ft.nc ersst.199407_ft.nc ersst.199408_ft.nc ersst.199409_ft.nc ersst.199410_ft.nc ersst.199411_ft.nc ersst.199412_ft.nc ersst.199501_ft.nc ersst.199502_ft.nc ersst.199503_ft.nc ersst.199504_ft.nc ersst.199505_ft.nc ersst.199506_ft.nc ersst.199507_ft.nc ersst.199508_ft.nc ersst.199509_ft.nc ersst.199510_ft.nc ersst.199511_ft.nc ersst.199512_ft.nc ersst.199601_ft.nc ersst.199602_ft.nc ersst.199603_ft.nc ersst.199604_ft.nc ersst.199605_ft.nc ersst.199606_ft.nc ersst.199607_ft.nc ersst.199608_ft.nc ersst.199609_ft.nc ersst.199610_ft.nc ersst.199611_ft.nc ersst.199612_ft.nc ersst.199701_ft.nc ersst.199702_ft.nc ersst.199703_ft.nc ersst.199704_ft.nc ersst.199705_ft.nc ersst.199706_ft.nc ersst.199707_ft.nc ersst.199708_ft.nc ersst.199709_ft.nc ersst.199710_ft.nc ersst.199711_ft.nc ersst.199712_ft.nc ersst.199801_ft.nc ersst.199802_ft.nc ersst.199803_ft.nc ersst.199804_ft.nc ersst.199805_ft.nc ersst.199806_ft.nc ersst.199807_ft.nc ersst.199808_ft.nc ersst.199809_ft.nc ersst.199810_ft.nc ersst.199811_ft.nc ersst.199812_ft.nc ersst.199901_ft.nc ersst.199902_ft.nc ersst.199903_ft.nc ersst.199904_ft.nc ersst.199905_ft.nc ersst.199906_ft.nc ersst.199907_ft.nc ersst.199908_ft.nc ersst.199909_ft.nc ersst.199910_ft.nc ersst.199911_ft.nc ersst.199912_ft.nc ersst.200001_ft.nc ersst.200002_ft.nc ersst.200003_ft.nc ersst.200004_ft.nc ersst.200005_ft.nc ersst.200006_ft.nc ersst.200007_ft.nc ersst.200008_ft.nc ersst.200009_ft.nc ersst.200010_ft.nc ersst.200011_ft.nc ersst.200012_ft.nc ersst.200101_ft.nc ersst.200102_ft.nc ersst.200103_ft.nc ersst.200104_ft.nc ersst.200105_ft.nc ersst.200106_ft.nc ersst.200107_ft.nc ersst.200108_ft.nc ersst.200109_ft.nc ersst.200110_ft.nc ersst.200111_ft.nc ersst.200112_ft.nc ersst.200201_ft.nc ersst.200202_ft.nc ersst.200203_ft.nc ersst.200204_ft.nc ersst.200205_ft.nc ersst.200206_ft.nc ersst.200207_ft.nc ersst.200208_ft.nc ersst.200209_ft.nc ersst.200210_ft.nc ersst.200211_ft.nc ersst.200212_ft.nc ersst.200301_ft.nc ersst.200302_ft.nc ersst.200303_ft.nc ersst.200304_ft.nc ersst.200305_ft.nc ersst.200306_ft.nc ersst.200307_ft.nc ersst.200308_ft.nc ersst.200309_ft.nc ersst.200310_ft.nc ersst.200311_ft.nc ersst.200312_ft.nc ersst.200401_ft.nc ersst.200402_ft.nc ersst.200403_ft.nc ersst.200404_ft.nc ersst.200405_ft.nc ersst.200406_ft.nc ersst.200407_ft.nc ersst.200408_ft.nc ersst.200409_ft.nc ersst.200410_ft.nc ersst.200411_ft.nc ersst.200412_ft.nc ersst.200501_ft.nc ersst.200502_ft.nc ersst.200503_ft.nc ersst.200504_ft.nc ersst.200505_ft.nc ersst.200506_ft.nc ersst.200507_ft.nc ersst.200508_ft.nc ersst.200509_ft.nc ersst.200510_ft.nc ersst.200511_ft.nc ersst.200512_ft.nc ersst.200601_ft.nc ersst.200602_ft.nc ersst.200603_ft.nc ersst.200604_ft.nc ersst.200605_ft.nc ersst.200606_ft.nc ersst.200607_ft.nc ersst.200608_ft.nc ersst.200609_ft.nc ersst.200610_ft.nc ersst.200611_ft.nc ersst.200612_ft.nc ersst.200701_ft.nc ersst.200702_ft.nc ersst.200703_ft.nc ersst.200704_ft.nc ersst.200705_ft.nc ersst.200706_ft.nc ersst.200707_ft.nc ersst.200708_ft.nc ersst.200709_ft.nc ersst.200710_ft.nc ersst.200711_ft.nc ersst.200712_ft.nc ersst.200801_ft.nc ersst.200802_ft.nc ersst.200803_ft.nc ersst.200804_ft.nc ersst.200805_ft.nc ersst.200806_ft.nc ersst.200807_ft.nc ersst.200808_ft.nc ersst.200809_ft.nc ersst.200810_ft.nc ersst.200811_ft.nc ersst.200812_ft.nc ersst.200901_ft.nc ersst.200902_ft.nc ersst.200903_ft.nc ersst.200904_ft.nc ersst.200905_ft.nc ersst.200906_ft.nc ersst.200907_ft.nc ersst.200908_ft.nc ersst.200909_ft.nc ersst.200910_ft.nc ersst.200911_ft.nc ersst.200912_ft.nc ersst.201001_ft.nc ersst.201002_ft.nc ersst.201003_ft.nc ersst.201004_ft.nc ersst.201005_ft.nc ersst.201006_ft.nc ersst.201007_ft.nc ersst.201008_ft.nc ersst.201009_ft.nc ersst.201010_ft.nc ersst.201011_ft.nc ersst.201012_ft.nc ersst.201101_ft.nc ersst.201102_ft.nc ersst.201103_ft.nc ersst.201104_ft.nc ersst.201105_ft.nc ersst.201106_ft.nc ersst.201107_ft.nc ersst.201108_ft.nc ersst.201109_ft.nc ersst.201110_ft.nc ersst.201111_ft.nc ersst.201112_ft.nc ersst.201201_ft.nc ersst.201202_ft.nc ersst.201203_ft.nc ersst.201204_ft.nc ersst.201205_ft.nc ersst.201206_ft.nc ersst.201207_ft.nc ersst.201208_ft.nc ersst.201209_ft.nc ersst.201210_ft.nc ersst.201211_ft.nc ersst.201212_ft.nc ersst.201301_ft.nc ersst.201302_ft.nc ersst.201303_ft.nc ersst.201304_ft.nc ersst.201305_ft.nc ersst.201306_ft.nc ersst.201307_ft.nc ersst.201308_ft.nc ersst.201309_ft.nc ersst.201310_ft.nc ersst.201311_ft.nc ersst.201312_ft.nc ersst.201401_ft.nc ersst.201402_ft.nc ersst.201403_ft.nc ersst.201404_ft.nc ersst.201405_ft.nc ersst.201406_ft.nc ersst.201407_ft.nc ersst.201408_ft.nc ersst.201409_ft.nc ersst.201410_ft.nc ersst.201411_ft.nc ersst.201412_ft.nc ersst.realtime.nc
Version 4 based on Version 3b
    publisher_name: Boyin Huang
    publisher_email: boyin.huang@noaa.gov
    publisher_url: http://www.ncdc.noaa.gov
    creator_url: http://www.ncdc.noaa.gov
    license: No constraints on data access or use
    time_coverage_start: 1948-01-15T000000Z
    time_coverage_end: 1948-01-15T000000Z
    geospatial_lon_min: -1.0f
    geospatial_lon_max: 359.0f
    geospatial_lat_min: -89.0f
    geospatial_lat_max: 89.0f
    geospatial_lat_units: degrees_north
    geospatial_lat_resolution: 2.0
    geospatial_lon_units: degrees_east
    geospatial_lon_resolution: 2.0
    spatial_resolution: 2.0 degree grid
    cdm_data_type: Grid
    processing_level: L4
    standard_name_vocabulary: CF Standard Name Table v27
    keywords: Earth Science &gt; Oceans &gt; Ocean Temperature &gt; Sea Surface Temperature &gt
    keywords_vocabulary: NASA Global Change Master Directory (GCMD) Science Keywords
    project: NOAA Extended Reconstructed Sea Surface Temperature (ERSST)
    platform: Ship and Buoy SSTs from ICOADS R2.5 and NCEP GTS
    instrument: Conventional thermometers
    source: ICOADS R2.5 SST, NCEP GTS SST, HadISST ice, NCEP ice
    comment: SSTs were observed by conventional thermometers in Buckets (insulated or un-insulated canvas and wooded buckets) or Engine Room Intaker
    references: Huang et al, 2014: Extended Reconstructed Sea Surface Temperatures Version 4 (ERSST.v4), Part I. Upgrades and Intercomparisons. Journal of Climate, DOI: 10.1175/JCLI-D-14-00006.1.
    climatology: Climatology is based on 1971-2000 SST, Xue, Y., T. M. Smith, and R. W. Reynolds, 2003: Interdecadal changes of 30-yr SST normals during 1871.2000. Journal of Climate, 16, 1601-1612.
    description: In situ data: ICOADS2.5 before 2007 and NCEP in situ data from 2008 to present. Ice data: HadISST ice before 2010 and NCEP ice after 2010.
    nco_openmp_thread_number: 1

selects the period 1980 - 2014 and the tropical Pacific domain


In [9]:
dsub = dset.sel(time=slice('1980','2014'), lat=slice(-40,40), lon=slice(120,290))

In [10]:
lat = dsub['lat'].values
lon = dsub['lon'].values
sst = dsub['anom'].values.squeeze() # because of zlev

In [11]:
sst.shape


Out[11]:
(420, 41, 86)

reshape in 2D (time, space)


In [13]:
X = np.reshape(sst, (sst.shape[0], len(lat) * len(lon)), order='F')

In [14]:
X.shape


Out[14]:
(420, 3526)

Mask the land points


In [15]:
X = ma.masked_array(X, np.isnan(X))

In [16]:
land = X.sum(0).mask

In [17]:
ocean = -land

keep only oceanic grid-points


In [18]:
X = X[:,ocean]

In [19]:
X.shape


Out[19]:
(420, 3133)

Standardize SST using the fit and transform methods of the sklearn.preprocessing.scaler.StandardScaler


In [20]:
from sklearn import preprocessing
scaler  = preprocessing.StandardScaler()

In [21]:
scaler_sst = scaler.fit(X)

Once the scaler object has been 'trained' on the data, we can save it as a pickle object


In [22]:
from sklearn.externals import joblib

In [23]:
joblib.dump(scaler_sst, '../outputs/scaler_sst.pkl', compress=9)


Out[23]:
['../outputs/scaler_sst.pkl']

In [24]:
scaler_sst = joblib.load('../outputs/scaler_sst.pkl')

scales: use the transform method of the scaler object


In [25]:
X = scaler_sst.transform(X)

verify that mean = 0 and std = 1


In [26]:
X.mean()


Out[26]:
1.1555647671687066e-18

In [27]:
X.std()


Out[27]:
1.0

EOF decomposition


In [28]:
from sklearn.decomposition import pca

instantiates the PCA object


In [29]:
skpca = pca.PCA()

fit


In [30]:
skpca.fit(X)


Out[30]:
PCA(copy=True, n_components=None, whiten=False)

Now saves the (fitted) PCA object for reuse in operations


In [31]:
joblib.dump(skpca, '../outputs/EOF.pkl', compress=9)


Out[31]:
['../outputs/EOF.pkl']

In [64]:
from matplotlib import style
style.use('fivethirtyeight')

In [62]:
style.available


Out[62]:
[u'dark_background', u'bmh', u'grayscale', u'ggplot', u'fivethirtyeight']

In [65]:
f, ax = plt.subplots(figsize=(6,6))
ax.plot(skpca.explained_variance_ratio_[0:10]*100)
ax.plot(skpca.explained_variance_ratio_[0:10]*100,'ro')


Out[65]:
[<matplotlib.lines.Line2D at 0x1122867d0>]

keep number of PC sufficient to explain 70 % of the original variance


In [34]:
ipc = np.where(skpca.explained_variance_ratio_.cumsum() >= 0.70)[0][0]

In [35]:
ipc


Out[35]:
9

The Principal Components (PCs) are obtained by using the transform method of the pca object (skpca)


In [36]:
PCs = skpca.transform(X)

In [37]:
PCs = PCs[:,:ipc]

The Empirical Orthogonal Functions (EOFs) are contained in the components_ attribute of the pca object (skpca)


In [38]:
EOFs = skpca.components_

In [39]:
EOFs = EOFs[:ipc,:]

In [40]:
EOFs.shape


Out[40]:
(9, 3133)

we can the reconstruct the 2D fields (maps)


In [41]:
EOF_recons = np.ones((ipc, len(lat) * len(lon))) * -999.

In [42]:
for i in xrange(ipc): 
    EOF_recons[i,ocean] = EOFs[i,:]

In [43]:
EOF_recons = ma.masked_values(np.reshape(EOF_recons, (ipc, len(lat), len(lon)), order='F'), -999.)

In [44]:
EOF_recons.shape


Out[44]:
(9, 41, 86)

In [45]:
plt.imshow(EOF_recons[0,:,:], origin='lower', interpolation='nearest', aspect='auto')
plt.colorbar();


scale the Principal Components


In [46]:
from sklearn.preprocessing import StandardScaler

In [47]:
scaler_PCs = StandardScaler()

In [48]:
scaler_PCs.fit(PCs)


Out[48]:
StandardScaler(copy=True, with_mean=True, with_std=True)

In [49]:
PCs_std = scaler_PCs.transform(PCs)

In [50]:
joblib.dump(scaler_PCs, '../outputs/scaler_PCs.pkl')


Out[50]:
['../outputs/scaler_PCs.pkl',
 '../outputs/scaler_PCs.pkl_01.npy',
 '../outputs/scaler_PCs.pkl_02.npy']

In [51]:
PCdf = pd.DataFrame(PCs_std, index = dsub['time'], \
                    columns = ["EOF%s" % (x) for x in xrange(1, PCs_std.shape[1] +1)])

In [52]:
PCdf.head()


Out[52]:
EOF1 EOF2 EOF3 EOF4 EOF5 EOF6 EOF7 EOF8 EOF9
time
1980-01-15 1.100268 -0.473141 1.082161 0.284773 -0.122347 1.691922 -1.243047 2.784704 -1.128199
1980-02-15 1.102311 -0.834280 1.457097 0.714391 -0.377864 1.966317 -2.102305 3.611191 -1.640436
1980-03-15 0.820466 -0.539195 1.220918 0.952919 -0.923083 2.017179 -1.482474 2.650050 -0.094746
1980-04-15 0.983487 -0.890013 0.919056 -0.080937 -1.150593 0.927583 -1.409878 1.554210 0.548674
1980-05-15 0.943051 -1.097338 0.497011 -0.078840 -0.949889 0.541508 -1.854121 1.298071 -0.434732

In [53]:
PCdf.to_csv('../outputs/EOF_ERSST_PCs.csv')

In [54]:
from scipy.signal import detrend

In [61]:
f, ax = plt.subplots(figsize=(12,6))
PCdf.ix[:,0].plot(ax=ax, color='k', label='PC1')
#ax.set_xlabel('period', fontsize=18)
ax.plot(PCdf.index, detrend(PCdf.ix[:,0].values), 'r',  label='PC1 (trend removed)')
ax.grid('off')
ax.legend(loc=1);



In [56]:
PCdf.plot()


Out[56]:
<matplotlib.axes._subplots.AxesSubplot at 0x10f194f10>

In [ ]:
dset.close()
dsub.close()