{"action":"created","comment":{"url":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments/88042157","pull_request_review_id":8624697,"id":88042157,"diff_hunk":"@@ -0,0 +1,181 @@\n+package org.broadinstitute.hellbender.tools.walkers.cancer.contamination;\n+\n+import htsjdk.samtools.util.Locatable;\n+\n+import java.util.Arrays;\n+\n+/**\n+ * a class that estimates and stores the contamination values for a site.\n+ */\n+final class ContaminationEstimate {\n+    private final double precision;             // to what precision do we want to run; e.g. if set to 1, we run using 1% increments\n+    private final double[] bins;                // the bins representing the discrete contamination levels we're evaluating\n+    private double populationFit = 0.0;\n+    private String popultationName = \"\";\n+\n+    private static double[] precalculatedEpsilon;\n+\n+    private int arrayAlleleObservations = 0;\n+    private int alternateAlleleObservations = 0;\n+\n+    // precalculate the 128 values of epsilon that are possible\n+    static {\n+        precalculatedEpsilon = new double[Byte.MAX_VALUE+1];\n+\n+        for(int i=0; i <= (int)Byte.MAX_VALUE; i++) {\n+            precalculatedEpsilon[i] = Math.pow(10.0,-1.0*(((double)i)/10.0));\n+        }\n+    }\n+\n+    /**\n+     * create the contamination estimate, given:\n+     * @param precision the precision value, to what level are we calculating the contamination\n+     */\n+    public ContaminationEstimate(double precision,\n+                                 double maf,\n+                                 byte[] bases,\n+                                 byte[] quals,\n+                                 byte arrayAllele,\n+                                 byte hapmapAlt,\n+                                 String popName,\n+                                 Locatable locus\n+    ) {\n+        // setup the bins to the correct precision\n+        this.precision = precision;\n+        bins = new double[(int)Math.ceil(100/precision)+1];\n+        if (maf == 0) maf = 0.00001;\n+\n+        popultationName = popName;\n+\n+        Arrays.fill(bins,0.0); // just to make sure we don't have any residual values\n+\n+        // convert the quals\n+        double[] realQuals = new double[quals.length];\n+        int qIndex = 0;\n+        for (byte qual : quals) {realQuals[qIndex++] = Math.pow(10.0,-1.0*(qual/10.0));}\n+\n+        // check our inputs\n+        if (maf > 1.0 || maf < 0.0) throw new IllegalArgumentException(\"Invalid allele Freq: must be between 0 and 1 (inclusive), maf was \" + maf + \" for population \" + popName);\n+\n+        // calculate the contamination for each bin\n+        int qualOffset = 0;\n+        for (byte base : bases) {\n+\n+            if (base == arrayAllele) { arrayAlleleObservations++; }\n+            if (base == hapmapAlt) { alternateAlleleObservations++; }\n+            double epsilon = precalculatedEpsilon[quals[qualOffset++]];\n+\n+            for (int index = 0; index < bins.length; index++) {\n+\n+\n+                double contaminationRate = (1.0 - (double) index / (double) bins.length);\n+\n+                if (base == arrayAllele) {\n+                    bins[index] += Math.log((1.0 - contaminationRate) * (1.0 - epsilon) +\n+                            contaminationRate * ((maf) * (1.0 - epsilon) + (1.0 - maf) * (epsilon/3.0)));\n+                    populationFit += Math.log(epsilon);\n+\n+                } else if(hapmapAlt == base) {\n+                    bins[index] += Math.log((1.0 - contaminationRate) * (epsilon / 3.0) +\n+                            contaminationRate * ((maf) * (epsilon/3.0) + (1.0 - maf) * (1.0 - epsilon)));\n+\n+                    populationFit += Math.log(maf + epsilon);\n+                }\n+            }\n+        }\n+    }\n+\n+    public double[] getBins() {\n+        return bins;\n+    }\n+\n+    public void setPopulationFit(double populationFit) {\n+        this.populationFit = populationFit;\n+    }\n+\n+    public double getPopulationFit() {\n+        return populationFit;\n+    }\n+\n+    public String getPopultationName() {\n+        return popultationName;\n+    }\n+\n+    public static class ConfidenceInterval {\n+\n+        private double start;\n+        private double stop;\n+        private double contamination;\n+        private double maxLikelihood;\n+        double[] newBins;\n+\n+        public ConfidenceInterval(double bins[], double intervalArea) {\n+            // make a copy of the bins in non-log space\n+            int maxIndex = 0;\n+            for (int x = 0; x < bins.length; x++) if (bins[x] > bins[maxIndex]) maxIndex = x;\n+            newBins = new double[bins.length];\n+            maxLikelihood = bins[maxIndex];\n+\n+            int index = 0;\n+            double total = 0.0;\n+            for (double d : bins) {\n+                newBins[index] = Math.pow(10,(bins[index] - bins[maxIndex]));\n+                total += newBins[index];\n+                index++;\n+            }\n+\n+            for (int x = 0; x < newBins.length; x++) {\n+                newBins[x] = newBins[x] / total;\n+            }\n+            double areaUnderCurve = 0;\n+            int leftIndex = maxIndex;\n+            int rightIndex = maxIndex;\n+            while (areaUnderCurve < 0.95) {\n+\n+                // if the \"left\" bin is bigger, and can be moved, move it\n+                if (newBins[leftIndex] >= newBins[rightIndex] && leftIndex > 0) {\n+                    leftIndex--;\n+                } else {\n+                    // otherwise move the right bin if possible\n+                    if (rightIndex < bins.length - 1) {\n+                        rightIndex++;\n+                    } else {\n+                        // and if not move the left bin, or die\n+                        if (leftIndex > 0) {\n+                            leftIndex--;\n+                        } else {\n+                            throw new RuntimeException(\"Error trying to compute confidence interval\");\n+                        }\n+                    }\n+                }\n+\n+                areaUnderCurve = 0.0;\n+                for (int x = leftIndex; x <= rightIndex; x++)\n+                    areaUnderCurve += newBins[x];\n+            }\n+            start = (bins.length - rightIndex) * (100.0/bins.length);\n+            stop = (bins.length - leftIndex) * (100.0/bins.length);\n+            contamination = (bins.length - maxIndex) * (100.0/bins.length);\n+        }\n+\n+        public double getStart() {\n+            return start;\n+        }\n+\n+        public double getStop() {\n+            return stop;\n+        }\n+\n+        public double getContamination() {\n+            return contamination;\n+        }\n+\n+        public double getMaxLikelihood() {\n+            return maxLikelihood;\n+        }\n+\n+        public String toString() {\n+            return contamination + \"[\" + start + \" - \" + stop + \"] log likelihood = \" + maxLikelihood;","path":"src/main/java/org/broadinstitute/hellbender/tools/walkers/cancer/contamination/ContaminationEstimate.java","position":178,"original_position":178,"commit_id":"657c0ae43f37327fe64a7acf996be23742ecdaae","original_commit_id":"657c0ae43f37327fe64a7acf996be23742ecdaae","user":{"login":"davidbenjamin","id":8438890,"avatar_url":"https://avatars.githubusercontent.com/u/8438890?v=3","gravatar_id":"","url":"https://api.github.com/users/davidbenjamin","html_url":"https://github.com/davidbenjamin","followers_url":"https://api.github.com/users/davidbenjamin/followers","following_url":"https://api.github.com/users/davidbenjamin/following{/other_user}","gists_url":"https://api.github.com/users/davidbenjamin/gists{/gist_id}","starred_url":"https://api.github.com/users/davidbenjamin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidbenjamin/subscriptions","organizations_url":"https://api.github.com/users/davidbenjamin/orgs","repos_url":"https://api.github.com/users/davidbenjamin/repos","events_url":"https://api.github.com/users/davidbenjamin/events{/privacy}","received_events_url":"https://api.github.com/users/davidbenjamin/received_events","type":"User","site_admin":false},"body":"`String.format`","created_at":"2016-11-15T15:38:35Z","updated_at":"2016-11-15T15:38:35Z","html_url":"https://github.com/broadinstitute/gatk/pull/2067#discussion_r88042157","pull_request_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/2067","_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments/88042157"},"html":{"href":"https://github.com/broadinstitute/gatk/pull/2067#discussion_r88042157"},"pull_request":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/2067"}}},"pull_request":{"url":"https://api.github.com/repos/broadinstitute/gatk/pulls/2067","id":79390347,"html_url":"https://github.com/broadinstitute/gatk/pull/2067","diff_url":"https://github.com/broadinstitute/gatk/pull/2067.diff","patch_url":"https://github.com/broadinstitute/gatk/pull/2067.patch","issue_url":"https://api.github.com/repos/broadinstitute/gatk/issues/2067","number":2067,"state":"open","locked":false,"title":"Ak contest port","user":{"login":"droazen","id":798637,"avatar_url":"https://avatars.githubusercontent.com/u/798637?v=3","gravatar_id":"","url":"https://api.github.com/users/droazen","html_url":"https://github.com/droazen","followers_url":"https://api.github.com/users/droazen/followers","following_url":"https://api.github.com/users/droazen/following{/other_user}","gists_url":"https://api.github.com/users/droazen/gists{/gist_id}","starred_url":"https://api.github.com/users/droazen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/droazen/subscriptions","organizations_url":"https://api.github.com/users/droazen/orgs","repos_url":"https://api.github.com/users/droazen/repos","events_url":"https://api.github.com/users/droazen/events{/privacy}","received_events_url":"https://api.github.com/users/droazen/received_events","type":"User","site_admin":false},"body":"Needs to be rebased after read logical names are re-introduced.\n","created_at":"2016-07-29T16:54:19Z","updated_at":"2016-11-15T15:39:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":{"login":"davidbenjamin","id":8438890,"avatar_url":"https://avatars.githubusercontent.com/u/8438890?v=3","gravatar_id":"","url":"https://api.github.com/users/davidbenjamin","html_url":"https://github.com/davidbenjamin","followers_url":"https://api.github.com/users/davidbenjamin/followers","following_url":"https://api.github.com/users/davidbenjamin/following{/other_user}","gists_url":"https://api.github.com/users/davidbenjamin/gists{/gist_id}","starred_url":"https://api.github.com/users/davidbenjamin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidbenjamin/subscriptions","organizations_url":"https://api.github.com/users/davidbenjamin/orgs","repos_url":"https://api.github.com/users/davidbenjamin/repos","events_url":"https://api.github.com/users/davidbenjamin/events{/privacy}","received_events_url":"https://api.github.com/users/davidbenjamin/received_events","type":"User","site_admin":false},"assignees":[{"login":"davidbenjamin","id":8438890,"avatar_url":"https://avatars.githubusercontent.com/u/8438890?v=3","gravatar_id":"","url":"https://api.github.com/users/davidbenjamin","html_url":"https://github.com/davidbenjamin","followers_url":"https://api.github.com/users/davidbenjamin/followers","following_url":"https://api.github.com/users/davidbenjamin/following{/other_user}","gists_url":"https://api.github.com/users/davidbenjamin/gists{/gist_id}","starred_url":"https://api.github.com/users/davidbenjamin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidbenjamin/subscriptions","organizations_url":"https://api.github.com/users/davidbenjamin/orgs","repos_url":"https://api.github.com/users/davidbenjamin/repos","events_url":"https://api.github.com/users/davidbenjamin/events{/privacy}","received_events_url":"https://api.github.com/users/davidbenjamin/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/2067/commits","review_comments_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/2067/comments","review_comment_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/broadinstitute/gatk/issues/2067/comments","statuses_url":"https://api.github.com/repos/broadinstitute/gatk/statuses/657c0ae43f37327fe64a7acf996be23742ecdaae","head":{"label":"broadinstitute:ak_contest_v2","ref":"ak_contest_v2","sha":"657c0ae43f37327fe64a7acf996be23742ecdaae","user":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"repo":{"id":27452807,"name":"gatk","full_name":"broadinstitute/gatk","owner":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/broadinstitute/gatk","description":"GATK4 development","fork":false,"url":"https://api.github.com/repos/broadinstitute/gatk","forks_url":"https://api.github.com/repos/broadinstitute/gatk/forks","keys_url":"https://api.github.com/repos/broadinstitute/gatk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/broadinstitute/gatk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/broadinstitute/gatk/teams","hooks_url":"https://api.github.com/repos/broadinstitute/gatk/hooks","issue_events_url":"https://api.github.com/repos/broadinstitute/gatk/issues/events{/number}","events_url":"https://api.github.com/repos/broadinstitute/gatk/events","assignees_url":"https://api.github.com/repos/broadinstitute/gatk/assignees{/user}","branches_url":"https://api.github.com/repos/broadinstitute/gatk/branches{/branch}","tags_url":"https://api.github.com/repos/broadinstitute/gatk/tags","blobs_url":"https://api.github.com/repos/broadinstitute/gatk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/broadinstitute/gatk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/broadinstitute/gatk/git/refs{/sha}","trees_url":"https://api.github.com/repos/broadinstitute/gatk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/broadinstitute/gatk/statuses/{sha}","languages_url":"https://api.github.com/repos/broadinstitute/gatk/languages","stargazers_url":"https://api.github.com/repos/broadinstitute/gatk/stargazers","contributors_url":"https://api.github.com/repos/broadinstitute/gatk/contributors","subscribers_url":"https://api.github.com/repos/broadinstitute/gatk/subscribers","subscription_url":"https://api.github.com/repos/broadinstitute/gatk/subscription","commits_url":"https://api.github.com/repos/broadinstitute/gatk/commits{/sha}","git_commits_url":"https://api.github.com/repos/broadinstitute/gatk/git/commits{/sha}","comments_url":"https://api.github.com/repos/broadinstitute/gatk/comments{/number}","issue_comment_url":"https://api.github.com/repos/broadinstitute/gatk/issues/comments{/number}","contents_url":"https://api.github.com/repos/broadinstitute/gatk/contents/{+path}","compare_url":"https://api.github.com/repos/broadinstitute/gatk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/broadinstitute/gatk/merges","archive_url":"https://api.github.com/repos/broadinstitute/gatk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/broadinstitute/gatk/downloads","issues_url":"https://api.github.com/repos/broadinstitute/gatk/issues{/number}","pulls_url":"https://api.github.com/repos/broadinstitute/gatk/pulls{/number}","milestones_url":"https://api.github.com/repos/broadinstitute/gatk/milestones{/number}","notifications_url":"https://api.github.com/repos/broadinstitute/gatk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/broadinstitute/gatk/labels{/name}","releases_url":"https://api.github.com/repos/broadinstitute/gatk/releases{/id}","deployments_url":"https://api.github.com/repos/broadinstitute/gatk/deployments","created_at":"2014-12-02T20:50:36Z","updated_at":"2016-11-07T09:38:22Z","pushed_at":"2016-11-14T22:53:53Z","git_url":"git://github.com/broadinstitute/gatk.git","ssh_url":"git@github.com:broadinstitute/gatk.git","clone_url":"https://github.com/broadinstitute/gatk.git","svn_url":"https://github.com/broadinstitute/gatk","homepage":"","size":126685,"stargazers_count":92,"watchers_count":92,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":39,"mirror_url":null,"open_issues_count":456,"forks":39,"open_issues":456,"watchers":92,"default_branch":"master"}},"base":{"label":"broadinstitute:master","ref":"master","sha":"4376cb98f6fca5e7f059109fdf2ffa1fa0a47b55","user":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"repo":{"id":27452807,"name":"gatk","full_name":"broadinstitute/gatk","owner":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/broadinstitute/gatk","description":"GATK4 development","fork":false,"url":"https://api.github.com/repos/broadinstitute/gatk","forks_url":"https://api.github.com/repos/broadinstitute/gatk/forks","keys_url":"https://api.github.com/repos/broadinstitute/gatk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/broadinstitute/gatk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/broadinstitute/gatk/teams","hooks_url":"https://api.github.com/repos/broadinstitute/gatk/hooks","issue_events_url":"https://api.github.com/repos/broadinstitute/gatk/issues/events{/number}","events_url":"https://api.github.com/repos/broadinstitute/gatk/events","assignees_url":"https://api.github.com/repos/broadinstitute/gatk/assignees{/user}","branches_url":"https://api.github.com/repos/broadinstitute/gatk/branches{/branch}","tags_url":"https://api.github.com/repos/broadinstitute/gatk/tags","blobs_url":"https://api.github.com/repos/broadinstitute/gatk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/broadinstitute/gatk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/broadinstitute/gatk/git/refs{/sha}","trees_url":"https://api.github.com/repos/broadinstitute/gatk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/broadinstitute/gatk/statuses/{sha}","languages_url":"https://api.github.com/repos/broadinstitute/gatk/languages","stargazers_url":"https://api.github.com/repos/broadinstitute/gatk/stargazers","contributors_url":"https://api.github.com/repos/broadinstitute/gatk/contributors","subscribers_url":"https://api.github.com/repos/broadinstitute/gatk/subscribers","subscription_url":"https://api.github.com/repos/broadinstitute/gatk/subscription","commits_url":"https://api.github.com/repos/broadinstitute/gatk/commits{/sha}","git_commits_url":"https://api.github.com/repos/broadinstitute/gatk/git/commits{/sha}","comments_url":"https://api.github.com/repos/broadinstitute/gatk/comments{/number}","issue_comment_url":"https://api.github.com/repos/broadinstitute/gatk/issues/comments{/number}","contents_url":"https://api.github.com/repos/broadinstitute/gatk/contents/{+path}","compare_url":"https://api.github.com/repos/broadinstitute/gatk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/broadinstitute/gatk/merges","archive_url":"https://api.github.com/repos/broadinstitute/gatk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/broadinstitute/gatk/downloads","issues_url":"https://api.github.com/repos/broadinstitute/gatk/issues{/number}","pulls_url":"https://api.github.com/repos/broadinstitute/gatk/pulls{/number}","milestones_url":"https://api.github.com/repos/broadinstitute/gatk/milestones{/number}","notifications_url":"https://api.github.com/repos/broadinstitute/gatk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/broadinstitute/gatk/labels{/name}","releases_url":"https://api.github.com/repos/broadinstitute/gatk/releases{/id}","deployments_url":"https://api.github.com/repos/broadinstitute/gatk/deployments","created_at":"2014-12-02T20:50:36Z","updated_at":"2016-11-07T09:38:22Z","pushed_at":"2016-11-14T22:53:53Z","git_url":"git://github.com/broadinstitute/gatk.git","ssh_url":"git@github.com:broadinstitute/gatk.git","clone_url":"https://github.com/broadinstitute/gatk.git","svn_url":"https://github.com/broadinstitute/gatk","homepage":"","size":126685,"stargazers_count":92,"watchers_count":92,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":39,"mirror_url":null,"open_issues_count":456,"forks":39,"open_issues":456,"watchers":92,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/2067"},"html":{"href":"https://github.com/broadinstitute/gatk/pull/2067"},"issue":{"href":"https://api.github.com/repos/broadinstitute/gatk/issues/2067"},"comments":{"href":"https://api.github.com/repos/broadinstitute/gatk/issues/2067/comments"},"review_comments":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/2067/comments"},"review_comment":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/2067/commits"},"statuses":{"href":"https://api.github.com/repos/broadinstitute/gatk/statuses/657c0ae43f37327fe64a7acf996be23742ecdaae"}}}}
{"actor":{"display_login":"davidbenjamin"}}