def _get_selected_ids(self, gid, id_column, time_column, t_start, t_stop,
time_unit, data):
"""
Calculates the data range to load depending on the selected gid
and the provided time range (t_start, t_stop)
gid: int, gid to be loaded.
id_column: int, id of the column containing gids.
time_column: int, id of the column containing times.
t_start: pq.quantity.Quantity, start of the time range to load.
t_stop: pq.quantity.Quantity, stop of the time range to load.
time_unit: pq.quantity.Quantity, time unit of the data to load.
data: numpy array, data to load.
Returns
list of selected gids
"""
gid_ids = np.array([0, data.shape[0]])
if id_column is not None:
gid_ids = np.array([np.searchsorted(data[:, 0], gid, side='left'),
np.searchsorted(data[:, 0], gid, side='right')])
gid_data = data[gid_ids[0]:gid_ids[1], :]
# select only requested time range
id_shifts = np.array([0, 0])
if time_column is not None:
id_shifts[0] = np.searchsorted(gid_data[:, 1],
t_start.rescale(
time_unit).magnitude,
side='left')
id_shifts[1] = (np.searchsorted(gid_data[:, 1],
t_stop.rescale(
time_unit).magnitude,
side='left') - gid_data.shape[0])
selected_ids = gid_ids + id_shifts
return selected_ids
评论列表
文章目录