Skip to content

A little helper to estimate the depth of shallow earthquakes and facilitate the work flow

License

Notifications You must be signed in to change notification settings

pinarbap/abedeto

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Array Beam Depth Tool

Prerequisites:

If you don't have appropriate Green's function databases you also need to install the modelling codes as described in the Fomosto tutorial in the Creating a new Green's function store paragraph.

Download and Installation

git clone https://github.com/HerrMuellerluedenscheid/abedeto.git
cd abedeto
pip install --no-deps .

Processing

In general: If you need help add a --help to the command call in order to get additional information.

Initialize a project:

abedeto init <catalog>

where <catalog> is a Pyrocko compatible <catalog> of one or several events. Have a look at the Iquique example to see an example of such a file. This will create project folders for each event within the catalog. Change into one of the created project directories and run

abedeto download

to start querying IRIS, Geofon and BGR data centers for available array data. Optionally, the frequency response information can be downloaded, too by appending --get-responses.

Abedeto can do beamforming. Run

abedeto beam

This step is done based on synthetic back-azimuth and slownesses calculated using Pyrocko's cake module. In order to verify correct delay times used to stack traces use --plot. After processing finished, there is a file beam_shifts.png inside each of the array_data sub-folders showing the applied delay times. If, in the previous step, the response information have been downloaded, too, you can exploit them now. Append a --restitute in order to deconvolve the transfer function before stacking traces.

With

abedeto snuffle

you can scrutinize waveforms, beams and make use of many other features provided by Snuffler.

Also, abedeto can propose suitable Green's function stores based on Crust2.0 profiles:

abedeto stores

Set the depth range to test by appending

    --depths z_min:z_max:z_delta

to the previous command. Values are to be given in kilometers. Default is 0:15:1 km. The proposed stores' config files contain a source and a receiver site model. These are combinations of the crust2 models at the top and beneath the AK135 model. You can modify those models as you please. abedeto will set some parameters depending on the penetration depth of the defined phase. E.g. it will remove everything beneath the turning point of the P ray path (plus 10 %) from the earth model and set a narrow slowness taper (see sub-folder: stores/'SOME\_STORE\_ID'/extra/qseis) depending on the P arrival. This will decrease computational effort a lot. After that you can process them as it is explained in the Fomosto tutorial. Most likely, you want to run the commands

fomosto ttt         # Interpolate travel time tables
fomosto build       # Start generating data bases

Having finished this, run

abedeto process [options]

to generate figures which might help to judge about the depth of the event. They are created within the project directory in PNG format. Given that you restituted the traces when creating the beams, you have to define --quantity=restituted. This is not done automatically, yet.

Further Information on Applications

You can specify the array-id you are going to process using e.g. --array-id=GERES.

Change the y-position of the beam (blue traces) using e.g. --depth=1.6. This will plot the beam at the y-axis intercept coinciding with a depth of 1.6 km.

The number of synthetic traces to display can be modified using the --depths option. E.g. --depths=0.2:12:0.2 will draw synthetic traces of sources between 0.2 and 12 km depths with an increment 0.2 km.

Given that you have a GF store stored in a different location other than in the stores subdirectory of your project, you can specify that location: --store-superdirs=[comma separated list of directories]. Furthermore, if the store is not given the default name which is "ArrayID-xx-yy" (xx and yy are Crust2.0 tile IDs) the specific store to use can be defined: --store=STORE_ID.

Synthetic and recorded traces might not be well aligned. This can be corrected by appending a --correction=[some_seconds] to the last command. Notice that the dashed line indicating the synthetic onset might also be shifted with respect to the synthetic traces. The reason for this is that the onset calculation is (at the moment) only performed using the source site model.

In order to change the visible time range, define a time window with respect to the synthetic onset. E.g: --zoom=-2.0:12 will plot traces within a time window of 14 seconds length, starting 2 seconds before the synthetic P phase arrival.

All traces are normalized using their minimum/maximum amplitude within the visible time-range. Additionally, a gain factor can be applied using --gain=[X] (X is a float).

Filters are adjustable: e.g. --filter=1.1:9 will apply a band-pass filter with corner frequencies between 1.1 and 9.0 Hz.

Currently, no restitution is performed. However, the quantity can be changed using --quantity [displacement|velocity] which either integrates the beam or differentiates the synthetic traces, respectively. It is possible to retrieve response functions for each trace using --get-responses. These can be found afterwards in the underlying data directory and can be used to restitute, manually.

Some rudimentary information can be added as a caption to the figure by settings the --auto-caption flag.

Running the init command on events where the name is not specified will fail. In this case a name needs to be specified, manually:

abedeto init catalog.pf --name

In order to avoid ambiguity between projects this works only when one event is present in the given file. By default, existing directories will not be overwritten unless appending --force to the command.

For quicker feedback --show will visualize all results right away.

Finally, the complete line to produce a meaningfull image might look like:

abedeto process --array-id AliceSprings --depth 0.2 --depths=0.2:12:0.2 --quantity displacement --filter 0.9:9 --gain 3. --out-filename="%(array-id)s_%(quantity)s" --correction=0.4 --zoom=-2:12 --title="%(array-id)s" --show --auto-caption 

General Information

The hierarchy within the directory looks as follows::

ProjectDir/				# Project directory
    |--array_data
       |--"SOME_ID1"		# Some Array ID
       |--"SOME_ID2"
           |--array_center.pf	# Array center location used for beam forming
           |--beam.mseed		# Beam
           |--stations.pf		# Station meta information
           |--traces.mseed		# Raw traces
       :
       :

    |--event.pf			# Event file
    |--store-mapping		# Maps store ids to array ids
    |--request.yaml			# Information concerning data selection
    |--stores
       |--StoreID1			# Green's function stores
       |--StoreID2			# The name combines the array ID and 
       :				# the ID of the Crust2x2 tile at the
       :				# source and receiver site

Notes on building stores

Handling number of layers (lmax) defined too small

Especially at large distances, the ray's turning point can be deep resulting in an earth-model (see store's config file) of great depth. In this case QSeis will fail with the exception mentioned above. In this case you can increase the parameter lmax in you QSeis' installation's qsglobal.h, recompile and try again.

Citation of data

I recommend having a look at the IRIS Citations and FDSN Citations section for acknowledgement.

About

A little helper to estimate the depth of shallow earthquakes and facilitate the work flow

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%