Source code for km3astro.wip.below_horiz_orca

#!/usr/bin/env python
"""Test whether at some time the sun is below the horizon in ORCA."""

import os.path

import numpy as np
import km3astro
import km3astro.extras

from ..random import random_date


[docs]DATADIR = os.path.join(os.path.dirname(km3astro.__file__), "data")
[docs]def above_horiz(times): pd = km3astro.extras.pandas() fname = os.path.join(DATADIR, "orca_sun_isup.h5") with pd.HDFStore(fname) as h5: o_rise = h5["o_rise"].values o_set = h5["o_set"].values return [(t >= o_rise) & (t <= o_set) for t in times]
[docs]def is_below(times): ab = np.array(above_horiz(times)) risen = np.logical_not(np.sum(ab, axis=1)) return risen
[docs]def random_time_sun_vis(n=1, keep_above=False, **kwargs): ngen = n * 3 dates = random_date(n=ngen, **kwargs) mask = is_below(dates) if keep_above: mask = np.logical_not(mask) dates = dates[mask] if len(dates) < n: dates = random_time_sun_vis(n * 2, keep_above=keep_above, **kwargs) return dates[:n]