Magnitude calculation ===================== EQcorrscan contains both an automatic amplitude picker and a singular-value decomposition derived magnitude calculation, which is very accurate but requires high levels of event similarity. Relative moment by singular-value decomposition ----------------------------------------------- This method closely follows the method outlined by |SVD_mag_link|. .. |SVD_mag_link| raw:: html Rubinstein & Ellsworth 2010 This example requires data downloaded from the eqcorrscan github repository. .. code-block:: python >>> from eqcorrscan.utils.mag_calc import svd_moments >>> from obspy import read >>> import glob >>> from eqcorrscan.utils.clustering import svd >>> import numpy as np >>> from eqcorrscan import tests >>> import os >>> # Get the path for the test-data so we can test this >>> testing_path = os.path.dirname( ... tests.__file__) + '/test_data/similar_events_processed' >>> stream_files = glob.glob(os.path.join(testing_path, '*')) >>> stream_list = [read(stream_file) for stream_file in stream_files] >>> event_list = [] >>> for i, stream in enumerate(stream_list): # doctest:+ELLIPSIS ... st_list = [] ... for tr in stream: ... # Only use the vertical channels of sites with known high similarity. ... # You do not need to use this step for your data. ... if (tr.stats.station, tr.stats.channel) not in\ ... [('WHAT2', 'SH1'), ('WV04', 'SHZ'), ('GCSZ', 'EHZ')]: ... stream.remove(tr) ... continue ... st_list.append(i) ... event_list.append(st_list) >>> event_list = np.asarray(event_list).T.tolist() >>> SVectors, SValues, Uvectors, stachans = svd(stream_list=stream_list) >>> M, events_out = svd_moments(u=Uvectors, s=SValues, v=SVectors, ... stachans=stachans, event_list=event_list) # doctest:+ELLIPSIS