Пример #1
0
 def test_input_sxr(self):
     images = morph('kt->k1t', 10 * np.stack((self.s1, self.s2)))
     noise = morph('t->1t', self.n)
     sdr, sir, snr = input_sxr(images, noise, average_sources=False)
     assert all(sir == input_sxr(images, noise, average_sources=False).sir)
     np.testing.assert_allclose(sdr,
                                2 * [10 * np.log10(100 / 101)],
                                atol=1e-6)
     np.testing.assert_allclose(sir, 2 * [0], atol=1e-6)
     np.testing.assert_allclose(snr, 2 * [20], atol=1e-6)
Пример #2
0
 def test_output_sxr_more_outputs_than_sources(self):
     sdr, sir, snr = output_sxr(
         morph(
             'kKt->kKt',
             np.asarray([[10 * self.s1, 1 * self.s2, 0 * self.n],
                         [0 * self.s1, 10 * self.s2, 0 * self.n]])),
         morph('Kt->Kt', np.asarray([10 * self.n, 0 * self.n, 0 * self.n])),
         average_sources=False,
     )
     np.testing.assert_allclose(sdr, [0, 20], atol=1e-6)
     np.testing.assert_allclose(sir, [np.inf, 20], atol=1e-6)
     np.testing.assert_allclose(snr, [0, np.inf], atol=1e-6)
Пример #3
0
 def test_output_sxr_more_outputs_than_sources_inf(self):
     sdr, sir, snr = output_sxr(
         morph(
             'kKt->kKt',
             np.asarray([[1 * self.s1, 0 * self.s2, 0 * self.n],
                         [0 * self.s1, 1 * self.s2, 0 * self.n]])),
         morph('Kt->Kt', np.asarray([0 * self.n, 0 * self.n, 1 * self.n])),
         average_sources=False,
     )
     np.testing.assert_allclose(sdr, 2 * [np.inf])
     np.testing.assert_allclose(sir, 2 * [np.inf])
     np.testing.assert_allclose(snr, 2 * [np.inf])
Пример #4
0
 def test_output_sxr(self):
     image_contribution = morph(
         'kKt->kKt',
         np.asarray([[10 * self.s1, 1 * self.s2],
                     [0 * self.s1, 10 * self.s2]]))
     noise_contribution = morph('Kt->Kt',
                                np.asarray([10 * self.n, 0 * self.n]))
     sdr, sir, snr = output_sxr(
         image_contribution,
         noise_contribution,
         average_sources=False,
     )
     assert all(snr == output_sxr(
         image_contribution,
         noise_contribution,
         average_sources=False,
     ).snr)
     np.testing.assert_allclose(sdr, [0, 20], atol=1e-6)
     np.testing.assert_allclose(sir, [np.inf, 20], atol=1e-6)
     np.testing.assert_allclose(snr, [0, np.inf], atol=1e-6)
Пример #5
0
 def test_reshape_comma_flat(self):
     result = morph('T,B,F->T*B*F', A)
     tc.assert_equal(result.shape, (T * B * F, ))
     tc.assert_equal(result, A.ravel())
Пример #6
0
 def test_reshape_comma_unflatten(self):
     result = morph('t*b*f->tbf', A3, t=T, b=B)
     tc.assert_equal(result.shape, (T, B, F))
     tc.assert_equal(result, A3.reshape((T, B, F)))
Пример #7
0
 def test_reshape_comma_unflatten_and_transpose_and_flatten(self):
     result = morph('t*b*f->f, t*b', A3, f=F, t=T)
     tc.assert_equal(result.shape, (F, T * B))
     tc.assert_equal(result, A3.reshape((T * B, F)).transpose((1, 0)))
Пример #8
0
 def test_ellipsis_0(self):
     tc.assert_equal(morph('...TBF->...TFB', A).shape, (T, F, B))
