{"action":"created","comment":{"url":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments/54299537","id":54299537,"diff_hunk":"@@ -0,0 +1,231 @@\n+package org.broadinstitute.hellbender.tools.spark.sv;\n+\n+import com.google.common.annotations.VisibleForTesting;\n+import htsjdk.samtools.SAMFileHeader;\n+import htsjdk.samtools.metrics.MetricsFile;\n+import htsjdk.samtools.util.IOUtil;\n+import org.apache.spark.api.java.JavaRDD;\n+import org.apache.spark.api.java.JavaSparkContext;\n+import org.broadinstitute.hellbender.cmdline.Argument;\n+import org.broadinstitute.hellbender.cmdline.CommandLineProgramProperties;\n+import org.broadinstitute.hellbender.cmdline.StandardArgumentDefinitions;\n+import org.broadinstitute.hellbender.cmdline.programgroups.StructuralVariationProgramGroup;\n+import org.broadinstitute.hellbender.engine.filters.AlignmentAgreesWithHeaderReadFilter;\n+import org.broadinstitute.hellbender.engine.filters.ReadFilter;\n+import org.broadinstitute.hellbender.engine.spark.GATKSparkTool;\n+import org.broadinstitute.hellbender.metrics.MetricsUtils;\n+import org.broadinstitute.hellbender.tools.picard.analysis.CollectInsertSizeMetrics;\n+import org.broadinstitute.hellbender.tools.picard.analysis.InsertSizeMetrics;\n+import org.broadinstitute.hellbender.utils.R.RScriptExecutor;\n+import org.broadinstitute.hellbender.utils.io.Resource;\n+import org.broadinstitute.hellbender.utils.read.GATKRead;\n+\n+import java.io.File;\n+\n+@CommandLineProgramProperties(\n+        summary        = \"Program to collect insert size distribution information in SAM/BAM file(s)\",\n+        oneLineSummary = \"Collect Insert Size Distribution on Spark\",\n+        programGroup   = StructuralVariationProgramGroup.class)\n+public final class CollectInsertSizeMetricsSpark extends GATKSparkTool {\n+    private static final long serialVersionUID = 1L;\n+\n+    @Argument(doc = \"A local path to file to write insert size metrics to, with extension.\",\n+              shortName = StandardArgumentDefinitions.OUTPUT_SHORT_NAME,\n+              fullName = StandardArgumentDefinitions.OUTPUT_LONG_NAME,\n+              optional = true)\n+    public String OUTPUT = null;\n+\n+    @Argument(doc = \"A local path to PDF file where histogram plot will be saved in.\",\n+            shortName = \"HIST\",\n+            fullName = \"HistogramPlotPDF\",\n+            optional = true)\n+    public String HISTOGRAM_PLOT_FILE = null;\n+\n+    @Argument(doc = \"Generate mean, sd and plots by trimming the data down to MEDIAN + DEVIATIONS_TOL*MEDIAN_ABSOLUTE_DEVIATION. \" +\n+                    \"This is done because insert size data typically includes enough anomalous values from chimeras and other \" +\n+                    \"artifacts to make the mean and sd grossly misleading regarding the real distribution.\",\n+              shortName = \"TOL\",\n+              fullName = \"HistogramPlotDeviationsTolerance.\",\n+              optional = true)\n+    public double DEVIATIONS_TOL = 10.0;\n+\n+    // read filtering criteria\n+    @Argument(doc = \"If set to true, use pairs of reads that are not properly oriented.\",\n+              shortName = \"nPP\",\n+              fullName = \"useNonProperlyPairedReads\",\n+              optional = true)\n+    public boolean useNonProperlyPairedReads = false;\n+\n+    @Argument(doc = \"If set to true, include unmapped reads as well.\",\n+              shortName = \"U\",\n+              fullName = \"useUnmappedReads\",\n+              optional = true)\n+    public boolean useUnmappedReads = false;\n+\n+    @Argument(doc = \"If set to true, include reads whose mate is unmapped as well.\",\n+              shortName = \"Um\",\n+              fullName = \"useMateUnmappedReads\",\n+              optional = true)\n+    public boolean useMateUnmappedReads = false;\n+\n+    @Argument(doc = \"If set to true, include duplicated reads as well.\",\n+              shortName = \"Dup\",\n+              fullName = \"useDupReads\",\n+              optional = true)\n+    public boolean useDupReads = false;\n+\n+    @Argument(doc = \"If set to true, include secondary alignments.\",\n+              shortName = \"S\",\n+              fullName = \"useSecondaryAlignments\",\n+              optional = true)\n+    public boolean useSecondaryAlignments = false;\n+\n+    @Argument(doc = \"If set to true, include supplementary alignments.\",\n+              shortName = \"SS\",\n+              fullName = \"useSupplementaryAlignments\",\n+              optional = true)\n+    public boolean useSupplementaryAlignments = false;\n+\n+    @Argument(doc = \"If set non-zero value, only include reads passing certain mapping quality threshold. \" +\n+                    \"If set to zero, reads with zero mapping quality will be included in calculating metrics.\",\n+              shortName = \"Q\",\n+              fullName = \"MQPassingThreshold\",\n+              optional = true)\n+    public int MQPassingThreshold = 0;\n+\n+//    TODO\n+//    @Argument(doc = \"If set to non-zero value, only include reads with mate passing certain mapping quality threshold.\",\n+//              shortName = \"Qm\",\n+//              fullName = \"mateMQPassingThreshold\",\n+//              optional = true)\n+//    public int mateMQPassingThreshold = 0;\n+\n+//    @Argument(doc=\"The level(s) at which to accumulate metrics. Possible values are {SAMPLE, LIBRARY, READ GROUP}. \" +\n+//                  \"Default: All reads.\",\n+//              shortName=\"LEVEL\",\n+//              fullName = StandardArgumentDefinitions.OUTPUT_LONG_NAME,\n+//              optional = false)\n+//    public Set<MetricAccumulationLevel> METRIC_ACCUMULATION_LEVEL = EnumSet.of(MetricAccumulationLevel.ALL_READS);\n+\n+    /**\n+     * Which end of a read pair to use for collecting insert size metrics.\n+     * TODO: For truncated genomic regions of putative SV breakpoints, not all reads have both ends land in the region,\n+     *       so third case is possible: will use either end when only one end is available in the region specified,\n+     *       and only first end if both are available\n+     */\n+    public enum whichEndToUse{","path":"src/main/java/org/broadinstitute/hellbender/tools/spark/sv/CollectInsertSizeMetricsSpark.java","position":116,"original_position":116,"commit_id":"1ea8a13c4e632773fdd2cfd6bf401673634f6f53","original_commit_id":"1ea8a13c4e632773fdd2cfd6bf401673634f6f53","user":{"login":"akiezun","id":1993519,"avatar_url":"https://avatars.githubusercontent.com/u/1993519?v=3","gravatar_id":"","url":"https://api.github.com/users/akiezun","html_url":"https://github.com/akiezun","followers_url":"https://api.github.com/users/akiezun/followers","following_url":"https://api.github.com/users/akiezun/following{/other_user}","gists_url":"https://api.github.com/users/akiezun/gists{/gist_id}","starred_url":"https://api.github.com/users/akiezun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akiezun/subscriptions","organizations_url":"https://api.github.com/users/akiezun/orgs","repos_url":"https://api.github.com/users/akiezun/repos","events_url":"https://api.github.com/users/akiezun/events{/privacy}","received_events_url":"https://api.github.com/users/akiezun/received_events","type":"User","site_admin":false},"body":"according to java style guide https://google.github.io/styleguide/javaguide.html#s4.8.1-enum-classes enum classes should be named `LikeThis` and the constants (enum objects) should be named `LIKE_THIS`","created_at":"2016-02-26T20:45:45Z","updated_at":"2016-02-26T20:45:45Z","html_url":"https://github.com/broadinstitute/gatk/pull/1529#discussion_r54299537","pull_request_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/1529","_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments/54299537"},"html":{"href":"https://github.com/broadinstitute/gatk/pull/1529#discussion_r54299537"},"pull_request":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/1529"}}},"pull_request":{"url":"https://api.github.com/repos/broadinstitute/gatk/pulls/1529","id":60871843,"html_url":"https://github.com/broadinstitute/gatk/pull/1529","diff_url":"https://github.com/broadinstitute/gatk/pull/1529.diff","patch_url":"https://github.com/broadinstitute/gatk/pull/1529.patch","issue_url":"https://api.github.com/repos/broadinstitute/gatk/issues/1529","number":1529,"state":"open","locked":false,"title":"CollectInsertSizeMetricsSpark addressed comments from previous review","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":"Hi Adam,\r\n\r\nI've reformatted the code and fixed some issues you raised in the first review.\r\nSpecifically:\r\n1. Default values for tool's boolean arguments are changed to false.\r\n2. Created an (ugly) SV program group.\r\n3. Uses Apache library to calculate statistics.\r\n\r\nSomethings are still to be changed:\r\n1. A lot of todo's.\r\n2. Histogram plot is created by Picard's R script, which was copied to SV.\r\n\r\nOf particular concern is that Picard's collection of the insert size distribution is potentially biased and has edge case bugs, see issue #1519. So I've used the following R script (can't attach on github) for collecting stats on the test bam file.\r\n\r\n    # Serves to collect basic metrics on insert sizes of test bam file and use for \r\n    # unit testing assertions.\r\n    testBamFile <- \"insert_size_metrics_test.bam\"\r\n\r\n    library(Rsamtools)\r\n    # take only first end of read pairs\r\n    filter <- ScanBamParam(what=scanBamWhat(),flag=scanBamFlag(isFirstMateRead=T))\r\n    dd <- scanBam(testBamFile, param = filter)\r\n    dd <- dd[[1]]\r\n    sizes <- abs(dd$isize[!is.na(dd$isize)])\r\n    sizes <- sort(sizes)\r\n\r\n    metrics <- list()\r\n    metrics[[\"count\"]] <- length(sizes)\r\n    metrics[[\"median\"]] <- median(sizes)\r\n    metrics[[\"mean\"]] <- mean(sizes)\r\n    metrics[[\"min\"]] <- min(sizes)\r\n    metrics[[\"max\"]] <- max(sizes)\r\n    metrics[[\"MAD\"]] <- mad(sizes, constant = 1)\r\n    metrics[[\"SD\"]] <- sd(sizes)\r\n\r\n    q <- quantile(sizes, probs = c(0.005, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45,\r\n                                   0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 0.995))\r\n    metrics[[\"99_percent_width\"]] <- as.integer(round(q[20] - q[1]))\r\n    metrics[[\"90_percent_width\"]] <- as.integer(round(q[19] - q[2]))\r\n    metrics[[\"80_percent_width\"]] <- as.integer(round(q[18] - q[3]))\r\n    metrics[[\"70_percent_width\"]] <- as.integer(round(q[17] - q[4]))\r\n    metrics[[\"60_percent_width\"]] <- as.integer(round(q[16] - q[5]))\r\n    metrics[[\"50_percent_width\"]] <- as.integer(round(q[15] - q[6]))\r\n    metrics[[\"40_percent_width\"]] <- as.integer(round(q[14] - q[7]))\r\n    metrics[[\"30_percent_width\"]] <- as.integer(round(q[13] - q[8]))\r\n    metrics[[\"20_percent_width\"]] <- as.integer(round(q[12] - q[9]))\r\n    metrics[[\"10_percent_width\"]] <- as.integer(round(q[11] - q[10]))\r\n","created_at":"2016-02-26T17:03:34Z","updated_at":"2016-02-26T20:45:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0bfe363f9dd86a0c5e78b4b73602ac7c59ae4844","assignee":{"login":"akiezun","id":1993519,"avatar_url":"https://avatars.githubusercontent.com/u/1993519?v=3","gravatar_id":"","url":"https://api.github.com/users/akiezun","html_url":"https://github.com/akiezun","followers_url":"https://api.github.com/users/akiezun/followers","following_url":"https://api.github.com/users/akiezun/following{/other_user}","gists_url":"https://api.github.com/users/akiezun/gists{/gist_id}","starred_url":"https://api.github.com/users/akiezun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akiezun/subscriptions","organizations_url":"https://api.github.com/users/akiezun/orgs","repos_url":"https://api.github.com/users/akiezun/repos","events_url":"https://api.github.com/users/akiezun/events{/privacy}","received_events_url":"https://api.github.com/users/akiezun/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/1529/commits","review_comments_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/1529/comments","review_comment_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/broadinstitute/gatk/issues/1529/comments","statuses_url":"https://api.github.com/repos/broadinstitute/gatk/statuses/1ea8a13c4e632773fdd2cfd6bf401673634f6f53","head":{"label":"broadinstitute:sh_isizeDist_sv_spark_tools","ref":"sh_isizeDist_sv_spark_tools","sha":"1ea8a13c4e632773fdd2cfd6bf401673634f6f53","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-02-10T19:27:33Z","pushed_at":"2016-02-26T20:35:24Z","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":59436,"stargazers_count":48,"watchers_count":48,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":20,"mirror_url":null,"open_issues_count":302,"forks":20,"open_issues":302,"watchers":48,"default_branch":"master"}},"base":{"label":"broadinstitute:master","ref":"master","sha":"a099acbb7d96b9468ac43deea7169b230c16b6fc","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-02-10T19:27:33Z","pushed_at":"2016-02-26T20:35:24Z","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":59436,"stargazers_count":48,"watchers_count":48,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":20,"mirror_url":null,"open_issues_count":302,"forks":20,"open_issues":302,"watchers":48,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/1529"},"html":{"href":"https://github.com/broadinstitute/gatk/pull/1529"},"issue":{"href":"https://api.github.com/repos/broadinstitute/gatk/issues/1529"},"comments":{"href":"https://api.github.com/repos/broadinstitute/gatk/issues/1529/comments"},"review_comments":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/1529/comments"},"review_comment":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/1529/commits"},"statuses":{"href":"https://api.github.com/repos/broadinstitute/gatk/statuses/1ea8a13c4e632773fdd2cfd6bf401673634f6f53"}}}}