Skip to content

Commit 12c5ef2

Browse files
committed
Use the global config object in ssp_output.py, ssp_qml_output.py, and ssp_sqlite_output.py
1 parent 193e54a commit 12c5ef2

File tree

4 files changed

+73
-36
lines changed

4 files changed

+73
-36
lines changed

sourcespec2/source_spec.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ def main():
7373

7474
# Save output
7575
from .ssp_output import write_output, save_spectra
76-
write_output(config, sspec_output)
77-
save_spectra(config, spec_st)
76+
write_output(sspec_output)
77+
save_spectra(spec_st)
7878

7979
# Save residuals
8080
from .ssp_residuals import spectral_residuals

sourcespec2/ssp_output.py

Lines changed: 50 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@
2222
from datetime import datetime
2323
from tzlocal import get_localzone
2424
import numpy as np
25+
from .config import config
2526
from .ssp_qml_output import write_qml
2627
from .ssp_sqlite_output import write_sqlite
2728
from ._version import get_versions
2829
logger = logging.getLogger(__name__.rsplit('.', maxsplit=1)[-1])
2930

3031

31-
def _write_author_and_agency_to_parfile(config, parfile):
32+
def _write_author_and_agency_to_parfile(parfile):
3233
author_str = empty_author_str = '\n*** Author:'
3334
if config.author_name is not None:
3435
author_str += f' {config.author_name}'
@@ -65,7 +66,7 @@ def _value_error_str(value, error, fmt):
6566
return s
6667

6768

68-
def _write_parfile(config, sspec_output):
69+
def _write_parfile(sspec_output):
6970
"""
7071
Write station source parameters to file.
7172
@@ -286,13 +287,23 @@ def _write_parfile(config, sspec_output):
286287
f'{config.end_of_run_tz}')
287288
if config.options.run_id:
288289
parfile.write(f'\n*** Run ID: {config.options.run_id}')
289-
_write_author_and_agency_to_parfile(config, parfile)
290+
_write_author_and_agency_to_parfile(parfile)
290291

291292
logger.info(f'Output written to file: {parfilename}')
292293

293294

294295
def _dict2yaml(dict_like, level=0):
295-
"""Serialize a dict-like object into YAML format."""
296+
"""
297+
Serialize a dict-like object into YAML format.
298+
299+
:param dict_like: Dict-like object to serialize.
300+
:type dict_like: dict
301+
:param level: Indentation level.
302+
:type level: int
303+
304+
:return: YAML-formatted string.
305+
:rtype: str
306+
"""
296307
if not isinstance(dict_like, Mapping):
297308
raise TypeError('dict_like must be a dict-like object')
298309
comments = dict_like.get('_comments', {})
@@ -329,8 +340,13 @@ def _dict2yaml(dict_like, level=0):
329340
return lines
330341

331342

332-
def _write_yaml(config, sspec_output):
333-
"""Write sspec output in a YAML file."""
343+
def _write_yaml(sspec_output):
344+
"""
345+
Write sspec output in a YAML file.
346+
347+
:param sspec_output: Output of the spectral inversion.
348+
:type sspec_output: :class:`~sourcespec.ssp_data_types.SourceSpecOutput`
349+
"""
334350
if not os.path.exists(config.options.outdir):
335351
os.makedirs(config.options.outdir)
336352
evid = config.event.event_id
@@ -346,7 +362,13 @@ def _write_yaml(config, sspec_output):
346362
logger.info(f'Output written to file: {yamlfilename}')
347363

348364

349-
def _write_hypo71(config, sspec_output):
365+
def _write_hypo71(sspec_output):
366+
"""
367+
Write source parameters to hypo71 file.
368+
369+
:param sspec_output: Output of the spectral inversion.
370+
:type sspec_output: :class:`~sourcespec.ssp_data_types.SourceSpecOutput`
371+
"""
350372
if not config.options.hypo_file:
351373
return
352374
if config.hypo_file_format != 'hypo71':
@@ -376,7 +398,7 @@ def _write_hypo71(config, sspec_output):
376398
logger.info(f'Hypo file written to: {hypo_file_out}')
377399

378400

379-
def _make_symlinks(config):
401+
def _make_symlinks():
380402
"""Make symlinks to input files into output directory."""
381403
# Windows does not support symlinks
382404
if os.name == 'nt':
@@ -406,8 +428,13 @@ def _make_symlinks(config):
406428
os.symlink(filename, linkname)
407429

408430

409-
def write_output(config, sspec_output):
410-
"""Write results into different formats."""
431+
def write_output(sspec_output):
432+
"""
433+
Write results into different formats.
434+
435+
:param sspec_output: Output of the spectral inversion.
436+
:type sspec_output: :class:`~sourcespec.ssp_data_types.SourceSpecOutput`
437+
"""
411438
# Add run info to output object
412439
run_info = sspec_output.run_info
413440
run_info.SourceSpec_version = get_versions()['version']
@@ -423,21 +450,26 @@ def write_output(config, sspec_output):
423450
run_info.agency_short_name = config.agency_short_name
424451
run_info.agency_url = config.agency_url
425452
# Symlink input files into output directory
426-
_make_symlinks(config)
453+
_make_symlinks()
427454
# Write to parfile (deprecated)
428-
_write_parfile(config, sspec_output)
455+
_write_parfile(sspec_output)
429456
# Write to YAML file
430-
_write_yaml(config, sspec_output)
457+
_write_yaml(sspec_output)
431458
# Write to SQLite database, if requested
432-
write_sqlite(config, sspec_output)
459+
write_sqlite(sspec_output)
433460
# Write to hypo file, if requested
434-
_write_hypo71(config, sspec_output)
461+
_write_hypo71(sspec_output)
435462
# Write to quakeml file, if requested
436-
write_qml(config, sspec_output)
463+
write_qml(sspec_output)
464+
437465

466+
def save_spectra(spec_st):
467+
"""
468+
Save spectra to file.
438469
439-
def save_spectra(config, spec_st):
440-
"""Save spectra to file."""
470+
:param spec_st: Stream of spectra.
471+
:type spec_st: :class:`~sourcespec.spectrum.SpectrumStream`
472+
"""
441473
if not config.save_spectra:
442474
return
443475
outfile = os.path.join(

sourcespec2/ssp_qml_output.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
MomentTensor, QuantityError, ResourceIdentifier,
2020
StationMagnitude, StationMagnitudeContribution,
2121
WaveformStreamID)
22+
from .config import config
2223
from ._version import get_versions
2324
logger = logging.getLogger(__name__.rsplit('.', maxsplit=1)[-1])
2425

@@ -63,8 +64,13 @@ def __init__(self, value=None):
6364
self.value = value
6465

6566

66-
def write_qml(config, sspec_output):
67-
"""Write QuakeML output."""
67+
def write_qml(sspec_output):
68+
"""
69+
Write QuakeML output.
70+
71+
:param sspec_output: Output from spectral inversion.
72+
:type sspec_output: :class:`~sourcespec.ssp_data_types.SourceSpecOutput`
73+
"""
6874
if not config.options.qml_file:
6975
config.qml_file_out = None
7076
return

sourcespec2/ssp_sqlite_output.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import os.path
1313
import logging
1414
import sqlite3
15+
from .config import config
1516
from .ssp_setup import ssp_exit
1617
from .ssp_db_definitions import (
1718
DB_VERSION,
@@ -38,6 +39,7 @@ def _open_sqlite_db(db_file):
3839
3940
:param db_file: SQLite database file
4041
:type db_file: str
42+
4143
:return: SQLite connection and cursor
4244
:rtype: tuple
4345
"""
@@ -131,7 +133,7 @@ def _create_stations_table(cursor, db_file):
131133
_log_db_write_error(db_err, db_file)
132134

