This tool is meant to do teleseismic backprojections, by forming virtual arrays from available global teleseismic stations.
DEPENDENCIES:
ObsPy: https://github.com/obspy/obspy/wiki
pyrocko/snuffler: https://github.com/pyrocko/pyrocko
GMT: http://gmt.soest.hawaii.edu
Manual and steps
- FOR GENERAL OPTIONS CHOOSE PARAMETERS IN GLOBAL.CONF
- EVENT DEPENDENT OPTIONS YOU CAN CHANGE IN THE CONFIG FILE OF THE EVENT IN THE EVENTFOLDER
PROCESSING STEPS:
STEP 1) PYTHON ARRAYTOOL.PY SEARCH: - Search for earthquakes and thier id's.
- Searchparameter need to be defined beforehand in GLOBAL.CONF
- POSSIBLE PARAMETER: - date from to
- magnitude
- catalog
- number of result
STEP 2) PYTHON ARRAYTOOL.PY CREATE EVENTID: - creates the event and eventfolder, use the id that given out in step 1
STEP 3) PYTHON ARRAYTOOL.PY GETSTATIONS EVENTFOLDERNAME: - search for stations in IRIS AND WEBDC WITH SEARCHPARAMETERS DEFINED IN GLOBAL.CONF
- POSSIBLE PARAMETER: - MINDISTANCE FROM EVENT
- MAXDISTANCE FROM EVENT
- NETWORKS FOR BLACKLIST
STEP 4) PYTHON ARRAYTOOL.PY GETDATA EVENTFOLDERNAME: - ACQUISITION OF ARCHIVED WAVEFORMDATA FROM IRIS AND EIDA SAVED AS SDS IN THE EVENTFOLDER
- COPY KEYFOLDERNAME FROM STEP 3 INTO GLOBAL.CONF !!!
- POSSIBLE PARAMETER: - KEYFOLDER
- DURATION OF WAVEFORMDATA
STEP 5) PYTHON ARRAYTOOL.PY GETMETA EVENTFOLDERNAME: - Download stations meta info (needs to be improved)
STEP 6) PYTHON ARRAYTOOL.PY PLOTSTATIONS EVENTFOLDERNAME: Plot Stationsmap
STEP 7) PYTHON ARRAYTOOL.PY CLUSTER EVENTFOLDERNAME: - clustering of stations to arrays (gives you arrayconfiguration + overview plot)
- CONFIGURATION PARAMETER IN THE EVENT CONFIG FILE (eventname.config)
- POSSIBLE PARAMETER: - CLUSTERMETHOD (DISTANCE ZONING/ KMEANS)
DISTANCE ZONING:
beginMinStationDistance = 1
endMinStationDistance=59.9
beginMaxStationDistance=60
endMaxStationDistance=90
KMEANS:
maxCluster = 2 (amount of clusters you would like to have at the end of clustering)
minStationAroundInitialCluster = 5 (minimum station around initial cluster center to be one inital cluster)
initialstationdistance = 10 (stations must be 10 degree around initial cluster center)
cutoff = 30 (if no final result for kmean then run only 30 times and take last result)
runs = 5 (repeatings for kmean clustering to get best result)
centroidminDistance = 20 (minimum distance of initial centroids,UNIT IN DEGREE)
comparedelta = 2
stationdistance = 10 (maximum distance from station to cluster center)
minClusterStation = 10 (minimum stations per cluster)
STEP 8) PYTHON ARRAYTOOL.PY PROCESS EVENTFOLDERNAME: - ARRAYPROCESSING OF THE EVENT
- CONFIGURATION PARAMETER IN THE EVENT CONFIG FILE
- You will be asked for each array to manually pick the onset of the P-wave at the array centre in seconds
Snuffler is needed for this
Parameters:
tttopt = -ph P (choose phase to calculate traveltimes)
depths=0,1,5 (how many depth to calculate depth lower, depth higher, depth step)
dimx = 40 (x dimension in points of the grid area)
dimy = 40 (y dimension in points of the grid area)
minDist = 30 (minimum distance between hypocenter and stations to be used)
maxDist = 95 (maximum distance between hypocenter and stations to be used)
step = 5 (sliding time window shift)
winlen = 30 (length of sliding time window )
forerun = 200 (length in seconds, timewindow before processing)
duration = 500 (length in seconds, timewindow for processing)
security = 60 (length in seconds, timewindow before and after forerun and duration)
gridspacing = 0.2 (gridspacing in degree, distance between gridpoints in processing area)
ttphase=P (traveltime phase)
export_unfiltered=false (export option for waveform data, raw waveforms)
export_filtered=false (export option for waveform data, filtered waveforms)
export_resampled=false (export option for waveform data, filtered+resampled waveforms)
new_frequence = 20 (working sampling frequency, all waveform will be converted to this sampling frequency)
ncore = 2 (number of processes for processing, max = number of timesteps)
fm = 1 (usage of focal mechanism 1=True, 0=False, must be defined in origin file of the event)
xcorr=1 (usage of crosscorrelation per array to get traveltime correction for array)
autoxcorrcorrectur = 0 (parameter for crosscorrelation, influence time shift of reference station, manual picking for control)
xcorrtreshold = 0.6 (treshold for crosscorrelation, station with lower then treshold will not be used in processing)
plotcopy=plot1,plot2,plot3,plot4,rerun (COMMA SEPERATED LIST OF SCRIPT WHICH SHOULD BE COPIED FROM SKELETON TO EVENTFOLDER)
plot1 = semblance-plot.sh (SCRIPT TO PLOT EVERY TIMESTEP OF PROCESSING, FOUND IN SKELETON)
plot2 = summary-plot.sh (SCRIPT TO PLOT EVENT SUMMARY, FOUND IN SKELETON)
plot3 = plot-cluster.sh (SCRIPT TO PLOT ALL ARRAYS OF EVENT, FOUND IN SKELETON)
rerun= rerun_sum.py (SCRIPT TO REWRITE DURATION OF EVENT FOR SUMMARY PLOT)
plot4 = platebound.gmt (GMT FILE NEEDED BY PLOTSCRIPT TO PLOT PLATEBOUNDERIES IN MAP)
networks=r0 (COMMA SEPERATED LIST OF STATIONARRAYS YOU WANT TO USE FOR PROCESSING)
r0=BK.HUMO.00.BHZ|BK.WDC.00.BHZ|CC.ASBU..BHZ|CC.CIHL..BHZ (EXAMPLE LIST OF ARRAYDEFINITION)
R1= GR.*.BHZ| BK.WDC.*.BHZ (EXAMPLE LIST OF ARRAYDEFINITION)
beam = delaysum (SWITCH VARIABLE TO DECIDE WHICH BEAMFORMING METHOD YOU WANT TO USE, OPTIONS: DELAYSUM OR CAPON (IMPLEMENTED BUT NOT WORKING CORRECTLY))
filterswitch=2 (SWITCH VARIABLE TO DECIDE WHICH FILTER TO USE IN PROCESSING OPTIONS: 1 BANDPASS, 2 LOWPASS, 3 HIGHPASS)
#bp butterworth
flo = 0.4 (low cut corner frequency)
fhi = 3 ( high cut corner frequency)
ns = 3 ( number of filter sections)
zph = false (TRUE -> zero phase filter)
#lowpass butterworth
l_fc = 1.5 (low cut corner frequency)
l_ns = 4 ( number of filter sections)
l_zph = false (TRUE -> zero phase filter)
#highpass butterworth
h_fc = 2 (low cut corner frequency)
h_ns = 4 ( number of filter sections)
h_zph = false ( TRUE -> zero phase filter)
UTILITY COMMANDS:
PYTHON ARRAYTOOL.PY LIST: - Lists all already created events (CONFIG AND ORIG FILE MUST EXIST) (OPTIONAL, JUST TO SEE WHICH EVENTS ARE AVAILABLE TO PROCESS)