{"action":"created","comment":{"url":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments/96507972","pull_request_review_id":17091451,"id":96507972,"diff_hunk":"@@ -0,0 +1,476 @@\n+package org.broadinstitute.hellbender.tools.spark.sv;\n+\n+import com.esotericsoftware.kryo.DefaultSerializer;\n+import com.esotericsoftware.kryo.Kryo;\n+import com.esotericsoftware.kryo.io.Input;\n+import com.esotericsoftware.kryo.io.Output;\n+import com.google.common.annotations.VisibleForTesting;\n+import htsjdk.samtools.util.SequenceUtil;\n+import org.broadinstitute.hellbender.utils.SimpleInterval;\n+import scala.Tuple2;\n+\n+import java.io.IOException;\n+import java.util.Arrays;\n+import java.util.Objects;\n+\n+import static org.broadinstitute.hellbender.tools.spark.sv.BreakpointPair.EvidenceFlankSide.*;\n+\n+/**\n+ * This class represents inferred a pair of breakpoints of a simple SV event\n+ * (a simple rearrangement between two genomic locations)\n+ * that is suggested by the input {@link ChimericAlignment},\n+ * and complications in pinning down the breakpoints's location to exact base pair resolution.\n+ */\n+@DefaultSerializer(BreakpointPair.Serializer.class)\n+class BreakpointPair {\n+\n+    static final String EMPTY_STRING = \"\";\n+    private static final int MAX_LOWER_CN = 10; // in case of CNV events involving tandem duplications, the maximum value of the lower copy number the algorithm will try\n+\n+    final SimpleInterval leftJustifiedLeftBreakpoint;\n+    final SimpleInterval leftJustifiedRightBreakpoint;\n+\n+    final EvidenceFlankSide evidenceFlankSide;\n+    final BreakpointComplication complication;\n+\n+\n+    /**\n+     * Represents the strand of evidence that was used in computing this breakpoint pair.\n+     */\n+    enum EvidenceFlankSide {\n+        BOTH, THREE_PRIME, FIVE_PRIME\n+    }\n+\n+    /**\n+     * A helper struct for annotation breakpoints represented by this BreakpointPair.\n+     * To be updated as more types of complications can be mentally processed and\n+     * handled by {@link #resolveComplications(ChimericAlignment)}.\n+     */\n+    @DefaultSerializer(BreakpointComplication.Serializer.class)\n+    static final class BreakpointComplication {\n+        final String homologyForwardStrandRep;\n+        final String insertedSequenceForwardStrandRep;\n+        final String dupSeqForwardStrandRep;\n+        final int refDup;\n+        final int contigDup;\n+\n+        BreakpointComplication(final String homologyForwardStrandRep,\n+                               final String insertedSequenceForwardStrandRep,\n+                               final String dupSeqForwardStrandRep,\n+                               final int refDup,\n+                               final int contigDup) {\n+            this.homologyForwardStrandRep = homologyForwardStrandRep;\n+            this.insertedSequenceForwardStrandRep = insertedSequenceForwardStrandRep;\n+            this.dupSeqForwardStrandRep = dupSeqForwardStrandRep;\n+            this.refDup = refDup;\n+            this.contigDup = contigDup;\n+        }\n+\n+        protected BreakpointComplication(final Kryo kryo, final Input input) {\n+            homologyForwardStrandRep = input.readString();\n+            insertedSequenceForwardStrandRep = input.readString();\n+            dupSeqForwardStrandRep = input.readString();\n+            refDup = input.readInt();\n+            contigDup = input.readInt();\n+        }\n+\n+        @Override\n+        public String toString() {\n+            return String.format(\"homology: %s\\tinserted sequence: %s\\ttandem duplication sequence: %s\\tref cn: %d\\tctg cn: %d\",\n+                    homologyForwardStrandRep, insertedSequenceForwardStrandRep, dupSeqForwardStrandRep, refDup, contigDup);\n+        }\n+\n+        protected void serialize(final Kryo kryo, final Output output) {\n+            output.writeString(homologyForwardStrandRep);\n+            output.writeString(insertedSequenceForwardStrandRep);\n+            output.writeString(dupSeqForwardStrandRep);\n+            output.writeInt(refDup);\n+            output.writeInt(contigDup);\n+        }\n+\n+        @Override\n+        public boolean equals(Object o) {\n+            if (this == o) return true;\n+            if (o == null || getClass() != o.getClass()) return false;\n+\n+            BreakpointComplication that = (BreakpointComplication) o;\n+\n+            if (refDup != that.refDup) return false;\n+            if (contigDup != that.contigDup) return false;\n+            if (!homologyForwardStrandRep.equals(that.homologyForwardStrandRep)) return false;\n+            if (!insertedSequenceForwardStrandRep.equals(that.insertedSequenceForwardStrandRep)) return false;\n+            return dupSeqForwardStrandRep.equals(that.dupSeqForwardStrandRep);\n+        }\n+\n+        @Override\n+        public int hashCode() {\n+            int result = homologyForwardStrandRep.hashCode();\n+            result = 31 * result + insertedSequenceForwardStrandRep.hashCode();\n+            result = 31 * result + dupSeqForwardStrandRep.hashCode();\n+            result = 31 * result + refDup;\n+            result = 31 * result + contigDup;\n+            return result;\n+        }\n+\n+        public static final class Serializer extends com.esotericsoftware.kryo.Serializer<BreakpointComplication> {\n+            @Override\n+            public void write(final Kryo kryo, final Output output, final BreakpointComplication breakpointComplication ) {\n+                breakpointComplication.serialize(kryo, output);\n+            }\n+\n+            @Override\n+            public BreakpointComplication read(final Kryo kryo, final Input input, final Class<BreakpointComplication> klass ) {\n+                return new BreakpointComplication(kryo, input);\n+            }\n+        }\n+    }\n+\n+\n+\n+\n+\n+\n+    BreakpointPair(final ChimericAlignment chimericAlignment)\n+            throws IOException {\n+\n+        // first get evidenceFlankSide, then get complications, finally use complications to justify breakpoints\n+        this.evidenceFlankSide = determineEvidenceFlankSide(chimericAlignment);\n+\n+        this.complication = resolveComplications(chimericAlignment);\n+\n+        final Tuple2<SimpleInterval, SimpleInterval> leftJustifiedBreakpoints = leftJustifyBreakpoints(chimericAlignment, this.complication);\n+        this.leftJustifiedLeftBreakpoint = leftJustifiedBreakpoints._1();\n+        this.leftJustifiedRightBreakpoint = leftJustifiedBreakpoints._2();\n+    }\n+\n+    // TODO: 12/12/16 again, does not work for translocation\n+    @VisibleForTesting\n+    static EvidenceFlankSide determineEvidenceFlankSide(final ChimericAlignment chimericAlignment) {\n+        if (chimericAlignment.regionWithLowerCoordOnContig.forwardStrand == chimericAlignment.regionWithHigherCoordOnContig.forwardStrand) {\n+            return BOTH;\n+        } else {\n+            return chimericAlignment.regionWithLowerCoordOnContig.forwardStrand ? FIVE_PRIME : THREE_PRIME;\n+        }\n+    }\n+\n+    // TODO: 12/12/16 the most complicated tandem duplication case is not exactly reproducible (e.g. '+' and '-' strand may give slightly different results by this treatment)\n+    /**\n+     * Given an ChimericAlignment representing two reference intervals rearranged as two intervals on the locally-assembled contig,\n+     * identify potential complications such as homologyForwardStrandRep and duplication on the reference or the contig.","path":"src/main/java/org/broadinstitute/hellbender/tools/spark/sv/BreakpointPair.java","position":159,"original_position":159,"commit_id":"05ea7d9c11774baee55e8c771ae21c7a3930e211","original_commit_id":"05ea7d9c11774baee55e8c771ae21c7a3930e211","user":{"login":"SHuang-Broad","id":16310888,"avatar_url":"https://avatars.githubusercontent.com/u/16310888?v=3","gravatar_id":"","url":"https://api.github.com/users/SHuang-Broad","html_url":"https://github.com/SHuang-Broad","followers_url":"https://api.github.com/users/SHuang-Broad/followers","following_url":"https://api.github.com/users/SHuang-Broad/following{/other_user}","gists_url":"https://api.github.com/users/SHuang-Broad/gists{/gist_id}","starred_url":"https://api.github.com/users/SHuang-Broad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SHuang-Broad/subscriptions","organizations_url":"https://api.github.com/users/SHuang-Broad/orgs","repos_url":"https://api.github.com/users/SHuang-Broad/repos","events_url":"https://api.github.com/users/SHuang-Broad/events{/privacy}","received_events_url":"https://api.github.com/users/SHuang-Broad/received_events","type":"User","site_admin":false},"body":"Done","created_at":"2017-01-17T20:53:25Z","updated_at":"2017-01-17T20:53:25Z","html_url":"https://github.com/broadinstitute/gatk/pull/2320#discussion_r96507972","pull_request_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/2320","_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments/96507972"},"html":{"href":"https://github.com/broadinstitute/gatk/pull/2320#discussion_r96507972"},"pull_request":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/2320"}}},"pull_request":{"url":"https://api.github.com/repos/broadinstitute/gatk/pulls/2320","id":98492409,"html_url":"https://github.com/broadinstitute/gatk/pull/2320","diff_url":"https://github.com/broadinstitute/gatk/pull/2320.diff","patch_url":"https://github.com/broadinstitute/gatk/pull/2320.patch","issue_url":"https://api.github.com/repos/broadinstitute/gatk/issues/2320","number":2320,"state":"open","locked":false,"title":"Initial implementation of Insertion/Deletion caller in SV pipeline.","user":{"login":"SHuang-Broad","id":16310888,"avatar_url":"https://avatars.githubusercontent.com/u/16310888?v=3","gravatar_id":"","url":"https://api.github.com/users/SHuang-Broad","html_url":"https://github.com/SHuang-Broad","followers_url":"https://api.github.com/users/SHuang-Broad/followers","following_url":"https://api.github.com/users/SHuang-Broad/following{/other_user}","gists_url":"https://api.github.com/users/SHuang-Broad/gists{/gist_id}","starred_url":"https://api.github.com/users/SHuang-Broad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SHuang-Broad/subscriptions","organizations_url":"https://api.github.com/users/SHuang-Broad/orgs","repos_url":"https://api.github.com/users/SHuang-Broad/repos","events_url":"https://api.github.com/users/SHuang-Broad/events{/privacy}","received_events_url":"https://api.github.com/users/SHuang-Broad/received_events","type":"User","site_admin":false},"body":"What this PR does: \r\n* implemented alignment breaker based on CIGAR gaps; \r\n* calls insertion, deletion and naive tandem repeat annotation in addition to inversion; \r\n* some further refactoring of code related to sv caller; \r\n* tests updated accordingly\r\n\r\nThe PR is into another branch but NOT `master` because it is based on a continuation effort, which is already reviewed in #2258 , therefore has all the changes already made there (a little Spark 2 phobia caused this derail; once changes are reviewed, will see if tool is runnable and \"pipelineable\" with previous stages in the SV pipeline under the new Spark version).\r\n\r\n@cwhelan please review.\r\nThanks!","created_at":"2016-12-18T23:41:54Z","updated_at":"2017-01-17T20:53:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"39c12d2952866ae4ed9e696cf1a582f923143a54","assignee":{"login":"cwhelan","id":709477,"avatar_url":"https://avatars.githubusercontent.com/u/709477?v=3","gravatar_id":"","url":"https://api.github.com/users/cwhelan","html_url":"https://github.com/cwhelan","followers_url":"https://api.github.com/users/cwhelan/followers","following_url":"https://api.github.com/users/cwhelan/following{/other_user}","gists_url":"https://api.github.com/users/cwhelan/gists{/gist_id}","starred_url":"https://api.github.com/users/cwhelan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cwhelan/subscriptions","organizations_url":"https://api.github.com/users/cwhelan/orgs","repos_url":"https://api.github.com/users/cwhelan/repos","events_url":"https://api.github.com/users/cwhelan/events{/privacy}","received_events_url":"https://api.github.com/users/cwhelan/received_events","type":"User","site_admin":false},"assignees":[{"login":"cwhelan","id":709477,"avatar_url":"https://avatars.githubusercontent.com/u/709477?v=3","gravatar_id":"","url":"https://api.github.com/users/cwhelan","html_url":"https://github.com/cwhelan","followers_url":"https://api.github.com/users/cwhelan/followers","following_url":"https://api.github.com/users/cwhelan/following{/other_user}","gists_url":"https://api.github.com/users/cwhelan/gists{/gist_id}","starred_url":"https://api.github.com/users/cwhelan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cwhelan/subscriptions","organizations_url":"https://api.github.com/users/cwhelan/orgs","repos_url":"https://api.github.com/users/cwhelan/repos","events_url":"https://api.github.com/users/cwhelan/events{/privacy}","received_events_url":"https://api.github.com/users/cwhelan/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/2320/commits","review_comments_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/2320/comments","review_comment_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/broadinstitute/gatk/issues/2320/comments","statuses_url":"https://api.github.com/repos/broadinstitute/gatk/statuses/05ea7d9c11774baee55e8c771ae21c7a3930e211","head":{"label":"broadinstitute:sh_insdel_call_exp","ref":"sh_insdel_call_exp","sha":"05ea7d9c11774baee55e8c771ae21c7a3930e211","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":"2017-01-16T15:50:29Z","pushed_at":"2017-01-17T20:00:13Z","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":77092,"stargazers_count":97,"watchers_count":97,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":40,"mirror_url":null,"open_issues_count":458,"forks":40,"open_issues":458,"watchers":97,"default_branch":"master"}},"base":{"label":"broadinstitute:sh_rewind_refactor","ref":"sh_rewind_refactor","sha":"cb48a6e4d524355c8ed312a622cbfae69f8ce26b","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":"2017-01-16T15:50:29Z","pushed_at":"2017-01-17T20:00:13Z","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":77092,"stargazers_count":97,"watchers_count":97,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":40,"mirror_url":null,"open_issues_count":458,"forks":40,"open_issues":458,"watchers":97,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/2320"},"html":{"href":"https://github.com/broadinstitute/gatk/pull/2320"},"issue":{"href":"https://api.github.com/repos/broadinstitute/gatk/issues/2320"},"comments":{"href":"https://api.github.com/repos/broadinstitute/gatk/issues/2320/comments"},"review_comments":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/2320/comments"},"review_comment":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/2320/commits"},"statuses":{"href":"https://api.github.com/repos/broadinstitute/gatk/statuses/05ea7d9c11774baee55e8c771ae21c7a3930e211"}}}}
{"actor":{"display_login":"SHuang-Broad"}}