From 38b1880ef75708d887b57f781aac812f7489b444 Mon Sep 17 00:00:00 2001 From: Juan Nunez-Iglesias Date: Sun, 13 Dec 2015 14:35:59 +1100 Subject: [PATCH 1/7] Update docstring comments for integrate function --- skimage/transform/integral.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/skimage/transform/integral.py b/skimage/transform/integral.py index fd9f8725..096a8ade 100644 --- a/skimage/transform/integral.py +++ b/skimage/transform/integral.py @@ -65,11 +65,12 @@ def integrate(ii, start, end, *args): -------- >>> arr = np.ones((5, 6), dtype=np.float) >>> ii = integral_image(arr) - >>> integrate(ii, [(1, 0)], [(1, 2)]) # sum from (1,0) -> (1,2) + >>> integrate(ii, [(1, 0)], [(1, 2)]) # sum from (1, 0) to (1, 2) array([ 3.]) - >>> integrate(ii, [(3, 3)], [(4, 5)]) # sum form (3,3) -> (4,5) + >>> integrate(ii, [(3, 3)], [(4, 5)]) # sum from (3, 3) to (4, 5) array([ 6.]) - >>> integrate(ii, [(1, 0), (3, 3)], [(1, 2), (4, 5)]) # sum from (1,0) -> (1,2) and (3,3) -> (4,5) + >>> # sum from (1, 0) to (1, 2) and from (3, 3) to (4, 5) + >>> integrate(ii, [(1, 0), (3, 3)], [(1, 2), (4, 5)]) array([ 3., 6.]) """ rows = 1 From 458dc15225bfd09605e5d5cc89e5a5185448e90d Mon Sep 17 00:00:00 2001 From: Juan Nunez-Iglesias Date: Sun, 13 Dec 2015 14:45:45 +1100 Subject: [PATCH 2/7] Add deprecation warning for old syntax for integrate() --- skimage/transform/integral.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/skimage/transform/integral.py b/skimage/transform/integral.py index 096a8ade..da07f9f6 100644 --- a/skimage/transform/integral.py +++ b/skimage/transform/integral.py @@ -1,6 +1,6 @@ import numpy as np import collections - +import warnings def integral_image(img): """Integral image / summed area table. @@ -82,6 +82,10 @@ def integrate(ii, start, end, *args): end = np.array(end) # handle deprecated input format else: + warnings.warn("The syntax 'integrate(ii, r0, c0, r1, c1)' is " + "deprecated, and will be phased out in release 0.14. " + "The new syntax is " + "'integrate(ii, [(r0, c0)], [(r1, c1)])'.") if isinstance(start, collections.Iterable): rows = len(start) args = (start, end) + args From 74f8ae19f620dd115fab8b7e69f93dab4ad9098a Mon Sep 17 00:00:00 2001 From: Juan Nunez-Iglesias Date: Sun, 13 Dec 2015 14:47:01 +1100 Subject: [PATCH 3/7] Add note in TODO for deprecated use of integrate() --- TODO.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.txt b/TODO.txt index 3f73ebdb..04cb64f5 100644 --- a/TODO.txt +++ b/TODO.txt @@ -12,6 +12,7 @@ Version 0.14 add an alias LineModel = LineModelND. While the deprecated LineModel has for parameters `(dist, theta)`, LineModelND has the more general parameters `(origin, direction)`. +* Remove deprecated old syntax support for ``skimage.transform.integrate``. Version 0.13 From 5df9e0cf702eb3ae599dc55cd300258b2ea63844 Mon Sep 17 00:00:00 2001 From: Juan Nunez-Iglesias Date: Sun, 13 Dec 2015 14:54:57 +1100 Subject: [PATCH 4/7] Update incorrect version number in docstring --- skimage/transform/integral.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/transform/integral.py b/skimage/transform/integral.py index da07f9f6..4a71a54b 100644 --- a/skimage/transform/integral.py +++ b/skimage/transform/integral.py @@ -50,7 +50,7 @@ def integrate(ii, start, end, *args): Each tuple in the list containing the end row, col, ... index i.e `[(row_win1, col_win1, ...), (row_win2, col_win2, ...), ...]`. args: optional - For backward compatibility with versions prior to 0.11. + For backward compatibility with versions prior to 0.12. The earlier function signature was `integrate(ii, r0, c0, r1, c1)`, where `r0`, `c0` are int(lists) specifying start coordinates of window(s) to be integrated and `r1`, `c1` the end coordinates. From c7243e73833c7bf9117638704786e15313d0ddd6 Mon Sep 17 00:00:00 2001 From: Juan Nunez-Iglesias Date: Sun, 13 Dec 2015 14:55:23 +1100 Subject: [PATCH 5/7] Allow passing individual coordinate tuples to integrate --- skimage/transform/integral.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/skimage/transform/integral.py b/skimage/transform/integral.py index 4a71a54b..ccd73ba7 100644 --- a/skimage/transform/integral.py +++ b/skimage/transform/integral.py @@ -76,18 +76,15 @@ def integrate(ii, start, end, *args): rows = 1 # handle input from new input format if len(args) == 0: - if isinstance(start, collections.Iterable): - rows = len(start) - start = np.array(start) - end = np.array(end) + start = np.atleast_2d(np.array(start)) + end = np.atleast_2d(np.array(end)) + rows = start.shape[0] # handle deprecated input format else: warnings.warn("The syntax 'integrate(ii, r0, c0, r1, c1)' is " "deprecated, and will be phased out in release 0.14. " "The new syntax is " - "'integrate(ii, [(r0, c0)], [(r1, c1)])'.") - if isinstance(start, collections.Iterable): - rows = len(start) + "'integrate(ii, (r0, c0), (r1, c1))'.") args = (start, end) + args start = np.array(args[:int(len(args)/2)]).T end = np.array(args[int(len(args)/2):]).T From 3899c571b7a599276d0e3533c80decf81fd26c29 Mon Sep 17 00:00:00 2001 From: Juan Nunez-Iglesias Date: Sun, 13 Dec 2015 14:55:44 +1100 Subject: [PATCH 6/7] Test individual coordinates for integrate in doctest --- skimage/transform/integral.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/transform/integral.py b/skimage/transform/integral.py index ccd73ba7..a96335e9 100644 --- a/skimage/transform/integral.py +++ b/skimage/transform/integral.py @@ -65,7 +65,7 @@ def integrate(ii, start, end, *args): -------- >>> arr = np.ones((5, 6), dtype=np.float) >>> ii = integral_image(arr) - >>> integrate(ii, [(1, 0)], [(1, 2)]) # sum from (1, 0) to (1, 2) + >>> integrate(ii, (1, 0), (1, 2)) # sum from (1, 0) to (1, 2) array([ 3.]) >>> integrate(ii, [(3, 3)], [(4, 5)]) # sum from (3, 3) to (4, 5) array([ 6.]) From 0bc3ad8f7960226d1d3e2f79d786a820a920dae7 Mon Sep 17 00:00:00 2001 From: Juan Nunez-Iglesias Date: Sun, 13 Dec 2015 16:25:29 +1100 Subject: [PATCH 7/7] Restore vectorised integrate deprecated behaviour --- skimage/transform/integral.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/skimage/transform/integral.py b/skimage/transform/integral.py index a96335e9..91b07ac7 100644 --- a/skimage/transform/integral.py +++ b/skimage/transform/integral.py @@ -85,6 +85,8 @@ def integrate(ii, start, end, *args): "deprecated, and will be phased out in release 0.14. " "The new syntax is " "'integrate(ii, (r0, c0), (r1, c1))'.") + if isinstance(start, collections.Iterable): + rows = len(start) args = (start, end) + args start = np.array(args[:int(len(args)/2)]).T end = np.array(args[int(len(args)/2):]).T