{"action":"created","comment":{"url":"https://api.github.com/repos/scikit-image/scikit-image/pulls/comments/84416300","pull_request_review_id":5193248,"id":84416300,"diff_hunk":"@@ -0,0 +1,325 @@\n+from __future__ import print_function, division\n+import numpy as np\n+from scipy import ndimage as ndi\n+from ..util import img_as_ubyte, view_as_windows\n+from .._shared.utils import assert_nD\n+\n+def saliency_kadir_brady(image, min_scale=5, max_scale=13, saliency_threshold=0.6, clustering_threshold=2):\n+    \"\"\"Find salient regions in the given grayscale image.\n+\n+    For each point x, the method picks a scale s and calculates salient score Y(x,s).\n+    By comparing Y(x,s) of different points x the detector can rank\n+    the saliency of points and pick the most representative ones.\n+\n+    Parameters\n+    ----------\n+    image : ndarray\n+        Input grayscale image\n+    min_scale : int, optional\n+        Minimum scale for the keypoints detected.\n+    max_scale : int, optional\n+        Maximum scale for the keypoints detected.\n+    saliency_threshold : float, optional.\n+        Features with saliency score satisfying threshold will be considered.\n+    clustering_threshold : int, optional\n+        Variance among the regions should be smaller than this threshold\n+        for sufficient clustering.\n+\n+    Returns\n+    -------\n+    A : (N, 3) ndarray of float\n+        A 2d array with each row representing 3 values, '(y, x, scale)'\n+        where '(y,x)' are coordinates of the region and 'scale' is the\n+        size of corresponding salient region.\n+\n+    References\n+    ----------\n+    https://en.wikipedia.org/wiki/Kadir-Brady_saliency_detector\n+\n+    Examples\n+    --------\n+    >>> from skimage.feature import saliency_kadir_brady\n+    >>> from skimage.color import rgb2gray\n+    >>> from skimage.data import astronaut\n+    >>> image = astronaut()[100:300, 100:300]\n+    >>> saliency_kadir_brady(rgb2gray(image))\n+    array([[ 129.8125,   70.125 ,    7.5   ],\n+           [  85.25  ,   22.8125,    7.375 ],\n+           [ 110.125 ,   13.    ,    7.5   ],\n+           [ 155.1875,  106.4375,   11.    ],\n+           [  44.875 ,  142.1875,    9.    ],\n+           [ 137.1875,  193.25  ,    8.625 ],\n+           [ 100.375 ,   45.3125,    9.25  ],\n+           [ 158.5625,  128.4375,   10.625 ],\n+           [  51.75  ,   69.125 ,    7.5   ],\n+           [  76.625 ,   60.1875,    8.5   ],\n+           [ 106.1875,   28.6875,    8.25  ],\n+           [  73.8125,   88.    ,    7.375 ],\n+           [ 149.9375,   93.625 ,    8.375 ],\n+           [  16.0625,   76.5   ,   10.25  ],\n+           [ 118.875 ,   23.5   ,    8.125 ],\n+           [ 164.875 ,  150.75  ,   10.875 ],\n+           [  90.1875,   54.    ,    7.625 ],\n+           [ 152.125 ,  184.75  ,    9.75  ],\n+           [   9.0625,  192.5625,   10.5   ],\n+           [  85.4375,  121.25  ,    8.    ],\n+           [ 109.0625,   61.0625,   10.25  ],\n+           [ 133.3125,   34.1875,    8.25  ]])\n+\n+    Notes\n+    -----\n+    The radius of each region is same as scale.\n+    \"\"\"\n+\n+    assert_nD(image, 2)\n+\n+    # scales for keypoints\n+    scales = np.arange(min_scale, max_scale, 2)\n+    # detect keypoints in scale-space\n+    base_regions = _detect(image, scales)\n+    # pruning based on thresholds\n+    regions = _prune(base_regions, saliency_threshold, clustering_threshold, k=15)\n+\n+    return regions.T\n+\n+\n+def _detect(image, scales):\n+    \"\"\"Find keypoints in the given grayscale image.\n+\n+    Calculates the Shannon entropy of local image attributes for each region\n+    over a range of scales, and weight them based on the difference between\n+    the local descriptors around scale-space.\n+\n+    Parameters\n+    ----------\n+    image : ndarray\n+        Input grayscale image\n+    scales : ndarray\n+        Scales for key regions\n+\n+    Returns\n+    -------\n+    A : (4, N) ndarray of float\n+        A 2d array with each column representing 4 values, '(gamma, scale, y, x)'\n+        where '(y, x)' are coordinates of the region, 'scale' is the\n+        size of salient region, and 'gamma' is the saliency score.\n+    \"\"\"\n+\n+    entropy, weights, r, c = _saliency_param(image, scales)\n+\n+    # find local maxima in scale space by selecting second derivatives that are less than zero\n+    # second derivative kernel\n+    fxx = np.array([1, -2, 1])\n+\n+    # evaluate second derivative using the kernel\n+    d_entropy = np.transpose(ndi.correlate1d(entropy.T, fxx, mode='nearest'))\n+    d_entropy[0, :] = 0\n+    int_pts = np.nonzero(d_entropy < 0)\n+\n+    # weighting interest points by scale size times the first derivative of the scale-space function\n+    gamma = entropy[int_pts] * weights[int_pts]\n+    scale = scales[int_pts[0]]\n+    row = r[int_pts[1]]\n+    column = c[int_pts[1]]\n+\n+    return np.array([gamma, scale, row, column])\n+\n+\n+def _prune(candidate_regions, saliency_threshold, v_th, k):\n+    \"\"\"Clusters the detected keypoints.\n+\n+    It selects highly salient points that have local support\n+    i.e. nearby points with similar saliency and scale. Each region is\n+    sufficiently distant from all others (in Scale-space regions) to\n+    qualify as a separate entity.\n+\n+    Parameters\n+    ----------\n+    candidate_regions : (4, n) ndarray of float\n+        A 2d array with each column representing gamma,scale,y,x.\n+    saliency_threshold : float, optional.\n+        Features with saliency score more than this will be considered.\n+    v_th : int, optional\n+        Variance among the regions should be smaller than this threshold\n+        for sufficient clustering.\n+    k : int\n+        No. of clusters\n+\n+    Returns\n+    -------\n+    A : (3, N) ndarray of float\n+        A 2d array with each column representing 3 values, '(y, x, scale)'\n+        where '(y,x)' are coordinates of the region and 'scale' is the\n+        size of corresponding salient region.\n+    \"\"\"\n+\n+    t_gamma, t_scale, t_r, t_c, D = _salient_regions(candidate_regions, saliency_threshold)\n+    gamma, scale, row, column = (np.array([]) for i in range(4))\n+    \n+    n = max(t_gamma.shape)\n+    n_reg = 0\n+    # clusters matrix\n+    cluster = np.zeros((3, k + 1))\n+\n+    # pruning process\n+    for index in range(n):","path":"skimage/feature/_kadir_brady.py","position":165,"original_position":165,"commit_id":"481bf43f9907f2b1361e6a0e69abd76c14a2943d","original_commit_id":"481bf43f9907f2b1361e6a0e69abd76c14a2943d","user":{"login":"jni","id":492549,"avatar_url":"https://avatars.githubusercontent.com/u/492549?v=3","gravatar_id":"","url":"https://api.github.com/users/jni","html_url":"https://github.com/jni","followers_url":"https://api.github.com/users/jni/followers","following_url":"https://api.github.com/users/jni/following{/other_user}","gists_url":"https://api.github.com/users/jni/gists{/gist_id}","starred_url":"https://api.github.com/users/jni/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jni/subscriptions","organizations_url":"https://api.github.com/users/jni/orgs","repos_url":"https://api.github.com/users/jni/repos","events_url":"https://api.github.com/users/jni/events{/privacy}","received_events_url":"https://api.github.com/users/jni/received_events","type":"User","site_admin":false},"body":"Can you explain what you're doing here? It seems to me that you should be able to simplify the logic quite a bit. For example, the code block for the first region (under the `else`) is the same as the code block for a sufficiently-far region. I'm sure you'd be able to condense both code paths into a single clause.","created_at":"2016-10-21T04:05:16Z","updated_at":"2016-10-21T04:06:43Z","html_url":"https://github.com/scikit-image/scikit-image/pull/2299#discussion_r84416300","pull_request_url":"https://api.github.com/repos/scikit-image/scikit-image/pulls/2299","_links":{"self":{"href":"https://api.github.com/repos/scikit-image/scikit-image/pulls/comments/84416300"},"html":{"href":"https://github.com/scikit-image/scikit-image/pull/2299#discussion_r84416300"},"pull_request":{"href":"https://api.github.com/repos/scikit-image/scikit-image/pulls/2299"}}},"pull_request":{"url":"https://api.github.com/repos/scikit-image/scikit-image/pulls/2299","id":84660021,"html_url":"https://github.com/scikit-image/scikit-image/pull/2299","diff_url":"https://github.com/scikit-image/scikit-image/pull/2299.diff","patch_url":"https://github.com/scikit-image/scikit-image/pull/2299.patch","issue_url":"https://api.github.com/repos/scikit-image/scikit-image/issues/2299","number":2299,"state":"open","locked":false,"title":"Implemented Kadir and Brady's Saliency detection","user":{"login":"parulsethi","id":11822050,"avatar_url":"https://avatars.githubusercontent.com/u/11822050?v=3","gravatar_id":"","url":"https://api.github.com/users/parulsethi","html_url":"https://github.com/parulsethi","followers_url":"https://api.github.com/users/parulsethi/followers","following_url":"https://api.github.com/users/parulsethi/following{/other_user}","gists_url":"https://api.github.com/users/parulsethi/gists{/gist_id}","starred_url":"https://api.github.com/users/parulsethi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/parulsethi/subscriptions","organizations_url":"https://api.github.com/users/parulsethi/orgs","repos_url":"https://api.github.com/users/parulsethi/repos","events_url":"https://api.github.com/users/parulsethi/events{/privacy}","received_events_url":"https://api.github.com/users/parulsethi/received_events","type":"User","site_admin":false},"body":"## Description\r\nThis PR implements Kadir and Brady's Saliency detection algorithm which calculates the saliency score by measuring the entropy of the region's descriptor(to find locally complex regions) and weigh them by the difference over multiple scales to select features that are globally discriminative.\r\nResult over astronaut():\r\n<img width=\"486\" alt=\"screen shot 2016-09-09 at 12 07 44 am\" src=\"https://cloud.githubusercontent.com/assets/11822050/18388850/d8e08e16-76c0-11e6-92e7-6d2d52173e51.png\">\r\n\r\nAs this is my first contribution to not only scikit-image but open-source too, so please suggest the changes that are required in order to merge this, if you are interested in adding this feature.\r\nI haven't yet prepared the doc example as their are some parameters in this algorithm over which i need your suggestion that whether to leave them as optional or set it to the optimized one. These are the saliency and clustering thresholds.\r\n\r\n## Checklist\r\n- [x] Clean style in [the spirit of PEP8](https://www.python.org/dev/peps/pep-0008/)\r\n- [x] [Docstrings for all functions](https://github.com/numpy/numpy/blob/master/doc/example.py)\r\n- [x] Gallery example in `./doc/examples` (new features only)\r\n- [x] Unit tests\r\n\r\n## References\r\nKadir, Timor, and Michael Brady. \"Saliency, scale and image description.\" International Journal of Computer Vision 45.2 (2001): 83-105.","created_at":"2016-09-09T14:27:01Z","updated_at":"2016-10-21T04:06:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"48792d32bc3640506d9539aab90c48e85e3e529b","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/scikit-image/scikit-image/pulls/2299/commits","review_comments_url":"https://api.github.com/repos/scikit-image/scikit-image/pulls/2299/comments","review_comment_url":"https://api.github.com/repos/scikit-image/scikit-image/pulls/comments{/number}","comments_url":"https://api.github.com/repos/scikit-image/scikit-image/issues/2299/comments","statuses_url":"https://api.github.com/repos/scikit-image/scikit-image/statuses/481bf43f9907f2b1361e6a0e69abd76c14a2943d","head":{"label":"parulsethi:kbSaliencyDetection","ref":"kbSaliencyDetection","sha":"481bf43f9907f2b1361e6a0e69abd76c14a2943d","user":{"login":"parulsethi","id":11822050,"avatar_url":"https://avatars.githubusercontent.com/u/11822050?v=3","gravatar_id":"","url":"https://api.github.com/users/parulsethi","html_url":"https://github.com/parulsethi","followers_url":"https://api.github.com/users/parulsethi/followers","following_url":"https://api.github.com/users/parulsethi/following{/other_user}","gists_url":"https://api.github.com/users/parulsethi/gists{/gist_id}","starred_url":"https://api.github.com/users/parulsethi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/parulsethi/subscriptions","organizations_url":"https://api.github.com/users/parulsethi/orgs","repos_url":"https://api.github.com/users/parulsethi/repos","events_url":"https://api.github.com/users/parulsethi/events{/privacy}","received_events_url":"https://api.github.com/users/parulsethi/received_events","type":"User","site_admin":false},"repo":{"id":67429177,"name":"scikit-image","full_name":"parulsethi/scikit-image","owner":{"login":"parulsethi","id":11822050,"avatar_url":"https://avatars.githubusercontent.com/u/11822050?v=3","gravatar_id":"","url":"https://api.github.com/users/parulsethi","html_url":"https://github.com/parulsethi","followers_url":"https://api.github.com/users/parulsethi/followers","following_url":"https://api.github.com/users/parulsethi/following{/other_user}","gists_url":"https://api.github.com/users/parulsethi/gists{/gist_id}","starred_url":"https://api.github.com/users/parulsethi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/parulsethi/subscriptions","organizations_url":"https://api.github.com/users/parulsethi/orgs","repos_url":"https://api.github.com/users/parulsethi/repos","events_url":"https://api.github.com/users/parulsethi/events{/privacy}","received_events_url":"https://api.github.com/users/parulsethi/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/parulsethi/scikit-image","description":"Image Processing SciKit (Toolbox for SciPy)","fork":true,"url":"https://api.github.com/repos/parulsethi/scikit-image","forks_url":"https://api.github.com/repos/parulsethi/scikit-image/forks","keys_url":"https://api.github.com/repos/parulsethi/scikit-image/keys{/key_id}","collaborators_url":"https://api.github.com/repos/parulsethi/scikit-image/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/parulsethi/scikit-image/teams","hooks_url":"https://api.github.com/repos/parulsethi/scikit-image/hooks","issue_events_url":"https://api.github.com/repos/parulsethi/scikit-image/issues/events{/number}","events_url":"https://api.github.com/repos/parulsethi/scikit-image/events","assignees_url":"https://api.github.com/repos/parulsethi/scikit-image/assignees{/user}","branches_url":"https://api.github.com/repos/parulsethi/scikit-image/branches{/branch}","tags_url":"https://api.github.com/repos/parulsethi/scikit-image/tags","blobs_url":"https://api.github.com/repos/parulsethi/scikit-image/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/parulsethi/scikit-image/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/parulsethi/scikit-image/git/refs{/sha}","trees_url":"https://api.github.com/repos/parulsethi/scikit-image/git/trees{/sha}","statuses_url":"https://api.github.com/repos/parulsethi/scikit-image/statuses/{sha}","languages_url":"https://api.github.com/repos/parulsethi/scikit-image/languages","stargazers_url":"https://api.github.com/repos/parulsethi/scikit-image/stargazers","contributors_url":"https://api.github.com/repos/parulsethi/scikit-image/contributors","subscribers_url":"https://api.github.com/repos/parulsethi/scikit-image/subscribers","subscription_url":"https://api.github.com/repos/parulsethi/scikit-image/subscription","commits_url":"https://api.github.com/repos/parulsethi/scikit-image/commits{/sha}","git_commits_url":"https://api.github.com/repos/parulsethi/scikit-image/git/commits{/sha}","comments_url":"https://api.github.com/repos/parulsethi/scikit-image/comments{/number}","issue_comment_url":"https://api.github.com/repos/parulsethi/scikit-image/issues/comments{/number}","contents_url":"https://api.github.com/repos/parulsethi/scikit-image/contents/{+path}","compare_url":"https://api.github.com/repos/parulsethi/scikit-image/compare/{base}...{head}","merges_url":"https://api.github.com/repos/parulsethi/scikit-image/merges","archive_url":"https://api.github.com/repos/parulsethi/scikit-image/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/parulsethi/scikit-image/downloads","issues_url":"https://api.github.com/repos/parulsethi/scikit-image/issues{/number}","pulls_url":"https://api.github.com/repos/parulsethi/scikit-image/pulls{/number}","milestones_url":"https://api.github.com/repos/parulsethi/scikit-image/milestones{/number}","notifications_url":"https://api.github.com/repos/parulsethi/scikit-image/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/parulsethi/scikit-image/labels{/name}","releases_url":"https://api.github.com/repos/parulsethi/scikit-image/releases{/id}","deployments_url":"https://api.github.com/repos/parulsethi/scikit-image/deployments","created_at":"2016-09-05T14:50:29Z","updated_at":"2016-09-05T14:50:32Z","pushed_at":"2016-10-02T17:19:12Z","git_url":"git://github.com/parulsethi/scikit-image.git","ssh_url":"git@github.com:parulsethi/scikit-image.git","clone_url":"https://github.com/parulsethi/scikit-image.git","svn_url":"https://github.com/parulsethi/scikit-image","homepage":"http://scikit-image.org","size":41426,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"scikit-image:master","ref":"master","sha":"d991a663a683146ba22fef4a3579b555408b0647","user":{"login":"scikit-image","id":897180,"avatar_url":"https://avatars.githubusercontent.com/u/897180?v=3","gravatar_id":"","url":"https://api.github.com/users/scikit-image","html_url":"https://github.com/scikit-image","followers_url":"https://api.github.com/users/scikit-image/followers","following_url":"https://api.github.com/users/scikit-image/following{/other_user}","gists_url":"https://api.github.com/users/scikit-image/gists{/gist_id}","starred_url":"https://api.github.com/users/scikit-image/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scikit-image/subscriptions","organizations_url":"https://api.github.com/users/scikit-image/orgs","repos_url":"https://api.github.com/users/scikit-image/repos","events_url":"https://api.github.com/users/scikit-image/events{/privacy}","received_events_url":"https://api.github.com/users/scikit-image/received_events","type":"Organization","site_admin":false},"repo":{"id":2014929,"name":"scikit-image","full_name":"scikit-image/scikit-image","owner":{"login":"scikit-image","id":897180,"avatar_url":"https://avatars.githubusercontent.com/u/897180?v=3","gravatar_id":"","url":"https://api.github.com/users/scikit-image","html_url":"https://github.com/scikit-image","followers_url":"https://api.github.com/users/scikit-image/followers","following_url":"https://api.github.com/users/scikit-image/following{/other_user}","gists_url":"https://api.github.com/users/scikit-image/gists{/gist_id}","starred_url":"https://api.github.com/users/scikit-image/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scikit-image/subscriptions","organizations_url":"https://api.github.com/users/scikit-image/orgs","repos_url":"https://api.github.com/users/scikit-image/repos","events_url":"https://api.github.com/users/scikit-image/events{/privacy}","received_events_url":"https://api.github.com/users/scikit-image/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/scikit-image/scikit-image","description":"Image Processing SciKit (Toolbox for SciPy)","fork":false,"url":"https://api.github.com/repos/scikit-image/scikit-image","forks_url":"https://api.github.com/repos/scikit-image/scikit-image/forks","keys_url":"https://api.github.com/repos/scikit-image/scikit-image/keys{/key_id}","collaborators_url":"https://api.github.com/repos/scikit-image/scikit-image/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/scikit-image/scikit-image/teams","hooks_url":"https://api.github.com/repos/scikit-image/scikit-image/hooks","issue_events_url":"https://api.github.com/repos/scikit-image/scikit-image/issues/events{/number}","events_url":"https://api.github.com/repos/scikit-image/scikit-image/events","assignees_url":"https://api.github.com/repos/scikit-image/scikit-image/assignees{/user}","branches_url":"https://api.github.com/repos/scikit-image/scikit-image/branches{/branch}","tags_url":"https://api.github.com/repos/scikit-image/scikit-image/tags","blobs_url":"https://api.github.com/repos/scikit-image/scikit-image/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/scikit-image/scikit-image/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/scikit-image/scikit-image/git/refs{/sha}","trees_url":"https://api.github.com/repos/scikit-image/scikit-image/git/trees{/sha}","statuses_url":"https://api.github.com/repos/scikit-image/scikit-image/statuses/{sha}","languages_url":"https://api.github.com/repos/scikit-image/scikit-image/languages","stargazers_url":"https://api.github.com/repos/scikit-image/scikit-image/stargazers","contributors_url":"https://api.github.com/repos/scikit-image/scikit-image/contributors","subscribers_url":"https://api.github.com/repos/scikit-image/scikit-image/subscribers","subscription_url":"https://api.github.com/repos/scikit-image/scikit-image/subscription","commits_url":"https://api.github.com/repos/scikit-image/scikit-image/commits{/sha}","git_commits_url":"https://api.github.com/repos/scikit-image/scikit-image/git/commits{/sha}","comments_url":"https://api.github.com/repos/scikit-image/scikit-image/comments{/number}","issue_comment_url":"https://api.github.com/repos/scikit-image/scikit-image/issues/comments{/number}","contents_url":"https://api.github.com/repos/scikit-image/scikit-image/contents/{+path}","compare_url":"https://api.github.com/repos/scikit-image/scikit-image/compare/{base}...{head}","merges_url":"https://api.github.com/repos/scikit-image/scikit-image/merges","archive_url":"https://api.github.com/repos/scikit-image/scikit-image/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/scikit-image/scikit-image/downloads","issues_url":"https://api.github.com/repos/scikit-image/scikit-image/issues{/number}","pulls_url":"https://api.github.com/repos/scikit-image/scikit-image/pulls{/number}","milestones_url":"https://api.github.com/repos/scikit-image/scikit-image/milestones{/number}","notifications_url":"https://api.github.com/repos/scikit-image/scikit-image/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/scikit-image/scikit-image/labels{/name}","releases_url":"https://api.github.com/repos/scikit-image/scikit-image/releases{/id}","deployments_url":"https://api.github.com/repos/scikit-image/scikit-image/deployments","created_at":"2011-07-07T22:07:20Z","updated_at":"2016-10-20T07:20:34Z","pushed_at":"2016-10-20T13:07:21Z","git_url":"git://github.com/scikit-image/scikit-image.git","ssh_url":"git@github.com:scikit-image/scikit-image.git","clone_url":"https://github.com/scikit-image/scikit-image.git","svn_url":"https://github.com/scikit-image/scikit-image","homepage":"http://scikit-image.org","size":80877,"stargazers_count":1279,"watchers_count":1279,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":649,"mirror_url":null,"open_issues_count":324,"forks":649,"open_issues":324,"watchers":1279,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/scikit-image/scikit-image/pulls/2299"},"html":{"href":"https://github.com/scikit-image/scikit-image/pull/2299"},"issue":{"href":"https://api.github.com/repos/scikit-image/scikit-image/issues/2299"},"comments":{"href":"https://api.github.com/repos/scikit-image/scikit-image/issues/2299/comments"},"review_comments":{"href":"https://api.github.com/repos/scikit-image/scikit-image/pulls/2299/comments"},"review_comment":{"href":"https://api.github.com/repos/scikit-image/scikit-image/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/scikit-image/scikit-image/pulls/2299/commits"},"statuses":{"href":"https://api.github.com/repos/scikit-image/scikit-image/statuses/481bf43f9907f2b1361e6a0e69abd76c14a2943d"}}}}
{"actor":{"display_login":"jni"}}