Types of external processors

This document lists all of the external types available in SOD. Each external type has a corresponding Java interface that must be implemented as part of its use. You can also see a simple implementation of each interface linked from each type. The simple implementations don't actually do any work, but they show the general structure an external of that type will need to take. Finally, each type has a link to its entry in the ingredient listing. This shows where you need to insert the external into your recipe.

To decide which external is right for your goals, go through the types listed here from the top. They're grouped by arm and then in their order inside of the arm. This means that they're also listed in the order that SOD applies them, so using one earlier in the list will allow SOD to do less work to get to it which means if it's rejecting things it'll save work overall and if not, at least it'll get to its job earlier.

Each type has a short description of the data available at that point in SOD's processing structure. If it includes the data you need to do you work, then implement that external.

Event Arm

OriginSubsetter

Usage
Operates on a single earthquake. This includes magnitude estimates, a location estimate, origin time and other basic information about an earthquake
Interface
OriginSubsetter.java
Example
OriginSubsetterExample.java
Ingredient
externalOriginSubsetter

Network Arm

Each successive item here has the information from the previous step. A station knows about its network and a channel about its station and so forth.

NetworkSubsetter

Usage
Makes decisions and works on a seismic network. That includes the time the network was active, its name, operator, code and description
Interface
NetworkSubsetter.java
Example
NetworkSubsetterExample.java
Ingredient
externalNetworkSubsetter

StationSubsetter

Usage
A station in a network. A grouping of recording instruments. It contains a location, the time the instruments were active, a code, name, comment and operator.
Interface
StationSubsetter.java
Example
StationSubsetterExample.java
Ingredient
externalStationSubsetter

ChannelSubsetter

Usage
All of the information in the network arm is available here. The channel provides its effective time, code, orientation, nominal sampling and has all of the information from its site, station, and network.
Interface
ChannelSubsetter.java
Example
ChannelSubsetterExample.java
Ingredient
externalChannelSubsetter

Waveform Arm

The waveform arm operates on the combination of the items coming out of the event and network arms. Therefore each item here has an event and a piece of network information. As with the network arm each succesive item has all of the information from its previous steps.

EventStationSubsetter

Usage
Works on the combination of an event and station. Existing subsetters check on things like the station's distance from the event and things like that.
Interface
EventStationSubsetter.java
Example
EventStationSubsetterExample.java
Ingredient
externalEventStationSubsetter

EventChannelSubsetter

Usage
Works on the combination of event and channel.
Interface
EventChannelSubsetter.java
Example
EventChannelSubsetterExample.java
Ingredient
externalEventChannelSubsetter

Request

Usage
Checks on the properties of a given request.
Interface
Request.java
Example
RequestExample.java
Ingredient
externalRequest

AvailableDataSubsetter

Usage
Checks the results of asking the server what data it has available for the generated request for acceptability.
Interface
AvailableDataSubsetter.java
Example
AvailableDataSubsetterExample.java
Ingredient
externalAvailableDataSubsetter

WaveformProcess

Usage
Operates on the returned seismograms.
Interface
WaveformProcess.java
Example
WaveformProcessExample.java
Ingredient
externalWaveformProcess

Waveform Vector Arm

The waveform vector arm takes the place of the waveform arm and still operates on the combination of the items coming out of the event and network arms. However instead of operating on a single channel at a time, it operates on a vector of channels. Therefore if you want to check on some property between the channels in the vector, this would be the place to look.

EventVectorSubsetter

Usage
Looks at the earthquake in combination with a vector of channels
Interface
EventVectorSubsetter.java
Example
EventVectorSubsetterExample.java
Ingredient
externalEventVectorSubsetter

VectorRequest

Usage
Checks on the requests for all channels in the vector
Interface
VectorRequest.java
Example
VectorRequestExample.java
Ingredient
externalVectorRequest

WaveformVectorProcess

Usage
Works on all seismograms in the vector at once
Interface
WaveformVectorProcess.java
Example
WaveformVectorProcessExample.java
Ingredient
externalWaveformVectorProcess