Пример #9
0
 def test_ellipsis_expand_0(self):
     tc.assert_equal(
         morph('a*b...->ab...', A, a=T // 2, b=2).shape, (T // 2, 2, B, F))
Пример #10
0
 def test_reshape_and_broadcast_many(self):
     result = morph('T,B,F->1,T,1,B*F,1', A)
     tc.assert_equal(result.shape, (1, T, 1, B * F, 1))
Пример #11
0
 def test_transpose_and_reshape(self):
     result = morph('T,B,F->F,B*T', A)
     tc.assert_equal(result.shape, (F, B * T))
     tc.assert_equal(result, A.transpose(2, 1, 0).reshape(F, B * T))
Пример #12
0
 def test_transpose_comma(self):
     result = morph('T,B,F->F,T,B', A)
     tc.assert_equal(result.shape, (F, T, B))
     tc.assert_equal(result, A.transpose(2, 0, 1))
Пример #13
0
 def test_transpose_mixed(self):
     result = morph('t, b, f -> f t b', A)
     tc.assert_equal(result.shape, (F, T, B))
     tc.assert_equal(result, A.transpose(2, 0, 1))
Пример #14
0
 def test_noop_space(self):
     result = morph('T B F->T B F', A)
     tc.assert_equal(result.shape, (T, B, F))
     tc.assert_equal(result, A)
Пример #15
0
 def test_noop_mixed(self):
     result = morph('tbf->t, b f', A)
     tc.assert_equal(result.shape, (T, B, F))
     tc.assert_equal(result, A)
Пример #16
0
 def test_reduce_sum(self):
     tc.assert_equal(morph('...F->...', A, reduce=np.sum).shape, (T, B))
     tc.assert_equal(morph('...F->...', A, reduce=np.sum), np.sum(A,
                                                                  axis=-1))
Пример #17
0
 def test_reduce_median(self):
     tc.assert_equal(morph('...F->...', A, reduce=np.median).shape, (T, B))
     tc.assert_equal(morph('...F->...', A, reduce=np.median),
                     np.median(A, axis=-1))
Пример #18
0
 def test_ellipsis_expand_1(self):
     tc.assert_equal(
         morph('...a*b->...ab', A, a=F // 2, b=2).shape, (T, B, F // 2, 2))
Пример #19
0
 def test_reshape_comma_with_singleton_input(self):
     result = morph('T, 1, B, F -> T*B*F', A2)
     tc.assert_equal(result.shape, (T * B * F, ))
     tc.assert_equal(result, A2.ravel())
Пример #20
0
 def test_broadcast_axis_0(self):
     result = morph('T,B,F->1,T,B,F', A)
     tc.assert_equal(result.shape, (1, T, B, F))
     tc.assert_equal(result, A[None, ...])
Пример #21
0
 def test_reshape_and_broadcast(self):
     tc.assert_equal(morph('T,B,F->T,1,B*F', A).shape, (T, 1, B * F))
     tc.assert_equal(morph('T,B,F->T,1,B*F', A).ravel(), A.ravel())
Пример #22
0
 def test_noop_comma(self):
     result = morph('T,B,F->T,B,F', A)
     tc.assert_equal(result.shape, (T, B, F))
     tc.assert_equal(result, A)
Пример #23
0
 def test_swap_and_reshape(self):
     result = morph('T,B,F->T,F*B', A)
     tc.assert_equal(result.shape, (T, F * B))
     tc.assert_equal(result, A.swapaxes(-1, -2).reshape(T, F * B))
Пример #24
0
 def test_ellipsis_1_mid(self):
     tc.assert_equal(morph('T...F->F...T', A).shape, (F, B, T))
Пример #25
0
 def test_transpose_capital(self):
     result = morph('tbB->tBb', A)
     tc.assert_equal(result.shape, (T, F, B))
     tc.assert_equal(result, A.transpose(0, 2, 1))
Пример #26
0
 def test_reshape_comma(self):
     result = morph('T,B,F->T,B*F', A)
     tc.assert_equal(result.shape, (T, B * F))
     tc.assert_equal(result, A.reshape(T, B * F))
Пример #27
0
 def test_broadcast_axis_2(self):
     result = morph('T,B,F->T,B,1,F', A)
     tc.assert_equal(result.shape, (T, B, 1, F))
     tc.assert_equal(result, A[..., None, :])
Пример #28
0
 def test_ellipsis_0_begin(self):
     tc.assert_equal(morph('TBF...->TFB...', A).shape, (T, F, B))
Пример #29
0
 def test_broadcast_axis_3(self):
     result = morph('T,B,F->T,B,F,1', A)
     tc.assert_equal(result.shape, (T, B, F, 1))
     tc.assert_equal(result, A[..., None])
Пример #30
0
 def test_ellipsis_1_begin(self):
     tc.assert_equal(morph('TB...->BT...', A).shape, (B, T, F))