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']
Beispiel #5
0
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)