Log
-
Get rid of the x/w aliases to value/count by Caio 8 years ago
-
Get rid of TDigest._{count,mean} aliases 💬 by Caio 8 years ago
This patch gets rid of the _count() and _mean() helpers and move them into the summary package. What I really wanted were macros, but hey ¯\_(ツ)_/¯ Summary is still leaky, but at least TDigest only uses its public interfaces now.
-
Rename `{}summary.keys` to `means` 💬 by Caio 8 years ago
$ gorename -from '"github.com/caio/go-tdigest".summary.keys' -to means
-
Completely rework the quantile estimation codepath 💬 by Caio 8 years ago
This patch is too big, but there isn't much getting away from it in smaller steps because summary{} and TDigest{} are actually tightly coupled (i.e.: the abstraction is mostly useful for code organization but fails at isolation). The major changes are: - Summaries now hold repeated items instead of just unique means and their respective counts (which led to changes in how the digest adds new centroids too) - Quantile estimation is now a straight port from the reference implementation (issue-84 branch) The digest now doesn't potentially report completely wrong values on distributions with multiple steep hills nor biases in favour of big centroids with few occurrences. This patch closes #12. Some historical details for the motivation for this work can be found on PR #11. -
Make TestMerge more thorough 💬 by Caio 8 years ago
This patch makes the test use multiple partitioning configurations and a lot more items (so that we can partition and merge more). This in turn means that the whole test is significantly slower (still very tolerable though) but helps uncover subtle drifts where precision is lower.
-
Output more details when TestRespectBounds fails by Caio 8 years ago
-
Add TestSingletonInACrowd 💬 by Caio 8 years ago
Notice that this test has its exterme quantile (0.999) skipped because the java reference implementation behaves the same. Reasoning and more details on issue #12
-
Drop TestNonUniformDistribution 💬 by Caio 8 years ago
I know it's weird to drop failing tests, but bear with me: This test was added on 011e706e and has worked nicely since then, however I'm having a hard time accepting the error thresholds for this manually crafted distribution. Given that it fails with the java implementation as well (AVL and Merging -based versions), I'm considering it bugged. I'll revisit this one day, but it looks like to me it would be more productive to actually test distributions and their relative errors in a standard manner as in TDigestTest.java --- FAIL: TestNonUniformDistribution (0.00s) tdigest_test.go:85: T-Digest.Quantile(0.2500) = 420.1363 vs actual 499.9531. Diff (79.8168) >= 11.0000 -
Make travis CI test with go 1.9, drop 1.6 by Caio 8 years ago
-
Merge pull request #11 from christineyen/master 💬 by Caio 8 years ago
Ensure returned values stay within bounds
-
Ensure returned values stay within bounds by Christine Yen 8 years ago
-
Update README with project status by Caio 9 years ago
-
Test against Go 1.8, stop testing vs tip 💬 by Caio 9 years ago
Go 1.8 has been released. Testing tip is too slow for my taste.
-
Revert "gometalinter: Use interfaces when it makes sense" 💬 by Caio 9 years ago
This reverts commit 2686af5cd15f0a8f4650e2a4a9bbf44c05b87e10. I still don't like this even after sleeping on it :-)
-
Reference `gopkg.in` in the README by Caio 9 years ago
-
Add syntax highlighting to the README example 💬 by Caio 9 years ago
Look at this with the `-w` switch and you'll see that all that has changed is that I wrapped the example code with some "```" and adjusted the indent.
-
gometalinter: Use interfaces when it makes sense 💬 by Caio 9 years ago
There's now another suggestion: $ gometalinter ./... --disable=gocyclo serialization.go:63:16:warning: buf can be jpeg.Reader (interfacer) But that's just too silly. To be honest, I'm not so sure this is a sensical change even: encodeUint and encodeUint are "private". bytes.{Buffer,Reader} is precisely what I need and use throughout the implementation. So, hashtag revertMeMaybe. -
gometalinter: Error checking on tests 💬 by Caio 9 years ago
With this patch we now explicitly ignore most errors coming from Add() (as there are specialized tests for it and the consistency checks cover the error scenario) and introduces a check for potential Merge() and Compress() errors. Not really happy with the mass ignore, but I do like the `errcheck` linter, so there's that.
-
gometalinter: Simplify if-return clause by Caio 9 years ago
-
gometalinter: Avoid redefining `c` 💬 by Caio 9 years ago
Harmless, but an easy fix anyway :)
-
Add missing error checks 💬 by Caio 9 years ago
This patch fixes some missing error checks as pointed out by `gometalinter` (thanks @dgryski!). There is a signature change on Merge() and Compress(), from returning nothing to now returning an error type.
-
Remove the gocover.io banner 💬 by Caio 9 years ago
Too damn unstable for my taste.
-
Test explicitly against 1.7, drop 1.4 by Caio 9 years ago
-
No need for a tmp var to make a swap by Caio 10 years ago
-
No more `t.Parallel()` anywhere by Caio 10 years ago
-
Stabilize the rng to the Sequential Insertion test 💬 by Caio 10 years ago
Before this patch I would see the occasional failure when running: $ go test -run Sequential -count 30 The failures are consistently _not_ on the extreme quantiles, as expected given the data-structure characteristics. I guess this is because `Add()` and `shuffle()` (which is used by `Compress()`, that gets triggered several times for this test given the small summary size) use the same rng source, but I'm not even remotely close to someone who properly understands all this math. Shouldn't be a real problem, but I'll consider adding support for providing a random source instead of using the default one so that at least we get no contention from multiple things asking for a random number to the global source. -
Revert "Try out this travis-ci + coveralls thing" 💬 by Caio 10 years ago
This reverts commit 42ef656694f47a21c37295c1ae3446666ee04c1f. LOL This randomly fails with: Bad response status from coveralls: 422 - {"message":"Couldn't find a repository matching this job.","error":true} And here shows that there's something real silly going on: https://github.com/lemurheavy/coveralls-public/issues/487 So no, not worth the pain. $fancy-- -
Try out this travis-ci + coveralls thing by Caio 10 years ago
-
Set count to zero after creating a new summary by Caio 10 years ago
-
Assert we don't change counts during Compress() 💬 by Caio 10 years ago
So that we avoid causing a regression (Ref: PR #10)