/bat

Backprojection Array Tool

Primary LanguagePython

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)