diff options
| author | Franck Cuny <franck@fcuny.net> | 2024-03-06 06:29:24 -0800 |
|---|---|---|
| committer | Franck Cuny <franck@fcuny.net> | 2024-03-06 06:29:24 -0800 |
| commit | 1e4a5aa09c1c8f43722c9c260f011398799a8e8f (patch) | |
| tree | cd73e0fb8ba53bd21cee6ccf2dcc85639bbbb93f /packages/seqstat | |
| parent | set correct git email in the profiles (diff) | |
| download | infra-1e4a5aa09c1c8f43722c9c260f011398799a8e8f.tar.gz | |
rename `tools` to `packages` to follow convention
The convention is to use `pkgs` or `packages` for overlays and
definition of custom packages. Since I'm already using `pkg` for go,
I prefer to use `packages` for my scripts.
Diffstat (limited to 'packages/seqstat')
| -rw-r--r-- | packages/seqstat/default.nix | 25 | ||||
| -rwxr-xr-x | packages/seqstat/seqstat.py | 30 |
2 files changed, 55 insertions, 0 deletions
diff --git a/packages/seqstat/default.nix b/packages/seqstat/default.nix new file mode 100644 index 0000000..96cbd40 --- /dev/null +++ b/packages/seqstat/default.nix @@ -0,0 +1,25 @@ +{ lib, python3, stdenvNoCC }: + +stdenvNoCC.mkDerivation rec { + pname = "seqstat"; + src = ./seqstat.py; + version = "0.1.0"; + + buildInputs = [ python3 ]; + propagatedBuildInputs = [ python3 ]; + + dontUnpack = true; + dontBuild = true; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/${pname} + ''; + + meta = with lib; { + description = "Display an histogram for a given sequence of numbers."; + license = with licenses; [ mit ]; + platforms = platforms.unix; + maintainers = with maintainers; [ fcuny ]; + }; +} diff --git a/packages/seqstat/seqstat.py b/packages/seqstat/seqstat.py new file mode 100755 index 0000000..55b6ecc --- /dev/null +++ b/packages/seqstat/seqstat.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +import argparse + +ticks = ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"] + + +def histogram(sequence): + min_val = min(sequence) + max_val = max(sequence) + + scale = (int(max_val - min_val) << 8) / (len(ticks) - 1) + if scale < 1: + scale = 1 + + return [ticks[int((int(i - min_val) << 8) / scale)] for i in sequence] + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "numbers", + metavar="N", + type=float, + nargs="+", + help="a number for the accumulator", + ) + args = parser.parse_args() + h = histogram(args.numbers) + print("".join(h)) |
