Esempio n. 1
0
 def test_limits(self):
     self.assertEqual(
         {b.nbins
          for b in time_binnings(self.dates, min_bins=9, max_bins=17)},
         {9, 17})
     self.assertEqual(
         {b.nbins
          for b in time_binnings(self.dates, min_bins=9, max_bins=16)},
         {9})
     self.assertEqual(
         {b.nbins
          for b in time_binnings(self.dates, min_bins=10, max_bins=17)},
         {17})
Esempio n. 2
0
    def recompute_binnings(self):
        if self.is_valid and self.var.is_continuous:
            # binning is computed on valid var data, ignoring any cvar nans
            column = self.data.get_column_view(self.var)[0].astype(float)
            if np.any(np.isfinite(column)):
                if self.var.is_time:
                    self.binnings = time_binnings(column, min_unique=5)
                else:
                    self.binnings = decimal_binnings(
                        column,
                        min_width=self.min_var_resolution(self.var),
                        add_unique=10,
                        min_unique=5)
                fm = QFontMetrics(self.font())
                width = max(
                    fm.size(Qt.TextSingleLine,
                            self._short_text(binning.width_label)).width()
                    for binning in self.binnings)
                self.bin_width_label.setFixedWidth(width)
                max_bins = len(self.binnings) - 1
        else:
            self.binnings = []
            max_bins = 0

        self.controls.number_of_bins.setMaximum(max_bins)
        self.number_of_bins = min(
            max_bins, self._user_var_bins.get(self.var, self.number_of_bins))
        self._set_bin_width_slider_label()
Esempio n. 3
0
 def test_before_epoch(self):
     hour = 24 * 60 * 60
     dates = [
         -hour,
         0,
         hour,
     ]
     bins = time_binnings(dates)
     self.assertEqual(list(bins[0].thresholds), [-hour, 0, hour, 2 * hour])
Esempio n. 4
0
    def recompute_binnings(self):
        if self.is_mode():
            return

        if self.is_time():
            self.binnings = time_binnings(self.agg_data, min_unique=3,
                                          min_bins=3, max_bins=15)
        else:
            self.binnings = decimal_binnings(self.agg_data, min_unique=3,
                                             min_bins=3, max_bins=15)

        max_bins = len(self.binnings) - 1
        self.controls.binning_index.setMaximum(max_bins)
        self.binning_index = min(max_bins, self.binning_index)
Esempio n. 5
0
    def recompute_binnings(self):
        if self.is_valid and self.var.is_continuous:
            # binning is computed on valid var data, ignoring any cvar nans
            column = self.data.get_column_view(self.var)[0].astype(float)
            if np.any(np.isfinite(column)):
                if self.var.is_time:
                    self.binnings = time_binnings(column, min_unique=5)
                    self.bin_width_label.setFixedWidth(45)
                else:
                    self.binnings = decimal_binnings(
                        column, min_width=self.min_var_resolution(self.var),
                        add_unique=10, min_unique=5)
                    self.bin_width_label.setFixedWidth(35)
                max_bins = len(self.binnings) - 1
        else:
            self.binnings = []
            max_bins = 0

        self.controls.number_of_bins.setMaximum(max_bins)
        self.number_of_bins = min(
            max_bins, self._user_var_bins.get(self.var, self.number_of_bins))
        self._set_bin_width_slider_label()
Esempio n. 6
0
 def test_multiple_identical(self):
     dates = np.array([42] * 5)
     bins = time_binnings(dates)
     self.assertEqual(len(bins), 1)
     np.testing.assert_equal(bins[0].thresholds, [42, 43])
Esempio n. 7
0
 def test_single_value(self):
     dates = np.array([42])
     bins = time_binnings(dates)
     self.assertEqual(len(bins), 1)
     np.testing.assert_equal(bins[0].thresholds, [42, 43])
Esempio n. 8
0
 def test_add_unique(self):
     bins = time_binnings(self.dates, add_unique=7)
     self.assertNotEqual(len(bins), 1)
     np.testing.assert_equal(bins[0].thresholds[:-1], self.dates)