From b986da5fef7bc218f902eaef10b2c0e4e78b55ae Mon Sep 17 00:00:00 2001 From: "Kasper D. Fischer" Date: Fri, 21 Mar 2025 17:43:41 +0100 Subject: [PATCH] [minor] fixed some typos and missing import --- README.md | 34 +++++++++++++++++----------------- survBot.py | 18 +++++++++--------- utils.py | 3 ++- 3 files changed, 28 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 48bbc3c..3eb633f 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ version: 0.2 survBot is a small program used to track station quality channels of DSEBRA stations via PowBox output over SOH channels - by analysing contents of a Seiscomp3 datapath. + by analyzing contents of a Seiscomp data archive. ## Requirements @@ -60,33 +60,33 @@ The directory `/path/to/conf-dir` should contain the `parameters.yaml` file, and The e-mail server settings can be configured in the `parameters.yaml` file. The following settings are available: -- `mailserver`: the address of the mail server -- `auth_type`: the authentication type for the mail server (`None`, `SSL`, `TLS`) -- `port`: the port of the mail server -- `user`: the username for the mail server (if required) -- `password`: the password for the mail server (if required) +* `mailserver`: the address of the mail server +* `auth_type`: the authentication type for the mail server (`None`, `SSL`, `TLS`) +* `port`: the port of the mail server +* `user`: the username for the mail server (if required) +* `password`: the password for the mail server (if required) -The `user` and `password` fields are optional, and can be left empty if the mail server does not require authentication. The `auth_type` field can be set to `None` if no authentication is required, `SSL` if the mail server requires SSL authentication, or `TLS` if the mail server requires TLS authentication. If the `user` or `password` fileds are set to `Docker` ore `ENV` the program will try to read the values from the docker secrets `mail_user` and `mail_password` or environment variables `MAIL_USER` and `MAIL_PASSWORD` respectively. Docker secrets are only available in Docker Swarm mode, i.e. if the program is run as a service. +The `user` and `password` fields are optional, and can be left empty if the mail server does not require authentication. The `auth_type` field can be set to `None` if no authentication is required, `SSL` if the mail server requires SSL authentication, or `TLS` if the mail server requires TLS authentication. If the `user` or `password` fields are set to `Docker` ore `ENV` the program will try to read the values from the docker secrets `mail_user` and `mail_password` or environment variables `MAIL_USER` and `MAIL_PASSWORD` respectively. Docker secrets are only available in Docker Swarm mode, i.e. if the program is run as a service. ## Version Changes ### 0.2 -- surveillance of mass, clock and gaps -- individual mailing lists for different stations -- html mail with recent status information -- updated web page design -- restructured parameter file -- recognize if PBox is disconnected +* surveillance of mass, clock and gaps +* individual mailing lists for different stations +* html mail with recent status information +* updated web page design +* restructured parameter file +* recognize if PBox is disconnected ### 0.2-docker -- added Dockerfile for easy deployment -- added more settings for connection to a mail server +* added Dockerfile for easy deployment +* added more settings for connection to a mail server ## Staff -Original author: M.Paffrath (marcel.paffrath@rub.de) -Contributions by: Kasper D. Fischer (kasper.fischer@rub.de) +Original author: M.Paffrath () +Contributions: Kasper D. Fischer () Jan 2025 diff --git a/survBot.py b/survBot.py index 2d5fef5..bd4fe70 100755 --- a/survBot.py +++ b/survBot.py @@ -234,7 +234,7 @@ class SurveillanceBot(object): self.gaps = self.dataStream.get_gaps(min_gap=self.parameters['THRESHOLDS'].get('min_gap')) self.dataStream.merge() - # organise data in dictionary with key for each station + # organize data in dictionary with key for each station for trace in self.dataStream: nwst_id = get_nwst_id(trace) if not nwst_id in self.data.keys(): @@ -351,7 +351,7 @@ class SurveillanceBot(object): first_exec = False def console_print(self, itemlist, str_len=21, sep='|', seplen=3): - assert len(sep) <= seplen, f'Make sure seperator has less than {seplen} characters' + assert len(sep) <= seplen, f'Make sure separator has less than {seplen} characters' sl = sep.ljust(seplen) sr = sep.rjust(seplen) string = sl @@ -1299,7 +1299,7 @@ class StationQC(object): # Warn in case of voltage under OK-level (1V) if len(under) > 0: - # try calculate number of occurences from gaps between indices + # try calculate number of occurrences from gaps between indices n_occurrences = len(np.where(np.diff(under) > 1)[0]) + 1 voltage_dict[-1] = under self.status_other(detailed_message=f'Trace {trace.get_id()}: ' @@ -1395,15 +1395,15 @@ class StatusOK(Status): class StatusWarn(Status): - def __init__(self, message='WARN', count=1, last_occurence=None, detailed_messages=None, show_count=False): - super(StatusWarn, self).__init__(message=message, count=count, last_occurrence=last_occurence, + def __init__(self, message='WARN', count=1, last_occurrence=None, detailed_messages=None, show_count=False): + super(StatusWarn, self).__init__(message=message, count=count, last_occurrence=last_occurrence, detailed_messages=detailed_messages, show_count=show_count) self.set_warn() class StatusError(Status): - def __init__(self, message='FAIL', count=1, last_occurence=None, detailed_messages=None, show_count=False): - super(StatusError, self).__init__(message=message, count=count, last_occurrence=last_occurence, + def __init__(self, message='FAIL', count=1, last_occurrence=None, detailed_messages=None, show_count=False): + super(StatusError, self).__init__(message=message, count=count, last_occurrence=last_occurrence, detailed_messages=detailed_messages, show_count=show_count) self.set_error() self.default_message = message @@ -1420,8 +1420,8 @@ class StatusError(Status): class StatusOther(Status): - def __init__(self, messages=None, count=1, last_occurence=None, detailed_messages=None): - super(StatusOther, self).__init__(count=count, last_occurrence=last_occurence, + def __init__(self, messages=None, count=1, last_occurrence=None, detailed_messages=None): + super(StatusOther, self).__init__(count=count, last_occurrence=last_occurrence, detailed_messages=detailed_messages) if messages is None: messages = [] diff --git a/utils.py b/utils.py index f8364ab..65fe69e 100644 --- a/utils.py +++ b/utils.py @@ -6,6 +6,7 @@ import logging import matplotlib import numpy as np import smtplib +import os from obspy import Stream @@ -174,7 +175,7 @@ def transform_trace(data, transf): elif operator_str == '/': data = data / val else: - raise IOError(f'Unknown arithmethic operator string: {operator_str}') + raise IOError(f'Unknown arithmetic operator string: {operator_str}') return data