""" Data package in WAFO Toolbox. Contents -------- atlantic - Significant wave-height data recorded in the Atlantic Ocean gfaks89 - Surface elevation measured at Gullfaks C 24.12.1989 gfaksr89 - Reconstructed surface elevation measured at Gullfaks C 24.12.1989. japansea - coastline map of The Japan Sea northsea - coastline map of The Nortsea sea - Surface elevation dataset used in WAT version 1.1. sfa89 - Wind measurements at Statfjord A 24.12.1989 sn - Fatigue experiment, constant-amplitude loading. yura87 - Surface elevation measured off the coast of Yura This module gives gives detailed information and easy access to all datasets included in WAFO """ import numpy as np import os __path2data = os.path.dirname(os.path.realpath(__file__)) __all__ = ['atlantic', 'gfaks89', 'gfaksr89', 'japansea', 'northsea', 'sea', 'sfa89', 'sn', 'yura87'] _NANS = set(['nan', 'NaN', '-1.#IND00+00', '1.#IND00+00', '-1.#INF00+00']) def _tofloat(x): return np.nan if x in _NANS else float(x or 0) _MYCONVERTER = {} for i in range(2): _MYCONVERTER[i] = _tofloat def _load(file): # @ReservedAssignment """ local load function """ return np.loadtxt(os.path.join(__path2data, file)) def _loadnan(file): # @ReservedAssignment """ local load function accepting nan's """ return np.loadtxt(os.path.join(__path2data, file), converters=_MYCONVERTER) def atlantic(): """ Return Significant wave-height data recorded in the Atlantic Ocean Data summary ------------ Size : 582 X 1 Sampling Rate : ~ 14 times a month Device : Source : Format : ascii Description ------------ atlantic.dat contains average significant wave-height data recorded approximately 14 times a month in December-February during 7 years and at 2 locations in the Atlantic Ocean Example -------- >>> import pylab >>> import wafo >>> Hs = wafo.data.atlantic() >>> np.allclose(Hs[:3], [ 5.48296296, 4.3615 , 5.26023256]) True h = pylab.plot(Hs) Acknowledgement: --------------- This dataset were made available by Dr. David Carter and Dr. David Cotton, Satellite Observing Systems, UK. """ return _load('atlantic.dat') def gfaks89(): """ Return Surface elevation measured at Gullfaks C 24.12.1989 Data summary ------------ Size : 39000 X 2 Sampling Rate : 2.5 Hz Device : EMI laser Source : STATOIL Format : ascii, c1: time c2: surface elevation Description ------------ The wave data was measured 24th December 1989 at the Gullfaks C platform in the North Sea from 17.00 to 21.20. The period from 20.00 to 20.20 is missing and contains NaNs. The water depth of 218 m is regarded as deep water for the most important wave components. There are two EMI laser sensors named 219 and 220. This data set is obtained from sensor 219, which is located in the Northwest corner approximately two platform leg diameters away from the closest leg. Thus the wave elevation is not expected to be significantly affected by diffraction effects for incoming waves in the western sector. The wind direction for this period is from the south. Some difficulties in calibration of the instruments have been reported resulting in several consecutive measured values being equal or almost equal in the observed data set. This dataset is for non-commercial use only. Hm0 = 6.8m, Tm02 = 8s, Tp = 10.5 Example ------- >>> import pylab >>> import wafo >>> x = wafo.data.gfaks89() >>> np.allclose(x[:3, 1], [-0.19667949, -0.46667949, -0.38667949]) True h = pylab.plot(x[:,0],x[:,1]) Acknowledgement: --------------- This dataset were prepared and made available by Dr. S. Haver, STATOIL, Norway See also -------- gfaksr89, northsea """ return _loadnan('gfaks89.dat') def gfaksr89(): """ Return a reconstruction of surface elevation measured at Gullfaks C 24.12.1989. Data summary ------------ Size : 39000 X 2 Sampling Rate : 2.5 Hz Device : EMI laser Source : STATOIL Format : ascii, c1: time c2: surface elevation Description ----------- This is a reconstructed version of the data in the GFAKS89.DAT file. The following calls were made to reconstruct the data: inds = findoutliers(gfaks89,.02,2,1.23); gfaksr89 = reconstruct(gfaks89,inds,6); The wave data was measured 24th December 1989 at the Gullfaks C platform in the North Sea from 17.00 to 21.20. The period from 20.00 to 20.20 is missing in the original data. The water depth of 218 m is regarded as deep water for the most important wave components. There are two EMI laser sensors named 219 and 220. This data set is obtained from sensor 219, which is located in the Northwest corner approximately two platform leg diameters away from the closest leg. Thus the wave elevation is not expected to be significantly affected by diffraction effects for incoming waves in the western sector. The wind direction for this period is from the south. Some difficulties in calibration of the instruments have been reported resulting in several consecutive measured values being equal or almost equal in the observed data set. Hm0 = 6.8m, Tm02 = 8s, Tp = 10.5 Example ------- >>> import pylab >>> import wafo >>> x = wafo.data.gfaksr89() h = pylab.plot(x[:,0],x[:,1]) See also -------- gfaks89 """ return _loadnan('gfaksr89.dat') def japansea(): """ Return coastline map of The Japan Sea Data summary ------------ Size : 692 X 2 Sampling Rate : Device : Source : http://crusty.er.usgs.gov/coast/getcoast.html Format : ascii, c1: longitude c2: latitude Description ----------- JAPANSEA.DAT contains data for plotting a map of The Japan Sea. The data is obtained from USGS coastline extractor. Example: ------- #the map is seen by >>> import pylab >>> import wafo >>> map1 = wafo.data.japansea() >>> np.allclose(map1[1:4, 0], [ 141.960057, 142.058624, 142.103214]) True h = pylab.plot(map1[:,0],map1[:,1]) lon_loc = [131,132,132,135,139.5,139] lat_loc = [46, 43, 40, 35, 38.3, 35.7] loc = ['China','Vladivostok','Japan Sea', 'Japan', 'Yura','Tokyo'] algn = 'right' for lon, lat, name in zip(lon_loc,lat_loc,loc): pylab.text(lon,lat,name,horizontalalignment=algn) # If you have the m_map toolbox (see http://www.ocgy.ubc.ca/~rich/): m_proj('lambert','long',[130 148],'lat',[30 48]); m_line(map(:,1),map(:,2)); m_grid('box','fancy','tickdir','out'); m_text(131,46,'China'); m_text(132,43,'Vladivostok'); m_text(132,40,'Japan Sea'); m_text(135,35,'Japan'); m_text(139.5,38.3,'Yura'); m_text(139,35.7,'Tokyo'); """ return _loadnan('japansea.dat') def northsea(): """ NORTHSEA coastline map of The Nortsea Data summary ------------- Size : 60646 X 2 Sampling Rate : Device : Source : http://crusty.er.usgs.gov/coast/getcoast.html Format : ascii, c1: longitude c2: latitude Description ----------- NORTHSEA.DAT contains data for plotting a map of The Northsea. The data is obtained from USGS coastline extractor. Example ------- # the map is seen by >>> import pylab >>> import wafo >>> map1 = wafo.data.northsea() >>> np.allclose(map1[1:4, 0], [ 1.261996, 1.264064, 1.268171]) True h = pylab.plot(map1[:,0],map1[:,1]) lon_pltfrm = [1.8, 2.3, 2., 1.9, 2.6] lat_pltfrm = [61.2, 61.2, 59.9, 58.4, 57.7] pltfrm = ['Statfjord A', 'Gullfaks C', 'Frigg', 'Sleipner', 'Draupner'] h = pylab.scatter(lon_pltfrm,lat_pltfrm); algn = 'right' for lon, lat, name in zip(lon_pltfrm,lat_pltfrm,pltfrm): pylab.text(lon,lat,name,horizontalalignment=algn); algn = 'left' lon_city = [10.8, 10.8, 5.52, 5.2] lat_city = [59.85, 63.4, 58.9, 60.3] city = ['Oslo','Trondheim','Stavanger', 'Bergen'] h = pylab.scatter(lon_city,lat_city); algn = 'right' for lon, lat, name in zip(lon_city,lat_city,city): pylab.text(lon,lat,name,horizontalalignment=algn) # If you have the mpl_toolkits.basemap installed from mpl_toolkits.basemap import Basemap import matplotlib.pyplot as plt # setup Lambert Conformal basemap. m = Basemap(width=1200000,height=900000,projection='lcc', resolution='f',lat_1=56.,lat_2=64,lat_0=58,lon_0=5.) m.drawcoastlines() h = m.scatter(lon_pltfrm,lat_pltfrm); algn = 'right' for lon, lat, name in zip(lon_pltfrm,lat_pltfrm,pltfrm): m.text(lon,lat,name,horizontalalignment=algn); algn = 'left' m.scatter(lon_city,lat_city) algn = 'right' for lon, lat, name in zip(lon_city,lat_city,city): m.text(lon,lat,name,horizontalalignment=algn) """ return _loadnan('northsea.dat') def sea(): """ Return Surface elevation dataset used in WAT version 1.1. Data summary ------------ Size : 9524 X 2 Sampling Rate : 4.0 Hz Device : unknown Source : unknown Format : ascii, c1: time c2: surface elevation Description ----------- The wave data was used in one of WAFO predecessors, i.e. the Wave Analysis Toolbox version 1.1 (WAT) Hm0 = 1.9m, Tm02 = 4.0s, Tp2 = 11.5s Tp1=5.6s Example ------- >>> import pylab >>> import wafo >>> x = wafo.data.sea() >>> np.allclose(x[:3,1],[-1.2004945 , -1.0904945 , -0.79049454]) True h = pylab.plot(x[:,0],x[:,1]) """ return _load('sea.dat') def sfa89(): """ Return Wind measurements at Statfjord A 24.12.1989 Data summary ------------ Size : 144 X 3 Sampling Rate : 1/600 Hz Device : Source : DNMI (The Norwegian Meteorological Institute) Format : ascii, c1: time (hours) c2: velocity (m/s) c3: direction (degrees) Description ----------- The registration of wind speeds at the Gullfaks field started up on Statfjord A in 1978 and continued until 1990. The dataregistration was transferred to Gullfaks C in Nov 1989. Due to some difficulties of the windregistration on Gullfaks C in the beginning, they continued to use the registered data from Statfjord A. The windspeed is measured in (meter/second), 110 m above mean water level (MWL) and the wind direction is given in degrees for the data. The data are a mean value of every 10 minutes. Wind directions are defined in the meteorological convention, i.e., 0 degrees = wind approaching from North, 90 degrees = wind from East, etc. This dataset is for non-commercial use only. Example ------- >>> import pylab >>> import wafo >>> x = wafo.data.sfa89() h = pylab.plot(x[:,0],x[:,1]) Acknowledgement ---------------- These data are made available by Knut A. Iden, DNMI. See also -------- northsea """ return _load('sfa89.dat') def sn(): """ Return SN Fatigue experiment, constant-amplitude loading. Data summary ------------ Size : 40 X 2 Source : unknown Format : ascii, c1: Amplitude MPa c2: Number of cycles Description ----------- A fatigue experiment with constant amplitudes at five levels: 10,15,20,25 and 30 MPa. For each level is related 8 observations of the number of cycles to failure. The origin of the data is unknown. Example ------- >>> import pylab >>> import wafo >>> x = wafo.data.sn() h = pylab.plot(x[:,0],x[:,1]) See also -------- The same data appear in the directory wdemos/itmkurs/ as SN.mat. """ return _load('sn.dat') def yura87(): """ Return Surface elevation measured off the coast of Yura. Data summary ----------- Size : 85547 X 4 Sampling Rate : 1 Hz Device : ultrasonic wave gauges Source : SRI, Ministry of Transport, Japan Format : ascii, c1: time (sec) c2-4: surface elevation (m) Description ----------- The wave data was measured at the Poseidon platform in the Japan Sea from 24th November 1987 08.12 hours to 25th November 1987 07.57 hours. Poseidon was located 3 km off the coast of Yura in the Yamagata prefecture, in the Japan Sea during the measurements. The most important wave components are to some extent influenced by the water depth of 42 m. The data are measured with three ultrasonic wave gauges located at the sea floor and the relative coordinates of the gauges are as follows (x-axis points to the East, y-axis points to the North): X (m) Y (m) c2: -4.93, 25.02 c3: 5.80, 92.12 c4: 0.00, 0.00 This dataset is for non-commercial use only. Hm0 = 5.1m, Tm02 = 7.7s, Tp = 12.8s Example ------- >>> import pylab >>> import wafo >>> x = wafo.data.yura87() h = pylab.plot(x[:,0],x[:,1]) Acknowledgement: ----------------- This dataset were prepared and made available by Dr. Sc. H. Tomita, Ship Research Institute, Ministry of Transport, Japan. See also -------- japansea """ return _load('yura87.dat') if __name__ == '__main__': import doctest doctest.testmod()