seed_vault.models package
Submodules
seed_vault.models.common module
- class seed_vault.models.common.CircleArea(**data)[source]
Bases:
BaseModel
Represents a circular geographic area for seismic data analysis.
This class is used to define circular constraints for selecting seismic data based on a central point and a radius.
- lat
The latitude of the circle’s center.
- Type:
float
- lon
The longitude of the circle’s center.
- Type:
float
- max_radius
The maximum radius of the circle.
- Type:
float
- min_radius
The minimum radius of the circle. Defaults to 0.
- Type:
float, optional
- Properties:
color (str): Returns the predefined color associated with the area.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- property color: str
-
lat:
float
-
lon:
float
-
max_radius:
float
-
min_radius:
float
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class seed_vault.models.common.RectangleArea(**data)[source]
Bases:
BaseModel
Represents a rectangular area defined by latitude and longitude boundaries.
This class is used to define geographic bounding boxes for seismic data analysis.
- min_lat
The minimum latitude of the rectangle.
- Type:
float
- max_lat
The maximum latitude of the rectangle.
- Type:
float
- min_lon
The minimum longitude of the rectangle.
- Type:
float
- max_lon
The maximum longitude of the rectangle.
- Type:
float
- Properties:
color (str): Returns the predefined color associated with the area.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- property color: str
-
max_lat:
float
-
max_lon:
float
-
min_lat:
float
-
min_lon:
float
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class seed_vault.models.common.StatusHandler[source]
Bases:
object
Manages warning, error, and log messages categorized by type.
This class provides methods for tracking and organizing status messages, including warnings, errors, and logs, to facilitate debugging and status reporting.
- status
A dictionary storing messages categorized under “warnings”, “errors”, and “logs”.
- Type:
Dict[str, Dict[str, List[str]]]
- add_warning(category
str, message: str): Adds a warning message to a specific category.
- add_error(category
str, message: str): Adds an error message to a specific category.
- add_log(category
str, message: str, level: str = “info”): Adds a log message with an optional severity level.
- generate_status_report(level
str = None) -> str: Generates a formatted status report, optionally filtering by level.
Initializes the StatusHandler with empty dictionaries for warnings, errors, and logs.
- add_error(category, message)[source]
Adds an error message to a specific category in the status dictionary.
- Parameters:
category (str) – The category under which the error should be stored.
message (str) – The error message to add.
- add_log(category, message, level='info')[source]
Adds a log message to a specific category with an optional severity level.
- Parameters:
category (str) – The category under which the log should be stored.
message (str) – The log message to add.
level (str, optional) – The severity level of the log (e.g., “info”, “warning”, “error”). Defaults to “info”.
- add_warning(category, message)[source]
Adds a warning message to a specific category in the status dictionary.
- Parameters:
category (str) – The category under which the warning should be stored.
message (str) – The warning message to add.
- generate_status_report(level=None)[source]
Generates a formatted string report of the current status, optionally filtered by a specified level.
- Parameters:
level (str, optional) – The status category to filter by (e.g., “warnings”, “errors”, “logs”). If None, includes all categories.
- Returns:
- A formatted status report containing warnings, errors, and logs.
Returns “No status messages available.” if no messages are found.
- Return type:
str
- get_status()[source]
Returns the full status dictionary containing warnings, errors, and logs.
- Returns:
The complete status dictionary.
- Return type:
Dict[str, Dict[str, List[str]]]
seed_vault.models.config module
- class seed_vault.models.config.AuthConfig(**data)[source]
Bases:
BaseModel
The AuthConfig class defines attributes for network.station.location.channel code, username, and password.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
nslc_code:
str
-
password:
str
-
username:
str
- class seed_vault.models.config.DateConfig(**data)[source]
Bases:
BaseModel
This class defines a DateConfig with optional start and end times, as well as optional before and after time definition used for events.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
-
end_after:
Union
[date
,Any
,None
]
-
end_before:
Union
[date
,Any
,None
]
-
end_time:
Union
[date
,Any
,None
]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
start_after:
Union
[date
,Any
,None
]
-
start_before:
Union
[date
,Any
,None
]
-
start_time:
Union
[date
,Any
,None
]
-
end_after:
- class seed_vault.models.config.EventConfig(**data)[source]
Bases:
BaseModel
The EventConfig class defines parameters for configuring earthquake event queries with default values. It is designed to store criteria for filtering earthquake events.
- client
The FDSN client to use for retrieving earthquake data. Defaults to “EARTHSCOPE”.
- Type:
Optional[str]
- date_config
The date range for querying earthquake events.
- Type:
- model
The seismic velocity model to use. Defaults to “IASP91”.
- Type:
str
- min_depth
The minimum earthquake depth in kilometers. Defaults to -5.0.
- Type:
float
- max_depth
The maximum earthquake depth in kilometers. Defaults to 1000.0.
- Type:
float
- min_magnitude
The minimum earthquake magnitude. Defaults to 5.5.
- Type:
float
- max_magnitude
The maximum earthquake magnitude. Defaults to 10.0.
- Type:
float
- min_radius
The minimum distance from the event in degrees. Defaults to 30.0.
- Type:
float
- max_radius
The maximum distance from the event in degrees. Defaults to 90.0.
- Type:
float
- before_p_sec
The number of seconds before the P-wave arrival. Defaults to 10.
- Type:
int
- after_p_sec
The number of seconds after the P-wave arrival. Defaults to 130.
- Type:
int
- include_all_origins
Whether to include all origins of an event. Defaults to False.
- Type:
bool
- include_all_magnitudes
Whether to include all magnitude values for an event. Defaults to False.
- Type:
bool
- include_arrivals
Whether to include phase arrivals in the results. Defaults to False.
- Type:
bool
- local_catalog
The local earthquake catalog name, if applicable.
- Type:
Optional[str]
- eventtype
The type of earthquake event (e.g., “earthquake”, “explosion”).
- Type:
Optional[str]
- catalog
The name of the earthquake catalog used for querying events.
- Type:
Optional[str]
- contributor
The name of the contributor providing the earthquake data.
- Type:
Optional[str]
- updatedafter
The UTC timestamp indicating the last update time for event selection.
- Type:
Optional[str]
- limit
The maximum number of events to retrieve.
- Type:
Optional[str]
- offset
The offset for paginated earthquake data retrieval.
- Type:
Optional[str]
- selected_catalogs
A list of user-selected earthquake catalogs.
- Type:
Optional[Any]
- geo_constraint
Geospatial constraints on earthquake events.
- Type:
Optional[List[GeometryConstraint]]
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- class Config[source]
Bases:
object
- exclude = {'selected_catalogs'}
- json_encoders = {typing.Any: <function EventConfig.Config.<lambda>>}
-
after_p_sec:
int
-
before_p_sec:
int
-
catalog:
Optional
[str
]
-
client:
Optional
[str
]
-
contributor:
Optional
[str
]
-
date_config:
DateConfig
-
eventtype:
Optional
[str
]
-
geo_constraint:
Optional
[List
[GeometryConstraint
]]
-
include_all_magnitudes:
bool
-
include_all_origins:
bool
-
include_arrivals:
bool
-
limit:
Optional
[str
]
-
local_catalog:
Optional
[str
]
-
max_depth:
float
-
max_magnitude:
float
-
max_radius:
float
-
min_depth:
float
-
min_magnitude:
float
-
min_radius:
float
-
model:
str
- model_config: ClassVar[ConfigDict] = {'exclude': {'selected_catalogs'}, 'json_encoders': {typing.Any: <function EventConfig.Config.<lambda>>}}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
offset:
Optional
[str
]
-
selected_catalogs:
Optional
[Any
]
-
updatedafter:
Optional
[str
]
- class seed_vault.models.config.GeometryConstraint(*, geo_type: GeoConstraintType | None = GeoConstraintType.NONE, coords: RectangleArea | CircleArea | None = None)[source]
Bases:
BaseModel
The GeometryConstraint class defines a geometry constraint with a specified type and coordinates, automatically determining the constraint type based on the provided coordinates.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
-
coords:
Union
[RectangleArea
,CircleArea
,None
]
-
geo_type:
Optional
[GeoConstraintType
]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
coords:
- class seed_vault.models.config.PredictionData(**data)[source]
Bases:
BaseModel
The PredictionData class stores predicted arrival times of seismic waves at a given station.
This class represents the association between an event and a station, including estimated P-wave and S-wave arrival times.
- resource_id
The unique identifier for the seismic event.
- Type:
str
- station_id
The identifier of the seismic station where arrivals are recorded.
- Type:
str
- p_arrival
The predicted arrival time of the primary (P) wave.
- Type:
datetime
- s_arrival
The predicted arrival time of the secondary (S) wave.
- Type:
datetime
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
p_arrival:
datetime
-
resource_id:
str
-
s_arrival:
datetime
-
station_id:
str
- class seed_vault.models.config.ProcessingConfig(**data)[source]
Bases:
BaseModel
This class defines a configuration for processing with default values for the number of processes, gap tolerance, and logging.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
-
gap_tolerance:
Optional
[int
]
-
logging:
Optional
[str
]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
num_processes:
Optional
[int
]
-
gap_tolerance:
- class seed_vault.models.config.SeismoLoaderSettings(**data)[source]
Bases:
BaseModel
The SeismoLoaderSettings class defines configuration settings for managing seismic data retrieval, processing, and storage. It provides attributes to control how seismic waveforms, station metadata, and event data are handled.
This class also includes methods for configuring download types, reading settings from a configuration file, managing authentication, and persisting settings to disk.
- sds_path
The directory path for the Seismic Data Structure (SDS). Defaults to data/SDS.
- Type:
str
- db_path
The database file path for tracking downloaded data. Defaults to data/database.sqlite.
- Type:
str
- download_type
The type of download to perform (e.g., event-based or continuous).
- Type:
- selected_workflow
The selected workflow type (e.g., event-based, station-based).
- Type:
- processing
Configuration settings for data processing. Defaults to None.
- Type:
- client_url_mapping
A mapping of client URLs for data retrieval.
- Type:
Optional[UrlMappings]
- extra_clients
A dictionary of additional clients for querying seismic data.
- Type:
Optional[dict]
- auths
A list of authentication configurations.
- Type:
Optional[List[AuthConfig]]
- waveform
Configuration for waveform retrieval. Defaults to None.
- Type:
- station
Configuration for station metadata retrieval. Defaults to None.
- Type:
- event
Configuration for event data retrieval. Defaults to None.
- Type:
- predictions
A dictionary mapping event-station pairs to arrival time predictions.
- Type:
Dict[str, PredictionData]
- status_handler
A handler for tracking status messages and errors.
- Type:
- set_download_type_from_workflow()[source]
Sets the download_type attribute based on the selected workflow.
- from_cfg_file(cls, cfg_source
Union[str, IO]) -> “SeismoLoaderSettings”: Loads and initializes a SeismoLoaderSettings instance from a configuration file.
- add_prediction(resource_id
str, station_id: str, p_arrival: datetime, s_arrival: datetime): Adds a predicted P-wave and S-wave arrival time for a given event and station.
- get_prediction(resource_id
str, station_id: str) -> Optional[PredictionData]: Retrieves the predicted arrival time for a given event and station.
- to_pickle(pickle_path
str) -> None: Serializes the SeismoLoaderSettings instance to a pickle file.
- from_pickle_file(cls, pickle_path
str) -> “SeismoLoaderSettings”: Loads a SeismoLoaderSettings instance from a pickle file.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- class Config[source]
Bases:
object
- arbitrary_types_allowed = True
- json_encoders = {<class 'datetime.datetime'>: <function SeismoLoaderSettings.Config.<lambda>>}
- add_prediction(resource_id, station_id, p_arrival, s_arrival)[source]
Adds a predicted P-wave and S-wave arrival time for a given event and station.
- Parameters:
resource_id (str) – The unique identifier of the seismic event.
station_id (str) – The identifier of the seismic station.
p_arrival (datetime) – The predicted arrival time of the P-wave.
s_arrival (datetime) – The predicted arrival time of the S-wave.
-
auths:
Optional
[List
[AuthConfig
]]
-
client_url_mapping:
Optional
[UrlMappings
]
- classmethod create_default()[source]
Creates an instance of SeismoLoaderSettings with default values.
-
db_path:
str
-
download_type:
DownloadType
-
event:
Optional
[EventConfig
]
-
extra_clients:
Optional
[dict
]
- classmethod from_cfg_file(cfg_source)[source]
Loads a SeismoLoaderSettings instance from a configuration file.
- Parameters:
cfg_source (Union[str, IO]) – The path to the configuration file or a file-like object.
- Returns:
A populated instance of the class.
- Return type:
- classmethod from_pickle_file(pickle_path)[source]
Loads a SeismoLoaderSettings instance from a pickle file.
- Parameters:
pickle_path (str) – The file path from which the object should be loaded.
- Returns:
The loaded instance of the class.
- Return type:
- get_prediction(resource_id, station_id)[source]
Retrieves the predicted arrival time for a given event and station.
- Parameters:
resource_id (str) – The unique identifier of the seismic event.
station_id (str) – The identifier of the seismic station.
- Returns:
The predicted arrival time data, or None if not found.
- Return type:
Optional[PredictionData]
- has_changed(old_settings)[source]
Compare self with old_settings and return a dictionary indicating which parts have changed.
- Parameters:
old_settings (SeismoLoaderSettings) – The old settings to compare against.
- Returns:
A dictionary with keys indicating which properties changed.
- Return type:
Dict[str, bool]
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'json_encoders': {<class 'datetime.datetime'>: <function SeismoLoaderSettings.Config.<lambda>>}}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
predictions:
Dict
[str
,PredictionData
]
-
processing:
ProcessingConfig
-
sds_path:
str
-
selected_workflow:
WorkflowType
- set_download_type_from_workflow()[source]
Sets the download type based on the selected workflow.
If selected_workflow is EVENT_BASED or STATION_BASED, sets download_type to EVENT. If selected_workflow is CONTINUOUS, sets download_type to CONTINUOUS.
-
station:
StationConfig
-
status_handler:
StatusHandler
- to_cfg()[source]
Converts the SeismoLoaderSettings instance into a ConfigParser object.
This method constructs a configuration file representation of the current settings stored in the SeismoLoaderSettings instance. It organizes the settings into sections such as SDS, DATABASE, PROCESSING, AUTH, WAVEFORM, STATION, and EVENT.
- Returns:
A ConfigParser object representing the current settings.
- Return type:
configparser.ConfigParser
- to_pickle(pickle_path)[source]
Serializes the SeismoLoaderSettings instance to a pickle file.
- Parameters:
pickle_path (str) – The file path where the object should be saved.
- Return type:
None
-
waveform:
WaveformConfig
- class seed_vault.models.config.SeismoQuery(cmb_str_n_s=None, *, network: str | None = None, station: str | None = None, location: str | None = None, channel: str | None = None, starttime: datetime | None = None, endtime: datetime | None = None)[source]
Bases:
BaseModel
This Python class SeismoQuery represents a seismic query params with properties for network, station, location, channel, start time, and end time, along with methods to convert combined network and station string to individual properties.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
-
channel:
Optional
[str
]
- property cmb_str
-
endtime:
Optional
[datetime
]
-
location:
Optional
[str
]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
network:
Optional
[str
]
-
starttime:
Optional
[datetime
]
-
station:
Optional
[str
]
-
channel:
- class seed_vault.models.config.StationConfig(**data)[source]
Bases:
BaseModel
The StationConfig class defines configuration settings for querying seismic stations.
This class allows users to specify parameters such as the seismic network, station selection, and geographical constraints while retrieving station metadata.
- client
The FDSN client for retrieving station metadata. Defaults to “EARTHSCOPE”.
- Type:
Optional[str]
- force_stations
A list of stations to forcefully include in the query.
- Type:
Optional[List[SeismoQuery]]
- exclude_stations
A list of stations to exclude from the query.
- Type:
Optional[List[SeismoQuery]]
- date_config
The date range for station availability queries.
- Type:
- local_inventory
Path to a local station inventory file, if applicable.
- Type:
Optional[str]
- network
The seismic network code (e.g., “IU”, “NE”) to filter stations.
- Type:
Optional[str]
- station
The station code to filter results.
- Type:
Optional[str]
- location
The location code for further filtering.
- Type:
Optional[str]
- channel
The channel code (e.g., “BHZ”, “HHZ”) to specify station channels.
- Type:
Optional[str]
- highest_samplerate_only
Whether to select only the station with the highest sample rate. Defaults to False.
- Type:
bool
- selected_invs
A list of pre-selected inventories.
- Type:
Optional[Any]
- geo_constraint
Geospatial constraints to filter stations.
- Type:
Optional[List[GeometryConstraint]]
- include_restricted
Whether to include restricted (non-public) stations. Defaults to False.
- Type:
bool
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- class Config[source]
Bases:
object
- exclude = {'selected_invs'}
- json_encoders = {typing.Any: <function StationConfig.Config.<lambda>>}
-
channel:
Optional
[str
]
-
client:
Optional
[str
]
-
date_config:
DateConfig
-
exclude_stations:
Optional
[List
[SeismoQuery
]]
-
force_stations:
Optional
[List
[SeismoQuery
]]
-
geo_constraint:
Optional
[List
[GeometryConstraint
]]
-
highest_samplerate_only:
bool
-
include_restricted:
bool
-
local_inventory:
Optional
[str
]
-
location:
Optional
[str
]
- model_config: ClassVar[ConfigDict] = {'exclude': {'selected_invs'}, 'json_encoders': {typing.Any: <function StationConfig.Config.<lambda>>}}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
network:
Optional
[str
]
-
selected_invs:
Optional
[Any
]
-
station:
Optional
[str
]
- class seed_vault.models.config.WaveformConfig(**data)[source]
Bases:
BaseModel
The WaveformConfig class defines a data model with optional fields for configuring waveform data requests, with a method to reset all fields to their default values.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
-
channel_pref:
Optional
[str
]
-
client:
Optional
[str
]
-
days_per_request:
Optional
[int
]
-
force_redownload:
Optional
[bool
]
-
location_pref:
Optional
[str
]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
channel_pref:
- seed_vault.models.config.convert_to_str(val)[source]
The function convert_to_str converts various types of values to strings, handling different cases and providing error handling.
- Parameters:
val – The convert_to_str function takes a value val as input and attempts to convert it to a string representation. It handles different types of values such as None, Enum, strings, integers, floats, booleans, objects with __str__ method, and other unsupported
- Returns:
The function convert_to_str returns a string representation of the input value val. It handles different types of input values and converts them to a string using various methods based on their type. If the conversion fails, it catches the exception and returns an empty string.
- seed_vault.models.config.parse_time(time_str)[source]
The function parse_time attempts to parse a given time string in various formats and return it in ISO format.
- Parameters:
time_str – The date-time in string format. Some acceptable input formats are: ‘2014,2,1’ | ‘2014001’ | ‘2014,3,2,0,0,5’
- Returns:
The parse_time function is attempting to parse a time string using different formats. If successful, it returns the parsed time in ISO format. If parsing fails for all formats, it returns None.
- seed_vault.models.config.safe_add_to_config(config, section, key, value)[source]
The function safe_add_to_config safely adds key-value pairs to a configuration dictionary, handling any exceptions that may occur.
- Parameters:
config – Config is a dictionary that stores configuration settings. It typically has sections as keys, where each section contains key-value pairs representing specific configuration settings.
section – Section refers to a specific section within the configuration file where the key-value pair will be added. It helps organize and categorize different settings or options within the configuration file.
key – The key parameter in the safe_add_to_config function refers to the key of the key-value pair that you want to add to the configuration. It is used to uniquely identify the value associated with it within a specific section of the configuration.
value – Value is the data that you want to add to the configuration file under the specified section and key. It could be a string, integer, boolean, or any other data type that you want to store in the configuration.
seed_vault.models.exception module
seed_vault.models.url_mapping module
- class seed_vault.models.url_mapping.UrlMapping(**data)[source]
Bases:
BaseModel
Represents a mapping between a seismic data client and its corresponding URL.
- client
The name of the seismic data client.
- Type:
str
- url
The associated URL for retrieving seismic data.
- Type:
str
- is_original
Indicates whether the client is an original one from URL_MAPPINGS.
- Type:
bool
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
-
client:
str
-
is_original:
bool
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
url:
str
- class seed_vault.models.url_mapping.UrlMappings(**data)[source]
Bases:
BaseModel
Manages and synchronizes client URL mappings for seismic data retrieval.
This class maintains a list of known clients, checks for updates, and allows users to add new clients. It also provides functionality to load, save, and sync mappings with URL_MAPPINGS.
- maps
A dictionary mapping client names to URLs.
- Type:
Optional[dict]
- df_maps
A Pandas DataFrame storing the client mapping data.
- Type:
Optional[Any]
- save_path
The file path where client mappings are stored (default: clients.csv).
- Type:
Path
- check_saved_clients(df
pd.DataFrame) -> pd.DataFrame: Validates and updates the saved client list by checking against URL_MAPPINGS.
- save(extra_clients
List[dict] = None): Saves the client mappings to a CSV file and synchronizes them with URL_MAPPINGS.
- sync_maps(df_maps
pd.DataFrame): Synchronizes the maps dictionary with the latest client mappings from a dataframe.
- get_clients(client_type
ClientType = ClientType.ALL) -> Union[List[str], Dict[str, str]]: Retrieves a list of clients based on the specified client_type.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- check_saved_clients(df)[source]
Validates and updates the saved client list by checking against URL_MAPPINGS.
This method ensures that: - Clients marked as original but no longer exist in URL_MAPPINGS are removed. - New clients found in URL_MAPPINGS that are not in the saved list are added.
- Parameters:
df (pd.DataFrame) – The dataframe containing the saved client mappings.
- Returns:
The updated dataframe with verified client mappings.
- Return type:
pd.DataFrame
-
df_maps:
Optional
[Any
]
- get_clients(client_type=ClientType.ALL)[source]
Retrieves a list of clients based on the specified client_type.
- Parameters:
client_type (ClientType, optional) – The type of clients to retrieve. - ClientType.ALL: Returns all clients. - ClientType.ORIGINAL: Returns only the original clients. - ClientType.EXTRA: Returns only the extra clients.
- Returns:
A list of client names or a dictionary of client URLs.
- Return type:
Union[List[str], Dict[str, str]]
- Raises:
ValueError – If an unknown client_type is provided.
- load()[source]
Loads the client mappings from the saved file and ensures synchronization.
This method: - Initializes the maps dictionary. - Calls save() to ensure the client mappings are properly saved and updated.
-
maps:
Optional
[dict
]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- save(extra_clients=None)[source]
Saves the client mappings to a CSV file and synchronizes them with URL_MAPPINGS.
This method: - Loads the existing client mappings if a saved file exists. - Updates the list with newly added extra_clients if provided. - Removes outdated extra clients that are no longer in use. - Writes the updated mappings back to disk. - Synchronizes the mappings with URL_MAPPINGS.
- Parameters:
extra_clients (List[dict], optional) – A list of additional client mappings to add.
-
save_path:
Path
- sync_maps(df_maps)[source]
Synchronizes the maps dictionary with the latest client mappings from the dataframe.
This method updates both the instance’s maps dictionary and the global URL_MAPPINGS to reflect the latest client URL assignments.
- Parameters:
df_maps (pd.DataFrame) – The dataframe containing the client mapping information.