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-PROVnamespace. - An agent with a prov:type equal to prov:Person and an id under the
SEIS-PROVnamespace. - An entity with a prov:type and id under the
SEIS-PROVnamespace. - An activity with a prov:type and id under the
SEIS-PROVnamespace.
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_f84fb9asp027_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.001for example is the first step in a processing chain, whereas017is 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. Thespprefix 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-PROVdefinition. 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:idsoftware_agentprov:label*Two letter ID code: sa- Required Attributes
Name Type Description software_name xsd:stringThe name of the software. software_version xsd:stringThe version number of the used software. website xsd:anyURIThe website where one can find further information. - Optional Attributes
Name Type Description doi xsd:stringThe 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:idpersonprov:label*Two letter ID code: pp- Required Attributes
Name Type Description name xsd:stringThe name of the person. - Optional Attributes
Name Type Description email xsd:stringThe 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:idorganizationprov:label*Two letter ID code: og- Required Attributes
Name Type Description name xsd:stringThe name of the organization. - Optional Attributes
Name Type Description website xsd:anyURIThe 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:idwaveform_traceprov:labelWaveform TraceTwo letter ID code: wf- Required Attributes
- None
- Optional Attributes
Name Type Description seed_id xsd:stringThe SEED id of the recording station. description xsd:stringAn optional description of the waveform trace. This has no technical meaning but serves to make the provenance documents easier to understand. component xsd:stringThe 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:dateTimeThe time of the first sample in UTC. number_of_samples xsd:positiveIntegerThe number of samples in the waveform trace. sampling_rate xsd:doubleThe sampling rate of the data. units xsd:stringUnits of the waveform data in a common abbreviation, e.g. m, m/s, nm/s^2, ... azimuth xsd:doubleAzimuth of the component in degrees from north, clockwise, same definition as in StationXML. dip xsd:doubleDip 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:idinput_parametersprov:labelInput ParametersTwo 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:idfileprov:labelFileTwo letter ID code: fi- Required Attributes
Name Type Description filename xsd:stringThe name of the file. location xsd:stringThe location of the file in a way that can be discovered. Can be a URL, a file path, or something similar. location_type xsd:stringThe 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:idearth_modelprov:labelEarth ModelTwo letter ID code: em- Required Attributes
Name Type Description model_name xsd:stringThe name of the model. model_type xsd:stringThe type of model as a short, descriptive string, e.g. '1D','3D','axially symmetric', ...- Optional Attributes
Name Type Description doi xsd:stringA DOI pointing to a publication of the model. website xsd:anyURIURL to a website with more information. description xsd:stringA 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:idcross_correlation_stackprov:labelCross Correlation StackTwo letter ID code: cs- Required Attributes
- None
- Optional Attributes
Name Type Description correlation_type xsd:stringThe 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:positiveIntegerThe number of cross correlations used to calculate the stack. stacking_method xsd:stringThe method used to create the stack. seed_id_a xsd:stringThe SEED identifier of station A. seed_id_b xsd:stringThe 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:idcross_correlationprov:labelCross CorrelationTwo letter ID code: cc- Required Attributes
Name Type Description correlation_type xsd:stringThe type of performed cross correlation as a string. - Optional Attributes
Name Type Description max_lag_time_in_sec xsd:doubleThe maximum lag time used during the calculation in seconds. max_correlation_coefficient xsd:doubleThe maximum correlation coefficient seed_id_a xsd:stringThe SEED identifier of station A. seed_id_b xsd:stringThe 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:idadjoint_sourceprov:labelAdjoint SourceTwo letter ID code: as- Required Attributes
Name Type Description adjoint_source_type xsd:stringA string denoting the type of adjoint source. - Optional Attributes
Name Type Description latitude xsd:doubleThe latitude of the station in WGS84. longitude xsd:doubleThe longitude of the station in WGS84. elevation_in_m xsd:doubleThe elevation of the station in meter above the null level on WGS84. local_depth_in_m xsd:doubleThe burial of the station in meter. orientation xsd:stringThe 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:doubleDip of the component in degrees, down from horizontal, same definition as in StationXML. azimuth xsd:doubleAzimuth of the component in degrees from north, clockwise, same definition as in StationXML. station_id xsd:stringThe id of the recording station. number_of_samples xsd:positiveIntegerThe number of samples in the trace. sampling_rate xsd:doubleThe sampling rate of the data. units xsd:stringUnits of the adjoint source as a common abbreviation, e.g. m, m/s, nm/s^2, ... adjoint_source_type_uri xsd:anyURIA URI pointing to a detailed description of the adjoint source, for example a DOI link to a publication. misfit_value xsd:doubleThe 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:idwaveform_simulationprov:labelWaveform SimulationTwo 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:idtaperprov:labelTaperTwo letter ID code: tp- Required Attributes
Name Type Description window_type xsd:stringThe type applied window. taper_width xsd:doubleThe 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:idstack_cross_correlationsprov:labelStack Cross CorrelationsTwo letter ID code: sc- Required Attributes
Name Type Description stacking_method xsd:stringA 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:idsimulate_responseprov:labelSimulate ResponseTwo letter ID code: sr- Required Attributes
- None
- Optional Attributes
Name Type Description description xsd:stringTextual 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:stringUnits of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ... output_units xsd:stringUnits 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:idrotateprov:labelRotateTwo letter ID code: rt- Required Attributes
- None
- Optional Attributes
Name Type Description method xsd:stringThe 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:idresampleprov:labelResampleTwo letter ID code: rs- Required Attributes
Name Type Description new_sampling_rate xsd:doubleThe sampling rate after the interpolation. - Optional Attributes
Name Type Description frequency_domain_window xsd:stringThe window applied to the signal in the Fourier domain. new_start_time xsd:dateTimeThe time of the first sample in UTC after the interpolation. new_number_of_samples xsd:positiveIntegerThe 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:idremove_responseprov:labelRemove ResponseTwo letter ID code: rr- Required Attributes
- None
- Optional Attributes
Name Type Description water_level xsd:doubleThe applied water level in dB. input_units xsd:stringUnits of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ... output_units xsd:stringUnits 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:idpadprov:labelPadTwo letter ID code: pd- Required Attributes
Name Type Description fill_value xsd:decimal,xsd:integerThe value that will be used to fill missing values with. - Optional Attributes
Name Type Description new_start_time xsd:dateTimeThe time of the first sample in UTC after padding it. new_end_time xsd:dateTimeThe 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:idnormalizeprov:labelNormalizeTwo letter ID code: nm- Required Attributes
Name Type Description normalization_method xsd:stringThe 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:idmultiplyprov:labelMultiplyTwo letter ID code: mp- Required Attributes
Name Type Description factor xsd:doubleThe 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:idmergeprov:labelMergeTwo letter ID code: mg- Required Attributes
Name Type Description merging_strategy xsd:stringA 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:idlowpass_filterprov:labelLowpass FilterTwo letter ID code: lp- Required Attributes
Name Type Description filter_type xsd:stringThe type of filter, e.g. Butterworth, FIR, Chebyshev Type I/II, Bessel, ... - Optional Attributes
Name Type Description corner_frequency xsd:doubleThe corner frequency of the filter if applicable in Hz filter_order xsd:positiveIntegerThe order of the filter if applicable. number_of_passes xsd:positiveIntegerThe number of filter passes if applicable. chebychev_transition_bw xsd:doubleThe transition band width in the case of a Chebychev filter. chebychev_attenuation_factor xsd:doubleThe 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:idinterpolateprov:labelInterpolateTwo letter ID code: ip- Required Attributes
Name Type Description interpolation_method xsd:stringThe method used to interpolate the samples. weighted average slopesis 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:doubleThe sampling rate after the interpolation. - Optional Attributes
Name Type Description new_start_time xsd:dateTimeThe time of the first sample in UTC after the interpolation. new_number_of_samples xsd:positiveIntegerThe 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:idintegrateprov:labelIntegrateTwo letter ID code: ig- Required Attributes
Name Type Description order xsd:positiveIntegerThe order of the integration, e.g. the nth anti-derivative. - Optional Attributes
Name Type Description integration_method xsd:stringThe integration method. input_units xsd:stringUnits of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ... output_units xsd:stringUnits 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:idhighpass_filterprov:labelHighpass FilterTwo letter ID code: hp- Required Attributes
Name Type Description filter_type xsd:stringThe type of filter, e.g. Butterworth, FIR, Chebyshev Type I/II, Bessel, ... - Optional Attributes
Name Type Description corner_frequency xsd:doubleThe corner frequency of the filter if applicable in Hz filter_order xsd:positiveIntegerThe order of the filter if applicable. number_of_passes xsd:positiveIntegerThe number of filter passes if applicable. chebychev_transition_bw xsd:doubleThe transition band width in the case of a Chebychev filter. chebychev_attenuation_factor xsd:doubleThe 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:iddivideprov:labelDivideTwo letter ID code: dv- Required Attributes
Name Type Description divisor xsd:doubleThe 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:iddifferentiateprov:labelDifferentiateTwo letter ID code: df- Required Attributes
Name Type Description order xsd:positiveIntegerThe order of the derivative, e.g. the nth derivative. - Optional Attributes
Name Type Description differentiation_method xsd:stringThe differentiation method. input_units xsd:stringUnits of the input data in a common abbreviation, e.g. m, m/s, nm/s^2, ... output_units xsd:stringUnits 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:iddetrendprov:labelDetrendTwo letter ID code: dt- Required Attributes
Name Type Description detrending_method xsd:stringThe method used to remove the trend from the data. detrendmeans substracting the best fitting linear line,demeanremoves the mean, andsimplesubtracts 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:iddecimateprov:labelDecimateTwo letter ID code: dc- Required Attributes
Name Type Description factor xsd:positiveIntegerThe 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:idcutprov:labelCutTwo letter ID code: ct- Required Attributes
- None
- Optional Attributes
Name Type Description new_start_time xsd:dateTimeThe time of the first sample in UTC after cutting it. new_end_time xsd:dateTimeThe 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:idcross_correlateprov:labelCross CorrelateTwo letter ID code: co- Required Attributes
Name Type Description correlation_type xsd:stringThe type of performed cross correlation as a string. - Optional Attributes
Name Type Description max_lag_time_in_sec xsd:doubleThe 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:idcalculate_adjoint_sourceprov:labelCalculate Adjoint SourceTwo letter ID code: ca- Required Attributes
Name Type Description adjoint_source_type xsd:stringA string denoting the type of adjoint source. - Optional Attributes
Name Type Description adjoint_source_type_uri xsd:anyURIA 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:idbandstop_filterprov:labelBandstop FilterTwo letter ID code: bs- Required Attributes
Name Type Description filter_type xsd:stringThe type of filter, e.g. Butterworth, FIR, Chebyshev Type I/II, Bessel, ... - Optional Attributes
Name Type Description lower_corner_frequency xsd:doubleThe lower corner frequency of the filter if applicable in Hz uppoer_corner_frequency xsd:doubleThe upper corner frequency of the filter if applicable in Hz filter_order xsd:positiveIntegerThe order of the filter if applicable. number_of_passes xsd:positiveIntegerThe number of filter passes if applicable. chebychev_transition_bw xsd:doubleThe transition band width in the case of a Chebychev filter. chebychev_attenuation_factor xsd:doubleThe 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:idbandpass_filterprov:labelBandpass FilterTwo letter ID code: bp- Required Attributes
Name Type Description filter_type xsd:stringThe 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 Taperdescribes the frequency domain taper the SAC software package employs during instrument deconvolution.- Optional Attributes
Name Type Description lower_corner_frequency xsd:doubleThe lower corner frequency of the filter if applicable in Hz. upper_corner_frequency xsd:doubleThe upper corner frequency of the filter if applicable in Hz. filter_order xsd:positiveIntegerThe order of the filter if applicable. number_of_passes xsd:positiveIntegerThe number of filter passes if applicable. sac_cosine_taper_frequency_limits xsd:stringThe 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