crimeacs commited on
Commit
1ed8d1b
·
1 Parent(s): 2598b7d

Added ray tracing to velocity modelling

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. Gradio_app.ipynb +0 -0
  2. app.py +103 -35
  3. data/cached/CI_BAK_2019-07-04T17:33:54.617418Z.mseed +0 -0
  4. data/cached/CI_BBR_2019-07-04T17:33:59.141726Z.mseed +0 -0
  5. data/cached/CI_BFS_2019-07-04T17:33:58.033722Z.mseed +0 -0
  6. data/cached/CI_CHF_2019-07-04T17:33:57.250415Z.mseed +0 -0
  7. data/cached/CI_DEC_2019-07-04T17:33:59.448227Z.mseed +0 -0
  8. data/cached/CI_DJJ_2019-07-04T17:34:01.956593Z.mseed +0 -0
  9. data/cached/CI_MWC_2019-07-04T17:33:58.878567Z.mseed +0 -0
  10. data/cached/CI_PASC_2019-07-04T17:33:59.995038Z.mseed +0 -0
  11. data/cached/CI_Q0000_2019-07-04T17:33:59.542086Z.mseed +0 -0
  12. data/cached/CI_Q0001_2019-07-04T17:33:59.848010Z.mseed +0 -0
  13. data/cached/CI_Q0002_2019-07-04T17:34:02.161273Z.mseed +0 -0
  14. data/cached/CI_Q0015_2019-07-04T17:33:58.949256Z.mseed +0 -0
  15. data/cached/CI_Q0031_2019-07-04T17:34:01.066693Z.mseed +0 -0
  16. data/cached/CI_Q0049_2019-07-04T17:33:59.323575Z.mseed +0 -0
  17. data/cached/CI_Q0050_2019-07-04T17:34:03.767760Z.mseed +0 -0
  18. data/cached/CI_Q0057_2019-07-04T17:34:00.984409Z.mseed +0 -0
  19. data/cached/CI_Q0073_2019-07-04T17:34:03.226784Z.mseed +0 -0
  20. data/cached/CI_Q0077_2019-07-04T17:34:03.800544Z.mseed +0 -0
  21. data/cached/CI_Q0080_2019-07-04T17:34:01.906420Z.mseed +0 -0
  22. data/cached/CI_SVD_2019-07-04T17:34:00.668795Z.mseed +0 -0
  23. data/cached/CI_TUQ_2019-07-04T17:33:56.281687Z.mseed +0 -0
  24. data/cached/CI_USC_2019-07-04T17:34:02.444223Z.mseed +0 -0
  25. data/cached/CI_VES_2019-07-04T17:33:53.346003Z.mseed +0 -0
  26. data/cached/CI_VOG_2019-07-04T17:33:58.215994Z.mseed +0 -0
  27. data/cached/GS_COM_2000-09-03T08:36:34.034702Z.mseed +0 -0
  28. data/cached/GS_FAI_2000-09-03T08:36:33.897223Z.mseed +0 -0
  29. data/cached/GS_N10_2000-09-03T08:36:32.693278Z.mseed +0 -0
  30. data/cached/GS_N20_2000-09-03T08:36:32.659822Z.mseed +0 -0
  31. data/cached/GS_N30_2000-09-03T08:36:32.556386Z.mseed +0 -0
  32. data/cached/GS_N40_2000-09-03T08:36:32.571201Z.mseed +0 -0
  33. data/cached/GS_N50_2000-09-03T08:36:32.517254Z.mseed +0 -0
  34. data/cached/GS_N60_2000-09-03T08:36:32.499849Z.mseed +0 -0
  35. data/cached/GS_O10_2000-09-03T08:36:32.796101Z.mseed +0 -0
  36. data/cached/GS_O50_2000-09-03T08:36:32.656750Z.mseed +0 -0
  37. data/cached/GS_O60_2000-09-03T08:36:32.626776Z.mseed +0 -0
  38. data/cached/GS_P10_2000-09-03T08:36:32.900030Z.mseed +0 -0
  39. data/cached/GS_P20_2000-09-03T08:36:32.838345Z.mseed +0 -0
  40. data/cached/GS_P30_2000-09-03T08:36:32.820809Z.mseed +0 -0
  41. data/cached/GS_P40_2000-09-03T08:36:32.774233Z.mseed +0 -0
  42. data/cached/GS_P60_2000-09-03T08:36:32.712966Z.mseed +0 -0
  43. data/cached/GS_Q10_2000-09-03T08:36:33.032313Z.mseed +0 -0
  44. data/cached/GS_Q20_2000-09-03T08:36:32.982191Z.mseed +0 -0
  45. data/cached/GS_Q30_2000-09-03T08:36:32.962975Z.mseed +0 -0
  46. data/cached/GS_Q40_2000-09-03T08:36:32.907654Z.mseed +0 -0
  47. data/cached/GS_Q50_2000-09-03T08:36:32.896534Z.mseed +0 -0
  48. data/cached/GS_Q60_2000-09-03T08:36:32.832100Z.mseed +0 -0
  49. data/cached/GS_R10_2000-09-03T08:36:33.107196Z.mseed +0 -0
  50. data/cached/GS_R20_2000-09-03T08:36:33.065548Z.mseed +0 -0
