{"action":"created","comment":{"url":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments/67017717","id":67017717,"diff_hunk":"@@ -0,0 +1,251 @@\n+package org.broadinstitute.hellbender.cmdline.argumentcollections;\n+\n+import htsjdk.samtools.SAMFileHeader;\n+import org.apache.logging.log4j.LogManager;\n+import org.apache.logging.log4j.Logger;\n+import org.broadinstitute.hellbender.cmdline.*;\n+import org.broadinstitute.hellbender.engine.filters.*;\n+import org.broadinstitute.hellbender.exceptions.UserException;\n+import org.broadinstitute.hellbender.utils.Utils;\n+\n+import java.io.Serializable;\n+import java.util.List;\n+import java.util.ArrayList;\n+import java.util.function.BiFunction;\n+import java.util.function.Supplier;\n+import java.util.stream.Collectors;\n+\n+/**\n+ * {@link org.broadinstitute.hellbender.cmdline.ArgumentCollection} for allowing read filters to\n+ * be enabled/disabled on the command line.\n+ */\n+public class ReadFilterArgumentCollection implements ArgumentCollectionDefinition {\n+    private static final Logger logger = LogManager.getLogger(ReadFilterArgumentCollection.class);\n+    private static final long serialVersionUID = 1L;\n+\n+    /**\n+     * Enum of read filters that can be enabled/disabled from the command line\n+     */\n+    public enum CommandLineReadFilter implements Serializable {\n+        /**\n+         * No-arg filters: these filters have no arguments and one static instance,\n+         * so the supplier function just returns the static instance and ignores\n+         * the hdr and args arguments\n+         */\n+        ALLOW_ALL                   ((hdr, args) -> ReadFilterLibrary.ALLOW_ALL_READS),\n+        CIGAR_IS_SUPPORTED          ((hdr, args) -> ReadFilterLibrary.CIGAR_IS_SUPPORTED),\n+        GOOD_CIGAR                  ((hdr, args) -> ReadFilterLibrary.GOOD_CIGAR),\n+        HAS_READ_GROUP              ((hdr, args) -> ReadFilterLibrary.HAS_READ_GROUP),\n+        HAS_MATCHING_BASES_AND_QUALS((hdr, args) -> ReadFilterLibrary.HAS_MATCHING_BASES_AND_QUALS),\n+        MAPPED                      ((hdr, args) -> ReadFilterLibrary.MAPPED),\n+        MAPPING_QUALITY_AVAILABLE   ((hdr, args) -> ReadFilterLibrary.MAPPING_QUALITY_AVAILABLE),\n+        MAPPING_QUALITY_NOT_ZERO    ((hdr, args) -> ReadFilterLibrary.MAPPING_QUALITY_NOT_ZERO),\n+        MATE_ON_SAME_CONTIG_OR_NO_MAPPED_MATE((hdr, args) -> ReadFilterLibrary.MATE_ON_SAME_CONTIG_OR_NO_MAPPED_MATE),\n+        MATE_DIFFERENT_STRAND       ((hdr, args) -> ReadFilterLibrary.MATE_DIFFERENT_STRAND),\n+        NOT_DUPLICATE               ((hdr, args) -> ReadFilterLibrary.NOT_DUPLICATE),\n+        PRIMARY_ALIGNMENT           ((hdr, args) -> ReadFilterLibrary.PRIMARY_ALIGNMENT),\n+        PASSES_VENDOR_QUALITY_CHECK ((hdr, args) -> ReadFilterLibrary.PASSES_VENDOR_QUALITY_CHECK),\n+        READLENGTH_EQUALS_CIGARLENGTH ((hdr, args) -> ReadFilterLibrary.READLENGTH_EQUALS_CIGARLENGTH),\n+        SEQ_IS_STORED               ((hdr, args) -> ReadFilterLibrary.SEQ_IS_STORED),\n+        VALID_ALIGNMENT_START       ((hdr, args) -> ReadFilterLibrary.VALID_ALIGNMENT_START),\n+        VALID_ALIGNMENT_END         ((hdr, args) -> ReadFilterLibrary.VALID_ALIGNMENT_END),\n+\n+        /**\n+         * Read filters with user-defined arguments. The supplier function validates the\n+         * user provided values and returns the already-populated filter embedded in the\n+         * argument collection.\n+         *\n+         * For read filters with user-defined arguments that also require a SAMFileHeader,\n+         * the supplier function creates a new instance of the read filter using the\n+         * given header, populating the other args from the instance embedded in\n+         * the read filter argument collection; updates the embedded filter with the\n+         * new one and returns it.\n+         */\n+        ALIGNMENT_AGREES_WITH_HEADER((hdr, args) -> new AlignmentAgreesWithHeaderReadFilter(hdr)),\n+        FRAGMENT_LENGTH((hdr, args) -> {\n+            validateArgs(CommandLineReadFilter.valueOf(\"FRAGMENT_LENGTH\"), args.fragmentLengthFilter::validate);\n+            return args.fragmentLengthFilter;\n+        }),\n+        LIBRARY((hdr, args) -> {\n+            validateArgs(CommandLineReadFilter.valueOf(\"LIBRARY\"), args.libraryFilter::validate);\n+            LibraryReadFilter lrf = new LibraryReadFilter(hdr);\n+            lrf.libraryToKeep = args.libraryFilter.libraryToKeep;\n+            // update the actual argument collection filter just in case...\n+            args.libraryFilter = lrf;\n+            return lrf;\n+        }),\n+        MAPPING_QUALITY((hdr, args) -> {\n+            validateArgs(CommandLineReadFilter.valueOf(\"MAPPING_QUALITY\"), args.mappingQualityFilter::validate);\n+            MappingQualityReadFilter mqf = new MappingQualityReadFilter(args.mappingQualityFilter.minMappingQualityScore);\n+            // update the actual argument collection filter just in case...\n+            args.mappingQualityFilter = mqf;\n+            return mqf;\n+        }),\n+        PLATFORM((hdr, args) -> {\n+            validateArgs(CommandLineReadFilter.valueOf(\"PLATFORM\"), args.platformFilter::validate);\n+            PlatformReadFilter pf = new PlatformReadFilter(hdr);\n+            pf.PLFilterNames = args.platformFilter.PLFilterNames;\n+            // update the actual argument collection filter just in case...\n+            args.platformFilter = pf;\n+            return pf;\n+        }),\n+        PLATFORM_UNIT((hdr, args) -> {\n+            validateArgs(CommandLineReadFilter.valueOf(\"PLATFORM_UNIT\"), args.platformUnitFilter::validate);\n+            PlatformUnitReadFilter pfuf = new PlatformUnitReadFilter(hdr);\n+            pfuf.blackListedLanes = args.platformUnitFilter.blackListedLanes;\n+            // update the actual argument collection filter just in case...\n+            args.platformUnitFilter = pfuf;\n+            return pfuf;\n+        }),\n+        READ_GROUP((hdr, args) -> {\n+            validateArgs(CommandLineReadFilter.valueOf(\"READ_GROUP\"), args.readGroupFilter::validate);\n+            return args.readGroupFilter;\n+        }),\n+        READ_GROUP_BLACK_LISTED((hdr, args) -> {\n+            validateArgs(CommandLineReadFilter.valueOf(\"READ_GROUP_BLACK_LISTED\"), args.readGroupBlackListFilter::validate);\n+            ReadGroupBlackListReadFilter rgblf = new ReadGroupBlackListReadFilter(\n+                    args.readGroupBlackListFilter.blackList, hdr);\n+            // update the actual argument collection filter just in case...\n+            args.readGroupBlackListFilter = rgblf;\n+            return rgblf;\n+        }),\n+        READ_NAME((hdr, args) -> {\n+            validateArgs(CommandLineReadFilter.valueOf(\"READ_NAME\"), args.readNameFilter::validate);\n+            return args.readNameFilter;\n+        }),\n+        READ_LENGTH((hdr, args) -> {\n+            validateArgs(CommandLineReadFilter.valueOf(\"READ_LENGTH\"), args.readLengthFilter::validate);\n+            return args.readLengthFilter;\n+        }),\n+        READ_STRAND((hdr, args) -> { return args.readStrandFilter; }),\n+        SAMPLE((hdr, args) -> {\n+            validateArgs(CommandLineReadFilter.valueOf(\"SAMPLE\"), args.sampleFilter::validate);\n+            SampleReadFilter sf = new SampleReadFilter(hdr);\n+            sf.samplesToKeep = args.sampleFilter.samplesToKeep;\n+            // update the actual argument collection filter just in case...\n+            args.sampleFilter = sf;\n+            return sf;\n+        }),\n+        WELLFORMED((hdr, args) -> new WellformedReadFilter(hdr));\n+\n+        /**\n+         * Each filter in the enum has an accompanying filter supplier function that accepts\n+         * a ReadFilterArgumentCollection object, extracts the filter's required arguments\n+         * from the argument collection, validates the arguments, and returns the initialized\n+         * read filter.\n+         */\n+        private BiFunction<SAMFileHeader, ReadFilterArgumentCollection, ReadFilter> filterSupplier = null;\n+        CommandLineReadFilter(final BiFunction<SAMFileHeader, ReadFilterArgumentCollection,ReadFilter> filterSupplier) {\n+            this.filterSupplier = filterSupplier;\n+        }\n+\n+        /**\n+         * Execute the filter supplier and return the initialized filter\n+         *\n+         */\n+        public ReadFilter getFilterInstance(\n+                final SAMFileHeader samHeader,\n+                final ReadFilterArgumentCollection readFilterCollection)\n+        {\n+            return filterSupplier.apply(samHeader, readFilterCollection);\n+        };\n+\n+        public static boolean validateArgs(\n+                final CommandLineReadFilter filter,\n+                final Supplier<String> validator)\n+        {\n+            String errorMessage = validator.get();\n+            if (null != errorMessage) {\n+                throw new UserException.CommandLineException(\"The \" + filter.name() + \" read filter \" + errorMessage);\n+            }\n+            return true;\n+        }\n+    }\n+\n+    @Argument(fullName = StandardArgumentDefinitions.READ_FILTER_LONG_NAME,\n+            shortName = StandardArgumentDefinitions.READ_FILTER_SHORT_NAME,\n+            doc = \"Filters to apply to reads before analysis\",\n+            common = true,\n+            optional = true)\n+    public List<CommandLineReadFilter> enabledCommandLineFilters = new ArrayList<>();","path":"src/main/java/org/broadinstitute/hellbender/cmdline/argumentcollections/ReadFilterArgumentCollection.java","position":170,"original_position":170,"commit_id":"a8d5c11a1acfdfd272f8475d87735c54e6751bd3","original_commit_id":"a8d5c11a1acfdfd272f8475d87735c54e6751bd3","user":{"login":"lbergelson","id":4700332,"avatar_url":"https://avatars.githubusercontent.com/u/4700332?v=3","gravatar_id":"","url":"https://api.github.com/users/lbergelson","html_url":"https://github.com/lbergelson","followers_url":"https://api.github.com/users/lbergelson/followers","following_url":"https://api.github.com/users/lbergelson/following{/other_user}","gists_url":"https://api.github.com/users/lbergelson/gists{/gist_id}","starred_url":"https://api.github.com/users/lbergelson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lbergelson/subscriptions","organizations_url":"https://api.github.com/users/lbergelson/orgs","repos_url":"https://api.github.com/users/lbergelson/repos","events_url":"https://api.github.com/users/lbergelson/events{/privacy}","received_events_url":"https://api.github.com/users/lbergelson/received_events","type":"User","site_admin":false},"body":"How do these interact?  If I enable and disable a filter what happens? Would it be simpler to have 2 arguments, `--readFilter` and `--disableDefaultReadFilters`.  Anything specified in readFilter would be added to the default filters unless `disableDefaultReadFilters` was used.  It would be unambiguous behavior at the expense of having to specify most of the read filters explicitly if you wanted to disable just 1 of them.","created_at":"2016-06-14T17:32:14Z","updated_at":"2016-06-14T17:32:14Z","html_url":"https://github.com/broadinstitute/gatk/pull/1900#discussion_r67017717","pull_request_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/1900","_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments/67017717"},"html":{"href":"https://github.com/broadinstitute/gatk/pull/1900#discussion_r67017717"},"pull_request":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/1900"}}},"pull_request":{"url":"https://api.github.com/repos/broadinstitute/gatk/pulls/1900","id":73125457,"html_url":"https://github.com/broadinstitute/gatk/pull/1900","diff_url":"https://github.com/broadinstitute/gatk/pull/1900.diff","patch_url":"https://github.com/broadinstitute/gatk/pull/1900.patch","issue_url":"https://api.github.com/repos/broadinstitute/gatk/issues/1900","number":1900,"state":"open","locked":false,"title":"Command line read filters for walkers and Spark tools.","user":{"login":"cmnbroad","id":10062863,"avatar_url":"https://avatars.githubusercontent.com/u/10062863?v=3","gravatar_id":"","url":"https://api.github.com/users/cmnbroad","html_url":"https://github.com/cmnbroad","followers_url":"https://api.github.com/users/cmnbroad/followers","following_url":"https://api.github.com/users/cmnbroad/following{/other_user}","gists_url":"https://api.github.com/users/cmnbroad/gists{/gist_id}","starred_url":"https://api.github.com/users/cmnbroad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmnbroad/subscriptions","organizations_url":"https://api.github.com/users/cmnbroad/orgs","repos_url":"https://api.github.com/users/cmnbroad/repos","events_url":"https://api.github.com/users/cmnbroad/events{/privacy}","received_events_url":"https://api.github.com/users/cmnbroad/received_events","type":"User","site_admin":false},"body":"Fixes https://github.com/broadinstitute/gatk/issues/589 (Walkers and Spark tools only, not integrated with Picard tools).","created_at":"2016-06-08T21:41:41Z","updated_at":"2016-06-14T17:32:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"bd1e80318f9bb0b7e2f58e094e190c77cef53c88","assignee":{"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},"milestone":null,"commits_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/1900/commits","review_comments_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/1900/comments","review_comment_url":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/broadinstitute/gatk/issues/1900/comments","statuses_url":"https://api.github.com/repos/broadinstitute/gatk/statuses/a8d5c11a1acfdfd272f8475d87735c54e6751bd3","head":{"label":"broadinstitute:cn_read_filter_args","ref":"cn_read_filter_args","sha":"a8d5c11a1acfdfd272f8475d87735c54e6751bd3","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-05-25T16:03:17Z","pushed_at":"2016-06-14T15:39:10Z","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":113141,"stargazers_count":71,"watchers_count":71,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":28,"mirror_url":null,"open_issues_count":376,"forks":28,"open_issues":376,"watchers":71,"default_branch":"master"}},"base":{"label":"broadinstitute:master","ref":"master","sha":"0e8fa8b1a2a4fbfa158745f793391a6597670304","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-05-25T16:03:17Z","pushed_at":"2016-06-14T15:39:10Z","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":113141,"stargazers_count":71,"watchers_count":71,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":28,"mirror_url":null,"open_issues_count":376,"forks":28,"open_issues":376,"watchers":71,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/1900"},"html":{"href":"https://github.com/broadinstitute/gatk/pull/1900"},"issue":{"href":"https://api.github.com/repos/broadinstitute/gatk/issues/1900"},"comments":{"href":"https://api.github.com/repos/broadinstitute/gatk/issues/1900/comments"},"review_comments":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/1900/comments"},"review_comment":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/broadinstitute/gatk/pulls/1900/commits"},"statuses":{"href":"https://api.github.com/repos/broadinstitute/gatk/statuses/a8d5c11a1acfdfd272f8475d87735c54e6751bd3"}}}}
{"actor":{"display_login":"lbergelson"}}