{"action":"created","comment":{"url":"https://api.github.com/repos/astropy/photutils/pulls/comments/76892249","id":76892249,"diff_hunk":"@@ -0,0 +1,427 @@\n+# Licensed under a 3-clause BSD style license - see LICENSE.rst\n+\"\"\"Module which provides classes to perform PSF Photometry\"\"\"\n+\n+from __future__ import division\n+import numpy as np\n+from astropy.table import Table, vstack\n+from astropy.modeling.fitting import LevMarLSQFitter\n+from astropy.nddata.utils import overlap_slices, NoOverlapError\n+from astropy.stats import gaussian_sigma_to_fwhm\n+from ..psf import subtract_psf\n+from ..aperture import CircularAperture, aperture_photometry\n+\n+\n+__all__ = ['DAOPhotPSFPhotometry']\n+\n+\n+class DAOPhotPSFPhotometry(object):\n+    \"\"\"\n+    This class implements the DAOPHOT algorithm proposed by Stetson\n+    (1987) to perform point spread function photometry in crowded fields,\n+    which consists basically in applying the loop FIND, GROUP, NSTAR,\n+    SUBTRACT, FIND until no more stars are detected or a given number of\n+    iterations is reached.\n+    \"\"\"\n+\n+    def __init__(self, group, bkg, psf, fitshape, find=None,\n+                 fitter=LevMarLSQFitter(), niters=3, aperture_radius=None):\n+        \"\"\"\n+        Attributes\n+        ----------\n+        find : callable or instance of any StarFinderBase subclasses\n+            ``find`` should be able to identify stars, i.e. compute a rough\n+            estimate of the centroids, in a given 2D image.\n+            ``find`` receives as input a 2D image an return an\n+            `~astropy.table.Table` object which contains columns with names:\n+            ``id``, ``xcentroid``, ``ycentroid``, and ``flux``. In which\n+            ``id`` is an interger-valued column starting from ``1``,\n+            ``xcentroid`` and ``ycentroid`` are center position estimates of\n+            the sources and ``flux`` contains flux estimates of the sources.\n+            See, e.g., `~photutils.detection.DAOStarFinder`\n+        group : callable or instance of any GroupStarsBase subclasses\n+            ``group`` should be able to decide whether a given star overlaps\n+            with any other and label them as beloging to the same group.\n+            ``group`` receives as input an `~astropy.table.Table` object\n+            with columns named as ``id``, ``x_0``, ``y_0``, in which ``x_0``\n+            and ``y_0`` have the same meaning of ``xcentroid`` and\n+            ``ycentroid``. This callable must return an `~astropy.table.Table`\n+            with columns ``id``, ``x_0``, ``y_0``, and ``group_id``. The\n+            column ``group_id`` should cotain integers starting from ``1``\n+            that indicate in which group a given source belongs to.\n+            See, e.g., `~photutils.psf.DAOGroup`\n+        bkg : callable or instance of any `~photutils.BackgroundBase`\n+            subclasses ``bkg`` should be able to compute either a scalar\n+            background or a 2D background of a given 2D image.\n+            See, e.g., `~photutils.background.MedianBackground`\n+        psf : `astropy.modeling.Fittable2DModel` instance\n+            PSF or PRF model to fit the data. Could be one of the models in\n+            this package like `~photutils.psf.sandbox.DiscretePRF`,\n+            `~photutils.psf.IntegratedGaussianPRF`, or any other suitable\n+            2D model.\n+            This object needs to identify three parameters (position of\n+            center in x and y coordinates and the flux) in order to set them\n+            to suitable starting values for each fit. The names of these\n+            parameters should be given as ``x_0``, ``y_0`` and ``flux``.\n+\n+            `~photutils.psf.prepare_psf_model` can be used to prepare any 2D\n+            model to match this assumption.\n+        fitshape : array-like\n+            Rectangular shape around the center of a star which will be used\n+            to collect the data to do the fitting, e.g. (5, 5) means to take\n+            the following relative pixel positions: [-2, -1, 0, 1, 2].\n+            Also, each element of ``fitshape`` must be an odd number.\n+        fitter : Fitter instance (default=LevMarLSQFitter())\n+            Fitter object used to compute the optimized centroid positions\n+            and/or flux of the identified sources. See\n+            `~astropy.modeling.fitting` for more details on fitters.\n+        niters : int (default=3)\n+            Number of iterations to perform the loop FIND, GROUP, SUBTRACT,\n+            NSTAR.\n+        aperture_radius : float (default=None)\n+            The radius (in units of pixels) used to compute initial estimates\n+            for the fluxes of sources. If ``None``, one fwhm will be used. \n+\n+        Notes\n+        -----\n+        If there are problems with fitting large groups, change the parameters\n+        of the grouping algorithm to reduce the number of sources in each\n+        group or input a ``star_groups`` table that only includes the groups\n+        that are relevant (e.g. manually remove all entries that coincide with\n+        artifacts).\n+\n+        References\n+        ----------\n+        [1] Stetson, Astronomical Society of the Pacific, Publications,\n+            (ISSN 0004-6280), vol. 99, March 1987, p. 191-222.\n+            Available at: http://adsabs.harvard.edu/abs/1987PASP...99..191S\n+        \"\"\"\n+\n+        self.find = find\n+        self.group = group\n+        self.bkg = bkg\n+        self.psf = psf\n+        self.fitter = fitter\n+        self.niters = niters\n+        self.fitshape = fitshape\n+        self.aperture_radius = aperture_radius\n+\n+    @property\n+    def niters(self):\n+        return self._niters\n+\n+    @niters.setter\n+    def niters(self, value):\n+        try:\n+            if value <= 0:\n+                raise ValueError('niters must be positive.')\n+            else:\n+                self._niters = int(value)\n+        except:\n+            raise ValueError('niters must be an integer or convertable '\n+                             'into an integer.')\n+    \n+    @property\n+    def fitshape(self):\n+        return self._fitshape\n+\n+    @fitshape.setter\n+    def fitshape(self, value):\n+        value = np.asarray(value)\n+        if value.size == 2:\n+            if np.all(value) > 0:\n+                if np.all(value % 2) == 1:\n+                    self._fitshape = tuple(value)\n+                else:\n+                    raise ValueError('fitshape must be odd integer-valued, '\n+                                     'received fitshape = {}'\\\n+                                     .format(value))\n+            else:\n+                raise ValueError('fitshape must have positive elements, '\n+                                 'received fitshape = {}'\\\n+                                 .format(value))\n+        else:\n+            raise ValueError('fitshape must have two dimensions, '\n+                             'received fitshape = {}'.format(value))\n+\n+    @property\n+    def aperture_radius(self):\n+        return self._aperture_radius\n+\n+    @aperture_radius.setter\n+    def aperture_radius(self, value):\n+        if isinstance(value, (int, float)) and value > 0:\n+            self._aperture_radius = value\n+        elif value is None:\n+            self._aperture_radius = value\n+        else:\n+            raise ValueError('aperture_radius must be a real-valued '\n+                             'number, received aperture_radius = {}'\n+                             .format(value))\n+\n+\n+    def __call__(self, image, positions=None):\n+        \"\"\"\n+        Parameters\n+        ----------\n+        image : 2D array-like, `~astropy.io.fits.ImageHDU`,\n+        `~astropy.io.fits.HDUList`","path":"photutils/psf/photometry.py","position":166,"original_position":167,"commit_id":"671b0339c39651348ac36ff8c25ee9b0164e221c","original_commit_id":"5024c83fa4b3825028c8f246aae94e13180b4aa7","user":{"login":"eteq","id":346587,"avatar_url":"https://avatars.githubusercontent.com/u/346587?v=3","gravatar_id":"","url":"https://api.github.com/users/eteq","html_url":"https://github.com/eteq","followers_url":"https://api.github.com/users/eteq/followers","following_url":"https://api.github.com/users/eteq/following{/other_user}","gists_url":"https://api.github.com/users/eteq/gists{/gist_id}","starred_url":"https://api.github.com/users/eteq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eteq/subscriptions","organizations_url":"https://api.github.com/users/eteq/orgs","repos_url":"https://api.github.com/users/eteq/repos","events_url":"https://api.github.com/users/eteq/events{/privacy}","received_events_url":"https://api.github.com/users/eteq/received_events","type":"User","site_admin":false},"body":"fixed while merging","created_at":"2016-08-30T22:31:42Z","updated_at":"2016-08-30T22:31:42Z","html_url":"https://github.com/astropy/photutils/pull/385#discussion_r76892249","pull_request_url":"https://api.github.com/repos/astropy/photutils/pulls/385","_links":{"self":{"href":"https://api.github.com/repos/astropy/photutils/pulls/comments/76892249"},"html":{"href":"https://github.com/astropy/photutils/pull/385#discussion_r76892249"},"pull_request":{"href":"https://api.github.com/repos/astropy/photutils/pulls/385"}}},"pull_request":{"url":"https://api.github.com/repos/astropy/photutils/pulls/385","id":76076249,"html_url":"https://github.com/astropy/photutils/pull/385","diff_url":"https://github.com/astropy/photutils/pull/385.diff","patch_url":"https://github.com/astropy/photutils/pull/385.patch","issue_url":"https://api.github.com/repos/astropy/photutils/issues/385","number":385,"state":"open","locked":false,"title":"PSF Photometry in Crowded Fields","user":{"login":"mirca","id":13077051,"avatar_url":"https://avatars.githubusercontent.com/u/13077051?v=3","gravatar_id":"","url":"https://api.github.com/users/mirca","html_url":"https://github.com/mirca","followers_url":"https://api.github.com/users/mirca/followers","following_url":"https://api.github.com/users/mirca/following{/other_user}","gists_url":"https://api.github.com/users/mirca/gists{/gist_id}","starred_url":"https://api.github.com/users/mirca/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mirca/subscriptions","organizations_url":"https://api.github.com/users/mirca/orgs","repos_url":"https://api.github.com/users/mirca/repos","events_url":"https://api.github.com/users/mirca/events{/privacy}","received_events_url":"https://api.github.com/users/mirca/received_events","type":"User","site_admin":false},"body":"Hi all,\r\n\r\nThis is a proposal for a general purpose PSF Photometry module.\r\n\r\nThe goal is that users may be able to use this module to create their own custom psf photometry, i.e., with any finding, grouping, background subtraction implementations.\r\n\r\nFor now, we are implementing a version of the NSTAR algorithm which is used in DAOPHOT.\r\n\r\nFirstly, we would like to hear feedback from the community on the interface. See this simple gist to get an idea of the interface: \r\n\r\n```\r\n# create a fittable 2d model\r\nmy_psf_model = IntegratedGaussianPRF(sigma=3.0)\r\n\r\n# create a finder object\r\nmy_finder = DAOStarFinder(threshold=5., fwhm=3.0*gaussian_sigma_to_fwhm)\r\n\r\n# create a grouping object\r\nmy_grouping = DAOGroupStars(crit_separation=1.5*3.0*gaussian_sigma_to_fwhm)\r\n\r\n# create a background object\r\nmy_bkg = MMMBackground(sigma=3., iters=10)\r\n\r\n# create a fitter object\r\nmy_fitter = LevMarLSQFitter()\r\n\r\n# create psf photometry object\r\nmy_photometry = NStarPSFPhotometry(find=my_finder, group=my_group,\r\n                                   bkg=my_bkg, psf_model=my_psf_model,\r\n                                   fitter=my_fitter, niters=5, fitshape=(7,7))\r\n\r\n# get photometry results\r\nphotometry_results, residual_image = my_photometry(image) \r\n```\r\n\r\nIn addition, one of our concerns is whether all these validations of the attributes of the `NStarPSFPhotometry` class are really necessary. Clearly, this prevents many troubles on the user and the developer sides, but also prevents duck-typing and turn things a bit more complicated. (overkill?)\r\n\r\nSuggestions are more than welcome.\r\n\r\ncc @hamogu @bsipocz @eteq @larrybradley ","created_at":"2016-07-02T22:48:04Z","updated_at":"2016-08-30T22:31:42Z","closed_at":null,"merged_at":null,"merge_commit_sha":"af4e1044dd988b30e0b61df7d5389d0b8fc23c72","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/astropy/photutils/pulls/385/commits","review_comments_url":"https://api.github.com/repos/astropy/photutils/pulls/385/comments","review_comment_url":"https://api.github.com/repos/astropy/photutils/pulls/comments{/number}","comments_url":"https://api.github.com/repos/astropy/photutils/issues/385/comments","statuses_url":"https://api.github.com/repos/astropy/photutils/statuses/671b0339c39651348ac36ff8c25ee9b0164e221c","head":{"label":"mirca:psf-photometry","ref":"psf-photometry","sha":"671b0339c39651348ac36ff8c25ee9b0164e221c","user":{"login":"mirca","id":13077051,"avatar_url":"https://avatars.githubusercontent.com/u/13077051?v=3","gravatar_id":"","url":"https://api.github.com/users/mirca","html_url":"https://github.com/mirca","followers_url":"https://api.github.com/users/mirca/followers","following_url":"https://api.github.com/users/mirca/following{/other_user}","gists_url":"https://api.github.com/users/mirca/gists{/gist_id}","starred_url":"https://api.github.com/users/mirca/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mirca/subscriptions","organizations_url":"https://api.github.com/users/mirca/orgs","repos_url":"https://api.github.com/users/mirca/repos","events_url":"https://api.github.com/users/mirca/events{/privacy}","received_events_url":"https://api.github.com/users/mirca/received_events","type":"User","site_admin":false},"repo":{"id":49218653,"name":"photutils","full_name":"mirca/photutils","owner":{"login":"mirca","id":13077051,"avatar_url":"https://avatars.githubusercontent.com/u/13077051?v=3","gravatar_id":"","url":"https://api.github.com/users/mirca","html_url":"https://github.com/mirca","followers_url":"https://api.github.com/users/mirca/followers","following_url":"https://api.github.com/users/mirca/following{/other_user}","gists_url":"https://api.github.com/users/mirca/gists{/gist_id}","starred_url":"https://api.github.com/users/mirca/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mirca/subscriptions","organizations_url":"https://api.github.com/users/mirca/orgs","repos_url":"https://api.github.com/users/mirca/repos","events_url":"https://api.github.com/users/mirca/events{/privacy}","received_events_url":"https://api.github.com/users/mirca/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mirca/photutils","description":"Affiliated package for image photometry utilities. Maintainers: @larrybradley and @bsipocz","fork":true,"url":"https://api.github.com/repos/mirca/photutils","forks_url":"https://api.github.com/repos/mirca/photutils/forks","keys_url":"https://api.github.com/repos/mirca/photutils/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mirca/photutils/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mirca/photutils/teams","hooks_url":"https://api.github.com/repos/mirca/photutils/hooks","issue_events_url":"https://api.github.com/repos/mirca/photutils/issues/events{/number}","events_url":"https://api.github.com/repos/mirca/photutils/events","assignees_url":"https://api.github.com/repos/mirca/photutils/assignees{/user}","branches_url":"https://api.github.com/repos/mirca/photutils/branches{/branch}","tags_url":"https://api.github.com/repos/mirca/photutils/tags","blobs_url":"https://api.github.com/repos/mirca/photutils/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mirca/photutils/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mirca/photutils/git/refs{/sha}","trees_url":"https://api.github.com/repos/mirca/photutils/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mirca/photutils/statuses/{sha}","languages_url":"https://api.github.com/repos/mirca/photutils/languages","stargazers_url":"https://api.github.com/repos/mirca/photutils/stargazers","contributors_url":"https://api.github.com/repos/mirca/photutils/contributors","subscribers_url":"https://api.github.com/repos/mirca/photutils/subscribers","subscription_url":"https://api.github.com/repos/mirca/photutils/subscription","commits_url":"https://api.github.com/repos/mirca/photutils/commits{/sha}","git_commits_url":"https://api.github.com/repos/mirca/photutils/git/commits{/sha}","comments_url":"https://api.github.com/repos/mirca/photutils/comments{/number}","issue_comment_url":"https://api.github.com/repos/mirca/photutils/issues/comments{/number}","contents_url":"https://api.github.com/repos/mirca/photutils/contents/{+path}","compare_url":"https://api.github.com/repos/mirca/photutils/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mirca/photutils/merges","archive_url":"https://api.github.com/repos/mirca/photutils/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mirca/photutils/downloads","issues_url":"https://api.github.com/repos/mirca/photutils/issues{/number}","pulls_url":"https://api.github.com/repos/mirca/photutils/pulls{/number}","milestones_url":"https://api.github.com/repos/mirca/photutils/milestones{/number}","notifications_url":"https://api.github.com/repos/mirca/photutils/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mirca/photutils/labels{/name}","releases_url":"https://api.github.com/repos/mirca/photutils/releases{/id}","deployments_url":"https://api.github.com/repos/mirca/photutils/deployments","created_at":"2016-01-07T17:13:17Z","updated_at":"2016-03-13T21:34:34Z","pushed_at":"2016-08-26T15:03:10Z","git_url":"git://github.com/mirca/photutils.git","ssh_url":"git@github.com:mirca/photutils.git","clone_url":"https://github.com/mirca/photutils.git","svn_url":"https://github.com/mirca/photutils","homepage":"http://photutils.readthedocs.org/en/latest/","size":4013,"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":"astropy:master","ref":"master","sha":"7d4f2c5b892c357bda7cea1e89b3fa41a2439ed1","user":{"login":"astropy","id":847984,"avatar_url":"https://avatars.githubusercontent.com/u/847984?v=3","gravatar_id":"","url":"https://api.github.com/users/astropy","html_url":"https://github.com/astropy","followers_url":"https://api.github.com/users/astropy/followers","following_url":"https://api.github.com/users/astropy/following{/other_user}","gists_url":"https://api.github.com/users/astropy/gists{/gist_id}","starred_url":"https://api.github.com/users/astropy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/astropy/subscriptions","organizations_url":"https://api.github.com/users/astropy/orgs","repos_url":"https://api.github.com/users/astropy/repos","events_url":"https://api.github.com/users/astropy/events{/privacy}","received_events_url":"https://api.github.com/users/astropy/received_events","type":"Organization","site_admin":false},"repo":{"id":2640766,"name":"photutils","full_name":"astropy/photutils","owner":{"login":"astropy","id":847984,"avatar_url":"https://avatars.githubusercontent.com/u/847984?v=3","gravatar_id":"","url":"https://api.github.com/users/astropy","html_url":"https://github.com/astropy","followers_url":"https://api.github.com/users/astropy/followers","following_url":"https://api.github.com/users/astropy/following{/other_user}","gists_url":"https://api.github.com/users/astropy/gists{/gist_id}","starred_url":"https://api.github.com/users/astropy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/astropy/subscriptions","organizations_url":"https://api.github.com/users/astropy/orgs","repos_url":"https://api.github.com/users/astropy/repos","events_url":"https://api.github.com/users/astropy/events{/privacy}","received_events_url":"https://api.github.com/users/astropy/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/astropy/photutils","description":"Affiliated package for image photometry utilities. Maintainers: @larrybradley and @bsipocz","fork":false,"url":"https://api.github.com/repos/astropy/photutils","forks_url":"https://api.github.com/repos/astropy/photutils/forks","keys_url":"https://api.github.com/repos/astropy/photutils/keys{/key_id}","collaborators_url":"https://api.github.com/repos/astropy/photutils/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/astropy/photutils/teams","hooks_url":"https://api.github.com/repos/astropy/photutils/hooks","issue_events_url":"https://api.github.com/repos/astropy/photutils/issues/events{/number}","events_url":"https://api.github.com/repos/astropy/photutils/events","assignees_url":"https://api.github.com/repos/astropy/photutils/assignees{/user}","branches_url":"https://api.github.com/repos/astropy/photutils/branches{/branch}","tags_url":"https://api.github.com/repos/astropy/photutils/tags","blobs_url":"https://api.github.com/repos/astropy/photutils/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/astropy/photutils/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/astropy/photutils/git/refs{/sha}","trees_url":"https://api.github.com/repos/astropy/photutils/git/trees{/sha}","statuses_url":"https://api.github.com/repos/astropy/photutils/statuses/{sha}","languages_url":"https://api.github.com/repos/astropy/photutils/languages","stargazers_url":"https://api.github.com/repos/astropy/photutils/stargazers","contributors_url":"https://api.github.com/repos/astropy/photutils/contributors","subscribers_url":"https://api.github.com/repos/astropy/photutils/subscribers","subscription_url":"https://api.github.com/repos/astropy/photutils/subscription","commits_url":"https://api.github.com/repos/astropy/photutils/commits{/sha}","git_commits_url":"https://api.github.com/repos/astropy/photutils/git/commits{/sha}","comments_url":"https://api.github.com/repos/astropy/photutils/comments{/number}","issue_comment_url":"https://api.github.com/repos/astropy/photutils/issues/comments{/number}","contents_url":"https://api.github.com/repos/astropy/photutils/contents/{+path}","compare_url":"https://api.github.com/repos/astropy/photutils/compare/{base}...{head}","merges_url":"https://api.github.com/repos/astropy/photutils/merges","archive_url":"https://api.github.com/repos/astropy/photutils/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/astropy/photutils/downloads","issues_url":"https://api.github.com/repos/astropy/photutils/issues{/number}","pulls_url":"https://api.github.com/repos/astropy/photutils/pulls{/number}","milestones_url":"https://api.github.com/repos/astropy/photutils/milestones{/number}","notifications_url":"https://api.github.com/repos/astropy/photutils/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/astropy/photutils/labels{/name}","releases_url":"https://api.github.com/repos/astropy/photutils/releases{/id}","deployments_url":"https://api.github.com/repos/astropy/photutils/deployments","created_at":"2011-10-25T02:39:28Z","updated_at":"2016-08-26T03:23:20Z","pushed_at":"2016-08-26T15:03:11Z","git_url":"git://github.com/astropy/photutils.git","ssh_url":"git@github.com:astropy/photutils.git","clone_url":"https://github.com/astropy/photutils.git","svn_url":"https://github.com/astropy/photutils","homepage":"http://photutils.readthedocs.io","size":8010,"stargazers_count":39,"watchers_count":39,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":55,"mirror_url":null,"open_issues_count":39,"forks":55,"open_issues":39,"watchers":39,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/astropy/photutils/pulls/385"},"html":{"href":"https://github.com/astropy/photutils/pull/385"},"issue":{"href":"https://api.github.com/repos/astropy/photutils/issues/385"},"comments":{"href":"https://api.github.com/repos/astropy/photutils/issues/385/comments"},"review_comments":{"href":"https://api.github.com/repos/astropy/photutils/pulls/385/comments"},"review_comment":{"href":"https://api.github.com/repos/astropy/photutils/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/astropy/photutils/pulls/385/commits"},"statuses":{"href":"https://api.github.com/repos/astropy/photutils/statuses/671b0339c39651348ac36ff8c25ee9b0164e221c"}}}}
{"actor":{"display_login":"eteq"}}