{"action":"created","comment":{"url":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/comments/25990616","id":25990616,"diff_hunk":"@@ -0,0 +1,307 @@\n+/*\n+ * Copyright (C) 2015 Google Inc.\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n+ * in compliance with the License. You may obtain a copy of the License at\n+ *\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software distributed under the License\n+ * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\n+ * or implied. See the License for the specific language governing permissions and limitations under\n+ * the License.\n+ */\n+package com.google.cloud.genomics.dataflow.pipelines;\n+\n+import com.google.api.client.util.Strings;\n+import com.google.api.services.genomics.Genomics;\n+import com.google.api.services.genomics.model.Annotation;\n+import com.google.api.services.genomics.model.AnnotationSet;\n+import com.google.api.services.genomics.model.ListBasesResponse;\n+import com.google.api.services.genomics.model.QueryRange;\n+import com.google.api.services.genomics.model.RangePosition;\n+import com.google.api.services.genomics.model.Reference;\n+import com.google.api.services.genomics.model.SearchAnnotationsRequest;\n+import com.google.api.services.genomics.model.SearchReferencesRequest;\n+import com.google.api.services.genomics.model.Variant;\n+import com.google.api.services.genomics.model.VariantAnnotation;\n+import com.google.cloud.dataflow.sdk.Pipeline;\n+import com.google.cloud.dataflow.sdk.io.TextIO;\n+import com.google.cloud.dataflow.sdk.options.PipelineOptionsFactory;\n+import com.google.cloud.dataflow.sdk.transforms.DoFn;\n+import com.google.cloud.dataflow.sdk.transforms.GroupByKey;\n+import com.google.cloud.dataflow.sdk.transforms.ParDo;\n+import com.google.cloud.dataflow.sdk.values.KV;\n+import com.google.cloud.genomics.dataflow.utils.AnnotationUtils;\n+import com.google.cloud.genomics.dataflow.utils.AnnotationUtils.VariantEffect;\n+import com.google.cloud.genomics.dataflow.utils.DataflowWorkarounds;\n+import com.google.cloud.genomics.dataflow.utils.GenomicsDatasetOptions;\n+import com.google.cloud.genomics.dataflow.utils.GenomicsOptions;\n+import com.google.cloud.genomics.dataflow.utils.VariantUtils;\n+import com.google.cloud.genomics.utils.Contig;\n+import com.google.cloud.genomics.utils.Contig.SexChromosomeFilter;\n+import com.google.cloud.genomics.utils.GenomicsFactory;\n+import com.google.cloud.genomics.utils.Paginator;\n+import com.google.cloud.genomics.utils.Paginator.ShardBoundary;\n+import com.google.common.base.Function;\n+import com.google.common.base.Predicates;\n+import com.google.common.collect.ArrayListMultimap;\n+import com.google.common.collect.FluentIterable;\n+import com.google.common.collect.ImmutableList;\n+import com.google.common.collect.ListMultimap;\n+import com.google.common.collect.Range;\n+\n+import htsjdk.samtools.util.IntervalTree;\n+import htsjdk.samtools.util.IntervalTree.Node;\n+\n+import java.io.IOException;\n+import java.util.Iterator;\n+import java.util.List;\n+import java.util.logging.Logger;\n+\n+/**\n+ * Demonstrates a simple variant annotation program which takes\n+ * {@code VariantSet}s and {@code AnnotationSet}s as input and emits\n+ * {@code VariantAnnotation}s. This program is intended to serve as an example\n+ * of how a variant annotation program can be structured to run in parallel,\n+ * operating over Google Genomics input sources; the current output has limited\n+ * biological significance.\n+ *\n+ * Currently only annotates SNPs and uses the following two methods:\n+ * <ul>\n+ * <li>Determines the effect of the provided variants on the provided\n+ *   transcripts, if any. A result is only emitted for a subset of cases where\n+ *   the variant appears to cause a coding change in the transcript.\n+ * <li>Performs an exact match join on the provided existing variant\n+ *   annotations, if any.\n+ * </ul>\n+ */\n+public final class AnnotateVariants extends DoFn<Contig, KV<String, VariantAnnotation>> {\n+  private static final Logger LOG = Logger.getLogger(AnnotateVariants.class.getName());\n+  private static final int VARIANTS_PAGE_SIZE = 400;\n+  private static final String VARIANT_FIELDS\n+      = \"nextPageToken,variants(id,referenceName,start,end,alternateBases,referenceBases)\";\n+\n+  private final GenomicsFactory.OfflineAuth auth;\n+  private final String varsetId, refsetId;\n+  private final List<String> callSetIds, transcriptSetIds, variantAnnotationSetIds;\n+\n+  public AnnotateVariants(GenomicsFactory.OfflineAuth auth, String varsetId, String refsetId,\n+      List<String> callSetIds, List<String> transcriptSetIds,\n+      List<String> variantAnnotationSetIds) {\n+    this.auth = auth;\n+    this.varsetId = varsetId;\n+    this.refsetId = refsetId;\n+    this.callSetIds = callSetIds;\n+    this.transcriptSetIds = transcriptSetIds;\n+    this.variantAnnotationSetIds = variantAnnotationSetIds;\n+  }\n+\n+  @Override\n+  public void processElement(\n+      DoFn<Contig, KV<String, VariantAnnotation>>.ProcessContext c) throws Exception {\n+    Genomics genomics = auth.getGenomics(auth.getDefaultFactory());\n+\n+    Contig contig = c.element();\n+    IntervalTree<Annotation> transcripts = retrieveTranscripts(genomics, contig);\n+    ListMultimap<Range<Long>, Annotation> variantAnnotations =\n+        retrieveVariantAnnotations(genomics, contig);\n+    long baseOffset = transcripts.min().getStart();\n+    String refBases = retrieveReferenceBases(genomics, refsetId,\n+        contig.referenceName, baseOffset, transcripts.max().getEnd());\n+\n+    int varCount = 0;\n+    Iterable<Variant> varIter = FluentIterable\n+        .from(Paginator.Variants.create(genomics, ShardBoundary.STRICT).search(\n+            c.element().getVariantsRequest(varsetId)\n+              // TODO: Variants-only retrieval is not well support currently. For now\n+              // we parameterize by CallSet for performance.\n+              .setCallSetIds(callSetIds)\n+              .setPageSize(VARIANTS_PAGE_SIZE),\n+            VARIANT_FIELDS))\n+        .filter(VariantUtils.IS_SNP);\n+    for (Variant variant : varIter) {","path":"src/main/java/com/google/cloud/genomics/dataflow/pipelines/AnnotateVariants.java","position":123,"original_position":123,"commit_id":"67989547d44b98fc8c1e011488e1a59ed5712fc0","original_commit_id":"67989547d44b98fc8c1e011488e1a59ed5712fc0","user":{"login":"deflaux","id":1395500,"avatar_url":"https://avatars.githubusercontent.com/u/1395500?v=3","gravatar_id":"","url":"https://api.github.com/users/deflaux","html_url":"https://github.com/deflaux","followers_url":"https://api.github.com/users/deflaux/followers","following_url":"https://api.github.com/users/deflaux/following{/other_user}","gists_url":"https://api.github.com/users/deflaux/gists{/gist_id}","starred_url":"https://api.github.com/users/deflaux/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deflaux/subscriptions","organizations_url":"https://api.github.com/users/deflaux/orgs","repos_url":"https://api.github.com/users/deflaux/repos","events_url":"https://api.github.com/users/deflaux/events{/privacy}","received_events_url":"https://api.github.com/users/deflaux/received_events","type":"User","site_admin":false},"body":"To make sure I'm understanding this correctly, are these assumptions true?\r\n\r\n*  By default, this pipeline will yield an output record for every alternate allele in 1,000 Genomes within BRCA1 that is a SNP and has an effect other than synonymous.\r\n*  For 1,000 genomes, restricting to sample HG00261 has no bearing on the output of this pipeline since all samples have calls for all variants (and we are also not retrieving/looking at the genotype within the call).\r\n* If we change the job parameters to run on Platinum Genomes and a callSetId within it, we will only annotate the variants that the specified callSetId has.\r\n","created_at":"2015-03-07T01:04:25Z","updated_at":"2015-03-07T01:04:25Z","html_url":"https://github.com/googlegenomics/dataflow-java/pull/37#discussion_r25990616","pull_request_url":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/37","_links":{"self":{"href":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/comments/25990616"},"html":{"href":"https://github.com/googlegenomics/dataflow-java/pull/37#discussion_r25990616"},"pull_request":{"href":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/37"}}},"pull_request":{"url":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/37","id":30621057,"html_url":"https://github.com/googlegenomics/dataflow-java/pull/37","diff_url":"https://github.com/googlegenomics/dataflow-java/pull/37.diff","patch_url":"https://github.com/googlegenomics/dataflow-java/pull/37.patch","issue_url":"https://api.github.com/repos/googlegenomics/dataflow-java/issues/37","number":37,"state":"open","locked":false,"title":"Implement sample variant annotation dataflow pipeline","user":{"login":"calbach","id":822298,"avatar_url":"https://avatars.githubusercontent.com/u/822298?v=3","gravatar_id":"","url":"https://api.github.com/users/calbach","html_url":"https://github.com/calbach","followers_url":"https://api.github.com/users/calbach/followers","following_url":"https://api.github.com/users/calbach/following{/other_user}","gists_url":"https://api.github.com/users/calbach/gists{/gist_id}","starred_url":"https://api.github.com/users/calbach/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calbach/subscriptions","organizations_url":"https://api.github.com/users/calbach/orgs","repos_url":"https://api.github.com/users/calbach/repos","events_url":"https://api.github.com/users/calbach/events{/privacy}","received_events_url":"https://api.github.com/users/calbach/received_events","type":"User","site_admin":false},"body":"See various caveats and disclaimers in comments: this is a limited sample application.\r\n\r\nOne thing which may need revision is the output; right now it's really only human readable (at best). Open to suggestions on a better output format.","created_at":"2015-03-06T04:57:11Z","updated_at":"2015-03-07T01:04:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"56404df51ad6396cd59ea5153fb0cdaf14100141","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/37/commits","review_comments_url":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/37/comments","review_comment_url":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/comments{/number}","comments_url":"https://api.github.com/repos/googlegenomics/dataflow-java/issues/37/comments","statuses_url":"https://api.github.com/repos/googlegenomics/dataflow-java/statuses/67989547d44b98fc8c1e011488e1a59ed5712fc0","head":{"label":"googlegenomics:variant-annotation","ref":"variant-annotation","sha":"67989547d44b98fc8c1e011488e1a59ed5712fc0","user":{"login":"googlegenomics","id":7434120,"avatar_url":"https://avatars.githubusercontent.com/u/7434120?v=3","gravatar_id":"","url":"https://api.github.com/users/googlegenomics","html_url":"https://github.com/googlegenomics","followers_url":"https://api.github.com/users/googlegenomics/followers","following_url":"https://api.github.com/users/googlegenomics/following{/other_user}","gists_url":"https://api.github.com/users/googlegenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/googlegenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/googlegenomics/subscriptions","organizations_url":"https://api.github.com/users/googlegenomics/orgs","repos_url":"https://api.github.com/users/googlegenomics/repos","events_url":"https://api.github.com/users/googlegenomics/events{/privacy}","received_events_url":"https://api.github.com/users/googlegenomics/received_events","type":"Organization","site_admin":false},"repo":{"id":20532587,"name":"dataflow-java","full_name":"googlegenomics/dataflow-java","owner":{"login":"googlegenomics","id":7434120,"avatar_url":"https://avatars.githubusercontent.com/u/7434120?v=3","gravatar_id":"","url":"https://api.github.com/users/googlegenomics","html_url":"https://github.com/googlegenomics","followers_url":"https://api.github.com/users/googlegenomics/followers","following_url":"https://api.github.com/users/googlegenomics/following{/other_user}","gists_url":"https://api.github.com/users/googlegenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/googlegenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/googlegenomics/subscriptions","organizations_url":"https://api.github.com/users/googlegenomics/orgs","repos_url":"https://api.github.com/users/googlegenomics/repos","events_url":"https://api.github.com/users/googlegenomics/events{/privacy}","received_events_url":"https://api.github.com/users/googlegenomics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/googlegenomics/dataflow-java","description":"Provides several Google Cloud Dataflow pipeline examples as well as useful utility classes.","fork":false,"url":"https://api.github.com/repos/googlegenomics/dataflow-java","forks_url":"https://api.github.com/repos/googlegenomics/dataflow-java/forks","keys_url":"https://api.github.com/repos/googlegenomics/dataflow-java/keys{/key_id}","collaborators_url":"https://api.github.com/repos/googlegenomics/dataflow-java/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/googlegenomics/dataflow-java/teams","hooks_url":"https://api.github.com/repos/googlegenomics/dataflow-java/hooks","issue_events_url":"https://api.github.com/repos/googlegenomics/dataflow-java/issues/events{/number}","events_url":"https://api.github.com/repos/googlegenomics/dataflow-java/events","assignees_url":"https://api.github.com/repos/googlegenomics/dataflow-java/assignees{/user}","branches_url":"https://api.github.com/repos/googlegenomics/dataflow-java/branches{/branch}","tags_url":"https://api.github.com/repos/googlegenomics/dataflow-java/tags","blobs_url":"https://api.github.com/repos/googlegenomics/dataflow-java/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/googlegenomics/dataflow-java/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/googlegenomics/dataflow-java/git/refs{/sha}","trees_url":"https://api.github.com/repos/googlegenomics/dataflow-java/git/trees{/sha}","statuses_url":"https://api.github.com/repos/googlegenomics/dataflow-java/statuses/{sha}","languages_url":"https://api.github.com/repos/googlegenomics/dataflow-java/languages","stargazers_url":"https://api.github.com/repos/googlegenomics/dataflow-java/stargazers","contributors_url":"https://api.github.com/repos/googlegenomics/dataflow-java/contributors","subscribers_url":"https://api.github.com/repos/googlegenomics/dataflow-java/subscribers","subscription_url":"https://api.github.com/repos/googlegenomics/dataflow-java/subscription","commits_url":"https://api.github.com/repos/googlegenomics/dataflow-java/commits{/sha}","git_commits_url":"https://api.github.com/repos/googlegenomics/dataflow-java/git/commits{/sha}","comments_url":"https://api.github.com/repos/googlegenomics/dataflow-java/comments{/number}","issue_comment_url":"https://api.github.com/repos/googlegenomics/dataflow-java/issues/comments{/number}","contents_url":"https://api.github.com/repos/googlegenomics/dataflow-java/contents/{+path}","compare_url":"https://api.github.com/repos/googlegenomics/dataflow-java/compare/{base}...{head}","merges_url":"https://api.github.com/repos/googlegenomics/dataflow-java/merges","archive_url":"https://api.github.com/repos/googlegenomics/dataflow-java/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/googlegenomics/dataflow-java/downloads","issues_url":"https://api.github.com/repos/googlegenomics/dataflow-java/issues{/number}","pulls_url":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls{/number}","milestones_url":"https://api.github.com/repos/googlegenomics/dataflow-java/milestones{/number}","notifications_url":"https://api.github.com/repos/googlegenomics/dataflow-java/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/googlegenomics/dataflow-java/labels{/name}","releases_url":"https://api.github.com/repos/googlegenomics/dataflow-java/releases{/id}","created_at":"2014-06-05T16:27:31Z","updated_at":"2015-03-04T18:20:32Z","pushed_at":"2015-03-06T17:10:26Z","git_url":"git://github.com/googlegenomics/dataflow-java.git","ssh_url":"git@github.com:googlegenomics/dataflow-java.git","clone_url":"https://github.com/googlegenomics/dataflow-java.git","svn_url":"https://github.com/googlegenomics/dataflow-java","homepage":"","size":99693,"stargazers_count":5,"watchers_count":5,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":9,"forks":4,"open_issues":9,"watchers":5,"default_branch":"master"}},"base":{"label":"googlegenomics:master","ref":"master","sha":"4b57fc10a0563abea36f4569d9e3f6fc26bfb0f4","user":{"login":"googlegenomics","id":7434120,"avatar_url":"https://avatars.githubusercontent.com/u/7434120?v=3","gravatar_id":"","url":"https://api.github.com/users/googlegenomics","html_url":"https://github.com/googlegenomics","followers_url":"https://api.github.com/users/googlegenomics/followers","following_url":"https://api.github.com/users/googlegenomics/following{/other_user}","gists_url":"https://api.github.com/users/googlegenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/googlegenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/googlegenomics/subscriptions","organizations_url":"https://api.github.com/users/googlegenomics/orgs","repos_url":"https://api.github.com/users/googlegenomics/repos","events_url":"https://api.github.com/users/googlegenomics/events{/privacy}","received_events_url":"https://api.github.com/users/googlegenomics/received_events","type":"Organization","site_admin":false},"repo":{"id":20532587,"name":"dataflow-java","full_name":"googlegenomics/dataflow-java","owner":{"login":"googlegenomics","id":7434120,"avatar_url":"https://avatars.githubusercontent.com/u/7434120?v=3","gravatar_id":"","url":"https://api.github.com/users/googlegenomics","html_url":"https://github.com/googlegenomics","followers_url":"https://api.github.com/users/googlegenomics/followers","following_url":"https://api.github.com/users/googlegenomics/following{/other_user}","gists_url":"https://api.github.com/users/googlegenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/googlegenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/googlegenomics/subscriptions","organizations_url":"https://api.github.com/users/googlegenomics/orgs","repos_url":"https://api.github.com/users/googlegenomics/repos","events_url":"https://api.github.com/users/googlegenomics/events{/privacy}","received_events_url":"https://api.github.com/users/googlegenomics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/googlegenomics/dataflow-java","description":"Provides several Google Cloud Dataflow pipeline examples as well as useful utility classes.","fork":false,"url":"https://api.github.com/repos/googlegenomics/dataflow-java","forks_url":"https://api.github.com/repos/googlegenomics/dataflow-java/forks","keys_url":"https://api.github.com/repos/googlegenomics/dataflow-java/keys{/key_id}","collaborators_url":"https://api.github.com/repos/googlegenomics/dataflow-java/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/googlegenomics/dataflow-java/teams","hooks_url":"https://api.github.com/repos/googlegenomics/dataflow-java/hooks","issue_events_url":"https://api.github.com/repos/googlegenomics/dataflow-java/issues/events{/number}","events_url":"https://api.github.com/repos/googlegenomics/dataflow-java/events","assignees_url":"https://api.github.com/repos/googlegenomics/dataflow-java/assignees{/user}","branches_url":"https://api.github.com/repos/googlegenomics/dataflow-java/branches{/branch}","tags_url":"https://api.github.com/repos/googlegenomics/dataflow-java/tags","blobs_url":"https://api.github.com/repos/googlegenomics/dataflow-java/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/googlegenomics/dataflow-java/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/googlegenomics/dataflow-java/git/refs{/sha}","trees_url":"https://api.github.com/repos/googlegenomics/dataflow-java/git/trees{/sha}","statuses_url":"https://api.github.com/repos/googlegenomics/dataflow-java/statuses/{sha}","languages_url":"https://api.github.com/repos/googlegenomics/dataflow-java/languages","stargazers_url":"https://api.github.com/repos/googlegenomics/dataflow-java/stargazers","contributors_url":"https://api.github.com/repos/googlegenomics/dataflow-java/contributors","subscribers_url":"https://api.github.com/repos/googlegenomics/dataflow-java/subscribers","subscription_url":"https://api.github.com/repos/googlegenomics/dataflow-java/subscription","commits_url":"https://api.github.com/repos/googlegenomics/dataflow-java/commits{/sha}","git_commits_url":"https://api.github.com/repos/googlegenomics/dataflow-java/git/commits{/sha}","comments_url":"https://api.github.com/repos/googlegenomics/dataflow-java/comments{/number}","issue_comment_url":"https://api.github.com/repos/googlegenomics/dataflow-java/issues/comments{/number}","contents_url":"https://api.github.com/repos/googlegenomics/dataflow-java/contents/{+path}","compare_url":"https://api.github.com/repos/googlegenomics/dataflow-java/compare/{base}...{head}","merges_url":"https://api.github.com/repos/googlegenomics/dataflow-java/merges","archive_url":"https://api.github.com/repos/googlegenomics/dataflow-java/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/googlegenomics/dataflow-java/downloads","issues_url":"https://api.github.com/repos/googlegenomics/dataflow-java/issues{/number}","pulls_url":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls{/number}","milestones_url":"https://api.github.com/repos/googlegenomics/dataflow-java/milestones{/number}","notifications_url":"https://api.github.com/repos/googlegenomics/dataflow-java/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/googlegenomics/dataflow-java/labels{/name}","releases_url":"https://api.github.com/repos/googlegenomics/dataflow-java/releases{/id}","created_at":"2014-06-05T16:27:31Z","updated_at":"2015-03-04T18:20:32Z","pushed_at":"2015-03-06T17:10:26Z","git_url":"git://github.com/googlegenomics/dataflow-java.git","ssh_url":"git@github.com:googlegenomics/dataflow-java.git","clone_url":"https://github.com/googlegenomics/dataflow-java.git","svn_url":"https://github.com/googlegenomics/dataflow-java","homepage":"","size":99693,"stargazers_count":5,"watchers_count":5,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":9,"forks":4,"open_issues":9,"watchers":5,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/37"},"html":{"href":"https://github.com/googlegenomics/dataflow-java/pull/37"},"issue":{"href":"https://api.github.com/repos/googlegenomics/dataflow-java/issues/37"},"comments":{"href":"https://api.github.com/repos/googlegenomics/dataflow-java/issues/37/comments"},"review_comments":{"href":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/37/comments"},"review_comment":{"href":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/googlegenomics/dataflow-java/pulls/37/commits"},"statuses":{"href":"https://api.github.com/repos/googlegenomics/dataflow-java/statuses/67989547d44b98fc8c1e011488e1a59ed5712fc0"}}}}