Spaces:
Runtime error
Runtime error
Added ray tracing to velocity modelling
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- Gradio_app.ipynb +0 -0
- app.py +103 -35
- data/cached/CI_BAK_2019-07-04T17:33:54.617418Z.mseed +0 -0
- data/cached/CI_BBR_2019-07-04T17:33:59.141726Z.mseed +0 -0
- data/cached/CI_BFS_2019-07-04T17:33:58.033722Z.mseed +0 -0
- data/cached/CI_CHF_2019-07-04T17:33:57.250415Z.mseed +0 -0
- data/cached/CI_DEC_2019-07-04T17:33:59.448227Z.mseed +0 -0
- data/cached/CI_DJJ_2019-07-04T17:34:01.956593Z.mseed +0 -0
- data/cached/CI_MWC_2019-07-04T17:33:58.878567Z.mseed +0 -0
- data/cached/CI_PASC_2019-07-04T17:33:59.995038Z.mseed +0 -0
- data/cached/CI_Q0000_2019-07-04T17:33:59.542086Z.mseed +0 -0
- data/cached/CI_Q0001_2019-07-04T17:33:59.848010Z.mseed +0 -0
- data/cached/CI_Q0002_2019-07-04T17:34:02.161273Z.mseed +0 -0
- data/cached/CI_Q0015_2019-07-04T17:33:58.949256Z.mseed +0 -0
- data/cached/CI_Q0031_2019-07-04T17:34:01.066693Z.mseed +0 -0
- data/cached/CI_Q0049_2019-07-04T17:33:59.323575Z.mseed +0 -0
- data/cached/CI_Q0050_2019-07-04T17:34:03.767760Z.mseed +0 -0
- data/cached/CI_Q0057_2019-07-04T17:34:00.984409Z.mseed +0 -0
- data/cached/CI_Q0073_2019-07-04T17:34:03.226784Z.mseed +0 -0
- data/cached/CI_Q0077_2019-07-04T17:34:03.800544Z.mseed +0 -0
- data/cached/CI_Q0080_2019-07-04T17:34:01.906420Z.mseed +0 -0
- data/cached/CI_SVD_2019-07-04T17:34:00.668795Z.mseed +0 -0
- data/cached/CI_TUQ_2019-07-04T17:33:56.281687Z.mseed +0 -0
- data/cached/CI_USC_2019-07-04T17:34:02.444223Z.mseed +0 -0
- data/cached/CI_VES_2019-07-04T17:33:53.346003Z.mseed +0 -0
- data/cached/CI_VOG_2019-07-04T17:33:58.215994Z.mseed +0 -0
- data/cached/GS_COM_2000-09-03T08:36:34.034702Z.mseed +0 -0
- data/cached/GS_FAI_2000-09-03T08:36:33.897223Z.mseed +0 -0
- data/cached/GS_N10_2000-09-03T08:36:32.693278Z.mseed +0 -0
- data/cached/GS_N20_2000-09-03T08:36:32.659822Z.mseed +0 -0
- data/cached/GS_N30_2000-09-03T08:36:32.556386Z.mseed +0 -0
- data/cached/GS_N40_2000-09-03T08:36:32.571201Z.mseed +0 -0
- data/cached/GS_N50_2000-09-03T08:36:32.517254Z.mseed +0 -0
- data/cached/GS_N60_2000-09-03T08:36:32.499849Z.mseed +0 -0
- data/cached/GS_O10_2000-09-03T08:36:32.796101Z.mseed +0 -0
- data/cached/GS_O50_2000-09-03T08:36:32.656750Z.mseed +0 -0
- data/cached/GS_O60_2000-09-03T08:36:32.626776Z.mseed +0 -0
- data/cached/GS_P10_2000-09-03T08:36:32.900030Z.mseed +0 -0
- data/cached/GS_P20_2000-09-03T08:36:32.838345Z.mseed +0 -0
- data/cached/GS_P30_2000-09-03T08:36:32.820809Z.mseed +0 -0
- data/cached/GS_P40_2000-09-03T08:36:32.774233Z.mseed +0 -0
- data/cached/GS_P60_2000-09-03T08:36:32.712966Z.mseed +0 -0
- data/cached/GS_Q10_2000-09-03T08:36:33.032313Z.mseed +0 -0
- data/cached/GS_Q20_2000-09-03T08:36:32.982191Z.mseed +0 -0
- data/cached/GS_Q30_2000-09-03T08:36:32.962975Z.mseed +0 -0
- data/cached/GS_Q40_2000-09-03T08:36:32.907654Z.mseed +0 -0
- data/cached/GS_Q50_2000-09-03T08:36:32.896534Z.mseed +0 -0
- data/cached/GS_Q60_2000-09-03T08:36:32.832100Z.mseed +0 -0
- data/cached/GS_R10_2000-09-03T08:36:33.107196Z.mseed +0 -0
- 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 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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=
|
519 |
-
|
520 |
-
|
521 |
# Plot the voxels
|
522 |
-
|
|
|
|
|
|
|
|
|
|
|
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
|
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
|
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="
|
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 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
|
|
|
|
|
|
|
|
|
|
737 |
button = gr.Button("Look at 3D Velocities")
|
738 |
outputs_vel_model = gr.Image(label="3D Velocity Model")
|
739 |
|
740 |
-
|
741 |
-
|
742 |
-
|
|
|
|
|
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
|
|