Gradio_app.ipynb CHANGED
The diff for this file is too large to render. See raw diff
 
app.py CHANGED
@@ -9,6 +9,8 @@ import io
9
 
10
  from scipy.stats import gaussian_kde
11
  from scipy.signal import resample
 
 
12
  from bmi_topography import Topography
13
  import earthpy.spatial as es
14
 
@@ -435,16 +437,58 @@ def predict_on_section(client_name, timestamp, eq_lat, eq_lon, radius_km, source
435
 
436
  import numpy as np
437
  from matplotlib import colors, cm
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
438
 
439
  # Function to find the closest index for a given value in an array
440
  def find_closest_index(array, value):
441
  return np.argmin(np.abs(array - value))
442
 
443
- def compute_velocity_model(azimuth, elevation):
444
  filename = list(output_csv.temp_files)[0]
445
 
446
  df = pd.read_csv(filename)
447
- print(df)
448
  filename = filename.split('/')[-1]
449
 
450
  # Current EQ location
@@ -458,11 +502,10 @@ def compute_velocity_model(azimuth, elevation):
458
  depth_range = (0, 50)
459
 
460
  # Define the number of nodes in each dimension
461
- n_lat = 10
462
- n_lon = 10
463
- n_depth = 10
464
  num_points = 100
465
 
 
 
466
  # Create the grid
467
  lat_values = np.linspace(lat_range[0], lat_range[1], n_lat)
468
  lon_values = np.linspace(lon_range[0], lon_range[1], n_lon)
@@ -475,23 +518,36 @@ def compute_velocity_model(azimuth, elevation):
475
  # Loop through the stations and update the velocity model
476
  for i in range(len(df)):
477
  if ~np.isnan(df['velocity_p, km/s'].iloc[i]):
478
- # Interpolate coordinates along the great circle path between the earthquake and the station
479
- lon_deg = np.linspace(df.st_lon.iloc[i], eq_lon, num_points)
480
- lat_deg = np.linspace(df.st_lat.iloc[i], eq_lat, num_points)
481
- depth_interpolated = np.interp(np.linspace(0, 1, num_points), [0, 1], [eq_depth, 0])
482
-
483
- # Loop through the interpolated coordinates and update the grid cells with the average P-wave velocity
484
- for lat, lon, depth in zip(lat_deg, lon_deg, depth_interpolated):
485
- lat_index = find_closest_index(lat_values, lat)
486
- lon_index = find_closest_index(lon_values, lon)
487
- depth_index = find_closest_index(depth_values, depth)
488
-
489
- if velocity_model[lat_index, lon_index, depth_index] == initial_velocity:
490
- velocity_model[lat_index, lon_index, depth_index] = df['velocity_p, km/s'].iloc[i]
491
- else:
492
- velocity_model[lat_index, lon_index, depth_index] = (velocity_model[lat_index, lon_index, depth_index] +
493
- df['velocity_p, km/s'].iloc[i]) / 2
 
 
 
 
 
 
 
494
 
 
 
 
 
 
 
495
  # Create the figure and axis
496
  fig = plt.figure(figsize=(8, 8))
497
  ax = fig.add_subplot(111, projection='3d')
@@ -515,11 +571,16 @@ def compute_velocity_model(azimuth, elevation):
515
  )
516
 
517
  # Create the color array
518
- norm = plt.Normalize(vmin=velocity_model.min(), vmax=velocity_model.max())
519
- colors = plt.cm.plasma(norm(velocity_model))
520
-
521
  # Plot the voxels
522
- ax.voxels(x, y, z, velocity_model > 0, facecolors=colors, alpha=0.5, edgecolor='k')
 
 
 
 
 
