Detailed Definition¶
This section details what SEIS-PROV
is, what records are part of it, and
how these records are defined.
What PROV Records are Considered Part of SEIS-PROV?¶
SEIS-PROV
is a domain-specific extension of W3C PROV and thus all the
capabilities of W3C PROV can be used. Furthermore a SEIS-PROV
document must
also be a valid W3C PROV document.
It can be understood as an additional set of constraints on top of W3C PROV.
These constraints are currently enforced per record and there are four
possibilities for a record to be considered part of SEIS-PROV
:
- An agent with a prov:type equal to prov:SoftwareAgent and an id
under the
SEIS-PROV
namespace. - An agent with a prov:type equal to prov:Person and an id under the
SEIS-PROV
namespace. - An entity with a prov:type and id under the
SEIS-PROV
namespace. - An activity with a prov:type and id under the
SEIS-PROV
namespace.
All other records must just be valid according to the W3C PROV specification.
It is forbidden to use an identifier under the SEIS-PROV
namespace for any
other record.
As soon as a record is considered part of SEIS-PROV
it must fulfill the
additional constraints detailed in the following.
SEIS-PROV IDs¶
All prov:id
‘s living in the SEIS-PROV
namespace must follow a certain
pattern - they have to validate against this regular expression:
^sp\d{3,5}_[a-z]{2}_[a-z0-9]{7,12}$
Examples are:
sp001_wf_f84fb9a
sp027_bs_ea78b46
An id thus consists of three parts delimited by underscores with the goal of attaining a fairly short but still slightly descriptive identifier:
- A 3 to 5 digit zero padded number prefixed with
sp
. This is intended to further illustrate the sequence of processing steps and events.001
for example is the first step in a processing chain, whereas017
is the seventeenth step. This is not enforced anywhere but nice to have so users are encouraged to adopt this. In case there is no inherent order to things, feel free to use000
. Thesp
prefix is needed to provide a valid qualified name attribute according the XML specification and stands forSEIS-PROV
. - A two letter code depending on the type of entity or activity. This
is enforced and part of the
SEIS-PROV
definition. Please see the definition of each node for the corresponding two letter code. - A 7 to 12 letter lowercase alphanumeric hash to ensure uniqueness of ids.
Agents¶
One is free to use any agent as long as they are valid according to the W3C
PROV specification. If an agent is under the SEIS-PROV
namespace, a couple
of additional constraints apply. These are intended to enforce a certain
minimum amount of information.
Software Agent¶
This agent describes the software used for a particular task. It requires some attributes to be able to uniquely determine the used software including the version. If you use the development version of a particular software you should reflect that in the version number.
- Properties
Name Value prov:id
software_agent
prov:label
*
Two letter ID code: sa
- Required Attributes
Name Type Description software_name xsd:string
The name of the software. software_version xsd:string
The version number of the used software. website xsd:anyURI
The website where one can find further information. - Optional Attributes
Name Type Description doi xsd:string
The digital object identifier for the software.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "agent",
"name": "software_agent",
"two_letter_code": "sa",
"label": "*",
"description": "This agent describes the software used for a particular task. It requires some attributes to be able to uniquely determine the used software including the version. If you use the development version of a particular software you should reflect that in the version number.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "software_name",
"types": ["xsd:string"],
"description": "The name of the software.",
"required": true,
"example_value": "ObsPy"
},
{
"name": "software_version",
"types": ["xsd:string"],
"description": "The version number of the used software.",
"required": true,
"example_value": "0.10.2"
},
{
"name": "website",
"types": ["xsd:anyURI"],
"description": "The website where one can find further information.",
"required": true,
"example_value": "http://obspy.org"
},
{
"name": "doi",
"types": ["xsd:string"],
"pattern": "(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?![%\"#? ])\\S)+)",
"description": "The digital object identifier for the software.",
"required": false,
"example_value": "10.5281/zenodo.17641"
}
]
}
Minimal Example
A concrete software_agent
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid software_agent
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.agent("seis_prov:sp001_sa_3880d70", other_attributes=((
("prov:label", "ObsPy"),
("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "SoftwareAgent")),
("seis_prov:software_name", "ObsPy"),
("seis_prov:software_version", "0.10.2"),
("seis_prov:website", prov.model.Literal(
'http://obspy.org',
prov.constants.XSD_ANYURI))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:softwareAgent prov:id="seis_prov:sp001_sa_3880d70">
<prov:label>ObsPy</prov:label>
<seis_prov:software_name>ObsPy</seis_prov:software_name>
<seis_prov:software_version>0.10.2</seis_prov:software_version>
<seis_prov:website xsi:type="xsd:anyURI">http://obspy.org</seis_prov:website>
</prov:softwareAgent>
</prov:document>
In the PROV-JSON serialization.
{
"agent": {
"seis_prov:sp001_sa_3880d70": {
"prov:label": "ObsPy",
"prov:type": {
"$": "prov:SoftwareAgent",
"type": "prov:QUALIFIED_NAME"
},
"seis_prov:software_name": "ObsPy",
"seis_prov:software_version": "0.10.2",
"seis_prov:website": {
"$": "http://obspy.org",
"type": "xsd:anyURI"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
agent(seis_prov:sp001_sa_3880d70, [seis_prov:website="http://obspy.org" %% xsd:anyURI, prov:type='prov:SoftwareAgent', prov:label="ObsPy", seis_prov:software_version="0.10.2", seis_prov:software_name="ObsPy"])
endDocument
Full Example
A concrete software_agent
node example is illustrated here as a graph, in code, and in various representations. This is a full software_agent
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.agent("seis_prov:sp001_sa_63fd9d1", other_attributes=((
("prov:label", "ObsPy"),
("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "SoftwareAgent")),
("seis_prov:software_name", "ObsPy"),
("seis_prov:software_version", "0.10.2"),
("seis_prov:website", prov.model.Literal(
'http://obspy.org',
prov.constants.XSD_ANYURI)),
("seis_prov:doi", "10.5281/zenodo.17641")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:softwareAgent prov:id="seis_prov:sp001_sa_63fd9d1">
<prov:label>ObsPy</prov:label>
<seis_prov:doi>10.5281/zenodo.17641</seis_prov:doi>
<seis_prov:software_name>ObsPy</seis_prov:software_name>
<seis_prov:software_version>0.10.2</seis_prov:software_version>
<seis_prov:website xsi:type="xsd:anyURI">http://obspy.org</seis_prov:website>
</prov:softwareAgent>
</prov:document>
In the PROV-JSON serialization.
{
"agent": {
"seis_prov:sp001_sa_63fd9d1": {
"prov:label": "ObsPy",
"prov:type": {
"$": "prov:SoftwareAgent",
"type": "prov:QUALIFIED_NAME"
},
"seis_prov:doi": "10.5281/zenodo.17641",
"seis_prov:software_name": "ObsPy",
"seis_prov:software_version": "0.10.2",
"seis_prov:website": {
"$": "http://obspy.org",
"type": "xsd:anyURI"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
agent(seis_prov:sp001_sa_3880d70, [seis_prov:website="http://obspy.org" %% xsd:anyURI, prov:type='prov:SoftwareAgent', prov:label="ObsPy", seis_prov:software_version="0.10.2", seis_prov:software_name="ObsPy"])
endDocument
Person¶
A person is an agent either denoting who is responsible for a certain activity (wasAssociatedWith
) or who is responsible for the actions of another agent (actedOnBehalfOf
). This is useful to state who performed a particular task. A person in the SEIS-PROV
namespace must have a name and can have an email address. A person can also have any number of additional attributes in the SEIS-PROV
namespace to describe it in more detail.
- Properties
Name Value prov:id
person
prov:label
*
Two letter ID code: pp
- Required Attributes
Name Type Description name xsd:string
The name of the person. - Optional Attributes
Name Type Description email xsd:string
The email address of the person.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "agent",
"name": "person",
"two_letter_code": "pp",
"label": "*",
"description": "A person is an agent either denoting who is responsible for a certain activity (``wasAssociatedWith``) or who is responsible for the actions of another agent (``actedOnBehalfOf``). This is useful to state who performed a particular task. A person in the ``SEIS-PROV`` namespace must have a name and can have an email address. A person can also have any number of additional attributes in the ``SEIS-PROV`` namespace to describe it in more detail.",
"other_seis_prov_attributes_allowed": true,
"attributes": [
{
"name": "name",
"types": ["xsd:string"],
"description": "The name of the person.",
"required": true,
"example_value": "Susanna Musterfrau"
},
{
"name": "email",
"types": ["xsd:string"],
"description": "The email address of the person.",
"pattern": "[^@]+@[^@]+\\.[^@]+",
"required": false,
"example_value": "susanna.musterfrau@email.com"
}
]
}
Minimal Example
A concrete person
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid person
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.agent("seis_prov:sp001_pp_2458e1f", other_attributes=((
("prov:label", "Susanna Musterfrau"),
("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "Person")),
("seis_prov:name", "Susanna Musterfrau")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:person prov:id="seis_prov:sp001_pp_2458e1f">
<prov:label>Susanna Musterfrau</prov:label>
<seis_prov:name>Susanna Musterfrau</seis_prov:name>
</prov:person>
</prov:document>
In the PROV-JSON serialization.
{
"agent": {
"seis_prov:sp001_pp_2458e1f": {
"prov:label": "Susanna Musterfrau",
"prov:type": {
"$": "prov:Person",
"type": "prov:QUALIFIED_NAME"
},
"seis_prov:name": "Susanna Musterfrau"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
agent(seis_prov:sp001_pp_2458e1f, [seis_prov:name="Susanna Musterfrau", prov:type='prov:Person', prov:label="Susanna Musterfrau"])
endDocument
Full Example
A concrete person
node example is illustrated here as a graph, in code, and in various representations. This is a full person
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.agent("seis_prov:sp001_pp_18a80fa", other_attributes=((
("prov:label", "Susanna Musterfrau"),
("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "Person")),
("seis_prov:name", "Susanna Musterfrau"),
("seis_prov:email", "susanna.musterfrau@email.com")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:person prov:id="seis_prov:sp001_pp_18a80fa">
<prov:label>Susanna Musterfrau</prov:label>
<seis_prov:email>susanna.musterfrau@email.com</seis_prov:email>
<seis_prov:name>Susanna Musterfrau</seis_prov:name>
</prov:person>
</prov:document>
In the PROV-JSON serialization.
{
"agent": {
"seis_prov:sp001_pp_18a80fa": {
"prov:label": "Susanna Musterfrau",
"prov:type": {
"$": "prov:Person",
"type": "prov:QUALIFIED_NAME"
},
"seis_prov:email": "susanna.musterfrau@email.com",
"seis_prov:name": "Susanna Musterfrau"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
agent(seis_prov:sp001_pp_2458e1f, [seis_prov:name="Susanna Musterfrau", prov:type='prov:Person', prov:label="Susanna Musterfrau"])
endDocument
Organization¶
An agent denoting an organization. This is useful to describe who is associated with what organization (wasAssociatedWith
). An organization can also have any number of additional attributes in the SEIS-PROV
namespace to describe it in more detail.
- Properties
Name Value prov:id
organization
prov:label
*
Two letter ID code: og
- Required Attributes
Name Type Description name xsd:string
The name of the organization. - Optional Attributes
Name Type Description website xsd:anyURI
The website of the organization.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "agent",
"name": "organization",
"two_letter_code": "og",
"label": "*",
"description": "An agent denoting an organization. This is useful to describe who is associated with what organization (``wasAssociatedWith``). An organization can also have any number of additional attributes in the ``SEIS-PROV`` namespace to describe it in more detail.",
"other_seis_prov_attributes_allowed": true,
"attributes": [
{
"name": "name",
"types": ["xsd:string"],
"description": "The name of the organization.",
"required": true,
"example_value": "Example Organization"
},
{
"name": "website",
"types": ["xsd:anyURI"],
"description": "The website of the organization.",
"required": false,
"example_value": "http://example.com"
}
]
}
Minimal Example
A concrete organization
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid organization
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.agent("seis_prov:sp001_og_f06b02d", other_attributes=((
("prov:label", "Example Organization"),
("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "Organization")),
("seis_prov:name", "Example Organization")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:organization prov:id="seis_prov:sp001_og_f06b02d">
<prov:label>Example Organization</prov:label>
<seis_prov:name>Example Organization</seis_prov:name>
</prov:organization>
</prov:document>
In the PROV-JSON serialization.
{
"agent": {
"seis_prov:sp001_og_f06b02d": {
"prov:label": "Example Organization",
"prov:type": {
"$": "prov:Organization",
"type": "prov:QUALIFIED_NAME"
},
"seis_prov:name": "Example Organization"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
agent(seis_prov:sp001_og_f06b02d, [seis_prov:name="Example Organization", prov:type='prov:Organization', prov:label="Example Organization"])
endDocument
Full Example
A concrete organization
node example is illustrated here as a graph, in code, and in various representations. This is a full organization
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.agent("seis_prov:sp001_og_0773673", other_attributes=((
("prov:label", "Example Organization"),
("prov:type", prov.identifier.QualifiedName(prov.constants.PROV, "Organization")),
("seis_prov:name", "Example Organization"),
("seis_prov:website", prov.model.Literal(
'http://example.com',
prov.constants.XSD_ANYURI))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:organization prov:id="seis_prov:sp001_og_0773673">
<prov:label>Example Organization</prov:label>
<seis_prov:name>Example Organization</seis_prov:name>
<seis_prov:website xsi:type="xsd:anyURI">http://example.com</seis_prov:website>
</prov:organization>
</prov:document>
In the PROV-JSON serialization.
{
"agent": {
"seis_prov:sp001_og_0773673": {
"prov:label": "Example Organization",
"prov:type": {
"$": "prov:Organization",
"type": "prov:QUALIFIED_NAME"
},
"seis_prov:name": "Example Organization",
"seis_prov:website": {
"$": "http://example.com",
"type": "xsd:anyURI"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
agent(seis_prov:sp001_og_f06b02d, [seis_prov:name="Example Organization", prov:type='prov:Organization', prov:label="Example Organization"])
endDocument
Entities¶
SEIS-PROV
determines the type of an entity via the prov:type
attribute.
The following entities are currently available. Further types will be added as
requested by the community.
Waveform Trace¶
Represents a continuous, equally sampled observed or synthetic waveform trace. Most attributes are optional and can be used to describe either very detailed or fairly general provenance information.
- Properties
Name Value prov:id
waveform_trace
prov:label
Waveform Trace
Two letter ID code: wf
- Required Attributes
- None
- Optional Attributes
Name Type Description seed_id xsd:string
The SEED id of the recording station. description xsd:string
An optional description of the waveform trace. This has no technical meaning but serves to make the provenance documents easier to understand. component xsd:string
The component of the recording. Many algorithms require a specific component and this attribute enables the description of these algorithms without using a specific SEED id. start_time xsd:dateTime
The time of the first sample in UTC. number_of_samples xsd:positiveInteger
The number of samples in the waveform trace. sampling_rate xsd:double
The sampling rate of the data. units xsd:string
Units of the waveform data in a common abbreviation, e.g. m, m/s, nm/s^2, ... azimuth xsd:double
Azimuth of the component in degrees from north, clockwise, same definition as in StationXML. dip xsd:double
Dip of the component in degrees, down from horizontal, same definition as in StationXML.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "entity",
"name": "waveform_trace",
"two_letter_code": "wf",
"label": "Waveform Trace",
"description": "Represents a continuous, equally sampled observed or synthetic waveform trace. Most attributes are optional and can be used to describe either very detailed or fairly general provenance information.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "seed_id",
"types": ["xsd:string"],
"pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
"description": "The SEED id of the recording station.",
"required": false,
"example_value": "BW.FURT..EHZ"
},
{
"name": "description",
"types": ["xsd:string"],
"description": "An optional description of the waveform trace. This has no technical meaning but serves to make the provenance documents easier to understand.",
"required": false,
"example_value": "Synthetic Data"
},
{
"name": "component",
"types": ["xsd:string"],
"pattern": "Z|N|E|R|T",
"description": "The component of the recording. Many algorithms require a specific component and this attribute enables the description of these algorithms without using a specific SEED id.",
"required": false,
"example_value": "Z"
},
{
"name": "start_time",
"types": ["xsd:dateTime"],
"description": "The time of the first sample in UTC.",
"required": false,
"example_value": "2012-04-23T18:25:43.511Z"
},
{
"name": "number_of_samples",
"types": ["xsd:positiveInteger"],
"description": "The number of samples in the waveform trace.",
"required": false,
"example_value": 10000
},
{
"name": "sampling_rate",
"types": ["xsd:double"],
"description": "The sampling rate of the data.",
"required": false,
"example_value": 20.0
},
{
"name": "units",
"types": ["xsd:string"],
"description": "Units of the waveform data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
"required": false,
"example_value": "m/s"
},
{
"name": "azimuth",
"types": ["xsd:double"],
"description": "Azimuth of the component in degrees from north, clockwise, same definition as in StationXML.",
"required": false,
"example_value": 90.0
},
{
"name": "dip",
"types": ["xsd:double"],
"description": "Dip of the component in degrees, down from horizontal, same definition as in StationXML.",
"required": false,
"example_value": 0.0
}
]
}
Minimal Example
A concrete waveform_trace
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid waveform_trace
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_wf_c17dd1f", other_attributes=((
("prov:label", "Waveform Trace"),
("prov:type", "seis_prov:waveform_trace"),
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_wf_c17dd1f">
<prov:label>Waveform Trace</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:waveform_trace</prov:type>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_wf_c17dd1f": {
"prov:label": "Waveform Trace",
"prov:type": "seis_prov:waveform_trace"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_wf_c17dd1f, [prov:type="seis_prov:waveform_trace", prov:label="Waveform Trace"])
endDocument
Full Example
A concrete waveform_trace
node example is illustrated here as a graph, in code, and in various representations. This is a full waveform_trace
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_wf_8afb672", other_attributes=((
("prov:label", "Waveform Trace"),
("prov:type", "seis_prov:waveform_trace"),
("seis_prov:seed_id", "BW.FURT..EHZ"),
("seis_prov:description", "Synthetic Data"),
("seis_prov:component", "Z"),
("seis_prov:start_time", prov.model.Literal(
'2012-04-23T18:25:43.511Z',
prov.constants.XSD_DATETIME)),
("seis_prov:number_of_samples", prov.model.Literal(
10000,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:sampling_rate", prov.model.Literal(
20.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:units", "m/s"),
("seis_prov:azimuth", prov.model.Literal(
90.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:dip", prov.model.Literal(
0.0,
prov.constants.XSD_DOUBLE))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_wf_8afb672">
<prov:label>Waveform Trace</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:waveform_trace</prov:type>
<seis_prov:azimuth xsi:type="xsd:double">90.0</seis_prov:azimuth>
<seis_prov:component>Z</seis_prov:component>
<seis_prov:description>Synthetic Data</seis_prov:description>
<seis_prov:dip xsi:type="xsd:double">0.0</seis_prov:dip>
<seis_prov:number_of_samples xsi:type="xsd:positiveInteger">10000</seis_prov:number_of_samples>
<seis_prov:sampling_rate xsi:type="xsd:double">20.0</seis_prov:sampling_rate>
<seis_prov:seed_id>BW.FURT..EHZ</seis_prov:seed_id>
<seis_prov:start_time xsi:type="xsd:dateTime">2012-04-23T18:25:43.511000+00:00</seis_prov:start_time>
<seis_prov:units>m/s</seis_prov:units>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_wf_8afb672": {
"prov:label": "Waveform Trace",
"prov:type": "seis_prov:waveform_trace",
"seis_prov:azimuth": {
"$": 90.0,
"type": "xsd:double"
},
"seis_prov:component": "Z",
"seis_prov:description": "Synthetic Data",
"seis_prov:dip": {
"$": 0.0,
"type": "xsd:double"
},
"seis_prov:number_of_samples": {
"$": "10000",
"type": "xsd:positiveInteger"
},
"seis_prov:sampling_rate": {
"$": 20.0,
"type": "xsd:double"
},
"seis_prov:seed_id": "BW.FURT..EHZ",
"seis_prov:start_time": {
"$": "2012-04-23T18:25:43.511000+00:00",
"type": "xsd:dateTime"
},
"seis_prov:units": "m/s"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_wf_c17dd1f, [prov:type="seis_prov:waveform_trace", prov:label="Waveform Trace"])
endDocument
Input Parameters¶
The input parameters for a program like a waveform solvers as a list of key, value pairs. Each key can live in the SEIS-PROV
namespace.
- Properties
Name Value prov:id
input_parameters
prov:label
Input Parameters
Two letter ID code: in
- Required Attributes
- None
- Optional Attributes
- None
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "entity",
"name": "input_parameters",
"two_letter_code": "in",
"label": "Input Parameters",
"description": "The input parameters for a program like a waveform solvers as a list of key, value pairs. Each key can live in the ``SEIS-PROV`` namespace.",
"other_seis_prov_attributes_allowed": true,
"attributes": [
]
}
Example
A concrete input_parameters
node example is illustrated here as a graph, in code, and in various representations.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_in_a49316d", other_attributes=((
("prov:label", "Input Parameters"),
("prov:type", "seis_prov:input_parameters"),
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_in_a49316d">
<prov:label>Input Parameters</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:input_parameters</prov:type>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_in_a49316d": {
"prov:label": "Input Parameters",
"prov:type": "seis_prov:input_parameters"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_in_8a4e9eb, [prov:type="seis_prov:input_parameters", prov:label="Input Parameters"])
endDocument
File¶
In some cases arbitrary files are needed to describe the provenance of something. Examples are special source code files who’s information cannot be represented in the Input Parameter
entity. This entity allows to refer to arbitrary files. Each file is represented by a filename, a location, and a location type. The location might be a URL; then provenance discovery is simple. It might also be a filename or a path in a container format. Users are responsible to either ship the files alongside the provenance information or provide access by other means.
- Properties
Name Value prov:id
file
prov:label
File
Two letter ID code: fi
- Required Attributes
Name Type Description filename xsd:string
The name of the file. location xsd:string
The location of the file in a way that can be discovered. Can be a URL, a file path, or something similar. location_type xsd:string
The type of location. Examples include Filename
,URL
,HDF5 Data Set
,SFTP Address
, ...- Optional Attributes
- None
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "entity",
"name": "file",
"two_letter_code": "fi",
"label": "File",
"description": "In some cases arbitrary files are needed to describe the provenance of something. Examples are special source code files who's information cannot be represented in the ``Input Parameter`` entity. This entity allows to refer to arbitrary files. Each file is represented by a filename, a location, and a location type. The location might be a URL; then provenance discovery is simple. It might also be a filename or a path in a container format. Users are responsible to either ship the files alongside the provenance information or provide access by other means.",
"other_seis_prov_attributes_allowed": true,
"attributes": [
{
"name": "filename",
"types": ["xsd:string"],
"description": "The name of the file.",
"required": true,
"example_value": "random_file.txt"
},
{
"name": "location",
"types": ["xsd:string"],
"description": "The location of the file in a way that can be discovered. Can be a URL, a file path, or something similar.",
"required": true,
"example_value": "/path/to/random_file.txt"
},
{
"name": "location_type",
"types": ["xsd:string"],
"description": "The type of location. Examples include ``Filename``, ``URL``, ``HDF5 Data Set``, ``SFTP Address``, ...",
"required": true,
"example_value": "Filename"
}
]
}
Example
A concrete file
node example is illustrated here as a graph, in code, and in various representations.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_fi_8584a3d", other_attributes=((
("prov:label", "File"),
("prov:type", "seis_prov:file"),
("seis_prov:filename", "random_file.txt"),
("seis_prov:location", "/path/to/random_file.txt"),
("seis_prov:location_type", "Filename")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_fi_8584a3d">
<prov:label>File</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:file</prov:type>
<seis_prov:filename>random_file.txt</seis_prov:filename>
<seis_prov:location>/path/to/random_file.txt</seis_prov:location>
<seis_prov:location_type>Filename</seis_prov:location_type>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_fi_8584a3d": {
"prov:label": "File",
"prov:type": "seis_prov:file",
"seis_prov:filename": "random_file.txt",
"seis_prov:location": "/path/to/random_file.txt",
"seis_prov:location_type": "Filename"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_fi_3a81cd9, [seis_prov:location_type="Filename", prov:type="seis_prov:file", prov:label="File", seis_prov:filename="random_file.txt", seis_prov:location="/path/to/random_file.txt"])
endDocument
Earth Model¶
An earth model. Its main use is to illustrate the origin of synthetic seismograms.
- Properties
Name Value prov:id
earth_model
prov:label
Earth Model
Two letter ID code: em
- Required Attributes
Name Type Description model_name xsd:string
The name of the model. model_type xsd:string
The type of model as a short, descriptive string, e.g. '1D'
,'3D'
,'axially symmetric'
, ...- Optional Attributes
Name Type Description doi xsd:string
A DOI pointing to a publication of the model. website xsd:anyURI
URL to a website with more information. description xsd:string
A short description of the model.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "entity",
"name": "earth_model",
"two_letter_code": "em",
"label": "Earth Model",
"description": "An earth model. Its main use is to illustrate the origin of synthetic seismograms.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "model_name",
"types": ["xsd:string"],
"description": "The name of the model.",
"required": true,
"example_value": "S40RTS"
},
{
"name": "model_type",
"types": ["xsd:string"],
"description": "The type of model as a short, descriptive string, e.g. ``'1D'``, ``'3D'``, ``'axially symmetric'``, ...",
"required": true,
"example_value": "3D"
},
{
"name": "doi",
"types": ["xsd:string"],
"description": "A DOI pointing to a publication of the model.",
"required": false,
"example_value": "10.1111/j.1365-246X.2010.04884.x"
},
{
"name": "website",
"types": ["xsd:anyURI"],
"description": "URL to a website with more information.",
"required": false,
"example_value": "http://www.earth.lsa.umich.edu/~jritsema/research.html"
},
{
"name": "description",
"types": ["xsd:string"],
"description": "A short description of the model.",
"required": false,
"example_value": "The famous S40RTS."
}
]
}
Minimal Example
A concrete earth_model
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid earth_model
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_em_1cc94ec", other_attributes=((
("prov:label", "Earth Model"),
("prov:type", "seis_prov:earth_model"),
("seis_prov:model_name", "S40RTS"),
("seis_prov:model_type", "3D")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_em_1cc94ec">
<prov:label>Earth Model</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:earth_model</prov:type>
<seis_prov:model_name>S40RTS</seis_prov:model_name>
<seis_prov:model_type>3D</seis_prov:model_type>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_em_1cc94ec": {
"prov:label": "Earth Model",
"prov:type": "seis_prov:earth_model",
"seis_prov:model_name": "S40RTS",
"seis_prov:model_type": "3D"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_em_1cc94ec, [seis_prov:model_name="S40RTS", prov:type="seis_prov:earth_model", prov:label="Earth Model", seis_prov:model_type="3D"])
endDocument
Full Example
A concrete earth_model
node example is illustrated here as a graph, in code, and in various representations. This is a full earth_model
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_em_cb7d70a", other_attributes=((
("prov:label", "Earth Model"),
("prov:type", "seis_prov:earth_model"),
("seis_prov:model_name", "S40RTS"),
("seis_prov:model_type", "3D"),
("seis_prov:doi", "10.1111/j.1365-246X.2010.04884.x"),
("seis_prov:website", prov.model.Literal(
'http://www.earth.lsa.umich.edu/~jritsema/research.html',
prov.constants.XSD_ANYURI)),
("seis_prov:description", "The famous S40RTS.")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_em_cb7d70a">
<prov:label>Earth Model</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:earth_model</prov:type>
<seis_prov:description>The famous S40RTS.</seis_prov:description>
<seis_prov:doi>10.1111/j.1365-246X.2010.04884.x</seis_prov:doi>
<seis_prov:model_name>S40RTS</seis_prov:model_name>
<seis_prov:model_type>3D</seis_prov:model_type>
<seis_prov:website xsi:type="xsd:anyURI">http://www.earth.lsa.umich.edu/~jritsema/research.html</seis_prov:website>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_em_cb7d70a": {
"prov:label": "Earth Model",
"prov:type": "seis_prov:earth_model",
"seis_prov:description": "The famous S40RTS.",
"seis_prov:doi": "10.1111/j.1365-246X.2010.04884.x",
"seis_prov:model_name": "S40RTS",
"seis_prov:model_type": "3D",
"seis_prov:website": {
"$": "http://www.earth.lsa.umich.edu/~jritsema/research.html",
"type": "xsd:anyURI"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_em_1cc94ec, [seis_prov:model_name="S40RTS", prov:type="seis_prov:earth_model", prov:label="Earth Model", seis_prov:model_type="3D"])
endDocument
Cross Correlation Stack¶
A stack of cross correlations.
- Properties
Name Value prov:id
cross_correlation_stack
prov:label
Cross Correlation Stack
Two letter ID code: cs
- Required Attributes
- None
- Optional Attributes
Name Type Description correlation_type xsd:string
The type of performed cross correlations as a string. Only useful if the same for all cross correlations, otherwise that information must be stored in the provenance records of the single cross correlations. correlation_count xsd:positiveInteger
The number of cross correlations used to calculate the stack. stacking_method xsd:string
The method used to create the stack. seed_id_a xsd:string
The SEED identifier of station A. seed_id_b xsd:string
The SEED identifier of station B.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "entity",
"name": "cross_correlation_stack",
"two_letter_code": "cs",
"label": "Cross Correlation Stack",
"description": "A stack of cross correlations.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "correlation_type",
"types": ["xsd:string"],
"description": "The type of performed cross correlations as a string. Only useful if the same for all cross correlations, otherwise that information must be stored in the provenance records of the single cross correlations.",
"required": false,
"example_value": "Phase Cross Correlation"
},
{
"name": "correlation_count",
"types": ["xsd:positiveInteger"],
"description": "The number of cross correlations used to calculate the stack.",
"required": false,
"example_value": 48
},
{
"name": "stacking_method",
"types": ["xsd:string"],
"description": "The method used to create the stack.",
"required": false,
"example_value": "mean"
},
{
"name": "seed_id_a",
"types": ["xsd:string"],
"description": "The SEED identifier of station A.",
"required": false,
"pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
"example_value": "BW.FURT..BHZ"
},
{
"name": "seed_id_b",
"types": ["xsd:string"],
"description": "The SEED identifier of station B.",
"required": false,
"pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
"example_value": "BW.ALTM..BHZ"
}
]
}
Minimal Example
A concrete cross_correlation_stack
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid cross_correlation_stack
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_cs_67f9bf6", other_attributes=((
("prov:label", "Cross Correlation Stack"),
("prov:type", "seis_prov:cross_correlation_stack"),
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_cs_67f9bf6">
<prov:label>Cross Correlation Stack</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:cross_correlation_stack</prov:type>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_cs_67f9bf6": {
"prov:label": "Cross Correlation Stack",
"prov:type": "seis_prov:cross_correlation_stack"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_cs_67f9bf6, [prov:type="seis_prov:cross_correlation_stack", prov:label="Cross Correlation Stack"])
endDocument
Full Example
A concrete cross_correlation_stack
node example is illustrated here as a graph, in code, and in various representations. This is a full cross_correlation_stack
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_cs_725f92c", other_attributes=((
("prov:label", "Cross Correlation Stack"),
("prov:type", "seis_prov:cross_correlation_stack"),
("seis_prov:correlation_type", "Phase Cross Correlation"),
("seis_prov:correlation_count", prov.model.Literal(
48,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:stacking_method", "mean"),
("seis_prov:seed_id_a", "BW.FURT..BHZ"),
("seis_prov:seed_id_b", "BW.ALTM..BHZ")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_cs_725f92c">
<prov:label>Cross Correlation Stack</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:cross_correlation_stack</prov:type>
<seis_prov:correlation_count xsi:type="xsd:positiveInteger">48</seis_prov:correlation_count>
<seis_prov:correlation_type>Phase Cross Correlation</seis_prov:correlation_type>
<seis_prov:seed_id_a>BW.FURT..BHZ</seis_prov:seed_id_a>
<seis_prov:seed_id_b>BW.ALTM..BHZ</seis_prov:seed_id_b>
<seis_prov:stacking_method>mean</seis_prov:stacking_method>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_cs_725f92c": {
"prov:label": "Cross Correlation Stack",
"prov:type": "seis_prov:cross_correlation_stack",
"seis_prov:correlation_count": {
"$": "48",
"type": "xsd:positiveInteger"
},
"seis_prov:correlation_type": "Phase Cross Correlation",
"seis_prov:seed_id_a": "BW.FURT..BHZ",
"seis_prov:seed_id_b": "BW.ALTM..BHZ",
"seis_prov:stacking_method": "mean"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_cs_67f9bf6, [prov:type="seis_prov:cross_correlation_stack", prov:label="Cross Correlation Stack"])
endDocument
Cross Correlation¶
A cross correlation between two stations A and B. Station metadata is not recorded here as it is part of either SEED or StationXML files. Any previously applied processing is also not part of the entity but rather of the entity used by the activity generating this one.
- Properties
Name Value prov:id
cross_correlation
prov:label
Cross Correlation
Two letter ID code: cc
- Required Attributes
Name Type Description correlation_type xsd:string
The type of performed cross correlation as a string. - Optional Attributes
Name Type Description max_lag_time_in_sec xsd:double
The maximum lag time used during the calculation in seconds. max_correlation_coefficient xsd:double
The maximum correlation coefficient seed_id_a xsd:string
The SEED identifier of station A. seed_id_b xsd:string
The SEED identifier of station B.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "entity",
"name": "cross_correlation",
"two_letter_code": "cc",
"label": "Cross Correlation",
"description": "A cross correlation between two stations A and B. Station metadata is not recorded here as it is part of either SEED or StationXML files. Any previously applied processing is also not part of the entity but rather of the entity used by the activity generating this one.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "correlation_type",
"types": ["xsd:string"],
"description": "The type of performed cross correlation as a string.",
"required": true,
"example_value": "Phase Cross Correlation"
},
{
"name": "max_lag_time_in_sec",
"types": ["xsd:double"],
"description": "The maximum lag time used during the calculation in seconds.",
"required": false,
"example_value": 60.0
},
{
"name": "max_correlation_coefficient",
"types": ["xsd:double"],
"description": "The maximum correlation coefficient",
"required": false,
"example_value": 0.88
},
{
"name": "seed_id_a",
"types": ["xsd:string"],
"description": "The SEED identifier of station A.",
"required": false,
"pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
"example_value": "BW.FURT..BHZ"
},
{
"name": "seed_id_b",
"types": ["xsd:string"],
"description": "The SEED identifier of station B.",
"required": false,
"pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
"example_value": "BW.ALTM..BHZ"
}
]
}
Minimal Example
A concrete cross_correlation
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid cross_correlation
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_cc_22661c5", other_attributes=((
("prov:label", "Cross Correlation"),
("prov:type", "seis_prov:cross_correlation"),
("seis_prov:correlation_type", "Phase Cross Correlation")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_cc_22661c5">
<prov:label>Cross Correlation</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:cross_correlation</prov:type>
<seis_prov:correlation_type>Phase Cross Correlation</seis_prov:correlation_type>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_cc_22661c5": {
"prov:label": "Cross Correlation",
"prov:type": "seis_prov:cross_correlation",
"seis_prov:correlation_type": "Phase Cross Correlation"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_cc_22661c5, [seis_prov:correlation_type="Phase Cross Correlation", prov:type="seis_prov:cross_correlation", prov:label="Cross Correlation"])
endDocument
Full Example
A concrete cross_correlation
node example is illustrated here as a graph, in code, and in various representations. This is a full cross_correlation
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_cc_3356922", other_attributes=((
("prov:label", "Cross Correlation"),
("prov:type", "seis_prov:cross_correlation"),
("seis_prov:correlation_type", "Phase Cross Correlation"),
("seis_prov:max_lag_time_in_sec", prov.model.Literal(
60.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:max_correlation_coefficient", prov.model.Literal(
0.88,
prov.constants.XSD_DOUBLE)),
("seis_prov:seed_id_a", "BW.FURT..BHZ"),
("seis_prov:seed_id_b", "BW.ALTM..BHZ")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_cc_3356922">
<prov:label>Cross Correlation</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:cross_correlation</prov:type>
<seis_prov:correlation_type>Phase Cross Correlation</seis_prov:correlation_type>
<seis_prov:max_correlation_coefficient xsi:type="xsd:double">0.88</seis_prov:max_correlation_coefficient>
<seis_prov:max_lag_time_in_sec xsi:type="xsd:double">60.0</seis_prov:max_lag_time_in_sec>
<seis_prov:seed_id_a>BW.FURT..BHZ</seis_prov:seed_id_a>
<seis_prov:seed_id_b>BW.ALTM..BHZ</seis_prov:seed_id_b>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_cc_3356922": {
"prov:label": "Cross Correlation",
"prov:type": "seis_prov:cross_correlation",
"seis_prov:correlation_type": "Phase Cross Correlation",
"seis_prov:max_correlation_coefficient": {
"$": 0.88,
"type": "xsd:double"
},
"seis_prov:max_lag_time_in_sec": {
"$": 60.0,
"type": "xsd:double"
},
"seis_prov:seed_id_a": "BW.FURT..BHZ",
"seis_prov:seed_id_b": "BW.ALTM..BHZ"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_cc_22661c5, [seis_prov:correlation_type="Phase Cross Correlation", prov:type="seis_prov:cross_correlation", prov:label="Cross Correlation"])
endDocument
Adjoint Source¶
One component of an adjoint source used in adjoint simulations. The location can be specified either in geographical coordinates (WGS84) or as the SEED identifier of the corresponding station. The definition of geographic coordinates is the same as in StationXML. Any processing applied to the data before the adjoint source has been calculated (window picking, filtering, ...) has to be described by provenance records on the waveform entities.
- Properties
Name Value prov:id
adjoint_source
prov:label
Adjoint Source
Two letter ID code: as
- Required Attributes
Name Type Description adjoint_source_type xsd:string
A string denoting the type of adjoint source. - Optional Attributes
Name Type Description latitude xsd:double
The latitude of the station in WGS84. longitude xsd:double
The longitude of the station in WGS84. elevation_in_m xsd:double
The elevation of the station in meter above the null level on WGS84. local_depth_in_m xsd:double
The burial of the station in meter. orientation xsd:string
The orientation of the adjoint source, either N (north), E (east), Z (up), T (transverse), or R (radial). If that is not sufficient, please use the dip and azimuth attributes. dip xsd:double
Dip of the component in degrees, down from horizontal, same definition as in StationXML. azimuth xsd:double
Azimuth of the component in degrees from north, clockwise, same definition as in StationXML. station_id xsd:string
The id of the recording station. number_of_samples xsd:positiveInteger
The number of samples in the trace. sampling_rate xsd:double
The sampling rate of the data. units xsd:string
Units of the adjoint source as a common abbreviation, e.g. m, m/s, nm/s^2, ... adjoint_source_type_uri xsd:anyURI
A URI pointing to a detailed description of the adjoint source, for example a DOI link to a publication. misfit_value xsd:double
The calculation of many types of adjoint sources will automatically yield a misfit value denoting the similarity of usually observed and synthetic seismograms.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "entity",
"name": "adjoint_source",
"two_letter_code": "as",
"label": "Adjoint Source",
"description": "One component of an adjoint source used in adjoint simulations. The location can be specified either in geographical coordinates (WGS84) or as the SEED identifier of the corresponding station. The definition of geographic coordinates is the same as in StationXML. Any processing applied to the data before the adjoint source has been calculated (window picking, filtering, ...) has to be described by provenance records on the waveform entities.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "latitude",
"types": ["xsd:double"],
"description": "The latitude of the station in WGS84.",
"required": false,
"example_value": 48.0
},
{
"name": "longitude",
"types": ["xsd:double"],
"description": "The longitude of the station in WGS84.",
"required": false,
"example_value": 12.1
},
{
"name": "elevation_in_m",
"types": ["xsd:double"],
"description": "The elevation of the station in meter above the null level on WGS84.",
"required": false,
"example_value": 658.0
},
{
"name": "local_depth_in_m",
"types": ["xsd:double"],
"description": "The burial of the station in meter.",
"required": false,
"example_value": 0.0
},
{
"name": "orientation",
"types": ["xsd:string"],
"description": "The orientation of the adjoint source, either N (north), E (east), Z (up), T (transverse), or R (radial). If that is not sufficient, please use the dip and azimuth attributes.",
"required": false,
"example_value": "N"
},
{
"name": "dip",
"types": ["xsd:double"],
"description": "Dip of the component in degrees, down from horizontal, same definition as in StationXML.",
"required": false,
"example_value": 0.0
},
{
"name": "azimuth",
"types": ["xsd:double"],
"description": "Azimuth of the component in degrees from north, clockwise, same definition as in StationXML.",
"required": false,
"example_value": 90.0
},
{
"name": "station_id",
"types": ["xsd:string"],
"description": "The id of the recording station.",
"required": false,
"pattern": "^[A-Z0-9]{1,2}\\.[A-Z0-9]{1,5}\\.[A-Z0-9]{0,2}\\.[A-Z0-9]{3}$",
"example_value": "BW.FURT..BHZ"
},
{
"name": "number_of_samples",
"types": ["xsd:positiveInteger"],
"description": "The number of samples in the trace.",
"required": false,
"example_value": 20000
},
{
"name": "sampling_rate",
"types": ["xsd:double"],
"description": "The sampling rate of the data.",
"required": false,
"example_value": 20.0
},
{
"name": "units",
"types": ["xsd:string"],
"description": "Units of the adjoint source as a common abbreviation, e.g. m, m/s, nm/s^2, ...",
"required": false,
"example_value": "m/s"
},
{
"name": "adjoint_source_type",
"types": ["xsd:string"],
"description": "A string denoting the type of adjoint source.",
"required": true,
"example_value": "Time Frequency Phase"
},
{
"name": "adjoint_source_type_uri",
"types": ["xsd:anyURI"],
"description": "A URI pointing to a detailed description of the adjoint source, for example a DOI link to a publication.",
"required": false,
"example_value": "http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x"
},
{
"name": "misfit_value",
"types": ["xsd:double"],
"description": "The calculation of many types of adjoint sources will automatically yield a misfit value denoting the similarity of usually observed and synthetic seismograms.",
"required": false,
"example_value": 0.08
}
]
}
Minimal Example
A concrete adjoint_source
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid adjoint_source
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_as_cd84e87", other_attributes=((
("prov:label", "Adjoint Source"),
("prov:type", "seis_prov:adjoint_source"),
("seis_prov:adjoint_source_type", "Time Frequency Phase")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_as_cd84e87">
<prov:label>Adjoint Source</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:adjoint_source</prov:type>
<seis_prov:adjoint_source_type>Time Frequency Phase</seis_prov:adjoint_source_type>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_as_cd84e87": {
"prov:label": "Adjoint Source",
"prov:type": "seis_prov:adjoint_source",
"seis_prov:adjoint_source_type": "Time Frequency Phase"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_as_cd84e87, [prov:type="seis_prov:adjoint_source", prov:label="Adjoint Source", seis_prov:adjoint_source_type="Time Frequency Phase"])
endDocument
Full Example
A concrete adjoint_source
node example is illustrated here as a graph, in code, and in various representations. This is a full adjoint_source
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.entity("seis_prov:sp001_as_ff956c5", other_attributes=((
("prov:label", "Adjoint Source"),
("prov:type", "seis_prov:adjoint_source"),
("seis_prov:latitude", prov.model.Literal(
48.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:longitude", prov.model.Literal(
12.1,
prov.constants.XSD_DOUBLE)),
("seis_prov:elevation_in_m", prov.model.Literal(
658.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:local_depth_in_m", prov.model.Literal(
0.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:orientation", "N"),
("seis_prov:dip", prov.model.Literal(
0.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:azimuth", prov.model.Literal(
90.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:station_id", "BW.FURT..BHZ"),
("seis_prov:number_of_samples", prov.model.Literal(
20000,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:sampling_rate", prov.model.Literal(
20.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:units", "m/s"),
("seis_prov:adjoint_source_type", "Time Frequency Phase"),
("seis_prov:adjoint_source_type_uri", prov.model.Literal(
'http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x',
prov.constants.XSD_ANYURI)),
("seis_prov:misfit_value", prov.model.Literal(
0.08,
prov.constants.XSD_DOUBLE))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:entity prov:id="seis_prov:sp001_as_ff956c5">
<prov:label>Adjoint Source</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:adjoint_source</prov:type>
<seis_prov:adjoint_source_type>Time Frequency Phase</seis_prov:adjoint_source_type>
<seis_prov:adjoint_source_type_uri xsi:type="xsd:anyURI">http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x</seis_prov:adjoint_source_type_uri>
<seis_prov:azimuth xsi:type="xsd:double">90.0</seis_prov:azimuth>
<seis_prov:dip xsi:type="xsd:double">0.0</seis_prov:dip>
<seis_prov:elevation_in_m xsi:type="xsd:double">658.0</seis_prov:elevation_in_m>
<seis_prov:latitude xsi:type="xsd:double">48.0</seis_prov:latitude>
<seis_prov:local_depth_in_m xsi:type="xsd:double">0.0</seis_prov:local_depth_in_m>
<seis_prov:longitude xsi:type="xsd:double">12.1</seis_prov:longitude>
<seis_prov:misfit_value xsi:type="xsd:double">0.08</seis_prov:misfit_value>
<seis_prov:number_of_samples xsi:type="xsd:positiveInteger">20000</seis_prov:number_of_samples>
<seis_prov:orientation>N</seis_prov:orientation>
<seis_prov:sampling_rate xsi:type="xsd:double">20.0</seis_prov:sampling_rate>
<seis_prov:station_id>BW.FURT..BHZ</seis_prov:station_id>
<seis_prov:units>m/s</seis_prov:units>
</prov:entity>
</prov:document>
In the PROV-JSON serialization.
{
"entity": {
"seis_prov:sp001_as_ff956c5": {
"prov:label": "Adjoint Source",
"prov:type": "seis_prov:adjoint_source",
"seis_prov:adjoint_source_type": "Time Frequency Phase",
"seis_prov:adjoint_source_type_uri": {
"$": "http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x",
"type": "xsd:anyURI"
},
"seis_prov:azimuth": {
"$": 90.0,
"type": "xsd:double"
},
"seis_prov:dip": {
"$": 0.0,
"type": "xsd:double"
},
"seis_prov:elevation_in_m": {
"$": 658.0,
"type": "xsd:double"
},
"seis_prov:latitude": {
"$": 48.0,
"type": "xsd:double"
},
"seis_prov:local_depth_in_m": {
"$": 0.0,
"type": "xsd:double"
},
"seis_prov:longitude": {
"$": 12.1,
"type": "xsd:double"
},
"seis_prov:misfit_value": {
"$": 0.08,
"type": "xsd:double"
},
"seis_prov:number_of_samples": {
"$": "20000",
"type": "xsd:positiveInteger"
},
"seis_prov:orientation": "N",
"seis_prov:sampling_rate": {
"$": 20.0,
"type": "xsd:double"
},
"seis_prov:station_id": "BW.FURT..BHZ",
"seis_prov:units": "m/s"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
entity(seis_prov:sp001_as_cd84e87, [prov:type="seis_prov:adjoint_source", prov:label="Adjoint Source", seis_prov:adjoint_source_type="Time Frequency Phase"])
endDocument
Activities¶
SEIS-PROV
determines the type of an activity via the prov:type
attribute. The following activities are currently available. Further types
will be added as requested by the community.
Waveform Simulation¶
Generate data by running some numerical or analytic code. Must be associated with one or more agents and use some entities to achieve a useful description.
- Properties
Name Value prov:id
waveform_simulation
prov:label
Waveform Simulation
Two letter ID code: ws
- Required Attributes
- None
- Optional Attributes
- None
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "waveform_simulation",
"two_letter_code": "ws",
"label": "Waveform Simulation",
"description": "Generate data by running some numerical or analytic code. Must be associated with one or more agents and use some entities to achieve a useful description.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
]
}
Example
A concrete waveform_simulation
node example is illustrated here as a graph, in code, and in various representations.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_ws_0059e0e", other_attributes=((
("prov:label", "Waveform Simulation"),
("prov:type", "seis_prov:waveform_simulation"),
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_ws_0059e0e">
<prov:label>Waveform Simulation</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:waveform_simulation</prov:type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_ws_0059e0e": {
"prov:label": "Waveform Simulation",
"prov:type": "seis_prov:waveform_simulation"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_ws_910a6ce, -, -, [prov:type="seis_prov:waveform_simulation", prov:label="Waveform Simulation"])
endDocument
Taper¶
Apply a taper window to the data.
- Properties
Name Value prov:id
taper
prov:label
Taper
Two letter ID code: tp
- Required Attributes
Name Type Description window_type xsd:string
The type applied window. taper_width xsd:double
The width of the taper at each end. Must be between 0.0 and 0.5. side xsd:string
‘left’, ‘right’, or ‘both’ - Optional Attributes
- None
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "taper",
"two_letter_code": "tp",
"label": "Taper",
"description": "Apply a taper window to the data.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "window_type",
"types": ["xsd:string"],
"description": "The type applied window.",
"required": true,
"example_value": "Hanning"
},
{
"name": "taper_width",
"types": ["xsd:double"],
"description": "The width of the taper at each end. Must be between 0.0 and 0.5.",
"required": true,
"example_value": 0.05
},
{
"name": "side",
"types": ["xsd:string"],
"description": "`'left'`, `'right'`, or `'both'`",
"required": true,
"example_value": "both"
}
]
}
Example
A concrete taper
node example is illustrated here as a graph, in code, and in various representations.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_tp_c0df3f9", other_attributes=((
("prov:label", "Taper"),
("prov:type", "seis_prov:taper"),
("seis_prov:window_type", "Hanning"),
("seis_prov:taper_width", prov.model.Literal(
0.05,
prov.constants.XSD_DOUBLE)),
("seis_prov:side", "both")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_tp_c0df3f9">
<prov:label>Taper</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:taper</prov:type>
<seis_prov:side>both</seis_prov:side>
<seis_prov:taper_width xsi:type="xsd:double">0.05</seis_prov:taper_width>
<seis_prov:window_type>Hanning</seis_prov:window_type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_tp_c0df3f9": {
"prov:label": "Taper",
"prov:type": "seis_prov:taper",
"seis_prov:side": "both",
"seis_prov:taper_width": {
"$": 0.05,
"type": "xsd:double"
},
"seis_prov:window_type": "Hanning"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_tp_13f0336, -, -, [seis_prov:taper_width="0.05" %% xsd:float, seis_prov:window_type="Hanning", prov:type="seis_prov:taper", prov:label="Taper", seis_prov:side="both"])
endDocument
Stack Cross Correlations¶
Stack a number of cross correlations.
- Properties
Name Value prov:id
stack_cross_correlations
prov:label
Stack Cross Correlations
Two letter ID code: sc
- Required Attributes
Name Type Description stacking_method xsd:string
A string describing the method used to create the stack. - Optional Attributes
- None
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "stack_cross_correlations",
"two_letter_code": "sc",
"label": "Stack Cross Correlations",
"description": "Stack a number of cross correlations.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "stacking_method",
"types": ["xsd:string"],
"description": "A string describing the method used to create the stack.",
"required": true,
"example_value": "mean"
}
]
}
Example
A concrete stack_cross_correlations
node example is illustrated here as a graph, in code, and in various representations.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_sc_a830659", other_attributes=((
("prov:label", "Stack Cross Correlations"),
("prov:type", "seis_prov:stack_cross_correlations"),
("seis_prov:stacking_method", "mean")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_sc_a830659">
<prov:label>Stack Cross Correlations</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:stack_cross_correlations</prov:type>
<seis_prov:stacking_method>mean</seis_prov:stacking_method>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_sc_a830659": {
"prov:label": "Stack Cross Correlations",
"prov:type": "seis_prov:stack_cross_correlations",
"seis_prov:stacking_method": "mean"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_sc_f4dbee1, -, -, [seis_prov:stacking_method="mean", prov:type="seis_prov:stack_cross_correlations", prov:label="Stack Cross Correlations"])
endDocument
Simulate Response¶
Add an instrument’s response.
- Properties
Name Value prov:id
simulate_response
prov:label
Simulate Response
Two letter ID code: sr
- Required Attributes
- None
- Optional Attributes
Name Type Description description xsd:string
Textual description of the added response. If more details are needed, then this activity should use an entity that points to the used response. input_units xsd:string
Units of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ... output_units xsd:string
Units of the output data in a common abbreviation, e.g. m, m/s, nm/s^2, ...
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "simulate_response",
"two_letter_code": "sr",
"label": "Simulate Response",
"description": "Add an instrument’s response.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "description",
"types": ["xsd:string"],
"description": "Textual description of the added response. If more details are needed, then this activity should use an entity that points to the used response.",
"required": false,
"example_value": "Wood-Anderson Seismometer"
},
{
"name": "input_units",
"types": ["xsd:string"],
"description": "Units of the input data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
"required": false,
"example_value": "m/"
},
{
"name": "output_units",
"types": ["xsd:string"],
"description": "Units of the output data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
"required": false,
"example_value": "m/s"
}
]
}
Minimal Example
A concrete simulate_response
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid simulate_response
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_sr_cc1051a", other_attributes=((
("prov:label", "Simulate Response"),
("prov:type", "seis_prov:simulate_response"),
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_sr_cc1051a">
<prov:label>Simulate Response</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:simulate_response</prov:type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_sr_cc1051a": {
"prov:label": "Simulate Response",
"prov:type": "seis_prov:simulate_response"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_sr_cc1051a, -, -, [prov:type="seis_prov:simulate_response", prov:label="Simulate Response"])
endDocument
Full Example
A concrete simulate_response
node example is illustrated here as a graph, in code, and in various representations. This is a full simulate_response
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_sr_0825a34", other_attributes=((
("prov:label", "Simulate Response"),
("prov:type", "seis_prov:simulate_response"),
("seis_prov:description", "Wood-Anderson Seismometer"),
("seis_prov:input_units", "m/"),
("seis_prov:output_units", "m/s")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_sr_0825a34">
<prov:label>Simulate Response</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:simulate_response</prov:type>
<seis_prov:description>Wood-Anderson Seismometer</seis_prov:description>
<seis_prov:input_units>m/</seis_prov:input_units>
<seis_prov:output_units>m/s</seis_prov:output_units>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_sr_0825a34": {
"prov:label": "Simulate Response",
"prov:type": "seis_prov:simulate_response",
"seis_prov:description": "Wood-Anderson Seismometer",
"seis_prov:input_units": "m/",
"seis_prov:output_units": "m/s"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_sr_cc1051a, -, -, [prov:type="seis_prov:simulate_response", prov:label="Simulate Response"])
endDocument
Rotate¶
Rotate multi-component data. The precise rotation angles could be inferred by comparing the dip and azimuth of inputs and outputs. Alternatively the rotation method can be specified.
- Properties
Name Value prov:id
rotate
prov:label
Rotate
Two letter ID code: rt
- Required Attributes
- None
- Optional Attributes
Name Type Description method xsd:string
The rotation method.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "rotate",
"two_letter_code": "rt",
"label": "Rotate",
"description": "Rotate multi-component data. The precise rotation angles could be inferred by comparing the dip and azimuth of inputs and outputs. Alternatively the rotation method can be specified.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "method",
"types": ["xsd:string"],
"description": "The rotation method.",
"pattern": "NE->RT|RT->NE|ZNE->LQT|LQT->ZNE",
"required": false,
"example_value": "NE->RT"
}
]
}
Minimal Example
A concrete rotate
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid rotate
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_rt_41c89e3", other_attributes=((
("prov:label", "Rotate"),
("prov:type", "seis_prov:rotate"),
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_rt_41c89e3">
<prov:label>Rotate</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:rotate</prov:type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_rt_41c89e3": {
"prov:label": "Rotate",
"prov:type": "seis_prov:rotate"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_rt_41c89e3, -, -, [prov:type="seis_prov:rotate", prov:label="Rotate"])
endDocument
Full Example
A concrete rotate
node example is illustrated here as a graph, in code, and in various representations. This is a full rotate
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_rt_302b1ab", other_attributes=((
("prov:label", "Rotate"),
("prov:type", "seis_prov:rotate"),
("seis_prov:method", "NE->RT")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_rt_302b1ab">
<prov:label>Rotate</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:rotate</prov:type>
<seis_prov:method>NE->RT</seis_prov:method>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_rt_302b1ab": {
"prov:label": "Rotate",
"prov:type": "seis_prov:rotate",
"seis_prov:method": "NE->RT"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_rt_41c89e3, -, -, [prov:type="seis_prov:rotate", prov:label="Rotate"])
endDocument
Resample¶
Resample the data in the frequency domain.
- Properties
Name Value prov:id
resample
prov:label
Resample
Two letter ID code: rs
- Required Attributes
Name Type Description new_sampling_rate xsd:double
The sampling rate after the interpolation. - Optional Attributes
Name Type Description frequency_domain_window xsd:string
The window applied to the signal in the Fourier domain. new_start_time xsd:dateTime
The time of the first sample in UTC after the interpolation. new_number_of_samples xsd:positiveInteger
The number of samples after the interpolation.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "resample",
"two_letter_code": "rs",
"label": "Resample",
"description": "Resample the data in the frequency domain.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "frequency_domain_window",
"types": ["xsd:string"],
"description": "The window applied to the signal in the Fourier domain.",
"required": false,
"example_value": "Hanning"
},
{
"name": "new_start_time",
"types": ["xsd:dateTime"],
"description": "The time of the first sample in UTC after the interpolation.",
"required": false,
"example_value": "2012-04-23T18:25:43.511Z"
},
{
"name": "new_number_of_samples",
"types": ["xsd:positiveInteger"],
"description": "The number of samples after the interpolation.",
"required": false,
"example_value": 5000
},
{
"name": "new_sampling_rate",
"types": ["xsd:double"],
"description": "The sampling rate after the interpolation.",
"required": true,
"example_value": 10.0
}
]
}
Minimal Example
A concrete resample
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid resample
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_rs_d983560", other_attributes=((
("prov:label", "Resample"),
("prov:type", "seis_prov:resample"),
("seis_prov:new_sampling_rate", prov.model.Literal(
10.0,
prov.constants.XSD_DOUBLE))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_rs_d983560">
<prov:label>Resample</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:resample</prov:type>
<seis_prov:new_sampling_rate xsi:type="xsd:double">10.0</seis_prov:new_sampling_rate>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_rs_d983560": {
"prov:label": "Resample",
"prov:type": "seis_prov:resample",
"seis_prov:new_sampling_rate": {
"$": 10.0,
"type": "xsd:double"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_rs_d983560, -, -, [seis_prov:new_sampling_rate="10" %% xsd:float, prov:type="seis_prov:resample", prov:label="Resample"])
endDocument
Full Example
A concrete resample
node example is illustrated here as a graph, in code, and in various representations. This is a full resample
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_rs_2c36605", other_attributes=((
("prov:label", "Resample"),
("prov:type", "seis_prov:resample"),
("seis_prov:frequency_domain_window", "Hanning"),
("seis_prov:new_start_time", prov.model.Literal(
'2012-04-23T18:25:43.511Z',
prov.constants.XSD_DATETIME)),
("seis_prov:new_number_of_samples", prov.model.Literal(
5000,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:new_sampling_rate", prov.model.Literal(
10.0,
prov.constants.XSD_DOUBLE))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_rs_2c36605">
<prov:label>Resample</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:resample</prov:type>
<seis_prov:frequency_domain_window>Hanning</seis_prov:frequency_domain_window>
<seis_prov:new_number_of_samples xsi:type="xsd:positiveInteger">5000</seis_prov:new_number_of_samples>
<seis_prov:new_sampling_rate xsi:type="xsd:double">10.0</seis_prov:new_sampling_rate>
<seis_prov:new_start_time xsi:type="xsd:dateTime">2012-04-23T18:25:43.511000+00:00</seis_prov:new_start_time>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_rs_2c36605": {
"prov:label": "Resample",
"prov:type": "seis_prov:resample",
"seis_prov:frequency_domain_window": "Hanning",
"seis_prov:new_number_of_samples": {
"$": "5000",
"type": "xsd:positiveInteger"
},
"seis_prov:new_sampling_rate": {
"$": 10.0,
"type": "xsd:double"
},
"seis_prov:new_start_time": {
"$": "2012-04-23T18:25:43.511000+00:00",
"type": "xsd:dateTime"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_rs_d983560, -, -, [seis_prov:new_sampling_rate="10" %% xsd:float, prov:type="seis_prov:resample", prov:label="Resample"])
endDocument
Remove Response¶
Remove an instrument’s response.
- Properties
Name Value prov:id
remove_response
prov:label
Remove Response
Two letter ID code: rr
- Required Attributes
- None
- Optional Attributes
Name Type Description water_level xsd:double
The applied water level in dB. input_units xsd:string
Units of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ... output_units xsd:string
Units of the output data in a common abbreviation, e.g. m, m/s, nm/s^2, ...
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "remove_response",
"two_letter_code": "rr",
"label": "Remove Response",
"description": "Remove an instrument's response.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "water_level",
"types": ["xsd:double"],
"description": "The applied water level in dB.",
"required": false,
"example_value": 60
},
{
"name": "input_units",
"types": ["xsd:string"],
"description": "Units of the input data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
"required": false,
"example_value": "counts"
},
{
"name": "output_units",
"types": ["xsd:string"],
"description": "Units of the output data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
"required": false,
"example_value": "m/s"
}
]
}
Minimal Example
A concrete remove_response
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid remove_response
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_rr_8986e38", other_attributes=((
("prov:label", "Remove Response"),
("prov:type", "seis_prov:remove_response"),
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_rr_8986e38">
<prov:label>Remove Response</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:remove_response</prov:type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_rr_8986e38": {
"prov:label": "Remove Response",
"prov:type": "seis_prov:remove_response"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_rr_8986e38, -, -, [prov:type="seis_prov:remove_response", prov:label="Remove Response"])
endDocument
Full Example
A concrete remove_response
node example is illustrated here as a graph, in code, and in various representations. This is a full remove_response
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_rr_ddcc155", other_attributes=((
("prov:label", "Remove Response"),
("prov:type", "seis_prov:remove_response"),
("seis_prov:water_level", prov.model.Literal(
60,
prov.constants.XSD_DOUBLE)),
("seis_prov:input_units", "counts"),
("seis_prov:output_units", "m/s")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_rr_ddcc155">
<prov:label>Remove Response</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:remove_response</prov:type>
<seis_prov:input_units>counts</seis_prov:input_units>
<seis_prov:output_units>m/s</seis_prov:output_units>
<seis_prov:water_level xsi:type="xsd:double">60.0</seis_prov:water_level>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_rr_ddcc155": {
"prov:label": "Remove Response",
"prov:type": "seis_prov:remove_response",
"seis_prov:input_units": "counts",
"seis_prov:output_units": "m/s",
"seis_prov:water_level": {
"$": 60.0,
"type": "xsd:double"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_rr_8986e38, -, -, [prov:type="seis_prov:remove_response", prov:label="Remove Response"])
endDocument
Pad¶
Pad the data resulting in a longer trace.
- Properties
Name Value prov:id
pad
prov:label
Pad
Two letter ID code: pd
- Required Attributes
Name Type Description fill_value xsd:decimal
,xsd:integer
The value that will be used to fill missing values with. - Optional Attributes
Name Type Description new_start_time xsd:dateTime
The time of the first sample in UTC after padding it. new_end_time xsd:dateTime
The time of the last sample in UTC after padding it.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "pad",
"two_letter_code": "pd",
"label": "Pad",
"description": "Pad the data resulting in a longer trace.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "fill_value",
"types": ["xsd:decimal", "xsd:integer"],
"description": "The value that will be used to fill missing values with.",
"required": true,
"example_value": 0.0
},
{
"name": "new_start_time",
"types": ["xsd:dateTime"],
"description": "The time of the first sample in UTC after padding it.",
"required": false,
"example_value": "2012-04-23T18:25:43.511Z"
},
{
"name": "new_end_time",
"types": ["xsd:dateTime"],
"description": "The time of the last sample in UTC after padding it.",
"required": false,
"example_value": "2012-04-23T20:25:43.511Z"
}
]
}
Minimal Example
A concrete pad
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid pad
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_pd_5936410", other_attributes=((
("prov:label", "Pad"),
("prov:type", "seis_prov:pad"),
("seis_prov:fill_value", prov.model.Literal(
0.0,
prov.constants.XSD_DECIMAL))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_pd_5936410">
<prov:label>Pad</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:pad</prov:type>
<seis_prov:fill_value xsi:type="xsd:decimal">0.0</seis_prov:fill_value>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_pd_5936410": {
"prov:label": "Pad",
"prov:type": "seis_prov:pad",
"seis_prov:fill_value": {
"$": "0.0",
"type": "xsd:decimal"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_pd_5936410, -, -, [prov:type="seis_prov:pad", prov:label="Pad", seis_prov:fill_value="0.0" %% xsd:decimal])
endDocument
Full Example
A concrete pad
node example is illustrated here as a graph, in code, and in various representations. This is a full pad
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_pd_d953f99", other_attributes=((
("prov:label", "Pad"),
("prov:type", "seis_prov:pad"),
("seis_prov:fill_value", prov.model.Literal(
0.0,
prov.constants.XSD_DECIMAL)),
("seis_prov:new_start_time", prov.model.Literal(
'2012-04-23T18:25:43.511Z',
prov.constants.XSD_DATETIME)),
("seis_prov:new_end_time", prov.model.Literal(
'2012-04-23T20:25:43.511Z',
prov.constants.XSD_DATETIME))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_pd_d953f99">
<prov:label>Pad</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:pad</prov:type>
<seis_prov:fill_value xsi:type="xsd:decimal">0.0</seis_prov:fill_value>
<seis_prov:new_end_time xsi:type="xsd:dateTime">2012-04-23T20:25:43.511000+00:00</seis_prov:new_end_time>
<seis_prov:new_start_time xsi:type="xsd:dateTime">2012-04-23T18:25:43.511000+00:00</seis_prov:new_start_time>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_pd_d953f99": {
"prov:label": "Pad",
"prov:type": "seis_prov:pad",
"seis_prov:fill_value": {
"$": "0.0",
"type": "xsd:decimal"
},
"seis_prov:new_end_time": {
"$": "2012-04-23T20:25:43.511000+00:00",
"type": "xsd:dateTime"
},
"seis_prov:new_start_time": {
"$": "2012-04-23T18:25:43.511000+00:00",
"type": "xsd:dateTime"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_pd_5936410, -, -, [prov:type="seis_prov:pad", prov:label="Pad", seis_prov:fill_value="0.0" %% xsd:decimal])
endDocument
Normalize¶
Normalize the data.
- Properties
Name Value prov:id
normalize
prov:label
Normalize
Two letter ID code: nm
- Required Attributes
Name Type Description normalization_method xsd:string
The used normalization method. - Optional Attributes
- None
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "normalize",
"two_letter_code": "nm",
"label": "Normalize",
"description": "Normalize the data.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "normalization_method",
"types": ["xsd:string"],
"description": "The used normalization method.",
"required": true,
"example_value": "Amplitude"
}
]
}
Example
A concrete normalize
node example is illustrated here as a graph, in code, and in various representations.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_nm_5464d2c", other_attributes=((
("prov:label", "Normalize"),
("prov:type", "seis_prov:normalize"),
("seis_prov:normalization_method", "Amplitude")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_nm_5464d2c">
<prov:label>Normalize</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:normalize</prov:type>
<seis_prov:normalization_method>Amplitude</seis_prov:normalization_method>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_nm_5464d2c": {
"prov:label": "Normalize",
"prov:type": "seis_prov:normalize",
"seis_prov:normalization_method": "Amplitude"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_nm_0b08d9e, -, -, [prov:type="seis_prov:normalize", prov:label="Normalize", seis_prov:normalization_method="Amplitude"])
endDocument
Multiply¶
Multiply each value of the data with a certain factor. This is implied by many operations but sometimes useful to capture in its own right.
- Properties
Name Value prov:id
multiply
prov:label
Multiply
Two letter ID code: mp
- Required Attributes
Name Type Description factor xsd:double
The factor by which to multiply. - Optional Attributes
- None
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "multiply",
"two_letter_code": "mp",
"label": "Multiply",
"description": "Multiply each value of the data with a certain factor. This is implied by many operations but sometimes useful to capture in its own right.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "factor",
"types": ["xsd:double"],
"description": "The factor by which to multiply.",
"required": true,
"example_value": 2.5
}
]
}
Example
A concrete multiply
node example is illustrated here as a graph, in code, and in various representations.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_mp_1c87e3d", other_attributes=((
("prov:label", "Multiply"),
("prov:type", "seis_prov:multiply"),
("seis_prov:factor", prov.model.Literal(
2.5,
prov.constants.XSD_DOUBLE))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_mp_1c87e3d">
<prov:label>Multiply</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:multiply</prov:type>
<seis_prov:factor xsi:type="xsd:double">2.5</seis_prov:factor>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_mp_1c87e3d": {
"prov:label": "Multiply",
"prov:type": "seis_prov:multiply",
"seis_prov:factor": {
"$": 2.5,
"type": "xsd:double"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_mp_1ec7fde, -, -, [prov:type="seis_prov:multiply", prov:label="Multiply", seis_prov:factor="2.5" %% xsd:float])
endDocument
Merge¶
Merge several traces into one. This is very implementation dependent and thus the activity should be associated with a software agent.
- Properties
Name Value prov:id
merge
prov:label
Merge
Two letter ID code: mg
- Required Attributes
Name Type Description merging_strategy xsd:string
A string describing the applied merging strategy. - Optional Attributes
- None
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "merge",
"two_letter_code": "mg",
"label": "Merge",
"description": "Merge several traces into one. This is very implementation dependent and thus the activity should be associated with a software agent.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "merging_strategy",
"types": ["xsd:string"],
"description": "A string describing the applied merging strategy.",
"required": true,
"example_value": "discard overlaps"
}
]
}
Example
A concrete merge
node example is illustrated here as a graph, in code, and in various representations.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_mg_3e712b5", other_attributes=((
("prov:label", "Merge"),
("prov:type", "seis_prov:merge"),
("seis_prov:merging_strategy", "discard overlaps")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_mg_3e712b5">
<prov:label>Merge</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:merge</prov:type>
<seis_prov:merging_strategy>discard overlaps</seis_prov:merging_strategy>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_mg_3e712b5": {
"prov:label": "Merge",
"prov:type": "seis_prov:merge",
"seis_prov:merging_strategy": "discard overlaps"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_mg_1c1ca74, -, -, [seis_prov:merging_strategy="discard overlaps", prov:type="seis_prov:merge", prov:label="Merge"])
endDocument
Lowpass Filter¶
Lowpass the data.
- Properties
Name Value prov:id
lowpass_filter
prov:label
Lowpass Filter
Two letter ID code: lp
- Required Attributes
Name Type Description filter_type xsd:string
The type of filter, e.g. Butterworth, FIR, Chebyshev Type I/II, Bessel, ... - Optional Attributes
Name Type Description corner_frequency xsd:double
The corner frequency of the filter if applicable in Hz filter_order xsd:positiveInteger
The order of the filter if applicable. number_of_passes xsd:positiveInteger
The number of filter passes if applicable. chebychev_transition_bw xsd:double
The transition band width in the case of a Chebychev filter. chebychev_attenuation_factor xsd:double
The attenuation factor in the case of a Chebychev filter.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "lowpass_filter",
"two_letter_code": "lp",
"label": "Lowpass Filter",
"description": "Lowpass the data.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "filter_type",
"types": ["xsd:string"],
"description": "The type of filter, e.g. `Butterworth`, `FIR`, `Chebyshev Type I/II`, `Bessel`, ...",
"required": true,
"example_value": "Butterworth"
},
{
"name": "corner_frequency",
"types": ["xsd:double"],
"description": "The corner frequency of the filter if applicable in Hz",
"required": false,
"example_value": 5.0
},
{
"name": "filter_order",
"types": ["xsd:positiveInteger"],
"description": "The order of the filter if applicable.",
"required": false,
"example_value": 2
},
{
"name": "number_of_passes",
"types": ["xsd:positiveInteger"],
"description": "The number of filter passes if applicable.",
"required": false,
"example_value": 1
},
{
"name": "chebychev_transition_bw",
"types": ["xsd:double"],
"required": false,
"description": "The transition band width in the case of a Chebychev filter.",
"example_value": 10.0,
"skip_example_in_doc": true
},
{
"name": "chebychev_attenuation_factor",
"types": ["xsd:double"],
"required": false,
"description": "The attenuation factor in the case of a Chebychev filter.",
"example_value": 20.0,
"skip_example_in_doc": true
}
]
}
Minimal Example
A concrete lowpass_filter
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid lowpass_filter
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_lp_a0a7b38", other_attributes=((
("prov:label", "Lowpass Filter"),
("prov:type", "seis_prov:lowpass_filter"),
("seis_prov:filter_type", "Butterworth")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_lp_a0a7b38">
<prov:label>Lowpass Filter</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:lowpass_filter</prov:type>
<seis_prov:filter_type>Butterworth</seis_prov:filter_type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_lp_a0a7b38": {
"prov:label": "Lowpass Filter",
"prov:type": "seis_prov:lowpass_filter",
"seis_prov:filter_type": "Butterworth"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_lp_a0a7b38, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:lowpass_filter", prov:label="Lowpass Filter"])
endDocument
Full Example
A concrete lowpass_filter
node example is illustrated here as a graph, in code, and in various representations. This is a full lowpass_filter
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_lp_8a5ac74", other_attributes=((
("prov:label", "Lowpass Filter"),
("prov:type", "seis_prov:lowpass_filter"),
("seis_prov:filter_type", "Butterworth"),
("seis_prov:corner_frequency", prov.model.Literal(
5.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:filter_order", prov.model.Literal(
2,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:number_of_passes", prov.model.Literal(
1,
prov.constants.XSD_POSITIVEINTEGER))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_lp_8a5ac74">
<prov:label>Lowpass Filter</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:lowpass_filter</prov:type>
<seis_prov:corner_frequency xsi:type="xsd:double">5.0</seis_prov:corner_frequency>
<seis_prov:filter_order xsi:type="xsd:positiveInteger">2</seis_prov:filter_order>
<seis_prov:filter_type>Butterworth</seis_prov:filter_type>
<seis_prov:number_of_passes xsi:type="xsd:positiveInteger">1</seis_prov:number_of_passes>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_lp_8a5ac74": {
"prov:label": "Lowpass Filter",
"prov:type": "seis_prov:lowpass_filter",
"seis_prov:corner_frequency": {
"$": 5.0,
"type": "xsd:double"
},
"seis_prov:filter_order": {
"$": "2",
"type": "xsd:positiveInteger"
},
"seis_prov:filter_type": "Butterworth",
"seis_prov:number_of_passes": {
"$": "1",
"type": "xsd:positiveInteger"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_lp_a0a7b38, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:lowpass_filter", prov:label="Lowpass Filter"])
endDocument
Interpolate¶
Interpolate the data to new sampling points.
- Properties
Name Value prov:id
interpolate
prov:label
Interpolate
Two letter ID code: ip
- Required Attributes
Name Type Description interpolation_method xsd:string
The method used to interpolate the samples. weighted average slopes
is the interpolation method use by SAC and detailed in a 1976 paper by Wiggins. This is in wide use and thus offered as a special option here.new_sampling_rate xsd:double
The sampling rate after the interpolation. - Optional Attributes
Name Type Description new_start_time xsd:dateTime
The time of the first sample in UTC after the interpolation. new_number_of_samples xsd:positiveInteger
The number of samples after the interpolation.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "interpolate",
"two_letter_code": "ip",
"label": "Interpolate",
"description": "Interpolate the data to new sampling points.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "interpolation_method",
"types": ["xsd:string"],
"description": "The method used to interpolate the samples. ``weighted average slopes`` is the interpolation method use by SAC and detailed in a 1976 paper by Wiggins. This is in wide use and thus offered as a special option here.",
"required": true,
"pattern": "weighted average slopes|linear spline|quadratic spline|cubic spline|linear|nearest",
"example_value": "cubic spline"
},
{
"name": "new_start_time",
"types": ["xsd:dateTime"],
"description": "The time of the first sample in UTC after the interpolation.",
"required": false,
"example_value": "2012-04-23T18:25:43.511Z"
},
{
"name": "new_number_of_samples",
"types": ["xsd:positiveInteger"],
"description": "The number of samples after the interpolation.",
"required": false,
"example_value": 5000
},
{
"name": "new_sampling_rate",
"types": ["xsd:double"],
"description": "The sampling rate after the interpolation.",
"required": true,
"example_value": 10.0
}
]
}
Minimal Example
A concrete interpolate
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid interpolate
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_ip_8230ff2", other_attributes=((
("prov:label", "Interpolate"),
("prov:type", "seis_prov:interpolate"),
("seis_prov:interpolation_method", "cubic spline"),
("seis_prov:new_sampling_rate", prov.model.Literal(
10.0,
prov.constants.XSD_DOUBLE))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_ip_8230ff2">
<prov:label>Interpolate</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:interpolate</prov:type>
<seis_prov:interpolation_method>cubic spline</seis_prov:interpolation_method>
<seis_prov:new_sampling_rate xsi:type="xsd:double">10.0</seis_prov:new_sampling_rate>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_ip_8230ff2": {
"prov:label": "Interpolate",
"prov:type": "seis_prov:interpolate",
"seis_prov:interpolation_method": "cubic spline",
"seis_prov:new_sampling_rate": {
"$": 10.0,
"type": "xsd:double"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_ip_8230ff2, -, -, [seis_prov:interpolation_method="cubic spline", seis_prov:new_sampling_rate="10" %% xsd:float, prov:type="seis_prov:interpolate", prov:label="Interpolate"])
endDocument
Full Example
A concrete interpolate
node example is illustrated here as a graph, in code, and in various representations. This is a full interpolate
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_ip_450ad8a", other_attributes=((
("prov:label", "Interpolate"),
("prov:type", "seis_prov:interpolate"),
("seis_prov:interpolation_method", "cubic spline"),
("seis_prov:new_start_time", prov.model.Literal(
'2012-04-23T18:25:43.511Z',
prov.constants.XSD_DATETIME)),
("seis_prov:new_number_of_samples", prov.model.Literal(
5000,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:new_sampling_rate", prov.model.Literal(
10.0,
prov.constants.XSD_DOUBLE))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_ip_450ad8a">
<prov:label>Interpolate</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:interpolate</prov:type>
<seis_prov:interpolation_method>cubic spline</seis_prov:interpolation_method>
<seis_prov:new_number_of_samples xsi:type="xsd:positiveInteger">5000</seis_prov:new_number_of_samples>
<seis_prov:new_sampling_rate xsi:type="xsd:double">10.0</seis_prov:new_sampling_rate>
<seis_prov:new_start_time xsi:type="xsd:dateTime">2012-04-23T18:25:43.511000+00:00</seis_prov:new_start_time>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_ip_450ad8a": {
"prov:label": "Interpolate",
"prov:type": "seis_prov:interpolate",
"seis_prov:interpolation_method": "cubic spline",
"seis_prov:new_number_of_samples": {
"$": "5000",
"type": "xsd:positiveInteger"
},
"seis_prov:new_sampling_rate": {
"$": 10.0,
"type": "xsd:double"
},
"seis_prov:new_start_time": {
"$": "2012-04-23T18:25:43.511000+00:00",
"type": "xsd:dateTime"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_ip_8230ff2, -, -, [seis_prov:interpolation_method="cubic spline", seis_prov:new_sampling_rate="10" %% xsd:float, prov:type="seis_prov:interpolate", prov:label="Interpolate"])
endDocument
Integrate¶
Integrate the data with respect to time.
- Properties
Name Value prov:id
integrate
prov:label
Integrate
Two letter ID code: ig
- Required Attributes
Name Type Description order xsd:positiveInteger
The order of the integration, e.g. the nth anti-derivative. - Optional Attributes
Name Type Description integration_method xsd:string
The integration method. input_units xsd:string
Units of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ... output_units xsd:string
Units of the output data in a common abbreviation, e.g. m, m/s, nm/s^2, ...
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "integrate",
"two_letter_code": "ig",
"label": "Integrate",
"description": "Integrate the data with respect to time.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "order",
"types": ["xsd:positiveInteger"],
"description": "The order of the integration, e.g. the nth anti-derivative.",
"required": true,
"example_value": 1
},
{
"name": "integration_method",
"types": ["xsd:string"],
"description": "The integration method.",
"required": false,
"example_value": "Composite trapezoidal rule."
},
{
"name": "input_units",
"types": ["xsd:string"],
"description": "Units of the input data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
"required": false,
"example_value": "m/s"
},
{
"name": "output_units",
"types": ["xsd:string"],
"description": "Units of the output data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
"required": false,
"example_value": "m"
}
]
}
Minimal Example
A concrete integrate
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid integrate
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_ig_a43b174", other_attributes=((
("prov:label", "Integrate"),
("prov:type", "seis_prov:integrate"),
("seis_prov:order", prov.model.Literal(
1,
prov.constants.XSD_POSITIVEINTEGER))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_ig_a43b174">
<prov:label>Integrate</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:integrate</prov:type>
<seis_prov:order xsi:type="xsd:positiveInteger">1</seis_prov:order>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_ig_a43b174": {
"prov:label": "Integrate",
"prov:type": "seis_prov:integrate",
"seis_prov:order": {
"$": "1",
"type": "xsd:positiveInteger"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_ig_a43b174, -, -, [seis_prov:order="1" %% xsd:positiveInteger, prov:type="seis_prov:integrate", prov:label="Integrate"])
endDocument
Full Example
A concrete integrate
node example is illustrated here as a graph, in code, and in various representations. This is a full integrate
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_ig_ee9c7fe", other_attributes=((
("prov:label", "Integrate"),
("prov:type", "seis_prov:integrate"),
("seis_prov:order", prov.model.Literal(
1,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:integration_method", "Composite trapezoidal rule."),
("seis_prov:input_units", "m/s"),
("seis_prov:output_units", "m")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_ig_ee9c7fe">
<prov:label>Integrate</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:integrate</prov:type>
<seis_prov:input_units>m/s</seis_prov:input_units>
<seis_prov:integration_method>Composite trapezoidal rule.</seis_prov:integration_method>
<seis_prov:order xsi:type="xsd:positiveInteger">1</seis_prov:order>
<seis_prov:output_units>m</seis_prov:output_units>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_ig_ee9c7fe": {
"prov:label": "Integrate",
"prov:type": "seis_prov:integrate",
"seis_prov:input_units": "m/s",
"seis_prov:integration_method": "Composite trapezoidal rule.",
"seis_prov:order": {
"$": "1",
"type": "xsd:positiveInteger"
},
"seis_prov:output_units": "m"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_ig_a43b174, -, -, [seis_prov:order="1" %% xsd:positiveInteger, prov:type="seis_prov:integrate", prov:label="Integrate"])
endDocument
Highpass Filter¶
Highpass the data.
- Properties
Name Value prov:id
highpass_filter
prov:label
Highpass Filter
Two letter ID code: hp
- Required Attributes
Name Type Description filter_type xsd:string
The type of filter, e.g. Butterworth, FIR, Chebyshev Type I/II, Bessel, ... - Optional Attributes
Name Type Description corner_frequency xsd:double
The corner frequency of the filter if applicable in Hz filter_order xsd:positiveInteger
The order of the filter if applicable. number_of_passes xsd:positiveInteger
The number of filter passes if applicable. chebychev_transition_bw xsd:double
The transition band width in the case of a Chebychev filter. chebychev_attenuation_factor xsd:double
The attenuation factor in the case of a Chebychev filter.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "highpass_filter",
"two_letter_code": "hp",
"label": "Highpass Filter",
"description": "Highpass the data.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "filter_type",
"types": ["xsd:string"],
"description": "The type of filter, e.g. `Butterworth`, `FIR`, `Chebyshev Type I/II`, `Bessel`, ...",
"required": true,
"example_value": "Butterworth"
},
{
"name": "corner_frequency",
"types": ["xsd:double"],
"description": "The corner frequency of the filter if applicable in Hz",
"required": false,
"example_value": 5.0
},
{
"name": "filter_order",
"types": ["xsd:positiveInteger"],
"description": "The order of the filter if applicable.",
"required": false,
"example_value": 2
},
{
"name": "number_of_passes",
"types": ["xsd:positiveInteger"],
"description": "The number of filter passes if applicable.",
"required": false,
"example_value": 1
},
{
"name": "chebychev_transition_bw",
"types": ["xsd:double"],
"required": false,
"description": "The transition band width in the case of a Chebychev filter.",
"example_value": 10.0,
"skip_example_in_doc": true
},
{
"name": "chebychev_attenuation_factor",
"types": ["xsd:double"],
"required": false,
"description": "The attenuation factor in the case of a Chebychev filter.",
"example_value": 20.0,
"skip_example_in_doc": true
}
]
}
Minimal Example
A concrete highpass_filter
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid highpass_filter
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_hp_a4d5654", other_attributes=((
("prov:label", "Highpass Filter"),
("prov:type", "seis_prov:highpass_filter"),
("seis_prov:filter_type", "Butterworth")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_hp_a4d5654">
<prov:label>Highpass Filter</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:highpass_filter</prov:type>
<seis_prov:filter_type>Butterworth</seis_prov:filter_type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_hp_a4d5654": {
"prov:label": "Highpass Filter",
"prov:type": "seis_prov:highpass_filter",
"seis_prov:filter_type": "Butterworth"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_hp_a4d5654, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:highpass_filter", prov:label="Highpass Filter"])
endDocument
Full Example
A concrete highpass_filter
node example is illustrated here as a graph, in code, and in various representations. This is a full highpass_filter
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_hp_6deb47f", other_attributes=((
("prov:label", "Highpass Filter"),
("prov:type", "seis_prov:highpass_filter"),
("seis_prov:filter_type", "Butterworth"),
("seis_prov:corner_frequency", prov.model.Literal(
5.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:filter_order", prov.model.Literal(
2,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:number_of_passes", prov.model.Literal(
1,
prov.constants.XSD_POSITIVEINTEGER))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_hp_6deb47f">
<prov:label>Highpass Filter</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:highpass_filter</prov:type>
<seis_prov:corner_frequency xsi:type="xsd:double">5.0</seis_prov:corner_frequency>
<seis_prov:filter_order xsi:type="xsd:positiveInteger">2</seis_prov:filter_order>
<seis_prov:filter_type>Butterworth</seis_prov:filter_type>
<seis_prov:number_of_passes xsi:type="xsd:positiveInteger">1</seis_prov:number_of_passes>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_hp_6deb47f": {
"prov:label": "Highpass Filter",
"prov:type": "seis_prov:highpass_filter",
"seis_prov:corner_frequency": {
"$": 5.0,
"type": "xsd:double"
},
"seis_prov:filter_order": {
"$": "2",
"type": "xsd:positiveInteger"
},
"seis_prov:filter_type": "Butterworth",
"seis_prov:number_of_passes": {
"$": "1",
"type": "xsd:positiveInteger"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_hp_a4d5654, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:highpass_filter", prov:label="Highpass Filter"])
endDocument
Divide¶
Divide each value of the data by a certain factor. This is implied by many operations but sometimes useful to capture in its own right.
- Properties
Name Value prov:id
divide
prov:label
Divide
Two letter ID code: dv
- Required Attributes
Name Type Description divisor xsd:double
The factor by which to divide. - Optional Attributes
- None
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "divide",
"two_letter_code": "dv",
"label": "Divide",
"description": "Divide each value of the data by a certain factor. This is implied by many operations but sometimes useful to capture in its own right.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "divisor",
"types": ["xsd:double"],
"description": "The factor by which to divide.",
"required": true,
"example_value": 2.5
}
]
}
Example
A concrete divide
node example is illustrated here as a graph, in code, and in various representations.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_dv_4ba41f7", other_attributes=((
("prov:label", "Divide"),
("prov:type", "seis_prov:divide"),
("seis_prov:divisor", prov.model.Literal(
2.5,
prov.constants.XSD_DOUBLE))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_dv_4ba41f7">
<prov:label>Divide</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:divide</prov:type>
<seis_prov:divisor xsi:type="xsd:double">2.5</seis_prov:divisor>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_dv_4ba41f7": {
"prov:label": "Divide",
"prov:type": "seis_prov:divide",
"seis_prov:divisor": {
"$": 2.5,
"type": "xsd:double"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_dv_17e6a00, -, -, [prov:type="seis_prov:divide", prov:label="Divide", seis_prov:divisor="2.5" %% xsd:float])
endDocument
Differentiate¶
Differentiate the data with respect to time.
- Properties
Name Value prov:id
differentiate
prov:label
Differentiate
Two letter ID code: df
- Required Attributes
Name Type Description order xsd:positiveInteger
The order of the derivative, e.g. the nth derivative. - Optional Attributes
Name Type Description differentiation_method xsd:string
The differentiation method. input_units xsd:string
Units of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ... output_units xsd:string
Units of the output data in a common abbreviation, e.g. m, m/s, nm/s^2, ...
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "differentiate",
"two_letter_code": "df",
"label": "Differentiate",
"description": "Differentiate the data with respect to time.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "order",
"types": ["xsd:positiveInteger"],
"description": "The order of the derivative, e.g. the nth derivative.",
"required": true,
"example_value": 1
},
{
"name": "differentiation_method",
"types": ["xsd:string"],
"description": "The differentiation method.",
"required": false,
"example_value": "three point centered differences"
},
{
"name": "input_units",
"types": ["xsd:string"],
"description": "Units of the input data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
"required": false,
"example_value": "m"
},
{
"name": "output_units",
"types": ["xsd:string"],
"description": "Units of the output data in a common abbreviation, e.g. `m`, `m/s`, `nm/s^2`, ...",
"required": false,
"example_value": "m/s"
}
]
}
Minimal Example
A concrete differentiate
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid differentiate
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_df_038d237", other_attributes=((
("prov:label", "Differentiate"),
("prov:type", "seis_prov:differentiate"),
("seis_prov:order", prov.model.Literal(
1,
prov.constants.XSD_POSITIVEINTEGER))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_df_038d237">
<prov:label>Differentiate</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:differentiate</prov:type>
<seis_prov:order xsi:type="xsd:positiveInteger">1</seis_prov:order>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_df_038d237": {
"prov:label": "Differentiate",
"prov:type": "seis_prov:differentiate",
"seis_prov:order": {
"$": "1",
"type": "xsd:positiveInteger"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_df_038d237, -, -, [seis_prov:order="1" %% xsd:positiveInteger, prov:type="seis_prov:differentiate", prov:label="Differentiate"])
endDocument
Full Example
A concrete differentiate
node example is illustrated here as a graph, in code, and in various representations. This is a full differentiate
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_df_681128b", other_attributes=((
("prov:label", "Differentiate"),
("prov:type", "seis_prov:differentiate"),
("seis_prov:order", prov.model.Literal(
1,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:differentiation_method", "three point centered differences"),
("seis_prov:input_units", "m"),
("seis_prov:output_units", "m/s")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_df_681128b">
<prov:label>Differentiate</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:differentiate</prov:type>
<seis_prov:differentiation_method>three point centered differences</seis_prov:differentiation_method>
<seis_prov:input_units>m</seis_prov:input_units>
<seis_prov:order xsi:type="xsd:positiveInteger">1</seis_prov:order>
<seis_prov:output_units>m/s</seis_prov:output_units>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_df_681128b": {
"prov:label": "Differentiate",
"prov:type": "seis_prov:differentiate",
"seis_prov:differentiation_method": "three point centered differences",
"seis_prov:input_units": "m",
"seis_prov:order": {
"$": "1",
"type": "xsd:positiveInteger"
},
"seis_prov:output_units": "m/s"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_df_038d237, -, -, [seis_prov:order="1" %% xsd:positiveInteger, prov:type="seis_prov:differentiate", prov:label="Differentiate"])
endDocument
Detrend¶
Remove trend from the data.
- Properties
Name Value prov:id
detrend
prov:label
Detrend
Two letter ID code: dt
- Required Attributes
Name Type Description detrending_method xsd:string
The method used to remove the trend from the data. detrend
means substracting the best fitting linear line,demean
removes the mean, andsimple
subtracts a line through the first and last point.- Optional Attributes
- None
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "detrend",
"two_letter_code": "dt",
"label": "Detrend",
"description": "Remove trend from the data.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "detrending_method",
"types": ["xsd:string"],
"pattern": "linear fit|demean|simple",
"description": "The method used to remove the trend from the data. ``detrend`` means substracting the best fitting linear line, ``demean`` removes the mean, and ``simple`` subtracts a line through the first and last point.",
"required": true,
"example_value": "demean"
}
]
}
Example
A concrete detrend
node example is illustrated here as a graph, in code, and in various representations.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_dt_4e3a746", other_attributes=((
("prov:label", "Detrend"),
("prov:type", "seis_prov:detrend"),
("seis_prov:detrending_method", "demean")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_dt_4e3a746">
<prov:label>Detrend</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:detrend</prov:type>
<seis_prov:detrending_method>demean</seis_prov:detrending_method>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_dt_4e3a746": {
"prov:label": "Detrend",
"prov:type": "seis_prov:detrend",
"seis_prov:detrending_method": "demean"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_dt_af30527, -, -, [seis_prov:detrending_method="demean", prov:type="seis_prov:detrend", prov:label="Detrend"])
endDocument
Decimate¶
Downsample the waveform data by an integer factor. Any applied anti-alias filtering has to be described by a filtering activity.
- Properties
Name Value prov:id
decimate
prov:label
Decimate
Two letter ID code: dc
- Required Attributes
Name Type Description factor xsd:positiveInteger
The decimation factor - Optional Attributes
- None
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "decimate",
"two_letter_code": "dc",
"label": "Decimate",
"description": "Downsample the waveform data by an integer factor. Any applied anti-alias filtering has to be described by a filtering activity.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "factor",
"types": ["xsd:positiveInteger"],
"description": "The decimation factor",
"required": true,
"example_value": 5
}
]
}
Example
A concrete decimate
node example is illustrated here as a graph, in code, and in various representations.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_dc_f9fbf35", other_attributes=((
("prov:label", "Decimate"),
("prov:type", "seis_prov:decimate"),
("seis_prov:factor", prov.model.Literal(
5,
prov.constants.XSD_POSITIVEINTEGER))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_dc_f9fbf35">
<prov:label>Decimate</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:decimate</prov:type>
<seis_prov:factor xsi:type="xsd:positiveInteger">5</seis_prov:factor>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_dc_f9fbf35": {
"prov:label": "Decimate",
"prov:type": "seis_prov:decimate",
"seis_prov:factor": {
"$": "5",
"type": "xsd:positiveInteger"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_dc_354e9d6, -, -, [prov:type="seis_prov:decimate", prov:label="Decimate", seis_prov:factor="5" %% xsd:positiveInteger])
endDocument
Cut¶
Cut the data resulting in a shorter trace.
- Properties
Name Value prov:id
cut
prov:label
Cut
Two letter ID code: ct
- Required Attributes
- None
- Optional Attributes
Name Type Description new_start_time xsd:dateTime
The time of the first sample in UTC after cutting it. new_end_time xsd:dateTime
The time of the last sample in UTC after cutting it.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "cut",
"two_letter_code": "ct",
"label": "Cut",
"description": "Cut the data resulting in a shorter trace.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "new_start_time",
"types": ["xsd:dateTime"],
"description": "The time of the first sample in UTC after cutting it.",
"required": false,
"example_value": "2012-04-23T18:25:43.511Z"
},
{
"name": "new_end_time",
"types": ["xsd:dateTime"],
"description": "The time of the last sample in UTC after cutting it.",
"required": false,
"example_value": "2012-04-23T20:25:43.511Z"
}
]
}
Minimal Example
A concrete cut
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid cut
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_ct_e73ced0", other_attributes=((
("prov:label", "Cut"),
("prov:type", "seis_prov:cut"),
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_ct_e73ced0">
<prov:label>Cut</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:cut</prov:type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_ct_e73ced0": {
"prov:label": "Cut",
"prov:type": "seis_prov:cut"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_ct_e73ced0, -, -, [prov:type="seis_prov:cut", prov:label="Cut"])
endDocument
Full Example
A concrete cut
node example is illustrated here as a graph, in code, and in various representations. This is a full cut
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_ct_aae73f2", other_attributes=((
("prov:label", "Cut"),
("prov:type", "seis_prov:cut"),
("seis_prov:new_start_time", prov.model.Literal(
'2012-04-23T18:25:43.511Z',
prov.constants.XSD_DATETIME)),
("seis_prov:new_end_time", prov.model.Literal(
'2012-04-23T20:25:43.511Z',
prov.constants.XSD_DATETIME))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_ct_aae73f2">
<prov:label>Cut</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:cut</prov:type>
<seis_prov:new_end_time xsi:type="xsd:dateTime">2012-04-23T20:25:43.511000+00:00</seis_prov:new_end_time>
<seis_prov:new_start_time xsi:type="xsd:dateTime">2012-04-23T18:25:43.511000+00:00</seis_prov:new_start_time>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_ct_aae73f2": {
"prov:label": "Cut",
"prov:type": "seis_prov:cut",
"seis_prov:new_end_time": {
"$": "2012-04-23T20:25:43.511000+00:00",
"type": "xsd:dateTime"
},
"seis_prov:new_start_time": {
"$": "2012-04-23T18:25:43.511000+00:00",
"type": "xsd:dateTime"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_ct_e73ced0, -, -, [prov:type="seis_prov:cut", prov:label="Cut"])
endDocument
Cross Correlate¶
Cross correlate data of two stations. This does not contain information about the used data as that is captured by the incoming entities.
- Properties
Name Value prov:id
cross_correlate
prov:label
Cross Correlate
Two letter ID code: co
- Required Attributes
Name Type Description correlation_type xsd:string
The type of performed cross correlation as a string. - Optional Attributes
Name Type Description max_lag_time_in_sec xsd:double
The type of performed cross correlation as a string.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "cross_correlate",
"two_letter_code": "co",
"label": "Cross Correlate",
"description": "Cross correlate data of two stations. This does not contain information about the used data as that is captured by the incoming entities.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "correlation_type",
"types": ["xsd:string"],
"description": "The type of performed cross correlation as a string.",
"required": true,
"example_value": "Phase Cross Correlation"
},
{
"name": "max_lag_time_in_sec",
"types": ["xsd:double"],
"description": "The type of performed cross correlation as a string.",
"required": false,
"example_value": 60.0
}
]
}
Minimal Example
A concrete cross_correlate
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid cross_correlate
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_co_2856503", other_attributes=((
("prov:label", "Cross Correlate"),
("prov:type", "seis_prov:cross_correlate"),
("seis_prov:correlation_type", "Phase Cross Correlation")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_co_2856503">
<prov:label>Cross Correlate</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:cross_correlate</prov:type>
<seis_prov:correlation_type>Phase Cross Correlation</seis_prov:correlation_type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_co_2856503": {
"prov:label": "Cross Correlate",
"prov:type": "seis_prov:cross_correlate",
"seis_prov:correlation_type": "Phase Cross Correlation"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_co_2856503, -, -, [seis_prov:correlation_type="Phase Cross Correlation", prov:type="seis_prov:cross_correlate", prov:label="Cross Correlate"])
endDocument
Full Example
A concrete cross_correlate
node example is illustrated here as a graph, in code, and in various representations. This is a full cross_correlate
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_co_2d9f242", other_attributes=((
("prov:label", "Cross Correlate"),
("prov:type", "seis_prov:cross_correlate"),
("seis_prov:correlation_type", "Phase Cross Correlation"),
("seis_prov:max_lag_time_in_sec", prov.model.Literal(
60.0,
prov.constants.XSD_DOUBLE))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_co_2d9f242">
<prov:label>Cross Correlate</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:cross_correlate</prov:type>
<seis_prov:correlation_type>Phase Cross Correlation</seis_prov:correlation_type>
<seis_prov:max_lag_time_in_sec xsi:type="xsd:double">60.0</seis_prov:max_lag_time_in_sec>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_co_2d9f242": {
"prov:label": "Cross Correlate",
"prov:type": "seis_prov:cross_correlate",
"seis_prov:correlation_type": "Phase Cross Correlation",
"seis_prov:max_lag_time_in_sec": {
"$": 60.0,
"type": "xsd:double"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_co_2856503, -, -, [seis_prov:correlation_type="Phase Cross Correlation", prov:type="seis_prov:cross_correlate", prov:label="Cross Correlate"])
endDocument
Calculate Adjoint Source¶
Calculate an adjoint source.
- Properties
Name Value prov:id
calculate_adjoint_source
prov:label
Calculate Adjoint Source
Two letter ID code: ca
- Required Attributes
Name Type Description adjoint_source_type xsd:string
A string denoting the type of adjoint source. - Optional Attributes
Name Type Description adjoint_source_type_uri xsd:anyURI
A URI pointing to a detailed description of the adjoint source, for example a DOI link to a publication.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "calculate_adjoint_source",
"two_letter_code": "ca",
"label": "Calculate Adjoint Source",
"description": "Calculate an adjoint source.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "adjoint_source_type",
"types": ["xsd:string"],
"description": "A string denoting the type of adjoint source.",
"required": true,
"example_value": "Time Frequency Phase"
},
{
"name": "adjoint_source_type_uri",
"types": ["xsd:anyURI"],
"description": "A URI pointing to a detailed description of the adjoint source, for example a DOI link to a publication.",
"required": false,
"example_value": "http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x"
}
]
}
Minimal Example
A concrete calculate_adjoint_source
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid calculate_adjoint_source
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_ca_c7540fc", other_attributes=((
("prov:label", "Calculate Adjoint Source"),
("prov:type", "seis_prov:calculate_adjoint_source"),
("seis_prov:adjoint_source_type", "Time Frequency Phase")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_ca_c7540fc">
<prov:label>Calculate Adjoint Source</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:calculate_adjoint_source</prov:type>
<seis_prov:adjoint_source_type>Time Frequency Phase</seis_prov:adjoint_source_type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_ca_c7540fc": {
"prov:label": "Calculate Adjoint Source",
"prov:type": "seis_prov:calculate_adjoint_source",
"seis_prov:adjoint_source_type": "Time Frequency Phase"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_ca_c7540fc, -, -, [prov:type="seis_prov:calculate_adjoint_source", prov:label="Calculate Adjoint Source", seis_prov:adjoint_source_type="Time Frequency Phase"])
endDocument
Full Example
A concrete calculate_adjoint_source
node example is illustrated here as a graph, in code, and in various representations. This is a full calculate_adjoint_source
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_ca_e1532cc", other_attributes=((
("prov:label", "Calculate Adjoint Source"),
("prov:type", "seis_prov:calculate_adjoint_source"),
("seis_prov:adjoint_source_type", "Time Frequency Phase"),
("seis_prov:adjoint_source_type_uri", prov.model.Literal(
'http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x',
prov.constants.XSD_ANYURI))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_ca_e1532cc">
<prov:label>Calculate Adjoint Source</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:calculate_adjoint_source</prov:type>
<seis_prov:adjoint_source_type>Time Frequency Phase</seis_prov:adjoint_source_type>
<seis_prov:adjoint_source_type_uri xsi:type="xsd:anyURI">http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x</seis_prov:adjoint_source_type_uri>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_ca_e1532cc": {
"prov:label": "Calculate Adjoint Source",
"prov:type": "seis_prov:calculate_adjoint_source",
"seis_prov:adjoint_source_type": "Time Frequency Phase",
"seis_prov:adjoint_source_type_uri": {
"$": "http://dx.doi.org/10.1111/j.1365-246X.2009.04368.x",
"type": "xsd:anyURI"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_ca_c7540fc, -, -, [prov:type="seis_prov:calculate_adjoint_source", prov:label="Calculate Adjoint Source", seis_prov:adjoint_source_type="Time Frequency Phase"])
endDocument
Bandstop Filter¶
Bandstop the data.
- Properties
Name Value prov:id
bandstop_filter
prov:label
Bandstop Filter
Two letter ID code: bs
- Required Attributes
Name Type Description filter_type xsd:string
The type of filter, e.g. Butterworth, FIR, Chebyshev Type I/II, Bessel, ... - Optional Attributes
Name Type Description lower_corner_frequency xsd:double
The lower corner frequency of the filter if applicable in Hz uppoer_corner_frequency xsd:double
The upper corner frequency of the filter if applicable in Hz filter_order xsd:positiveInteger
The order of the filter if applicable. number_of_passes xsd:positiveInteger
The number of filter passes if applicable. chebychev_transition_bw xsd:double
The transition band width in the case of a Chebychev filter. chebychev_attenuation_factor xsd:double
The attenuation factor in the case of a Chebychev filter.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "bandstop_filter",
"two_letter_code": "bs",
"label": "Bandstop Filter",
"description": "Bandstop the data.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "filter_type",
"types": ["xsd:string"],
"description": "The type of filter, e.g. `Butterworth`, `FIR`, `Chebyshev Type I/II`, `Bessel`, ...",
"required": true,
"example_value": "Butterworth"
},
{
"name": "lower_corner_frequency",
"types": ["xsd:double"],
"description": "The lower corner frequency of the filter if applicable in Hz",
"required": false,
"example_value": 5.0
},
{
"name": "uppoer_corner_frequency",
"types": ["xsd:double"],
"description": "The upper corner frequency of the filter if applicable in Hz",
"required": false,
"example_value": 15.0
},
{
"name": "filter_order",
"types": ["xsd:positiveInteger"],
"description": "The order of the filter if applicable.",
"required": false,
"example_value": 2
},
{
"name": "number_of_passes",
"types": ["xsd:positiveInteger"],
"description": "The number of filter passes if applicable.",
"required": false,
"example_value": 1
},
{
"name": "chebychev_transition_bw",
"types": ["xsd:double"],
"required": false,
"description": "The transition band width in the case of a Chebychev filter.",
"example_value": 10.0,
"skip_example_in_doc": true
},
{
"name": "chebychev_attenuation_factor",
"types": ["xsd:double"],
"required": false,
"description": "The attenuation factor in the case of a Chebychev filter.",
"example_value": 20.0,
"skip_example_in_doc": true
}
]
}
Minimal Example
A concrete bandstop_filter
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid bandstop_filter
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_bs_68753fc", other_attributes=((
("prov:label", "Bandstop Filter"),
("prov:type", "seis_prov:bandstop_filter"),
("seis_prov:filter_type", "Butterworth")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_bs_68753fc">
<prov:label>Bandstop Filter</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:bandstop_filter</prov:type>
<seis_prov:filter_type>Butterworth</seis_prov:filter_type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_bs_68753fc": {
"prov:label": "Bandstop Filter",
"prov:type": "seis_prov:bandstop_filter",
"seis_prov:filter_type": "Butterworth"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_bs_68753fc, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:bandstop_filter", prov:label="Bandstop Filter"])
endDocument
Full Example
A concrete bandstop_filter
node example is illustrated here as a graph, in code, and in various representations. This is a full bandstop_filter
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_bs_b004b51", other_attributes=((
("prov:label", "Bandstop Filter"),
("prov:type", "seis_prov:bandstop_filter"),
("seis_prov:filter_type", "Butterworth"),
("seis_prov:lower_corner_frequency", prov.model.Literal(
5.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:uppoer_corner_frequency", prov.model.Literal(
15.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:filter_order", prov.model.Literal(
2,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:number_of_passes", prov.model.Literal(
1,
prov.constants.XSD_POSITIVEINTEGER))
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_bs_b004b51">
<prov:label>Bandstop Filter</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:bandstop_filter</prov:type>
<seis_prov:filter_order xsi:type="xsd:positiveInteger">2</seis_prov:filter_order>
<seis_prov:filter_type>Butterworth</seis_prov:filter_type>
<seis_prov:lower_corner_frequency xsi:type="xsd:double">5.0</seis_prov:lower_corner_frequency>
<seis_prov:number_of_passes xsi:type="xsd:positiveInteger">1</seis_prov:number_of_passes>
<seis_prov:uppoer_corner_frequency xsi:type="xsd:double">15.0</seis_prov:uppoer_corner_frequency>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_bs_b004b51": {
"prov:label": "Bandstop Filter",
"prov:type": "seis_prov:bandstop_filter",
"seis_prov:filter_order": {
"$": "2",
"type": "xsd:positiveInteger"
},
"seis_prov:filter_type": "Butterworth",
"seis_prov:lower_corner_frequency": {
"$": 5.0,
"type": "xsd:double"
},
"seis_prov:number_of_passes": {
"$": "1",
"type": "xsd:positiveInteger"
},
"seis_prov:uppoer_corner_frequency": {
"$": 15.0,
"type": "xsd:double"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_bs_68753fc, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:bandstop_filter", prov:label="Bandstop Filter"])
endDocument
Bandpass Filter¶
A Bandpass filter. There is a huge variety of bandpass filters out there and this activity cannot capture them all in full detail.
- Properties
Name Value prov:id
bandpass_filter
prov:label
Bandpass Filter
Two letter ID code: bp
- Required Attributes
Name Type Description filter_type xsd:string
The type of filter, one of Butterworth
,FIR
,IIR
,Bessel
,Cosine SAC Taper
. Please give some more information with one or more of the other attributes.Cosine SAC Taper
describes the frequency domain taper the SAC software package employs during instrument deconvolution.- Optional Attributes
Name Type Description lower_corner_frequency xsd:double
The lower corner frequency of the filter if applicable in Hz. upper_corner_frequency xsd:double
The upper corner frequency of the filter if applicable in Hz. filter_order xsd:positiveInteger
The order of the filter if applicable. number_of_passes xsd:positiveInteger
The number of filter passes if applicable. sac_cosine_taper_frequency_limits xsd:string
The frequency limits of the SAC frequency domain cosine taper in Hz from lowest to highest.
This shows the JSON that is used to generate the rest of the definition.
{
"package": "seis_prov",
"type": "activity",
"name": "bandpass_filter",
"two_letter_code": "bp",
"label": "Bandpass Filter",
"description": "A Bandpass filter. There is a huge variety of bandpass filters out there and this activity cannot capture them all in full detail.",
"other_seis_prov_attributes_allowed": false,
"attributes": [
{
"name": "filter_type",
"types": ["xsd:string"],
"description": "The type of filter, one of ``Butterworth``, ``FIR``, ``IIR``, ``Bessel``, ``Cosine SAC Taper``. Please give some more information with one or more of the other attributes. ``Cosine SAC Taper`` describes the frequency domain taper the SAC software package employs during instrument deconvolution.",
"required": true,
"pattern":"Butterworth|FIR|IIR|Bessel|Cosine SAC Taper",
"example_value": "Butterworth"
},
{
"name": "lower_corner_frequency",
"types": ["xsd:double"],
"description": "The lower corner frequency of the filter if applicable in Hz.",
"required": false,
"example_value": 5.0
},
{
"name": "upper_corner_frequency",
"types": ["xsd:double"],
"description": "The upper corner frequency of the filter if applicable in Hz.",
"required": false,
"example_value": 15.0
},
{
"name": "filter_order",
"types": ["xsd:positiveInteger"],
"description": "The order of the filter if applicable.",
"required": false,
"example_value": 2
},
{
"name": "number_of_passes",
"types": ["xsd:positiveInteger"],
"description": "The number of filter passes if applicable.",
"required": false,
"example_value": 1
},
{
"name": "sac_cosine_taper_frequency_limits",
"types": ["xsd:string"],
"description": "The frequency limits of the SAC frequency domain cosine taper in Hz from lowest to highest.",
"required": false,
"pattern": "^[+-]?(\\d*\\.)?\\d+,[+-]?(\\d*\\.)?\\d+,[+-]?(\\d*\\.)?\\d+,[+-]?(\\d*\\.)?\\d+$",
"example_value": "0.02,0.1,1,5"
}
]
}
Minimal Example
A concrete bandpass_filter
node example is illustrated here as a graph, in code, and in various representations. This is a minimal but valid bandpass_filter
node. See below for a full example.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_bp_1cb9e3d", other_attributes=((
("prov:label", "Bandpass Filter"),
("prov:type", "seis_prov:bandpass_filter"),
("seis_prov:filter_type", "Butterworth")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_bp_1cb9e3d">
<prov:label>Bandpass Filter</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:bandpass_filter</prov:type>
<seis_prov:filter_type>Butterworth</seis_prov:filter_type>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_bp_1cb9e3d": {
"prov:label": "Bandpass Filter",
"prov:type": "seis_prov:bandpass_filter",
"seis_prov:filter_type": "Butterworth"
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_bp_1cb9e3d, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:bandpass_filter", prov:label="Bandpass Filter"])
endDocument
Full Example
A concrete bandpass_filter
node example is illustrated here as a graph, in code, and in various representations. This is a full bandpass_filter
node containing the maximum amount of information.
Python code utilizing the prov package.
import prov
import prov.model
NS_PREFIX = "seis_prov"
NS_SEIS = (NS_PREFIX, "http://seisprov.org/seis_prov/0.1/#")
pr = prov.model.ProvDocument()
pr.add_namespace(*NS_SEIS)
pr.activity("seis_prov:sp001_bp_9d37dd4", other_attributes=((
("prov:label", "Bandpass Filter"),
("prov:type", "seis_prov:bandpass_filter"),
("seis_prov:filter_type", "Butterworth"),
("seis_prov:lower_corner_frequency", prov.model.Literal(
5.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:upper_corner_frequency", prov.model.Literal(
15.0,
prov.constants.XSD_DOUBLE)),
("seis_prov:filter_order", prov.model.Literal(
2,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:number_of_passes", prov.model.Literal(
1,
prov.constants.XSD_POSITIVEINTEGER)),
("seis_prov:sac_cosine_taper_frequency_limits", "0.02,0.1,1,5")
)))
In the PROV-XML serialization.
<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:seis_prov="http://seisprov.org/seis_prov/0.1/#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prov:activity prov:id="seis_prov:sp001_bp_9d37dd4">
<prov:label>Bandpass Filter</prov:label>
<prov:type xsi:type="xsd:string">seis_prov:bandpass_filter</prov:type>
<seis_prov:filter_order xsi:type="xsd:positiveInteger">2</seis_prov:filter_order>
<seis_prov:filter_type>Butterworth</seis_prov:filter_type>
<seis_prov:lower_corner_frequency xsi:type="xsd:double">5.0</seis_prov:lower_corner_frequency>
<seis_prov:number_of_passes xsi:type="xsd:positiveInteger">1</seis_prov:number_of_passes>
<seis_prov:sac_cosine_taper_frequency_limits>0.02,0.1,1,5</seis_prov:sac_cosine_taper_frequency_limits>
<seis_prov:upper_corner_frequency xsi:type="xsd:double">15.0</seis_prov:upper_corner_frequency>
</prov:activity>
</prov:document>
In the PROV-JSON serialization.
{
"activity": {
"seis_prov:sp001_bp_9d37dd4": {
"prov:label": "Bandpass Filter",
"prov:type": "seis_prov:bandpass_filter",
"seis_prov:filter_order": {
"$": "2",
"type": "xsd:positiveInteger"
},
"seis_prov:filter_type": "Butterworth",
"seis_prov:lower_corner_frequency": {
"$": 5.0,
"type": "xsd:double"
},
"seis_prov:number_of_passes": {
"$": "1",
"type": "xsd:positiveInteger"
},
"seis_prov:sac_cosine_taper_frequency_limits": "0.02,0.1,1,5",
"seis_prov:upper_corner_frequency": {
"$": 15.0,
"type": "xsd:double"
}
}
},
"prefix": {
"seis_prov": "http://seisprov.org/seis_prov/0.1/#"
}
}
In PROV-N notation.
document
prefix seis_prov <http://seisprov.org/seis_prov/0.1/#>
activity(seis_prov:sp001_bp_1cb9e3d, -, -, [seis_prov:filter_type="Butterworth", prov:type="seis_prov:bandpass_filter", prov:label="Bandpass Filter"])
endDocument