| 76 | |
| 77 | |
| 78 | class SeriesQuantileTdigest(SeriesQuantile): |
| 79 | @functools.cached_property |
| 80 | def _meta(self): |
| 81 | import_required( |
| 82 | "crick", "crick is a required dependency for using the tdigest method." |
| 83 | ) |
| 84 | return super()._meta |
| 85 | |
| 86 | def _layer(self) -> dict: |
| 87 | from dask.array.percentile import _percentiles_from_tdigest, _tdigest_chunk |
| 88 | |
| 89 | dsk = {} |
| 90 | for i in range(self.frame.npartitions): |
| 91 | dsk[("chunk-" + self._name, i)] = ( |
| 92 | _tdigest_chunk, |
| 93 | (getattr, (self.frame._name, i), "values"), |
| 94 | ) |
| 95 | |
| 96 | dsk[(self._name, 0)] = self._finalizer( |
| 97 | (_percentiles_from_tdigest, self.q * 100, sorted(dsk)) |
| 98 | ) |
| 99 | return dsk |
| 100 | |
| 101 | def _lower(self): |
| 102 | return None |
| 103 | |
| 104 | |
| 105 | class SeriesQuantileDask(SeriesQuantile): |