Implemented location routine NLLoc.

This commit is contained in:
Ludger Küperkoch 2015-10-27 15:26:25 +01:00
parent 55d3692f33
commit f8cbdf7ff0

View File

@ -5,8 +5,9 @@
import os import os
import argparse import argparse
import glob import glob
import subprocess
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from obspy.core import read from obspy.core import read
from pylot.core.read.data import Data from pylot.core.read.data import Data
from pylot.core.read.inputs import AutoPickParameter from pylot.core.read.inputs import AutoPickParameter
@ -71,12 +72,23 @@ def autoPyLoT(inputfile):
# get path to inventory or dataless-seed file with station meta data # get path to inventory or dataless-seed file with station meta data
invdir = parameter.getParam('invdir') invdir = parameter.getParam('invdir')
# get path and name of phase file
phasefile = parameter.getParam('phasefile') # get NLLoc-root path
# get path and name of NLLoc-control file nllocroot = parameter.getParam('nllocroot')
locfile = parameter.getparam('locfile') # get path to NLLoc executable
# path and pattern of NLLoc ttimes from location grid nllocbin = parameter.getParam('nllocbin')
ttpattern = parameter.getparam('ttpattern') nlloccall = '%s/NLLoc' % nllocbin
# get name of phase file
phasef = parameter.getParam('phasefile')
phasefile = '%s/%s' % (nllocroot, phasef)
# get name of NLLoc-control file
locf = parameter.getParam('locfile')
locfile = '%s/run/%s' % (nllocroot, locf)
# patter of NLLoc ttimes from location grid
ttpat = parameter.getParam('ttpatter')
ttpatter = '%s/time/%s' % (nllocroot, ttpat)
# patter of NLLoc-output file
nllocoutpatter = parameter.getParam('outpatter')
# multiple event processing # multiple event processing
@ -96,6 +108,27 @@ def autoPyLoT(inputfile):
# write phases to NLLoc-phase file # write phases to NLLoc-phase file
writephases(picks, 'NLLoc', phasefile) writephases(picks, 'NLLoc', phasefile)
##########################################################
# For locating the events we have to modify the NLLoc-control file!
# create comment line for NLLoc-control file
# NLLoc-output file
nllocout = '%s/loc/%s_%s' % (nllocroot, event, nllocoutpatter)
locfiles = 'LOCFILES %s NLLOC_OBS %s %s 0' % (phasefile, ttpatter, nllocout)
print ("Modifying NLLoc-control file %s ..." % locfile)
# modification of NLLoc-control file
filedata = None
nllfile = open(locfile, 'r')
filedata = nllfile.read()
# replace old command
filedata = filedata.replace('LOCFILES', locfiles)
nllfile = open(locfile, 'w')
nllfile.write(filedata)
nllfile.close()
# locate the event
subprocess.call([nlloccall, locfile])
##########################################################
print '------------------------------------------' print '------------------------------------------'
print '-----Finished event %s!-----' % event print '-----Finished event %s!-----' % event
print '------------------------------------------' print '------------------------------------------'
@ -114,8 +147,26 @@ def autoPyLoT(inputfile):
# write phases to NLLoc-phase file # write phases to NLLoc-phase file
writephases(picks, 'NLLoc', phasefile) writephases(picks, 'NLLoc', phasefile)
# create comment line for NLLoc-control file ##########################################################
locfiles = printf('LOCFILES %s NLLOC_OBS %s %s 0' % (phasefile, ttpattern, NLLocoutfile)) # For locating the events we have to modify the NLLoc-control file!
# create comment line for NLLoc-control file NLLoc-output file
nllocout = '%s/loc/%s_%s' % (nllocroot, parameter.getParam('eventID'), nllocoutpatter)
locfiles = 'LOCFILES %s NLLOC_OBS %s %s 0' % (phasefile, ttpatter, nllocout)
print ("Modifying NLLoc-control file %s ..." % locfile)
# modification of NLLoc-control file
filedata = None
nllfile = open(locfile, 'r')
filedata = nllfile.read()
# replace old command
filedata = filedata.replace('LOCFILES', locfiles)
nllfile = open(locfile, 'w')
nllfile.write(filedata)
nllfile.close()
# locate the event
subprocess.call([nlloccall, locfile])
##########################################################
print '------------------------------------------' print '------------------------------------------'