code: def test_filter_non_positive_samples(self):
      features = [np.ones((2, 3)) * i for i in range(10)]
      labels = [np.zeros((2, 1)) for _ in range(10)]
      censoring = np.full((10, 1), 2)
  
      expected_idx = np.sort(np.random.choice(np.arange(10), 5, False))
      for i in expected_idx:
          labels[i][i % 2] = 1
      expect_feat = [features[i] for i in expected_idx]
      expect_feat_c = expect_feat
      expect_lab = [labels[i] for i in expected_idx]
      expect_cens = censoring[expected_idx]
  
      (
          out_feat,
          out_feat_c,
          out_lab,
          out_cens,
          out_idx,
      ) = SimuSCCS._filter_non_positive_samples(
          features, features, labels, censoring
      )
  
      np.testing.assert_array_equal(expect_cens, out_cens)
      for i in range(len(expect_cens)):
          np.testing.assert_array_equal(expect_feat[i], out_feat[i])
          np.testing.assert_array_equal(expect_feat_c[i], out_feat_c[i])
          np.testing.assert_array_equal(expect_lab[i], out_lab[i])
          self.assertGreater(expect_lab[i].sum(), 0)
  
file_path: tick/tick/survival/tests/simu_sccs_test.py
imports: import unittest
  import numpy
  import itertools
  from tick.survival import SimuSCCS
label_desc: Use image node_id 2 for calling the Test obj's underlying member method code with example usage: obj.test_filter_non_positive_samples() without return types