def _decide_ref_intervals(self, channel_band, ref_band): """ Ensures that the ``channel_band`` (i.e. the band of interest) is not contained within the ``ref_band`` (i.e. the reference band) Parameters ---------- channel_band : iterable of type ``[elow, ehigh]`` The lower/upper limits of the energies to be contained in the band of interest ref_band : iterable The lower/upper limits of the energies in the reference band Returns ------- ref_intervals : iterable The channels that are both in the reference band in not in the bands of interest """ channel_band = np.asarray(channel_band) ref_band = np.asarray(ref_band) if len(ref_band.shape) <= 1: ref_band = np.asarray([ref_band]) if check_separate(ref_band, [channel_band]): return np.asarray(ref_band) not_channel_band = [[0, channel_band[0]], [channel_band[1], np.max([np.max(ref_band), channel_band[1] + 1])]] return cross_two_gtis(ref_band, not_channel_band)
def _decide_ref_intervals(self, channel_band, ref_band): """Eliminate channel_band from ref_band.""" channel_band = np.asarray(channel_band) ref_band = np.asarray(ref_band) if len(ref_band.shape) <= 1: ref_band = np.asarray([ref_band]) if check_separate(ref_band, [channel_band]): return np.asarray(ref_band) not_channel_band = [[0, channel_band[0]], [channel_band[1], np.max([np.max(ref_band), channel_band[1] + 1])]] return cross_two_gtis(ref_band, not_channel_band)
def get_non_overlapping_ref_band(channel_band, ref_band): """ Ensures that the ``channel_band`` (i.e. the band of interest) is not contained within the ``ref_band`` (i.e. the reference band) Parameters ---------- channel_band : iterable of type ``[elow, ehigh]`` The lower/upper limits of the energies to be contained in the band of interest ref_band : iterable The lower/upper limits of the energies in the reference band Returns ------- ref_intervals : iterable The channels that are both in the reference band in not in the bands of interest Examples -------- >>> channel_band = [2, 3] >>> ref_band = [[0, 10]] >>> new_ref = get_non_overlapping_ref_band(channel_band, ref_band) >>> np.allclose(new_ref, [[0, 2], [3, 10]]) True Test this also works with a 1-D ref. band >>> new_ref = get_non_overlapping_ref_band(channel_band, [0, 10]) >>> np.allclose(new_ref, [[0, 2], [3, 10]]) True >>> new_ref = get_non_overlapping_ref_band([0, 1], [[2, 3]]) >>> np.allclose(new_ref, [[2, 3]]) True """ channel_band = np.asarray(channel_band) ref_band = np.asarray(ref_band) if len(ref_band.shape) <= 1: ref_band = np.asarray([ref_band]) if check_separate(ref_band, [channel_band]): return np.asarray(ref_band) not_channel_band = [ [0, channel_band[0]], [channel_band[1], np.max([np.max(ref_band), channel_band[1] + 1])], ] return cross_two_gtis(ref_band, not_channel_band)
def _decide_ref_intervals(self, channel_band, ref_band): """Eliminate channel_band from ref_band.""" channel_band = np.asarray(channel_band) ref_band = np.asarray(ref_band) if len(ref_band.shape) <= 1: ref_band = np.asarray([ref_band]) if check_separate(ref_band, [channel_band]): return np.asarray(ref_band) not_channel_band = [[0, channel_band[0]], [ channel_band[1], np.max([np.max(ref_band), channel_band[1] + 1]) ]] return cross_two_gtis(ref_band, not_channel_band)
def test_check_separate_empty_case(self): """Test if intersection between two GTIs can be detected. """ gti1 = np.array([[1, 2], [4, 5], [7, 10], [11, 11.2], [12.2, 13.2]]) gti2 = np.array([]) assert check_separate(gti1, gti2) == True
def test_check_separate_nonoverlapping_case(self): """Test if two non-overlapping GTIs can be detected.""" gti1 = np.array([[1, 2], [4, 5]]) gti2 = np.array([[6, 7], [8, 9]]) assert check_separate(gti1, gti2) == True
def test_check_separate_overlapping_case(self): """Test if intersection between two GTIs can be detected. """ gti1 = np.array([[1, 2], [4, 5], [7, 10], [11, 11.2], [12.2, 13.2]]) gti2 = np.array([[2, 5], [6, 9], [11.4, 14]]) assert check_separate(gti1, gti2) == False