523
 
524
  # Set the view angle
525
  ax.view_init(elev=elevation, azim=azimuth)
@@ -585,7 +646,7 @@ with gr.Blocks() as demo:
585
  P_thres_inputs = gr.Slider(minimum=0.01,
586
  maximum=1,
587
  value=0.1,
588
- label="P uncertainty threshold, s",
589
  step=0.01,
590
  info="Acceptable uncertainty for P picks expressed in std() seconds",
591
  interactive=True,
@@ -594,13 +655,13 @@ with gr.Blocks() as demo:
594
  S_thres_inputs = gr.Slider(minimum=0.01,
595
  maximum=1,
596
  value=0.2,
597
- label="S uncertainty threshold, s",
598
  step=0.01,
599
  info="Acceptable uncertainty for S picks expressed in std() seconds",
600
  interactive=True,
601
  )
602
  with gr.Column(scale=1):
603
- upload = gr.File(label="Or upload your own waveform")
604
  with gr.Row():
605
  sampling_rate_inputs = gr.Slider(minimum=10,
606
  maximum=1000,
@@ -730,15 +791,22 @@ with gr.Blocks() as demo:
730
 
731
  with gr.Row():
732
  with gr.Column(scale=2):
733
- inputs_vel_model = [
734
- gr.Slider(minimum=-180, maximum=180, value=0, step=5, label="Azimuth", interactive=True),
735
- gr.Slider(minimum=-90, maximum=90, value=30, step=5, label="Elevation", interactive=True)
736
- ]
 
 
 
 
 
737
  button = gr.Button("Look at 3D Velocities")
738
  outputs_vel_model = gr.Image(label="3D Velocity Model")
739
 
740
- button.click(compute_velocity_model,
741
- inputs=inputs_vel_model,
742
- outputs=outputs_vel_model)
 
 
743
 
744
  demo.launch()
 
9
 
10
  from scipy.stats import gaussian_kde
11
  from scipy.signal import resample
12
+ from scipy.interpolate import interp1d
13
+
14
  from bmi_topography import Topography
15
  import earthpy.spatial as es
16
 
 
437
 
438
  import numpy as np
439
  from matplotlib import colors, cm
440
+ from scipy.interpolate import griddata
441
+
442
+ def interpolate_vel_model(velocity_model, initial_velocity, lat_values, lon_values, depth_values, n_lat, n_lon, n_depth):
443
+ # Create a mask for points with the initial velocity
444
+ initial_velocity_mask = (velocity_model == initial_velocity)
445
+
446
+ # Find the indices of points with non-initial velocities
447
+ non_initial_velocity_indices = np.argwhere(~initial_velocity_mask)
448
+
449
+ # Extract the coordinates and corresponding velocities of the known points
450
+ known_points = np.column_stack([lat_values[non_initial_velocity_indices[:, 0]],
451
+ lon_values[non_initial_velocity_indices[:, 1]],
452
+ depth_values[non_initial_velocity_indices[:, 2]]])
453
+
454
+ # Find the maximum depth in the known_points
455
+ max_known_depth = np.max(known_points[:, 2])
456
+
457
+ known_velocities = velocity_model[~initial_velocity_mask]
458
+
459
+ # Create a grid of points for the entire volume
460
+ grid_points = np.array(np.meshgrid(lat_values, lon_values, depth_values, indexing='ij')).reshape(3, -1).T
461
+
462
+ # Create a mask for grid points that are deeper than the maximum known depth
463
+ depth_mask = grid_points[:, 2] <= max_known_depth
464
+
465
+ # Interpolate the velocities at the grid points
466
+ interpolated_velocities = griddata(known_points, known_velocities, grid_points[depth_mask], method='linear')
467
+
468
+ # Fill nan values with the nearest known velocities
469
+ interpolated_velocities_filled = griddata(known_points, known_velocities, grid_points[depth_mask], method='nearest')
470
+ interpolated_velocities[np.isnan(interpolated_velocities)] = interpolated_velocities_filled[np.isnan(interpolated_velocities)]
471
+
472
+ # Initialize an array with the same length as grid_points and fill it with nan values
473
+ interpolated_velocities_with_depth_limit = np.full(grid_points.shape[0], np.nan)
474
+
475
+ # Update the array with the interpolated velocities for the masked grid points
476
+ interpolated_velocities_with_depth_limit[depth_mask] = interpolated_velocities
477
+
478
+ # Reshape the interpolated velocities to match the shape of the velocity_model
479
+ interpolated_velocity_model = interpolated_velocities_with_depth_limit.reshape(n_lat, n_lon, n_depth)
480
+
481
+ return interpolated_velocity_model
482
+
483
 
484
  # Function to find the closest index for a given value in an array
485
  def find_closest_index(array, value):
486
  return np.argmin(np.abs(array - value))
487
 
488
+ def compute_velocity_model(azimuth, elevation, interpolate, n_lat, n_lon, n_depth):
489
  filename = list(output_csv.temp_files)[0]
490
 
491
  df = pd.read_csv(filename)
 
492
  filename = filename.split('/')[-1]
493
 
494
  # Current EQ location
 
502
  depth_range = (0, 50)
503
 
504
  # Define the number of nodes in each dimension
 
 
 
505
  num_points = 100
506
 
507
+ taup_model = TauPyModel(model='1066a')
508
+
509
  # Create the grid
510
  lat_values = np.linspace(lat_range[0], lat_range[1], n_lat)
511
  lon_values = np.linspace(lon_range[0], lon_range[1], n_lon)
 
518
  # Loop through the stations and update the velocity model
519
  for i in range(len(df)):
520
  if ~np.isnan(df['velocity_p, km/s'].iloc[i]):
521
+
522
+ ray_path = taup_model.get_ray_paths_geo(source_depth_in_km=eq_depth,
523
+ source_latitude_in_deg=eq_lat,
524
+ source_longitude_in_deg=eq_lon,
525
+ receiver_latitude_in_deg=df.st_lat.iloc[i],
526
+ receiver_longitude_in_deg=df.st_lon.iloc[i],
527
+ phase_list=['P', 'S'])
528
+
529
+ # Create the interpolator objects for latitude, longitude, and depth
530
+ interp_latitude = interp1d(np.linspace(0, ray_path[0].path['lat'].max(), len(ray_path[0].path['lat'])), ray_path[0].path['lat'])
531
+ interp_longitude = interp1d(np.linspace(0, ray_path[0].path['lon'].max(), len(ray_path[0].path['lon'])), ray_path[0].path['lon'])
532
+ interp_depth = interp1d(np.linspace(0, ray_path[0].path['depth'].max(), len(ray_path[0].path['depth'])), ray_path[0].path['depth'])
533
+
534
+ # Resample the ray path to N points
535
+ lat_values_interp = interp_latitude(np.linspace(0, ray_path[0].path['lat'].max(), num_points))
536
+ lon_values_interp = interp_longitude(np.linspace(0, ray_path[0].path['lon'].max(), num_points))
537
+ depth_values_interp = interp_depth(np.linspace(0, ray_path[0].path['depth'].max(), num_points))
538
+
539
+ # Loop through the interpolated coordinates and update the grid cells with the average P-wave velocity
540
+ for lat, lon, depth in zip(lat_values_interp, lon_values_interp, depth_values_interp):
541
+ lat_index = find_closest_index(lat_values, lat)
542
+ lon_index = find_closest_index(lon_values, lon)
543
+ depth_index = find_closest_index(depth_values, depth)
544
 
545
+ if velocity_model[lat_index, lon_index, depth_index] == initial_velocity:
546
+ velocity_model[lat_index, lon_index, depth_index] = df['velocity_p, km/s'].iloc[i]
547
+ else:
548
+ velocity_model[lat_index, lon_index, depth_index] = (velocity_model[lat_index, lon_index, depth_index] +
549
+ df['velocity_p, km/s'].iloc[i]) / 2
550
+
551
  # Create the figure and axis
552
  fig = plt.figure(figsize=(8, 8))
553
  ax = fig.add_subplot(111, projection='3d')
 
571
  )
572
 
573
  # Create the color array
574
+ norm = plt.Normalize(vmin=2, vmax=8)
575
+ colors_vel = plt.cm.plasma(norm(velocity_model))
576
+
577
  # Plot the voxels
578
+ if interpolate:
579
+ interpolated_velocity_model = interpolate_vel_model(velocity_model, initial_velocity, lat_values, lon_values, depth_values, n_lat, n_lon, n_depth)
580
+ colors_interp = plt.cm.plasma(norm(interpolated_velocity_model))
581
+ ax.voxels(x, y, z, interpolated_velocity_model > 0, facecolors=colors_interp, alpha=0.5, edgecolor='k')
582
+
583
+ ax.voxels(x, y, z, velocity_model > 0, facecolors=colors_vel, alpha=1, edgecolor='black')
584
 
585
  # Set the view angle
586
  ax.view_init(elev=elevation, azim=azimuth)
 
646
  P_thres_inputs = gr.Slider(minimum=0.01,
647
  maximum=1,
648
  value=0.1,
649
+ label="P uncertainty threshold (s)",
650
  step=0.01,
651
  info="Acceptable uncertainty for P picks expressed in std() seconds",
652
  interactive=True,
 
655
  S_thres_inputs = gr.Slider(minimum=0.01,
656
  maximum=1,
657
  value=0.2,
658
+ label="S uncertainty threshold (s)",
659
  step=0.01,
660
  info="Acceptable uncertainty for S picks expressed in std() seconds",
661
  interactive=True,
662
  )
663
  with gr.Column(scale=1):
664
+ upload = gr.File(label="Upload your waveform")
665
  with gr.Row():
666
  sampling_rate_inputs = gr.Slider(minimum=10,
667
  maximum=1000,
 
791
 
792
  with gr.Row():
793
  with gr.Column(scale=2):
794
+ azimuth_input = gr.Slider(minimum=-180, maximum=180, value=0, step=5, label="Azimuth", interactive=True)
795
+ elevation_input = gr.Slider(minimum=-90, maximum=90, value=30, step=5, label="Elevation", interactive=True)
796
+
797
+ with gr.Row():
798
+ interpolate_input = gr.Checkbox(label="Interpolate", info="Interpolate velocity model")
799
+ n_lat_input = gr.Slider(minimum=5, maximum=100, value=50, step=5, label="N lat", info='Number of Lat grid points', interactive=True)
800
+ n_lon_input = gr.Slider(minimum=5, maximum=100, value=50, step=5, label="N lon", info='Number of Lon grid points', interactive=True)
801
+ n_depth_input = gr.Slider(minimum=5, maximum=100, value=50, step=5, label="N depth", info='Number of Depth grid points', interactive=True)
802
+
803
  button = gr.Button("Look at 3D Velocities")
804
  outputs_vel_model = gr.Image(label="3D Velocity Model")
805
 
806
+ button.click(compute_velocity_model,
807
+ inputs=[azimuth_input, elevation_input,
808
+ interpolate_input, n_lat_input,
809
+ n_lon_input, n_depth_input],
810
+ outputs=[outputs_vel_model])
811
 
812
  demo.launch()
data/cached/CI_BAK_2019-07-04T17:33:54.617418Z.mseed ADDED
Binary file (143 kB). View file
 
data/cached/CI_BBR_2019-07-04T17:33:59.141726Z.mseed ADDED
Binary file (144 kB). View file
 
data/cached/CI_BFS_2019-07-04T17:33:58.033722Z.mseed ADDED
Binary file (140 kB). View file
 
data/cached/CI_CHF_2019-07-04T17:33:57.250415Z.mseed ADDED
Binary file (124 kB). View file
 
data/cached/CI_DEC_2019-07-04T17:33:59.448227Z.mseed ADDED
Binary file (136 kB). View file
 
data/cached/CI_DJJ_2019-07-04T17:34:01.956593Z.mseed ADDED
Binary file (118 kB). View file
 
data/cached/CI_MWC_2019-07-04T17:33:58.878567Z.mseed ADDED
Binary file (137 kB). View file
 
data/cached/CI_PASC_2019-07-04T17:33:59.995038Z.mseed ADDED
Binary file (273 kB). View file
 
data/cached/CI_Q0000_2019-07-04T17:33:59.542086Z.mseed ADDED
Binary file (72.2 kB). View file
 
data/cached/CI_Q0001_2019-07-04T17:33:59.848010Z.mseed ADDED
Binary file (81.9 kB). View file
 
data/cached/CI_Q0002_2019-07-04T17:34:02.161273Z.mseed ADDED
Binary file (80.4 kB). View file
 
data/cached/CI_Q0015_2019-07-04T17:33:58.949256Z.mseed ADDED
Binary file (71.2 kB). View file
 
data/cached/CI_Q0031_2019-07-04T17:34:01.066693Z.mseed ADDED
Binary file (68.1 kB). View file
 
data/cached/CI_Q0049_2019-07-04T17:33:59.323575Z.mseed ADDED
Binary file (76.3 kB). View file
 
data/cached/CI_Q0050_2019-07-04T17:34:03.767760Z.mseed ADDED
Binary file (84.5 kB). View file
 
data/cached/CI_Q0057_2019-07-04T17:34:00.984409Z.mseed ADDED
Binary file (72.7 kB). View file
 
data/cached/CI_Q0073_2019-07-04T17:34:03.226784Z.mseed ADDED
Binary file (66.6 kB). View file
 
data/cached/CI_Q0077_2019-07-04T17:34:03.800544Z.mseed ADDED
Binary file (59.9 kB). View file
 
data/cached/CI_Q0080_2019-07-04T17:34:01.906420Z.mseed ADDED
Binary file (60.9 kB). View file
 
data/cached/CI_SVD_2019-07-04T17:34:00.668795Z.mseed ADDED
Binary file (143 kB). View file
 
data/cached/CI_TUQ_2019-07-04T17:33:56.281687Z.mseed ADDED
Binary file (142 kB). View file
 
data/cached/CI_USC_2019-07-04T17:34:02.444223Z.mseed ADDED
Binary file (134 kB). View file
 
data/cached/CI_VES_2019-07-04T17:33:53.346003Z.mseed ADDED
Binary file (139 kB). View file
 
data/cached/CI_VOG_2019-07-04T17:33:58.215994Z.mseed ADDED
Binary file (134 kB). View file
 
data/cached/GS_COM_2000-09-03T08:36:34.034702Z.mseed ADDED
Binary file (33.3 kB). View file
 
data/cached/GS_FAI_2000-09-03T08:36:33.897223Z.mseed ADDED
Binary file (26.6 kB). View file
 
data/cached/GS_N10_2000-09-03T08:36:32.693278Z.mseed ADDED
Binary file (28.7 kB). View file
 
data/cached/GS_N20_2000-09-03T08:36:32.659822Z.mseed ADDED
Binary file (26.6 kB). View file
 
data/cached/GS_N30_2000-09-03T08:36:32.556386Z.mseed ADDED
Binary file (29.7 kB). View file
 
data/cached/GS_N40_2000-09-03T08:36:32.571201Z.mseed ADDED
Binary file (26.1 kB). View file
 
data/cached/GS_N50_2000-09-03T08:36:32.517254Z.mseed ADDED
Binary file (27.6 kB). View file
 
data/cached/GS_N60_2000-09-03T08:36:32.499849Z.mseed ADDED
Binary file (26.1 kB). View file
 
data/cached/GS_O10_2000-09-03T08:36:32.796101Z.mseed ADDED
Binary file (27.1 kB). View file
 
data/cached/GS_O50_2000-09-03T08:36:32.656750Z.mseed ADDED
Binary file (26.1 kB). View file
 
data/cached/GS_O60_2000-09-03T08:36:32.626776Z.mseed ADDED
Binary file (25.1 kB). View file
 
data/cached/GS_P10_2000-09-03T08:36:32.900030Z.mseed ADDED
Binary file (96.8 kB). View file
 
data/cached/GS_P20_2000-09-03T08:36:32.838345Z.mseed ADDED
Binary file (95.7 kB). View file
 
data/cached/GS_P30_2000-09-03T08:36:32.820809Z.mseed ADDED
Binary file (95.7 kB). View file
 
data/cached/GS_P40_2000-09-03T08:36:32.774233Z.mseed ADDED
Binary file (100 kB). View file
 
data/cached/GS_P60_2000-09-03T08:36:32.712966Z.mseed ADDED
Binary file (90.6 kB). View file
 
data/cached/GS_Q10_2000-09-03T08:36:33.032313Z.mseed ADDED
Binary file (42 kB). View file
 
data/cached/GS_Q20_2000-09-03T08:36:32.982191Z.mseed ADDED
Binary file (29.7 kB). View file
 
data/cached/GS_Q30_2000-09-03T08:36:32.962975Z.mseed ADDED
Binary file (29.2 kB). View file
 
data/cached/GS_Q40_2000-09-03T08:36:32.907654Z.mseed ADDED
Binary file (27.1 kB). View file
 
data/cached/GS_Q50_2000-09-03T08:36:32.896534Z.mseed ADDED
Binary file (27.1 kB). View file
 
data/cached/GS_Q60_2000-09-03T08:36:32.832100Z.mseed ADDED
Binary file (26.6 kB). View file
 
data/cached/GS_R10_2000-09-03T08:36:33.107196Z.mseed ADDED
Binary file (37.9 kB). View file
 
data/cached/GS_R20_2000-09-03T08:36:33.065548Z.mseed ADDED
Binary file (29.2 kB). View file