# HG changeset patch # User Jeff Hammel # Date 1513546436 28800 # Node ID 02f586a9defe0b4b8225f10d4cd48189c47c7a00 # Parent a17d43d7bf1bc4eb951a0b38db0f5a9adc1357ec module for centroids diff -r a17d43d7bf1b -r 02f586a9defe tvii/centroid.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tvii/centroid.py Sun Dec 17 13:33:56 2017 -0800 @@ -0,0 +1,42 @@ +#!/usr/bin/env python + +""" +find centroid of a set of points +""" + +import csv +import sys +from .cli import NettwerkParser +from .read import read +from .transpose import transpose + +def mean(x): + """arithemtic mean""" + return sum(x)/float(len(x)) + + +def centroid(*points): + """find centroid of a set of points""" + + return [mean(dimension) for dimension in transpose(points)] + + +def main(args=sys.argv[1:]): + """CLI""" + + # parse command line + parser = NettwerkParser(description=__doc__) + parser.add_argument('points', type=read, + help="set of points") + options = parser.parse_args(args) + + # find centroid + c = centroid(*options.points) + + # output + writer = csv.writer(sys.stdout) + writer.writerow(c) + + +if __name__ == '__main__': + main()