{"action":"created","comment":{"url":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/comments/80474650","id":80474650,"diff_hunk":"@@ -0,0 +1,195 @@\n+# Copyright (C) 2016  Christopher M. Biwer\n+# This program is free software; you can redistribute it and/or modify it\n+# under the terms of the GNU General Public License as published by the\n+# Free Software Foundation; either version 3 of the License, or (at your\n+# option) any later version.\n+#\n+# This program is distributed in the hope that it will be useful, but\n+# WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General\n+# Public License for more details.\n+#\n+# You should have received a copy of the GNU General Public License along\n+# with this program; if not, write to the Free Software Foundation, Inc.,\n+# 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n+\n+\n+#\n+# =============================================================================\n+#\n+#                                   Preamble\n+#\n+# =============================================================================\n+#\n+\"\"\"\n+This modules provides classes and functions for using different sampler\n+packages for parameter estimation.\n+\"\"\"\n+\n+from pycbc.inference.sampler import _BaseMCMCSampler\n+from pycbc.io import WaveformArray, FieldArray\n+from pycbc.filter import autocorrelation\n+\n+#\n+# =============================================================================\n+#\n+#                                   Samplers\n+#\n+# =============================================================================\n+#\n+\n+class KombineSampler(_BaseMCMCSampler):\n+    \"\"\"This class is used to construct the MCMC sampler from the kombine\n+    package.\n+\n+    Parameters\n+    ----------\n+    likelihood_evaluator : likelihood class\n+        An instance of the likelihood class from the\n+        pycbc.inference.likelihood module.\n+    nwalkers : int\n+        Number of walkers to use in sampler.\n+    transd : bool\n+        If True, the sampler will operate across parameter spaces using a\n+        kombine.clustered_kde.TransdimensionalKDE proposal distribution. In\n+        this mode a masked array with samples in each of the possible sets of\n+        dimensions must be given for the initial ensemble distribution.\n+    processes : {None, int}\n+        Number of processes to use with multiprocessing. If None, all available\n+        cores are used.\n+    min_burn_in : {None, int}\n+        Set the minimum number of burn in iterations to use. If None,\n+        `burn_in_iterations` will be initialized to `0`.\n+    \"\"\"\n+    name = \"kombine\"\n+\n+    def __init__(self, likelihood_evaluator, nwalkers, transd=False,\n+            processes=None, min_burn_in=None):\n+        try:\n+            import kombine\n+        except ImportError:\n+            raise ImportError(\"kombine is not installed.\")\n+\n+        # construct sampler for use in KombineSampler\n+        ndim = len(likelihood_evaluator.waveform_generator.variable_args)\n+        sampler = kombine.Sampler(nwalkers, ndim, likelihood_evaluator,\n+                                          transd=transd, processes=processes)\n+        # initialize\n+        super(KombineSampler, self).__init__(sampler, likelihood_evaluator,\n+            min_burn_in=min_burn_in)\n+        self._nwalkers = nwalkers\n+\n+    @classmethod\n+    def from_cli(cls, opts, likelihood_evaluator):\n+        \"\"\"Create an instance of this sampler from the given command-line\n+        options.\n+\n+        Parameters\n+        ----------\n+        opts : ArgumentParser options\n+            The options to parse.\n+        likelihood_evaluator : LikelihoodEvaluator\n+            The likelihood evaluator to use with the sampler.\n+\n+        Returns\n+        -------\n+        KombineSampler\n+            A kombine sampler initialized based on the given arguments.\n+        \"\"\"\n+        return cls(likelihood_evaluator, opts.nwalkers,\n+                   processes=opts.nprocesses, min_burn_in=opts.min_burn_in)\n+\n+    def run(self, niterations, **kwargs):\n+        \"\"\"Advance the sampler for a number of samples.\n+\n+        Parameters\n+        ----------\n+        niterations : int\n+            Number of samples to get from sampler.\n+\n+        Returns\n+        -------\n+        p : numpy.array\n+            An array of current walker positions with shape (nwalkers, ndim).\n+        lnpost : numpy.array\n+            The list of log posterior probabilities for the walkers at\n+            positions p, with shape (nwalkers, ndim).\n+        lnprop : numpy.array\n+            The list of log proposal densities for the walkers at positions p,\n+            with shape (nwalkers, ndim).\n+        \"\"\"\n+        blob0 = None\n+        if self.burn_in_iterations == 0:\n+            # no burn in, use the initial positions\n+            p0 = self.p0\n+            if self.likelihood_evaluator.return_meta:\n+                blob0 = [self.likelihood_evaluator(p0[wi,:])[1]\n+                    for wi in range(self.nwalkers)]\n+        else:\n+            p0 = None\n+            # kombine requires blob data to be specified\n+            if self.likelihood_evaluator.return_meta:\n+                blob0 = self._sampler.blobs[-1]\n+        kwargs['blob0'] = blob0\n+        res = self._sampler.run_mcmc(niterations, p0=p0, **kwargs)\n+        p, lnpost, lnprop = res[0], res[1], res[2] \n+        # update the positions\n+        self._pos = p\n+        return p, lnpost, lnprop\n+\n+    @property\n+    def lnpost(self):\n+        \"\"\" Get the natural logarithm of the likelihood as an \n+        nwalkers x niterations array.\n+        \"\"\"\n+        # kombine returns niterations x nwaklers\n+        return self._sampler.lnpost.transpose()\n+\n+    @property\n+    def chain(self):\n+        \"\"\"Get all past samples as an nwalker x niterations x ndim array.\"\"\"\n+        # kombine returns niterations x nwalkers x ndim\n+        return self._sampler.chain.transpose((1,0,2))\n+\n+    def burn_in(self):\n+        \"\"\"Use kombine's `burnin` routine to advance the sampler.\n+        ","path":"pycbc/inference/sampler_kombine.py","position":156,"original_position":156,"commit_id":"bc80983d4c98b4b2d01816432a7e8dc65a7b8833","original_commit_id":"bc80983d4c98b4b2d01816432a7e8dc65a7b8833","user":{"login":"ahnitz","id":2206534,"avatar_url":"https://avatars.githubusercontent.com/u/2206534?v=3","gravatar_id":"","url":"https://api.github.com/users/ahnitz","html_url":"https://github.com/ahnitz","followers_url":"https://api.github.com/users/ahnitz/followers","following_url":"https://api.github.com/users/ahnitz/following{/other_user}","gists_url":"https://api.github.com/users/ahnitz/gists{/gist_id}","starred_url":"https://api.github.com/users/ahnitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahnitz/subscriptions","organizations_url":"https://api.github.com/users/ahnitz/orgs","repos_url":"https://api.github.com/users/ahnitz/repos","events_url":"https://api.github.com/users/ahnitz/events{/privacy}","received_events_url":"https://api.github.com/users/ahnitz/received_events","type":"User","site_admin":false},"body":"__[flake8]__\n* [W293] blank line contains whitespace\n\n<!-- Comment by [SideCI](https://sideci.com) -->","created_at":"2016-09-26T13:31:54Z","updated_at":"2016-09-26T13:31:54Z","html_url":"https://github.com/ligo-cbc/pycbc/pull/1101#discussion_r80474650","pull_request_url":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/1101","_links":{"self":{"href":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/comments/80474650"},"html":{"href":"https://github.com/ligo-cbc/pycbc/pull/1101#discussion_r80474650"},"pull_request":{"href":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/1101"}}},"pull_request":{"url":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/1101","id":86633669,"html_url":"https://github.com/ligo-cbc/pycbc/pull/1101","diff_url":"https://github.com/ligo-cbc/pycbc/pull/1101.diff","patch_url":"https://github.com/ligo-cbc/pycbc/pull/1101.patch","issue_url":"https://api.github.com/repos/ligo-cbc/pycbc/issues/1101","number":1101,"state":"open","locked":false,"title":"Seperate samplers into different modules","user":{"login":"cmbiwer","id":10871764,"avatar_url":"https://avatars.githubusercontent.com/u/10871764?v=3","gravatar_id":"","url":"https://api.github.com/users/cmbiwer","html_url":"https://github.com/cmbiwer","followers_url":"https://api.github.com/users/cmbiwer/followers","following_url":"https://api.github.com/users/cmbiwer/following{/other_user}","gists_url":"https://api.github.com/users/cmbiwer/gists{/gist_id}","starred_url":"https://api.github.com/users/cmbiwer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmbiwer/subscriptions","organizations_url":"https://api.github.com/users/cmbiwer/orgs","repos_url":"https://api.github.com/users/cmbiwer/repos","events_url":"https://api.github.com/users/cmbiwer/events{/privacy}","received_events_url":"https://api.github.com/users/cmbiwer/received_events","type":"User","site_admin":false},"body":"This separates out the classes in ``pycbc/inference/sampler.py`` into different modules. This module was getting to be an unmanageable size and for the sake of readability I think these need to be separated out.\r\n\r\nThis creates ``sampler_kombine.py`` and puts the kombine sampler in there. And ``sampler_emcee.py`` and puts the two emcee samplers in there.\r\n\r\nIt also removes a deprecated function for reading labels from the configuration file since now we are using the ``Parameters`` class.\r\n\r\nIt also makes the ``_pregenerator`` functions in ``generator.py`` top-level so that they can be pickled and used by the MCMC samplers.\r\n\r\nAnd adds the whitespace that Alex wanted in a different PR.\r\n\r\n","created_at":"2016-09-24T23:05:23Z","updated_at":"2016-09-26T13:31:54Z","closed_at":null,"merged_at":null,"merge_commit_sha":"964219c60f24382cfa87693261cf03fe6858342d","assignee":{"login":"cdcapano","id":8258446,"avatar_url":"https://avatars.githubusercontent.com/u/8258446?v=3","gravatar_id":"","url":"https://api.github.com/users/cdcapano","html_url":"https://github.com/cdcapano","followers_url":"https://api.github.com/users/cdcapano/followers","following_url":"https://api.github.com/users/cdcapano/following{/other_user}","gists_url":"https://api.github.com/users/cdcapano/gists{/gist_id}","starred_url":"https://api.github.com/users/cdcapano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cdcapano/subscriptions","organizations_url":"https://api.github.com/users/cdcapano/orgs","repos_url":"https://api.github.com/users/cdcapano/repos","events_url":"https://api.github.com/users/cdcapano/events{/privacy}","received_events_url":"https://api.github.com/users/cdcapano/received_events","type":"User","site_admin":false},"assignees":[{"login":"cdcapano","id":8258446,"avatar_url":"https://avatars.githubusercontent.com/u/8258446?v=3","gravatar_id":"","url":"https://api.github.com/users/cdcapano","html_url":"https://github.com/cdcapano","followers_url":"https://api.github.com/users/cdcapano/followers","following_url":"https://api.github.com/users/cdcapano/following{/other_user}","gists_url":"https://api.github.com/users/cdcapano/gists{/gist_id}","starred_url":"https://api.github.com/users/cdcapano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cdcapano/subscriptions","organizations_url":"https://api.github.com/users/cdcapano/orgs","repos_url":"https://api.github.com/users/cdcapano/repos","events_url":"https://api.github.com/users/cdcapano/events{/privacy}","received_events_url":"https://api.github.com/users/cdcapano/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/1101/commits","review_comments_url":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/1101/comments","review_comment_url":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ligo-cbc/pycbc/issues/1101/comments","statuses_url":"https://api.github.com/repos/ligo-cbc/pycbc/statuses/bc80983d4c98b4b2d01816432a7e8dc65a7b8833","head":{"label":"cmbiwer:sep_pr","ref":"sep_pr","sha":"bc80983d4c98b4b2d01816432a7e8dc65a7b8833","user":{"login":"cmbiwer","id":10871764,"avatar_url":"https://avatars.githubusercontent.com/u/10871764?v=3","gravatar_id":"","url":"https://api.github.com/users/cmbiwer","html_url":"https://github.com/cmbiwer","followers_url":"https://api.github.com/users/cmbiwer/followers","following_url":"https://api.github.com/users/cmbiwer/following{/other_user}","gists_url":"https://api.github.com/users/cmbiwer/gists{/gist_id}","starred_url":"https://api.github.com/users/cmbiwer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmbiwer/subscriptions","organizations_url":"https://api.github.com/users/cmbiwer/orgs","repos_url":"https://api.github.com/users/cmbiwer/repos","events_url":"https://api.github.com/users/cmbiwer/events{/privacy}","received_events_url":"https://api.github.com/users/cmbiwer/received_events","type":"User","site_admin":false},"repo":{"id":35433992,"name":"pycbc","full_name":"cmbiwer/pycbc","owner":{"login":"cmbiwer","id":10871764,"avatar_url":"https://avatars.githubusercontent.com/u/10871764?v=3","gravatar_id":"","url":"https://api.github.com/users/cmbiwer","html_url":"https://github.com/cmbiwer","followers_url":"https://api.github.com/users/cmbiwer/followers","following_url":"https://api.github.com/users/cmbiwer/following{/other_user}","gists_url":"https://api.github.com/users/cmbiwer/gists{/gist_id}","starred_url":"https://api.github.com/users/cmbiwer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmbiwer/subscriptions","organizations_url":"https://api.github.com/users/cmbiwer/orgs","repos_url":"https://api.github.com/users/cmbiwer/repos","events_url":"https://api.github.com/users/cmbiwer/events{/privacy}","received_events_url":"https://api.github.com/users/cmbiwer/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cmbiwer/pycbc","description":"Python CBC Tools","fork":true,"url":"https://api.github.com/repos/cmbiwer/pycbc","forks_url":"https://api.github.com/repos/cmbiwer/pycbc/forks","keys_url":"https://api.github.com/repos/cmbiwer/pycbc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cmbiwer/pycbc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cmbiwer/pycbc/teams","hooks_url":"https://api.github.com/repos/cmbiwer/pycbc/hooks","issue_events_url":"https://api.github.com/repos/cmbiwer/pycbc/issues/events{/number}","events_url":"https://api.github.com/repos/cmbiwer/pycbc/events","assignees_url":"https://api.github.com/repos/cmbiwer/pycbc/assignees{/user}","branches_url":"https://api.github.com/repos/cmbiwer/pycbc/branches{/branch}","tags_url":"https://api.github.com/repos/cmbiwer/pycbc/tags","blobs_url":"https://api.github.com/repos/cmbiwer/pycbc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cmbiwer/pycbc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cmbiwer/pycbc/git/refs{/sha}","trees_url":"https://api.github.com/repos/cmbiwer/pycbc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cmbiwer/pycbc/statuses/{sha}","languages_url":"https://api.github.com/repos/cmbiwer/pycbc/languages","stargazers_url":"https://api.github.com/repos/cmbiwer/pycbc/stargazers","contributors_url":"https://api.github.com/repos/cmbiwer/pycbc/contributors","subscribers_url":"https://api.github.com/repos/cmbiwer/pycbc/subscribers","subscription_url":"https://api.github.com/repos/cmbiwer/pycbc/subscription","commits_url":"https://api.github.com/repos/cmbiwer/pycbc/commits{/sha}","git_commits_url":"https://api.github.com/repos/cmbiwer/pycbc/git/commits{/sha}","comments_url":"https://api.github.com/repos/cmbiwer/pycbc/comments{/number}","issue_comment_url":"https://api.github.com/repos/cmbiwer/pycbc/issues/comments{/number}","contents_url":"https://api.github.com/repos/cmbiwer/pycbc/contents/{+path}","compare_url":"https://api.github.com/repos/cmbiwer/pycbc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cmbiwer/pycbc/merges","archive_url":"https://api.github.com/repos/cmbiwer/pycbc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cmbiwer/pycbc/downloads","issues_url":"https://api.github.com/repos/cmbiwer/pycbc/issues{/number}","pulls_url":"https://api.github.com/repos/cmbiwer/pycbc/pulls{/number}","milestones_url":"https://api.github.com/repos/cmbiwer/pycbc/milestones{/number}","notifications_url":"https://api.github.com/repos/cmbiwer/pycbc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cmbiwer/pycbc/labels{/name}","releases_url":"https://api.github.com/repos/cmbiwer/pycbc/releases{/id}","deployments_url":"https://api.github.com/repos/cmbiwer/pycbc/deployments","created_at":"2015-05-11T15:55:44Z","updated_at":"2016-01-28T20:54:13Z","pushed_at":"2016-09-26T13:31:37Z","git_url":"git://github.com/cmbiwer/pycbc.git","ssh_url":"git@github.com:cmbiwer/pycbc.git","clone_url":"https://github.com/cmbiwer/pycbc.git","svn_url":"https://github.com/cmbiwer/pycbc","homepage":"","size":59825,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"ligo-cbc:master","ref":"master","sha":"1246c23a0bdb96c91a574b939ee015ceaddf72ed","user":{"login":"ligo-cbc","id":11262917,"avatar_url":"https://avatars.githubusercontent.com/u/11262917?v=3","gravatar_id":"","url":"https://api.github.com/users/ligo-cbc","html_url":"https://github.com/ligo-cbc","followers_url":"https://api.github.com/users/ligo-cbc/followers","following_url":"https://api.github.com/users/ligo-cbc/following{/other_user}","gists_url":"https://api.github.com/users/ligo-cbc/gists{/gist_id}","starred_url":"https://api.github.com/users/ligo-cbc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ligo-cbc/subscriptions","organizations_url":"https://api.github.com/users/ligo-cbc/orgs","repos_url":"https://api.github.com/users/ligo-cbc/repos","events_url":"https://api.github.com/users/ligo-cbc/events{/privacy}","received_events_url":"https://api.github.com/users/ligo-cbc/received_events","type":"Organization","site_admin":false},"repo":{"id":31596861,"name":"pycbc","full_name":"ligo-cbc/pycbc","owner":{"login":"ligo-cbc","id":11262917,"avatar_url":"https://avatars.githubusercontent.com/u/11262917?v=3","gravatar_id":"","url":"https://api.github.com/users/ligo-cbc","html_url":"https://github.com/ligo-cbc","followers_url":"https://api.github.com/users/ligo-cbc/followers","following_url":"https://api.github.com/users/ligo-cbc/following{/other_user}","gists_url":"https://api.github.com/users/ligo-cbc/gists{/gist_id}","starred_url":"https://api.github.com/users/ligo-cbc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ligo-cbc/subscriptions","organizations_url":"https://api.github.com/users/ligo-cbc/orgs","repos_url":"https://api.github.com/users/ligo-cbc/repos","events_url":"https://api.github.com/users/ligo-cbc/events{/privacy}","received_events_url":"https://api.github.com/users/ligo-cbc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ligo-cbc/pycbc","description":"Python CBC Tools","fork":false,"url":"https://api.github.com/repos/ligo-cbc/pycbc","forks_url":"https://api.github.com/repos/ligo-cbc/pycbc/forks","keys_url":"https://api.github.com/repos/ligo-cbc/pycbc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ligo-cbc/pycbc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ligo-cbc/pycbc/teams","hooks_url":"https://api.github.com/repos/ligo-cbc/pycbc/hooks","issue_events_url":"https://api.github.com/repos/ligo-cbc/pycbc/issues/events{/number}","events_url":"https://api.github.com/repos/ligo-cbc/pycbc/events","assignees_url":"https://api.github.com/repos/ligo-cbc/pycbc/assignees{/user}","branches_url":"https://api.github.com/repos/ligo-cbc/pycbc/branches{/branch}","tags_url":"https://api.github.com/repos/ligo-cbc/pycbc/tags","blobs_url":"https://api.github.com/repos/ligo-cbc/pycbc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ligo-cbc/pycbc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ligo-cbc/pycbc/git/refs{/sha}","trees_url":"https://api.github.com/repos/ligo-cbc/pycbc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ligo-cbc/pycbc/statuses/{sha}","languages_url":"https://api.github.com/repos/ligo-cbc/pycbc/languages","stargazers_url":"https://api.github.com/repos/ligo-cbc/pycbc/stargazers","contributors_url":"https://api.github.com/repos/ligo-cbc/pycbc/contributors","subscribers_url":"https://api.github.com/repos/ligo-cbc/pycbc/subscribers","subscription_url":"https://api.github.com/repos/ligo-cbc/pycbc/subscription","commits_url":"https://api.github.com/repos/ligo-cbc/pycbc/commits{/sha}","git_commits_url":"https://api.github.com/repos/ligo-cbc/pycbc/git/commits{/sha}","comments_url":"https://api.github.com/repos/ligo-cbc/pycbc/comments{/number}","issue_comment_url":"https://api.github.com/repos/ligo-cbc/pycbc/issues/comments{/number}","contents_url":"https://api.github.com/repos/ligo-cbc/pycbc/contents/{+path}","compare_url":"https://api.github.com/repos/ligo-cbc/pycbc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ligo-cbc/pycbc/merges","archive_url":"https://api.github.com/repos/ligo-cbc/pycbc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ligo-cbc/pycbc/downloads","issues_url":"https://api.github.com/repos/ligo-cbc/pycbc/issues{/number}","pulls_url":"https://api.github.com/repos/ligo-cbc/pycbc/pulls{/number}","milestones_url":"https://api.github.com/repos/ligo-cbc/pycbc/milestones{/number}","notifications_url":"https://api.github.com/repos/ligo-cbc/pycbc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ligo-cbc/pycbc/labels{/name}","releases_url":"https://api.github.com/repos/ligo-cbc/pycbc/releases{/id}","deployments_url":"https://api.github.com/repos/ligo-cbc/pycbc/deployments","created_at":"2015-03-03T12:19:19Z","updated_at":"2016-08-18T14:09:58Z","pushed_at":"2016-09-26T13:31:38Z","git_url":"git://github.com/ligo-cbc/pycbc.git","ssh_url":"git@github.com:ligo-cbc/pycbc.git","clone_url":"https://github.com/ligo-cbc/pycbc.git","svn_url":"https://github.com/ligo-cbc/pycbc","homepage":null,"size":176557,"stargazers_count":44,"watchers_count":44,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":84,"mirror_url":null,"open_issues_count":28,"forks":84,"open_issues":28,"watchers":44,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/1101"},"html":{"href":"https://github.com/ligo-cbc/pycbc/pull/1101"},"issue":{"href":"https://api.github.com/repos/ligo-cbc/pycbc/issues/1101"},"comments":{"href":"https://api.github.com/repos/ligo-cbc/pycbc/issues/1101/comments"},"review_comments":{"href":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/1101/comments"},"review_comment":{"href":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ligo-cbc/pycbc/pulls/1101/commits"},"statuses":{"href":"https://api.github.com/repos/ligo-cbc/pycbc/statuses/bc80983d4c98b4b2d01816432a7e8dc65a7b8833"}}}}
{"actor":{"display_login":"ahnitz"}}