http://earthquake.usgs.gov/data/?source=sitenav
http://www.iris.edu/dms/nodes/dmc/data/types/waveform-data/
It was hard to find, but there is a web API: http://service.iris.edu/irisws/timeseries/1/
%pylab inline
Populating the interactive namespace from numpy and matplotlib
prefix = 'http://service.iris.edu/irisws/timeseries/1/query?'
SCNL_parameters = 'net=IU&sta=ANMO&loc=00&cha=BHZ&'
times = 'starttime=2005-01-01T00:00:00&endtime=2005-01-02T00:00:00&'
output = 'output=ascii'
import urllib2
f = urllib2.urlopen(prefix + SCNL_parameters + times + output)
timeseries = f.read()
type(timeseries)
str
data = timeseries.split('\n')
len(data)
1728002
data[0]
'TIMESERIES IU_ANMO_00_BHZ_M, 1728000 samples, 20 sps, 2005-01-01T00:00:00.010800, TSPAIR, INTEGER, COUNTS'
data[1]
'2005-01-01T00:00:00.010800 24'
data[-1]
''
data[-2]
'2005-01-01T23:59:59.960800 -79'
dates = []
values = []
for line in data[1:-1]:
date, val = line.split()
dates.append(date)
values.append(float(val))
plot(values)
[<matplotlib.lines.Line2D at 0x7ff5b3f19f10>]
len(values)/20.0
86400.0
_/(60*60.0)
24.0
len(values)/44100.0
39.183673469387756
plot(dates, values)
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-19-1d6845f1aabd> in <module>() ----> 1 plot(dates, values) /usr/lib/python2.7/dist-packages/matplotlib/pyplot.pyc in plot(*args, **kwargs) 3097 ax.hold(hold) 3098 try: -> 3099 ret = ax.plot(*args, **kwargs) 3100 draw_if_interactive() 3101 finally: /usr/lib/python2.7/dist-packages/matplotlib/axes/_axes.pyc in plot(self, *args, **kwargs) 1373 1374 for line in self._get_lines(*args, **kwargs): -> 1375 self.add_line(line) 1376 lines.append(line) 1377 /usr/lib/python2.7/dist-packages/matplotlib/axes/_base.pyc in add_line(self, line) 1484 line.set_clip_path(self.patch) 1485 -> 1486 self._update_line_limits(line) 1487 if not line.get_label(): 1488 line.set_label('_line%d' % len(self.lines)) /usr/lib/python2.7/dist-packages/matplotlib/axes/_base.pyc in _update_line_limits(self, line) 1495 Figures out the data limit of the given line, updating self.dataLim. 1496 """ -> 1497 path = line.get_path() 1498 if path.vertices.size == 0: 1499 return /usr/lib/python2.7/dist-packages/matplotlib/lines.pyc in get_path(self) 869 """ 870 if self._invalidy or self._invalidx: --> 871 self.recache() 872 return self._path 873 /usr/lib/python2.7/dist-packages/matplotlib/lines.pyc in recache(self, always) 570 x = ma.asarray(xconv, np.float_) 571 else: --> 572 x = np.asarray(xconv, np.float_) 573 x = x.ravel() 574 else: /usr/lib/python2.7/dist-packages/numpy/core/numeric.pyc in asarray(a, dtype, order) 458 459 """ --> 460 return array(a, dtype, copy=False, order=order) 461 462 def asanyarray(a, dtype=None, order=None): ValueError: invalid literal for float(): 2005-01-01T00:00:00.010800
dates[0]
'2005-01-01T00:00:00.010800'
dates = array(dates, dtype='datetime64')
dates[0]
numpy.datetime64('2005-01-01T00:00:00.010800-0800')
plot(dates, values)
[<matplotlib.lines.Line2D at 0x7ff5aded4690>]
plot(dates, values)
positions = linspace(dates[0].astype(int64), dates[-1].astype(int64), 24)
xticks(positions, arange(24));
from scipy.io import wavfile
wavfile.write('earthquake.wav', 44100, array(values))
!aplay earthquake.wav
aplay: test_wavefile:1024: can't play WAVE-files with sample 64 bits wide
array(values).dtype
dtype('float64')
audio_data = (array(values)).astype(int16)
wavfile.write('earthquake.wav', 44100, audio_data)
!aplay earthquake.wav
Playing WAVE 'earthquake.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono ^CAborted by signal Interrupt... aplay: pcm_write:1939: write error: Interrupted system call
audio_data.shape
(1728000,)
audio_data.size/44100.0
39.183673469387756
from scipy.signal import resample
audio_data2 = resample(audio_data, 5* 44100)
wavfile.write('earthquake2.wav', 44100, audio_data2.astype(int16))
!aplay earthquake2.wav
Playing WAVE 'earthquake2.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
plot(audio_data2)
[<matplotlib.lines.Line2D at 0x7ff5ade8e790>]
audio_data3 = resample(audio_data[400000:1000000], 30* 44100)
wavfile.write('earthquake3.wav', 44100, audio_data3.astype(int16))
!aplay earthquake3.wav
Playing WAVE 'earthquake3.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono ^CAborted by signal Interrupt... aplay: pcm_write:1939: write error: Interrupted system call
plot(audio_data3)
[<matplotlib.lines.Line2D at 0x7ff5ac0e4d10>]
prefix = 'http://service.iris.edu/irisws/timeseries/1/query?'
SCNL_parameters = 'net=IU&sta=ANMO&loc=00&cha=BHZ&'
times = 'starttime=2014-03-28T00:00:00&endtime=2014-03-29T00:00:00&'
output = 'output=ascii'
import urllib2
f = urllib2.urlopen(prefix + SCNL_parameters + times + output)
timeseries2 = f.read()
data2 = timeseries2.split('\n')
dates2 = []
values2 = []
for line in data2[1:-1]:
date, val = line.split()
dates2.append(date)
values2.append(float(val))
plot(values2)
[<matplotlib.lines.Line2D at 0x7ff58a342250>]
audio_data = (array(values2)+ 50000).astype(int16)
wavfile.write('earthquake4.wav', 44100, audio_data.astype(int16))
!aplay earthquake4.wav
Playing WAVE 'earthquake4.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono ^CAborted by signal Interrupt... aplay: pcm_write:1939: write error: Interrupted system call
from keys import oer_key
url = 'https://openexchangerates.org/api/latest.json?app_id=%s&base=%s'%(oer_key, 'USD')
f = urllib2.urlopen(url)
timeseries = f.read()
len(timeseries.split('\n'))
179
import json
s = json.loads(timeseries)
s
{u'base': u'USD', u'disclaimer': u'Exchange rates provided for informational purposes only and do not constitute financial advice of any kind. Although every attempt is made to ensure quality, no guarantees are made of accuracy, validity, availability, or fitness for any purpose. All usage subject to acceptance of Terms: https://openexchangerates.org/terms/', u'license': u'Data sourced from various providers; resale prohibited; no warranties given of any kind. All usage subject to License Agreement: https://openexchangerates.org/license/', u'rates': {u'AED': 3.672937, u'AFN': 68.655002, u'ALL': 122.1493, u'AMD': 481.132503, u'ANG': 1.7887, u'AOA': 160.5805, u'ARS': 14.67684, u'AUD': 1.303851, u'AWG': 1.793333, u'AZN': 1.546688, u'BAM': 1.720581, u'BBD': 2, u'BDT': 78.358841, u'BGN': 1.720093, u'BHD': 0.377001, u'BIF': 1562.690025, u'BMD': 1, u'BND': 1.350421, u'BOB': 6.820572, u'BRL': 3.59785, u'BSD': 1, u'BTC': 0.002404476173, u'BTN': 66.251685, u'BWP': 10.859663, u'BYR': 20107.35, u'BZD': 1.995021, u'CAD': 1.299184, u'CDF': 928.2355, u'CHF': 0.960858, u'CLF': 0.024602, u'CLP': 670.441001, u'CNY': 6.45266, u'COP': 3012.928337, u'CRC': 534.755523, u'CUC': 1, u'CUP': 0.999988, u'CVE': 97.363483, u'CZK': 23.78462, u'DJF': 177.676749, u'DKK': 6.552013, u'DOP': 45.68364, u'DZD': 108.694981, u'EEK': 13.78515, u'EGP': 8.877351, u'ERN': 15.0015, u'ETB': 21.51598, u'EUR': 0.878112, u'FJD': 2.07645, u'FKP': 0.695483, u'GBP': 0.695483, u'GEL': 2.313175, u'GGP': 0.695483, u'GHS': 3.835969, u'GIP': 0.695483, u'GMD': 42.76202, u'GNF': 7596.107598, u'GTQ': 7.716793, u'GYD': 206.497002, u'HKD': 7.755875, u'HNL': 22.60449, u'HRK': 6.61409, u'HTG': 62.014313, u'HUF': 275.974902, u'IDR': 13229.1, u'ILS': 3.763616, u'IMP': 0.695483, u'INR': 66.248461, u'IQD': 1088.549988, u'IRR': 30225, u'ISK': 123.7136, u'JEP': 0.695483, u'JMD': 121.5561, u'JOD': 0.709426, u'JPY': 112.4982, u'KES': 101.43151, u'KGS': 70.29265, u'KHR': 4004.127476, u'KMF': 436.797132, u'KPW': 899.91, u'KRW': 1145.511665, u'KWD': 0.301935, u'KYD': 0.824205, u'KZT': 344.747093, u'LAK': 8168.807403, u'LBP': 1508.024984, u'LKR': 146.8845, u'LRD': 84.66847, u'LSL': 14.823638, u'LTL': 3.02283, u'LVL': 0.619661, u'LYD': 1.364171, u'MAD': 9.635867, u'MDL': 19.54393, u'MGA': 3208.47165, u'MKD': 54.17312, u'MMK': 1206.699976, u'MNT': 2045.5, u'MOP': 7.986751, u'MRO': 343.122333, u'MTL': 0.683738, u'MUR': 35.278313, u'MVR': 15.283333, u'MWK': 679.740503, u'MXN': 17.3189, u'MYR': 3.894079, u'MZN': 51.355, u'NAD': 14.81197, u'NGN': 198.927701, u'NIO': 28.21402, u'NOK': 8.284858, u'NPR': 106.0252, u'NZD': 1.445574, u'OMR': 0.385039, u'PAB': 1, u'PEN': 3.323761, u'PGK': 3.089925, u'PHP': 45.99724, u'PKR': 104.715501, u'PLN': 3.734205, u'PYG': 5645.764987, u'QAR': 3.641293, u'RON': 3.928538, u'RSD': 107.99294, u'RUB': 67.22946, u'RWF': 752.123382, u'SAR': 3.750427, u'SBD': 7.906423, u'SCR': 13.57175, u'SDG': 6.097041, u'SEK': 8.124528, u'SGD': 1.348564, u'SHP': 0.695483, u'SLL': 3993.5, u'SOS': 613.514244, u'SRD': 3.975398, u'STD': 21586.25, u'SVC': 8.741493, u'SYP': 219.615665, u'SZL': 14.79997, u'THB': 35.14766, u'TJS': 7.8696, u'TMT': 3.501367, u'TND': 2.005472, u'TOP': 2.247228, u'TRY': 2.823176, u'TTD': 6.598706, u'TWD': 32.24107, u'TZS': 2186.18165, u'UAH': 26.25159, u'UGX': 3370.813333, u'USD': 1, u'UYU': 31.95866, u'UZS': 2873.38501, u'VEF': 6.305631, u'VND': 22299.333333, u'VUV': 109.123333, u'WST': 2.505881, u'XAF': 577.978259, u'XAG': 0.0647515, u'XAU': 0.0008105, u'XCD': 2.70102, u'XDR': 0.709832, u'XOF': 581.712539, u'XPD': 0.001776, u'XPF': 105.226713, u'XPT': 0.001024, u'YER': 214.976001, u'ZAR': 14.80648, u'ZMK': 5252.024745, u'ZMW': 11.052575, u'ZWL': 322.322775}, u'timestamp': 1459450810}
values = []
for rate in s['rates'].values():
values.append(rate)
plot(values)
[<matplotlib.lines.Line2D at 0x7ff5b3f452d0>]
loop = values*100
wavfile.write('currencies.wav', 44100, array(loop).astype(int16))
!aplay currencies.wav
Playing WAVE 'currencies.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
By: Andrés Cabrera mantaraya36@gmail.com
For Course MAT 240F at UCSB
This ipython notebook is licensed under the CC-BY-NC-SA license: http://creativecommons.org/licenses/by-nc-sa/4.0/