A library for building and parsing Seismology API message bodies.
Project description
postprocessing_seismo_lib
postprocessing_seismo_lib is a lightweight Python library for building and parsing structured API messages, especially for use with nested JSON structures used in event-based data systems. Currently, the library works on building out the Response format for seismology associator outputs, or extracting the body out of its Response format.
Features
- Extract the
bodysection from a structured JSON file usingextract_body_from_file - Create request for a body object using
wrap_data, with provided associator or pickfilter files. - Validates if input and output formats are to specification using
wrap_data
Use cases of this library
- Individual users
- Pipeline scripts
Example Scenarios
Extraction of body
The below function allows for extracting out the body from an output response file:
from postprocessing_seismo_lib import extract_body_from_file
body_data = extract_body_from_file("output_response_association.json")
body_data = extract_body_from_file("output_response_pickfilter.json")
where as an example, output_response_association.json is:
{
"status": 404,
"headers": {
"Content-Type": "application/json"
},
"body": {
"id": "78604159",
"format": "none.noeventsfound",
"data": []
}
}
Creation of the request for a body object
The below function creates the request from the body object, which can be extracted from the above function. All four variables listed below need to be specified:
from postprocessing_seismo_lib import wrap_data
#creating the request for the associator input
wrap_data(
input_file_path='[xxxx_file_containing_filtered_picks].json',
output_file_path='output_associator.json',
evid='[Name of choice]',
module='associator'
)
#creating the request for the pickfilter input
wrap_data(
input_file_path='[xxxx_file_containing_picks].json',
output_file_path='output_pickfilter.json',
evid='[Name of choice]',
module='pickfilter'
)
The request format will be different across each module. Currently, the module takes in 'associator' and 'pickfilter' but this will be expanded in future updates.
Specifically, this function reads a list of pick dictionaries from a JSON file specified by input_file_path, validates them against a schema, wraps the data into a module-specific JSON structure, validates the output, and writes it to a new file specified by output_file_path. Any errors are logged to a file named wrap_data_errors.log.
As an example, our input_file_path='[xxxx_file_containing_picks].json' might look like this (as a list of dictionaries):
[
{
"Amplitude": {
"Amplitude": 1039.6302490234,
"SNR": 11.074
},
"Filter": [
{
"HighPass": 1.0,
"Type": "HighPass"
}
],
"Onset": "emergent",
"Phase": "S",
"Picker": "deep-learning",
"Polarity": "no-result",
"Quality": [
{
"Standard": "PhaseNet",
"Value": 0.851
},
{
"Standard": "hypoinverse",
"Value": 2
}
],
"Site": {
"Channel": "HHE",
"Location": "",
"Network": "CI",
"Station": "WOR"
},
"Source": {
"AgencyID": "CI",
"Author": "hypoPN"
},
"Time": "2025-04-22T21:51:15.148Z",
"Type": "Pick"
},
{
...
}
]
and its output would be the necessary format to POST into the associator API endpoint:
{
"RetrieveParameters": {
"pickFile": "Ryan_testingAgainPicks_picks.json",
"pickDataStr": [
{
"Amplitude": {
"Amplitude": 1039.6302490234,
"SNR": 11.074
},
"Filter": [
{
"HighPass": 1.0,
"Type": "HighPass"
}
],
"Onset": "emergent",
"Phase": "S",
"Picker": "deep-learning",
"Polarity": "no-result",
"Quality": [
{
"Standard": "PhaseNet",
"Value": 0.851
},
{
"Standard": "hypoinverse",
"Value": 2
}
],
"Site": {
"Channel": "HHE",
"Location": "",
"Network": "CI",
"Station": "WOR"
},
"Source": {
"AgencyID": "CI",
"Author": "hypoPN"
},
"Time": "2025-04-22T21:51:15.148Z",
"Type": "Pick"
},
...
]
}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file postprocessing_seismo_lib-0.1.7.tar.gz.
File metadata
- Download URL: postprocessing_seismo_lib-0.1.7.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3429c744ea7126777782f6f1ea7e81f1c12fba8de2dcbb7beda402bf85482a85
|
|
| MD5 |
07af44b0d057bdb09b979674c5aa577c
|
|
| BLAKE2b-256 |
8f3207446f69e84386344e211a7181bb117fffbda7d66073c9f19591e9cb59de
|
File details
Details for the file postprocessing_seismo_lib-0.1.7-py3-none-any.whl.
File metadata
- Download URL: postprocessing_seismo_lib-0.1.7-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1808619b55f4df6477f46e97c73cc75ca690c9939c600f156b94d5737dc5253e
|
|
| MD5 |
71a52c2272107ba5e5770ec355912e09
|
|
| BLAKE2b-256 |
ab5e41ecb960c52e89345733f7a32629c698399558dec3380e7dc565a92d31c6
|