processes = [ waveform_reader, (plot_stream, { "source": "waveform_reader", "output_dir": "./output-images", "tag": "observed-image" }) ] # processes.append((fn, params)) chain = create_iterative_chain(processes, FunctionPE_class=SimpleFunctionPE) watcher = WatchDirectory(0) watcher_xml = WatchDirectory(1) downloadPE.name = "downloadPE" graph = WorkflowGraph() graph.add(downloadPE) graph.connect(downloadPE, 'output', watcher, "input") graph.connect(downloadPE, 'output', watcher_xml, "input") graph.connect(watcher, 'output', chain, "input") graph.connect(watcher_xml, 'output', xmlr, "input") # injectProv(graph,SeismoPE) # graph=attachProvenanceRecorderPE(graph,ProvenanceRecorderToFileBulk,username=os.environ['USER_NAME'],runId=os.environ['RUN_ID']) # Store to local path #ProvenancePE.PROV_PATH = os.environ['PROV_PATH'] # # Size of the provenance bulk before sent to storage or sensor
spec = fft(data, nfft) spec_ampl = sqrt(abs(multiply(spec, conjugate(spec)))) spec /= spec_ampl #Do we need to do some smoothing here? ret = real(ifft(spec, nfft)[:n]) st[trace].data = ret return st # Now it's time to create the graph for preprocessing the traces. from dispel4py.workflow_graph import WorkflowGraph streamProducer = SimpleFunctionPE(stream_producer) streamProducer.name = "streamProducer" sta = SimpleFunctionPE(readstats) preprocess_trace = create_iterative_chain([(decimate, { 'sps': 4 }), detrend, demean, (filter, { 'freqmin': 0.01, 'freqmax': 1., 'corners': 4, 'zerophase': False }), spectralwhitening]) graph = WorkflowGraph() graph.connect(streamProducer, 'output', preprocess_trace, 'input') graph.connect(preprocess_trace, 'output', sta, 'input')
graph = WorkflowGraph() graph.connect(streamProducer, 'output', readStats, 'input') # The following line can be only performed if streamProducer is # a StreamAndStatsProducer object graph.connect(streamProducer, 'output_stats', nameStation, 'input') def detrend(st): st.detrend('simple') return st detrendPE = SimpleFunctionPE(detrend) graph.connect(readStats, 'output', detrendPE, 'input') def read_samplingrate(data): st = data srate = st[0].stats['sampling_rate'] return srate samplingratePE = SimpleFunctionPE(read_samplingrate) samplingratePE.name = 'SamplingRate' graph.connect(detrendPE, 'output', samplingratePE, 'input') # Now execute the graph: # Simple command for executing this workflow from a terminal. # dispel4py simple Solution_Session_1.py -d '{ "streamProducer" : [ { "input" : "../20100501.fseed" } ] }'
waveformr = SimpleFunctionPE(waveform_reader) xmlr = SimpleFunctionPE(stationxml_reader) downloadPE = SimpleFunctionPE(download_data) processes=[waveform_reader,(plot_stream,{"source":"waveform_reader","output_dir": "./output-images","tag": "observed-image"})] #processes.append((fn, params)) chain = create_iterative_chain(processes, FunctionPE_class=SimpleFunctionPE) watcher = WatchDirectory(0) watcher_xml = WatchDirectory(1) downloadPE.name = "downloadPE" graph = WorkflowGraph() graph.add(downloadPE) graph.connect(downloadPE, 'output', watcher, "input") graph.connect(downloadPE, 'output', watcher_xml, "input") graph.connect(watcher, 'output', chain, "input") graph.connect(watcher_xml, 'output', xmlr, "input") #injectProv(graph,SeismoPE) #graph=attachProvenanceRecorderPE(graph,ProvenanceRecorderToFileBulk,username=os.environ['USER_NAME'],runId=os.environ['RUN_ID']) #Store to local path ProvenancePE.PROV_PATH=os.environ['PROV_PATH']
import numpy def xcorrelation(data, maxlag): st1 = data[1] st2 = data[2] tr1 = st1[0].data tr2 = st2[0].data tr1 = tr1/numpy.linalg.norm(tr1) tr2 = tr2/numpy.linalg.norm(tr2) return xcorr(tr1, tr2, maxlag, full_xcorr=True)[2] from dispel4py.workflow_graph import WorkflowGraph streamProducer1 = SimpleFunctionPE(stream_producer) streamProducer1.name = "SP1" streamProducer2 = SimpleFunctionPE(stream_producer) streamProducer2.name = "SP2" stats1 = SimpleFunctionPE(readstats) stats2 = SimpleFunctionPE(readstats) match_traces=MatchPE() xcorrelation_traces= SimpleFunctionPE(xcorrelation, {'maxlag':1000}) pipeline = [ (decimate, {'sps':4}), detrend, demean, (filter, {'freqmin':0.01, 'freqmax':1., 'corners':4, 'zerophase':False}), spectralwhitening, readstats] preprocess_trace_1 = create_iterative_chain(pipeline)