def test_number_counter_stats(self): """stats from NumberCounter correct""" data = [0, 0, 2, 4, 4, 4] nums = number.NumberCounter(data) self.assertEqual(nums.mean, numpy.mean(data)) self.assertEqual(nums.std, numpy.std(data, ddof=1)) self.assertEqual(nums.median, numpy.median(data)) self.assertEqual(nums.quantile(q=0.75), numpy.quantile(data, q=0.75)) self.assertEqual(nums.mode, 4) self.assertEqual(len(nums), 6)
def test_copy(self): """copy works""" nums = number.CategoryCounter("AAAACCCGGGGT") new = nums.copy() self.assertNotEqual(id(new), id(nums)) self.assertEqual(new.to_dict(), nums.to_dict()) nums = number.NumberCounter(data=[0, 0, 2, 4, 4, 4]) new = nums.copy() self.assertNotEqual(id(new), id(nums)) self.assertEqual(new.to_dict(), nums.to_dict())
def test_numbers_update(self): """correctly update number counts""" data = [0, 0, 2, 4, 4, 4] nums = number.NumberCounter(data) data = [2, 4, 4, 4, 6, 5] nums2 = number.NumberCounter(data) nums.update_from_counts(nums2) self.assertEqual(nums[2], 2) self.assertEqual(nums[4], 6) self.assertEqual(nums[1], 0) data = [0, 0, 2, 4, 4, 4] nums = number.NumberCounter(data) nums.update_from_series([2, 4, 4, 4, 6, 5]) self.assertEqual(nums[2], 2) self.assertEqual(nums[4], 6) self.assertEqual(nums[1], 0) with self.assertRaises(TypeError): counts = number.CategoryCounter("AAAACCCGGGGT") nums.update_from_counts(counts)
def test_repr(self): """should precede with class name""" data = [0, 0, 2, 4, 4, 4] nums = number.CategoryCounter(data) got = repr(nums) self.assertTrue(got.startswith(nums.__class__.__name__)) freqs = nums.to_freqs() got = repr(freqs) self.assertTrue(got.startswith(freqs.__class__.__name__)) nums = number.NumberCounter(data) got = repr(nums) self.assertTrue(got.startswith(nums.__class__.__name__))
def test_valid(self): """correctly identify when numbers contains numbers""" wrong = number.NumberCounter([0, "a", 1, 1]) self.assertFalse(wrong.valid) ints = number.NumberCounter([0, 1, 1]) self.assertTrue(ints.valid) floats = number.NumberCounter([0.1, 1.0, 1.0]) self.assertTrue(floats.valid) cmplx = number.NumberCounter([1j, 0.2j]) self.assertTrue(cmplx.valid) mixed = number.NumberCounter([0.1, 1, 1.1j]) self.assertTrue(mixed.valid) for dtype in (numpy.uint8, numpy.int32, numpy.float64): data = numpy.arange(0, 4) npy = number.NumberCounter(data.astype(dtype)) self.assertTrue(npy.valid)