Coverage for /usr/local/lib/python3.11/dist-packages/grond/stats.py: 29%
35 statements
« prev ^ index » next coverage.py v6.5.0, created at 2023-10-26 16:25 +0000
« prev ^ index » next coverage.py v6.5.0, created at 2023-10-26 16:25 +0000
1import numpy as num
2from pyrocko import orthodrome as od
5def get_mean_x(xs):
6 return num.mean(xs, axis=0)
9def get_mean_x_and_gm(problem, xs, misfits):
10 gms = problem.combine_misfits(misfits)
11 return num.mean(xs, axis=0), num.mean(gms)
14def get_best_x(problem, xs, misfits):
15 gms = problem.combine_misfits(misfits)
16 ibest = num.argmin(gms)
17 return xs[ibest, :]
20def get_best_x_and_gm(problem, xs, misfits):
21 gms = problem.combine_misfits(misfits)
22 ibest = num.argmin(gms)
23 return xs[ibest, :], gms[ibest]
26def get_mean_source(problem, xs):
27 x_mean = get_mean_x(xs)
28 source = problem.get_source(x_mean)
29 return source
32def get_best_source(problem, xs, misfits):
33 x_best = get_best_x(problem, xs, misfits)
34 source = problem.get_source(x_best)
35 return source
38def mean_latlondist(lats, lons):
39 if len(lats) == 0:
40 return 0., 0., 1000.
41 else:
42 ns, es = od.latlon_to_ne_numpy(lats[0], lons[0], lats, lons)
43 n, e = num.mean(ns), num.mean(es)
44 dists = num.sqrt((ns-n)**2 + (es-e)**2)
45 lat, lon = od.ne_to_latlon(lats[0], lons[0], n, e)
46 return float(lat), float(lon), float(num.max(dists))
49def stations_mean_latlondist(stations):
50 lats = num.array([s.lat for s in stations])
51 lons = num.array([s.lon for s in stations])
52 return mean_latlondist(lats, lons)