From 0cf0cf053bf8a03cacda9e6a3d96c20655cc2a21 Mon Sep 17 00:00:00 2001 From: "julia.hou" Date: Thu, 12 Jan 2017 23:20:42 -0500 Subject: [PATCH 1/2] add type hints to eigen.py --- axelrod/eigen.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/axelrod/eigen.py b/axelrod/eigen.py index f47c46ecb..1d95ca7ae 100644 --- a/axelrod/eigen.py +++ b/axelrod/eigen.py @@ -6,23 +6,28 @@ """ import numpy +from typing import NamedTuple -def normalise(nvec): +Eigenvector = NamedTuple('Eigenvector', + [('vector', numpy.ndarray), ('eigenvalue', float)]) + + +def normalise(nvec: numpy.ndarray) -> numpy.ndarray: """Normalises the given numpy array.""" with numpy.errstate(invalid='ignore'): result = nvec / numpy.sqrt(numpy.dot(nvec, nvec)) return result -def squared_error(vector_1, vector_2): +def squared_error(vector_1: numpy.ndarray, vector_2: numpy.ndarray) -> float: """Computes the squared error between two numpy arrays.""" diff = vector_1 - vector_2 s = numpy.dot(diff, diff) return numpy.sqrt(s) -def power_iteration(mat, initial): +def power_iteration(mat: numpy.matrix, initial: numpy.ndarray) -> numpy.ndarray: """ Generator of successive approximations. @@ -44,7 +49,7 @@ def power_iteration(mat, initial): yield vec -def principal_eigenvector(mat, maximum_iterations=1000, max_error=1e-3): +def principal_eigenvector(mat: numpy.matrix, maximum_iterations=1000, max_error=1e-3) -> Eigenvector: """ Computes the (normalised) principal eigenvector of the given matrix. From 517ff9382993fc0cc93c8ed47f062cddcb0563fb Mon Sep 17 00:00:00 2001 From: "julia.hou" Date: Fri, 13 Jan 2017 21:51:42 -0500 Subject: [PATCH 2/2] Correcting for PR comments --- axelrod/eigen.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/axelrod/eigen.py b/axelrod/eigen.py index 1d95ca7ae..84d7ed150 100644 --- a/axelrod/eigen.py +++ b/axelrod/eigen.py @@ -6,11 +6,7 @@ """ import numpy -from typing import NamedTuple - - -Eigenvector = NamedTuple('Eigenvector', - [('vector', numpy.ndarray), ('eigenvalue', float)]) +from typing import Tuple def normalise(nvec: numpy.ndarray) -> numpy.ndarray: @@ -49,7 +45,7 @@ def power_iteration(mat: numpy.matrix, initial: numpy.ndarray) -> numpy.ndarray: yield vec -def principal_eigenvector(mat: numpy.matrix, maximum_iterations=1000, max_error=1e-3) -> Eigenvector: +def principal_eigenvector(mat: numpy.matrix, maximum_iterations=1000, max_error=1e-3) -> Tuple[numpy.ndarray, float]: """ Computes the (normalised) principal eigenvector of the given matrix.