133135

134-
def _write_stations_table(cursor, db_file, sspec_output, config):
136+
def _write_stations_table(cursor, db_file, sspec_output):
135137
"""
136138
Write station source parameters to database.
137139
@@ -141,8 +143,9 @@ def _write_stations_table(cursor, db_file, sspec_output, config):
141143
:type db_file: str
142144
:param sspec_output: sspec output object
143145
:type sspec_output: ssp_data_types.SourceSpecOutput
144-
:param config: sspec configuration object
145-
:type config: config.Config
146+
147+
:return: Number of observations
148+
:rtype: int
146149
"""
147150
event = config.event
148151
evid = event.event_id
@@ -218,7 +221,7 @@ def _create_events_table(cursor, db_file):
218221
_log_db_write_error(db_err, db_file)
219222

220223

221-
def _write_events_table(cursor, db_file, sspec_output, config, nobs):
224+
def _write_events_table(cursor, db_file, sspec_output, nobs):
222225
"""
223226
Write Events table.
224227
@@ -228,8 +231,6 @@ def _write_events_table(cursor, db_file, sspec_output, config, nobs):
228231
:type db_file: str
229232
:param sspec_output: SSP output object
230233
:type sspec_output: ssp_data_types.SourceSpecOutput
231-
:param config: SSP configuration object
232-
:type config: config.Config
233234
:param nobs: Number of observations
234235
:type nobs: int
235236
"""
@@ -396,14 +397,12 @@ def _write_events_table(cursor, db_file, sspec_output, config, nobs):
396397
ssp_exit(1)
397398

398399

399-
def write_sqlite(config, sspec_output):
400+
def write_sqlite(sspec_output):
400401
"""
401-
Write SSP output to SQLite database.
402+
Write SourceSpec output to SQLite database.
402403
403-
:param config: SSP configuration object
404-
:type config: config.Config
405-
:param sspec_output: SSP output object
406-
:type sspec_output: ssp_data_types.SourceSpecOutput
404+
:param sspec_output: SourceSpec output object
405+
:type sspec_output: :class:`~sourcespec.ssp_data_types.SourceSpecOutput`
407406
"""
408407
db_file = config.get('database_file', None)
409408
if not db_file:
@@ -419,13 +418,13 @@ def write_sqlite(config, sspec_output):
419418
# Create Stations table
420419
_create_stations_table(cursor, db_file)
421420
# Write station source parameters to database
422-
nobs = _write_stations_table(cursor, db_file, sspec_output, config)
421+
nobs = _write_stations_table(cursor, db_file, sspec_output)
423422
# Commit changes
424423
conn.commit()
425424
# Create Events table
426425
_create_events_table(cursor, db_file)
427426
# Write event source parameters to database
428-
_write_events_table(cursor, db_file, sspec_output, config, nobs)
427+
_write_events_table(cursor, db_file, sspec_output, nobs)
429428
# Commit changes and close database
430429
conn.commit()
431430
conn.close()

0 commit comments

Comments
 (0)