pylot/pylot/core/active/control_script.py

130 lines
4.6 KiB
Python
Executable File

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
from obspy import read
from obspy import Stream
from obspy import Trace
from datetime import datetime
import numpy as np
from pylot.core.active import surveyUtils
from pylot.core.active import seismicshot
from pylot.core.active import activeSeismoPick
from pylot.core.active import fmtomoUtils
from pylot.core.active import seismicArrayPreparation
# reload(seismicshot)
# reload(surveyUtils)
# reload(activeSeismoPick)
#####################################################################################
# parameter definitions:#############################################################
cutwindow = (0, 0.15) # cut out a part of the trace [seconds]
tmovwind = 0.1 # size of the moving window
windowsize = (30, 0) # windowsize for AIC picker (indices around HOS picks [time/sampling rate] !!!)
folm = 0.6 # fraction of local maximum for threshold picker
tsignal = 0.03
tgap = 0.0007
nproc = 1
vmin = 333
vmax = 5500
HosAic = 'aic' # can be 'hos' or 'aic'
rockeskyll = False
GZB = True
bb1 = False
# Simulation parameters #############################################################
simulation = True
niter = 4
bottomBoundary = -50.0
topBoundary = 5.0
nPointsPropgrid = (100, 100, 100)
nPointsVgrid = (30, 30, 30)
cushionfactor = 0.1
interpolationMethod = 'linear'
mygrid = '../mygrid.in'
cwd = os.getcwd()
simuldir = 'fmtomo_simulation'
pickdir = 'picks'
fmtomopath = '/rscratch/minos22/marcel/flachseismik/fmtomo/GZB_clean/'
######################################################################################
######################################################################################
if rockeskyll == True:
receiverfile = "Geophone_interpoliert_rockes"
sourcefile = "Schusspunkte_rockes"
obsdir = "/rscratch/minos22/marcel/flachseismik/rockeskyll_200615_270615/"
filename = 'survey_rockes.pickle'
elif GZB == True:
receiverfile = "Geophone_interpoliert_GZB"
sourcefile = "Schusspunkte_GZB"
#sourcefile = "Schusspunkte_GZB_1shot"
obsdir = "/rscratch/minos22/marcel/flachseismik/GZB_26_06_15_01/"
filename = 'survey_GZB.pickle'
elif bb1 == True:
receiverfile = "Geophone_Marcel"
sourcefile = "Schusspunkte_Marcel"
obsdir = "/rscratch/minos22/marcel/flachseismik/bachelor_bausenberg/"
filename = 'survey_bb1.pickle'
######################################################################################
starttime = datetime.now()
print('\n--------------------Starting Script at %s -------------------\n' %starttime.time())
print('directory: %s\nsourcefile: %s\nreceiverfile: %s\nsurvey output filename: %s\n' %(obsdir, sourcefile, receiverfile, filename))
if HosAic == 'aic': print('picking with AIC\n')
if HosAic == 'hos': print('picking with HOS\n')
survey = activeSeismoPick.Survey(obsdir, os.path.join(obsdir, sourcefile),
os.path.join(obsdir, receiverfile), useDefaultParas = False)
survey.setParametersForAllShots(cutwindow, tmovwind, tsignal, tgap)
surveyUtils.setDynamicFittedSNR(survey.getShotDict())
#surveyUtils.setConstantSNR(survey.getShotDict(), 0)
survey.setArtificialPick(0, 0) # artificial pick at source origin
print('\nDone after %s seconds!\n------------------------------------------------------------------------------\n' % (datetime.now() - starttime).seconds)
survey.pickAllShots(vmin, vmax, folm, HosAic, windowsize, cores = nproc)
survey.cleanBySPE(maxSPE = 0.0075)
survey.saveSurvey(filename)
print('\n--- Finished picking ---')
print'Elapsed time:', datetime.now()-starttime
######################################################################################
if simulation == False:
sys.exit()
survey = activeSeismoPick.Survey.from_pickle(filename)
if not os.path.isdir(os.path.join(cwd, simuldir)):
err = os.mkdir(os.path.join(cwd, simuldir))
picks = os.path.join(simuldir, pickdir)
if not os.path.isdir(os.path.join(cwd, picks)):
err2 = os.mkdir(os.path.join(cwd, picks))
survey.exportFMTOMO(picks)
####### hard coded
os.chdir(simuldir)
survey.loadArray(obsdir, 'Geophone_eingemessen_GZB', 'Schusspunkte_GZB')
survey.seisArray.generateFMTOMOinputFromArray(nPointsPropgrid, nPointsVgrid,
(bottomBoundary, topBoundary), cushionfactor,
interpolationMethod, customgrid = mygrid,
writeVTK = False)
os.chdir(cwd)
####### test
tomo = fmtomoUtils.Tomo3d(fmtomopath, simuldir)
tomo.runTOMO3D(nproc, niter)
print('\n--- Finished script ---')
print'Elapsed time:', datetime.now()-starttime