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
VectorAvailableDataSubsetter
- Usage
- Checks the available data for the entire vector
- Interface
- VectorAvailableDataSubsetter.java
- Example
- VectorAvailableDataSubsetterExample.java
- Ingredient
- externalVectorAvailableDataSubsetter
WaveformVectorProcess
- Usage
- Works on all seismograms in the vector at once
- Interface
- WaveformVectorProcess.java
- Example
- WaveformVectorProcessExample.java
- Ingredient
- externalWaveformVectorProcess