|
11 | 11 | """
|
12 | 12 | import logging
|
13 | 13 | import numpy as np
|
14 |
| -from ..config import generic_printer, rq_exit |
| 14 | +from ..config import config, generic_printer, rq_exit |
15 | 15 | from .families import FamilyNotFoundError, read_selected_families
|
16 | 16 | logger = logging.getLogger(__name__.rsplit('.', maxsplit=1)[-1])
|
17 | 17 |
|
18 | 18 |
|
19 |
| -def print_families(): |
| 19 | +def _print_family_details(family, duration_units, duration_multiplier): |
20 | 20 | """
|
21 |
| - Print families to screen. |
| 21 | + Print details of a family to screen. |
| 22 | +
|
| 23 | + :param family: Family to print. |
| 24 | + :type family: requake.families.Family |
| 25 | + :param duration_units: Units for duration. |
| 26 | + :type duration_units: str |
| 27 | + :param duration_multiplier: Multiplier for duration. |
| 28 | + :type duration_multiplier: float |
22 | 29 | """
|
23 |
| - try: |
24 |
| - families = read_selected_families() |
25 |
| - except (FileNotFoundError, FamilyNotFoundError) as msg: |
26 |
| - logger.error(msg) |
27 |
| - rq_exit(1) |
| 30 | + print(f'Family: {family.number}') |
| 31 | + print(f'Number of events: {len(family)}') |
| 32 | + print(f'Longitude: {family.lon:.4f}') |
| 33 | + print(f'Latitude: {family.lat:.4f}') |
| 34 | + print(f'Depth: {family.depth:.3f} km') |
| 35 | + print(f'Start time: {family.starttime}') |
| 36 | + print(f'End time: {family.endtime}') |
| 37 | + duration = family.duration * duration_multiplier |
| 38 | + print(f'Duration: {duration:.2f} {duration_units}') |
| 39 | + print(f'Slip rate: {family.slip_rate:.1f} cm/y') |
| 40 | + print(f'Magnitude range: {family.magmin:.1f} - {family.magmax:.1f}') |
| 41 | + print('Events:') |
| 42 | + for event in family: |
| 43 | + print(f' {event}') |
28 | 44 |
|
29 |
| - # determine duration units |
30 |
| - average_duration = np.mean([f.duration for f in families]) |
31 |
| - avg_duration_in_days = average_duration * 365 |
32 |
| - if 30 < avg_duration_in_days < 365: |
33 |
| - duration_multiplier = 12 |
34 |
| - duration_units = 'mons' |
35 |
| - elif 1 < avg_duration_in_days < 30: |
36 |
| - duration_multiplier = 365 |
37 |
| - duration_units = 'days' |
38 |
| - elif 1/24 < avg_duration_in_days < 1: |
39 |
| - duration_multiplier = 365 * 24 |
40 |
| - duration_units = 'hours' |
41 |
| - else: |
42 |
| - duration_multiplier = 365 * 24 * 60 |
43 |
| - duration_units = 'mins' |
44 | 45 |
|
| 46 | +def _print_family_list(families, duration_units, duration_multiplier): |
| 47 | + """ |
| 48 | + Print a list of families to screen. |
| 49 | +
|
| 50 | + :param families: Families to print. |
| 51 | + :type families: list of requake.families.Family |
| 52 | + :param duration_units: Units for duration. |
| 53 | + :type duration_units: str |
| 54 | + :param duration_multiplier: Multiplier for duration. |
| 55 | + :type duration_multiplier: float |
| 56 | + """ |
45 | 57 | headers_fmt = [
|
46 | 58 | ('family', None),
|
47 | 59 | ('nevents', None),
|
@@ -72,3 +84,37 @@ def print_families():
|
72 | 84 | ]
|
73 | 85 | rows.append(row)
|
74 | 86 | generic_printer(rows, headers_fmt)
|
| 87 | + |
| 88 | + |
| 89 | +def print_families(): |
| 90 | + """ |
| 91 | + Print families to screen. |
| 92 | + """ |
| 93 | + try: |
| 94 | + families = read_selected_families() |
| 95 | + except (FileNotFoundError, FamilyNotFoundError) as msg: |
| 96 | + logger.error(msg) |
| 97 | + rq_exit(1) |
| 98 | + |
| 99 | + # determine duration units |
| 100 | + average_duration = np.mean([f.duration for f in families]) |
| 101 | + avg_duration_in_days = average_duration * 365 |
| 102 | + if 30 < avg_duration_in_days < 365: |
| 103 | + duration_multiplier = 12 |
| 104 | + duration_units = 'mons' |
| 105 | + elif 1 < avg_duration_in_days < 30: |
| 106 | + duration_multiplier = 365 |
| 107 | + duration_units = 'days' |
| 108 | + elif 1/24 < avg_duration_in_days < 1: |
| 109 | + duration_multiplier = 365 * 24 |
| 110 | + duration_units = 'hours' |
| 111 | + else: |
| 112 | + duration_multiplier = 365 * 24 * 60 |
| 113 | + duration_units = 'mins' |
| 114 | + |
| 115 | + if config.args.detailed: |
| 116 | + for family in families: |
| 117 | + _print_family_details(family, duration_units, duration_multiplier) |
| 118 | + print() |
| 119 | + else: |
| 120 | + _print_family_list(families, duration_units, duration_multiplier) |
0 commit comments