summaryrefslogtreecommitdiff
path: root/lulua/stats.py
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2019-09-21 11:02:06 +0200
committerLars-Dominik Braun <lars@6xq.net>2019-09-21 11:02:06 +0200
commitcf0c56e14529a47f54daa62e2e6a9ab0e76c6d12 (patch)
tree1d006ad7758aef96dab2402465a9961125a33cf1 /lulua/stats.py
parentbdaeaa553c949e4f544f96560ed64b63d18a47b2 (diff)
downloadlulua-cf0c56e14529a47f54daa62e2e6a9ab0e76c6d12.tar.gz
lulua-cf0c56e14529a47f54daa62e2e6a9ab0e76c6d12.tar.bz2
lulua-cf0c56e14529a47f54daa62e2e6a9ab0e76c6d12.zip
Consolidate command line utils
Diffstat (limited to 'lulua/stats.py')
-rw-r--r--lulua/stats.py33
1 files changed, 27 insertions, 6 deletions
diff --git a/lulua/stats.py b/lulua/stats.py
index 3efa1c0..fc2b202 100644
--- a/lulua/stats.py
+++ b/lulua/stats.py
@@ -18,7 +18,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-import sys, operator, pickle
+import sys, operator, pickle, argparse, logging
from operator import itemgetter
from itertools import chain, groupby, product
from collections import defaultdict
@@ -27,6 +27,7 @@ from .layout import *
from .keyboard import defaultKeyboards
from .writer import SkipEvent, Writer
from .carpalx import Carpalx, model01 as cmodel01
+from .plot import letterfreq, triadfreq
def updateDictOp (a, b, op):
""" Update dict a by adding items from b using op """
@@ -164,8 +165,8 @@ def unpickleAll (fd):
except EOFError:
break
-def combine ():
- keyboard = defaultKeyboards['ibmpc105']
+def combine (args):
+ keyboard = defaultKeyboards[args.keyboard]
layout = defaultLayouts['null'].specialize (keyboard)
w = Writer (layout)
combined = dict ((cls.name, cls(w)) for cls in allStats)
@@ -174,11 +175,11 @@ def combine ():
combined[s.name].update (r[s.name])
pickle.dump (combined, sys.stdout.buffer, pickle.HIGHEST_PROTOCOL)
-def pretty ():
+def pretty (args):
stats = pickle.load (sys.stdin.buffer)
- keyboard = defaultKeyboards['ibmpc105']
- layout = defaultLayouts[sys.argv[1]].specialize (keyboard)
+ keyboard = defaultKeyboards[args.keyboard]
+ layout = defaultLayouts[args.layout].specialize (keyboard)
writer = Writer (layout)
buttonPresses = sum (stats['simple'].buttons.values ())
@@ -220,3 +221,23 @@ def pretty ():
effort.addTriads (stats['triads'].triads)
print ('total effort (carpalx)', effort.effort)
+def main ():
+ parser = argparse.ArgumentParser(description='Process statistics files.')
+ parser.add_argument('-l', '--layout', metavar='LAYOUT', help='Keyboard layout name')
+ parser.add_argument('-k', '--keyboard', metavar='KEYBOARD',
+ default='ibmpc105', help='Physical keyboard name')
+ subparsers = parser.add_subparsers()
+ sp = subparsers.add_parser('pretty')
+ sp.set_defaults (func=pretty)
+ sp = subparsers.add_parser('combine')
+ sp.set_defaults (func=combine)
+ sp = subparsers.add_parser('letterfreq')
+ sp.set_defaults (func=letterfreq)
+ sp = subparsers.add_parser('triadfreq')
+ sp.set_defaults (func=triadfreq)
+
+ logging.basicConfig (level=logging.INFO)
+ args = parser.parse_args()
+
+ return args.func (args)
+