{"action":"created","comment":{"url":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/comments/133418103","pull_request_review_id":56591016,"id":133418103,"diff_hunk":"@@ -0,0 +1,294 @@\n+/*\n+ * The MIT License\n+ *\n+ * Copyright (c) 2017 Fulcrum Genomics LLC\n+ *\n+ * Permission is hereby granted, free of charge, to any person obtaining a copy\n+ * of this software and associated documentation files (the \"Software\"), to deal\n+ * in the Software without restriction, including without limitation the rights\n+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+ * copies of the Software, and to permit persons to whom the Software is\n+ * furnished to do so, subject to the following conditions:\n+ *\n+ * The above copyright notice and this permission notice shall be included in\n+ * all copies or substantial portions of the Software.\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n+ * THE SOFTWARE.\n+ *\n+ */\n+\n+package com.fulcrumgenomics.rnaseq\n+\n+import com.fulcrumgenomics.FgBioDef.{FgBioEnum, FilePath, PathPrefix, PathToBam, SafelyClosable, plotDescription}\n+import com.fulcrumgenomics.bam.api._\n+import com.fulcrumgenomics.cmdline.{ClpGroups, FgBioTool}\n+import com.fulcrumgenomics.commons.CommonsDef._\n+import com.fulcrumgenomics.commons.io.PathUtil\n+import com.fulcrumgenomics.commons.util.{DelimitedDataParser, LazyLogging, SimpleCounter}\n+import com.fulcrumgenomics.sopt.cmdline.ValidationException\n+import com.fulcrumgenomics.sopt.{arg, clp}\n+import com.fulcrumgenomics.util.{Io, Metric, ProgressLogger, Rscript}\n+import enumeratum.EnumEntry\n+import org.apache.commons.math3.exception.MathIllegalArgumentException\n+import org.apache.commons.math3.stat.correlation.{PearsonsCorrelation, SpearmansCorrelation}\n+import org.apache.commons.math3.stat.regression.SimpleRegression\n+\n+import scala.collection.immutable.IndexedSeq\n+import scala.collection.mutable.ArrayBuffer\n+import scala.io.Source\n+import scala.util.Failure\n+\n+sealed trait ErccMixture extends EnumEntry\n+object ErccMixture extends FgBioEnum[ErccMixture] {\n+  def values: IndexedSeq[ErccMixture] = findValues\n+  case object Mix1 extends ErccMixture\n+  case object Mix2 extends ErccMixture\n+}\n+\n+object CollectErccMetrics {\n+  private[rnaseq] val StandardMixtureMetadataPath = \"/com/fulcrumgenomics/rnaseq/ErccStandardMixtures.txt\"\n+}\n+\n+@clp(group = ClpGroups.RnaSeq, description=\n+  \"\"\"\n+    |Collects metrics for ERCC spike-ins for RNA-Seq experiments.\n+    |\n+    |Currently calculates per-transcript ERCC metrics and summarizes dose response, but does not calculate fold-change\n+    |response.\n+    |\n+    |The input BAM should contain reads mapped to a reference containing the ERCC transcripts.  The reference may have\n+    |additional contigs, for example, when concatenating the sample's reference genome and the ERCC transcripts.  The\n+    |BAM should have sequence lines in the header matching the ERCC ids (ex. ERCC-00130 or ERCC-00004).\n+    |\n+    |The standard ERCC transcripts, including their unique IDs and concentrations, are taken from\n+    |[here](https://assets.thermofisher.com/TFS-Assets/LSG/manuals/cms_095046.txt).  The second column lists the ERCC\n+    |transcript identifier which should be present as a sequence line in the BAM header, while columns four and five\n+    |give the concentration of the transcript for mixtures #1 and #2.\n+    |\n+    |The choice of mixture to use can be specified with the `--mixture-name` option (either `Mix1` or `Mix2`), or with\n+    |a file containing a custom list of transcripts and concentrations using the `--custom-mixture` option as follows.\n+    |The custom mixture file should be tab-delimited file containing the following columns:\n+    |  1. ERCC ID - each ERCC ID should match a contig/reference-sequence name in the input SAM/BAM header.\n+    |  2. Concentration - the concentration (in `attomoles/ul`).\n+    |\n+    |Three outputs will be produced:\n+    |  1. <output>.ercc_summary_metrics.txt - summary statistics for total # of reads mapping to the ERCC transcripts and dose\n+    |                                response metrics.\n+    |  2. <output>.ercc_detailed_metrics.txt - gives a per-ERCC-transcript expected concentration and observed fragment count.\n+    |  3. <output>.ercc_metrics.pdf - plots the expected concentration versus the observed fragment count.\n+    |\n+    |Secondary, supplementary and fragment reads will be ignored.  A read pair mapping to an ERCC transcript is counted if both\n+    |ends of the pair map to the same ERCC transcript.  A minimum mapping quality can be required for reads to be\n+    |counted as mapped to an ERCC transcript.\n+  \"\"\")\n+class CollectErccMetrics\n+(@arg(flag='i', doc=\"Input SAM or BAM file of aligned reads in coordinate order.\") val input: PathToBam,\n+ @arg(flag='o', doc=\"Output prefix.\") val output: PathPrefix,\n+ @arg(flag='m', doc=\"The name of the standard ERCC mixture.\", mutex=Array(\"customMixture\")) val mixtureName: Option[ErccMixture] = None,\n+ @arg(          doc=\"Tab-delimited file containing ERCC IDs and expected concentrations.\", mutex=Array(\"mixtureName\")) val customMixture: Option[FilePath] = None,\n+ @arg(flag='c', doc=\"Minimum # of counts required to include an ERCC transcript.\") val minTranscriptCount: Int = 3,\n+ @arg(flag='M', doc=\"The minimum mapping quality\") val minimumMappingQuality: Int = 10\n+) extends FgBioTool with LazyLogging {\n+\n+  Io.assertReadable(input)\n+  customMixture.foreach(Io.assertReadable)\n+  Io.assertCanWriteFile(output)\n+\n+  if (mixtureName.isEmpty && customMixture.isEmpty) {\n+    throw new ValidationException(\"Either --mixture-name or --mixture-metadata\")\n+  }\n+\n+  private val ScriptPath = \"com/fulcrumgenomics/rnaseq/CollectErccMetrics.R\"\n+\n+  override def execute(): Unit = {\n+    val in       = SamSource(input)\n+    val progress = ProgressLogger(logger, unit=2e6.toInt)\n+    val erccData = customMixture match {\n+      case Some(path) => DelimitedDataParser(path, '\\t').map { row => row[String](0) -> row[Double](1) }.toMap\n+      case None       =>\n+        val stream    = getClass.getResourceAsStream(s\"${CollectErccMetrics.StandardMixtureMetadataPath}\")\n+        val lines     = Source.fromInputStream(stream).withClose(() => stream.close()).getLines.filterNot(_.startsWith(\"#\"))\n+        val mixColumn = if (mixtureName.get == ErccMixture.Mix1) 3 else 4\n+        new DelimitedDataParser(lines, '\\t').map { row => row[String](1) -> row[Double](mixColumn) }.toMap\n+    }\n+\n+    // check for no ERCC data\n+    if (erccData.isEmpty) {\n+      val description = customMixture.map(\"in '\" + _).getOrElse(mixtureName.map(\"for '\" + _).get) + \"'\"\n+      throw new IllegalArgumentException(s\"No ERCC data given \" + description)\n+    }\n+\n+    // require that the SAM/BAM header contains all the ERCC transcripts\n+\n+    val missingErccTranscripts = erccData.keySet -- in.header.getSequenceDictionary.getSequences.map(_.getSequenceName)\n+    if (missingErccTranscripts.nonEmpty) {\n+      throw new IllegalArgumentException(s\"Missing ERCC transcripts in the SAM/BAM header: ${missingErccTranscripts.mkString(\", \")}\")\n+    }\n+\n+    var totalReads: Long    = 0 // the total # of reads in the BAM file\n+    var erccReads: Long     = 0 // the total # of reads that are counted as mapped to an ERCC transcript\n+    var erccReadPairs: Long = 0 // the total # of read pairs that are counted as mapped to an ERCC transcript\n+    val erccReadPairCounter = new SimpleCounter[String]() // the count of read pairs mapped to a given ERCC transcript\n+    in.iterator\n+      .filterNot { r => progress.record(r); r.secondary || r.supplementary } // no secondary or supplementary\n+      .filter { r =>\n+        totalReads += 1\n+        // consider only records mapped to an ERCC transcript\n+        r.mapped && r.mapq >= minimumMappingQuality && erccData.contains(r.refName)\n+      }\n+      .filter { r =>\n+        erccReads += 1\n+        // consider only paired records where both ends map to the sam ERCC transcript\n+        r.paired && r.mapped && r.mateMapped && r.refIndex == r.mateRefIndex && r.firstOfPair\n+      }\n+      .foreach { r =>\n+        erccReadPairs += 1\n+        erccReadPairCounter.count(r.refName)\n+      }\n+    in.safelyClose()\n+\n+    // Transform to log2 counts to compute some simple correlation and linear regression metrics.\n+    val counts            = ArrayBuffer[Double]()\n+    val normalizedCounts  = ArrayBuffer[Double]()\n+    val concentrations    = ArrayBuffer[Double]()\n+    val maximumErccLength = erccData.keys.map { name => in.header.getSequence(name).getSequenceLength }.max\n+    erccData.iterator.foreach { case (name, concentration) =>\n+      val count = erccReadPairCounter.countOf(name)\n+      if (minTranscriptCount <= count) {\n+        val erccLength = in.header.getSequence(name).getSequenceLength\n+        counts += log2(count)\n+        normalizedCounts += log2(count * maximumErccLength / erccLength.toDouble) // normalize by the ERCC transcript length\n+        concentrations += log2(concentration)\n+      }\n+    }\n+\n+    // Rocket science\n+    val simpleRegression = new SimpleRegression()\n+    normalizedCounts.zip(concentrations).foreach { case (cnt, conc) => simpleRegression.addData(cnt, conc) }\n+\n+    val erccMetrics = ErccSummaryMetrics(\n+      total_reads                = totalReads,\n+      ercc_reads                 = erccReads,\n+      fraction_ercc_reads        = if (totalReads == 0) 0 else 100.0 * erccReads / totalReads.toDouble,\n+      ercc_templates             = erccReadPairs,\n+      total_transcripts          = erccReadPairCounter.iterator.length,\n+      total_filtered_transcripts = erccReadPairCounter.iterator.count(_._2 >= minTranscriptCount),","path":"src/main/scala/com/fulcrumgenomics/rnaseq/CollectErccMetrics.scala","position":181,"original_position":181,"commit_id":"b3ffc34d9b41077b500b16247d06fad3518509cf","original_commit_id":"b3ffc34d9b41077b500b16247d06fad3518509cf","user":{"login":"tfenne","id":1609210,"avatar_url":"https://avatars3.githubusercontent.com/u/1609210?v=4","gravatar_id":"","url":"https://api.github.com/users/tfenne","html_url":"https://github.com/tfenne","followers_url":"https://api.github.com/users/tfenne/followers","following_url":"https://api.github.com/users/tfenne/following{/other_user}","gists_url":"https://api.github.com/users/tfenne/gists{/gist_id}","starred_url":"https://api.github.com/users/tfenne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tfenne/subscriptions","organizations_url":"https://api.github.com/users/tfenne/orgs","repos_url":"https://api.github.com/users/tfenne/repos","events_url":"https://api.github.com/users/tfenne/events{/privacy}","received_events_url":"https://api.github.com/users/tfenne/received_events","type":"User","site_admin":false},"body":"`passing_filter_transcripts`?  I struggle with `filtered` because it's never clear to me whether it means things that were filtered _out_, or things kept after filtering.","created_at":"2017-08-16T10:58:04Z","updated_at":"2017-08-16T11:04:22Z","html_url":"https://github.com/fulcrumgenomics/fgbio/pull/269#discussion_r133418103","pull_request_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/269","_links":{"self":{"href":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/comments/133418103"},"html":{"href":"https://github.com/fulcrumgenomics/fgbio/pull/269#discussion_r133418103"},"pull_request":{"href":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/269"}}},"pull_request":{"url":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/269","id":134958098,"html_url":"https://github.com/fulcrumgenomics/fgbio/pull/269","diff_url":"https://github.com/fulcrumgenomics/fgbio/pull/269.diff","patch_url":"https://github.com/fulcrumgenomics/fgbio/pull/269.patch","issue_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/issues/269","number":269,"state":"open","locked":false,"title":"Adding a tool CollectErccMetrics.","user":{"login":"nh13","id":846274,"avatar_url":"https://avatars1.githubusercontent.com/u/846274?v=4","gravatar_id":"","url":"https://api.github.com/users/nh13","html_url":"https://github.com/nh13","followers_url":"https://api.github.com/users/nh13/followers","following_url":"https://api.github.com/users/nh13/following{/other_user}","gists_url":"https://api.github.com/users/nh13/gists{/gist_id}","starred_url":"https://api.github.com/users/nh13/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nh13/subscriptions","organizations_url":"https://api.github.com/users/nh13/orgs","repos_url":"https://api.github.com/users/nh13/repos","events_url":"https://api.github.com/users/nh13/events{/privacy}","received_events_url":"https://api.github.com/users/nh13/received_events","type":"User","site_admin":false},"body":"This will collect metrics for analyzing ERCC spike-ins in\r\nRNA-Seq experiments for dose response but not fold-change\r\nresponse.  The former requires a single mixture to be spiked\r\nin the sample, while the latter would require a two mixtures\r\nin separate samples.","created_at":"2017-08-09T18:21:46Z","updated_at":"2017-08-16T11:04:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b251789cdaa337f40142e89f08efd2f3fce8d0cd","assignee":{"login":"tfenne","id":1609210,"avatar_url":"https://avatars3.githubusercontent.com/u/1609210?v=4","gravatar_id":"","url":"https://api.github.com/users/tfenne","html_url":"https://github.com/tfenne","followers_url":"https://api.github.com/users/tfenne/followers","following_url":"https://api.github.com/users/tfenne/following{/other_user}","gists_url":"https://api.github.com/users/tfenne/gists{/gist_id}","starred_url":"https://api.github.com/users/tfenne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tfenne/subscriptions","organizations_url":"https://api.github.com/users/tfenne/orgs","repos_url":"https://api.github.com/users/tfenne/repos","events_url":"https://api.github.com/users/tfenne/events{/privacy}","received_events_url":"https://api.github.com/users/tfenne/received_events","type":"User","site_admin":false},"assignees":[{"login":"tfenne","id":1609210,"avatar_url":"https://avatars3.githubusercontent.com/u/1609210?v=4","gravatar_id":"","url":"https://api.github.com/users/tfenne","html_url":"https://github.com/tfenne","followers_url":"https://api.github.com/users/tfenne/followers","following_url":"https://api.github.com/users/tfenne/following{/other_user}","gists_url":"https://api.github.com/users/tfenne/gists{/gist_id}","starred_url":"https://api.github.com/users/tfenne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tfenne/subscriptions","organizations_url":"https://api.github.com/users/tfenne/orgs","repos_url":"https://api.github.com/users/tfenne/repos","events_url":"https://api.github.com/users/tfenne/events{/privacy}","received_events_url":"https://api.github.com/users/tfenne/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/269/commits","review_comments_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/269/comments","review_comment_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/comments{/number}","comments_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/issues/269/comments","statuses_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/statuses/b3ffc34d9b41077b500b16247d06fad3518509cf","head":{"label":"fulcrumgenomics:nh_collect_ercc_metrics","ref":"nh_collect_ercc_metrics","sha":"b3ffc34d9b41077b500b16247d06fad3518509cf","user":{"login":"fulcrumgenomics","id":13546013,"avatar_url":"https://avatars0.githubusercontent.com/u/13546013?v=4","gravatar_id":"","url":"https://api.github.com/users/fulcrumgenomics","html_url":"https://github.com/fulcrumgenomics","followers_url":"https://api.github.com/users/fulcrumgenomics/followers","following_url":"https://api.github.com/users/fulcrumgenomics/following{/other_user}","gists_url":"https://api.github.com/users/fulcrumgenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/fulcrumgenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fulcrumgenomics/subscriptions","organizations_url":"https://api.github.com/users/fulcrumgenomics/orgs","repos_url":"https://api.github.com/users/fulcrumgenomics/repos","events_url":"https://api.github.com/users/fulcrumgenomics/events{/privacy}","received_events_url":"https://api.github.com/users/fulcrumgenomics/received_events","type":"Organization","site_admin":false},"repo":{"id":53011104,"name":"fgbio","full_name":"fulcrumgenomics/fgbio","owner":{"login":"fulcrumgenomics","id":13546013,"avatar_url":"https://avatars0.githubusercontent.com/u/13546013?v=4","gravatar_id":"","url":"https://api.github.com/users/fulcrumgenomics","html_url":"https://github.com/fulcrumgenomics","followers_url":"https://api.github.com/users/fulcrumgenomics/followers","following_url":"https://api.github.com/users/fulcrumgenomics/following{/other_user}","gists_url":"https://api.github.com/users/fulcrumgenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/fulcrumgenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fulcrumgenomics/subscriptions","organizations_url":"https://api.github.com/users/fulcrumgenomics/orgs","repos_url":"https://api.github.com/users/fulcrumgenomics/repos","events_url":"https://api.github.com/users/fulcrumgenomics/events{/privacy}","received_events_url":"https://api.github.com/users/fulcrumgenomics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fulcrumgenomics/fgbio","description":"Tools for working with genomic and high throughput sequencing data.","fork":false,"url":"https://api.github.com/repos/fulcrumgenomics/fgbio","forks_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/forks","keys_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/teams","hooks_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/hooks","issue_events_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/issues/events{/number}","events_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/events","assignees_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/assignees{/user}","branches_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/branches{/branch}","tags_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/tags","blobs_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/git/refs{/sha}","trees_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/statuses/{sha}","languages_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/languages","stargazers_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/stargazers","contributors_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/contributors","subscribers_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/subscribers","subscription_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/subscription","commits_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/commits{/sha}","git_commits_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/git/commits{/sha}","comments_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/comments{/number}","issue_comment_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/issues/comments{/number}","contents_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/contents/{+path}","compare_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/merges","archive_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/downloads","issues_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/issues{/number}","pulls_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls{/number}","milestones_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/milestones{/number}","notifications_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/labels{/name}","releases_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/releases{/id}","deployments_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/deployments","created_at":"2016-03-03T01:44:56Z","updated_at":"2017-07-13T15:06:06Z","pushed_at":"2017-08-16T00:13:03Z","git_url":"git://github.com/fulcrumgenomics/fgbio.git","ssh_url":"git@github.com:fulcrumgenomics/fgbio.git","clone_url":"https://github.com/fulcrumgenomics/fgbio.git","svn_url":"https://github.com/fulcrumgenomics/fgbio","homepage":"http://fulcrumgenomics.github.io/fgbio/","size":7644,"stargazers_count":23,"watchers_count":23,"language":"Scala","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":3,"mirror_url":null,"open_issues_count":40,"forks":3,"open_issues":40,"watchers":23,"default_branch":"master"}},"base":{"label":"fulcrumgenomics:master","ref":"master","sha":"ca99d15fe6437fc08c1e0718896b9202d237ec60","user":{"login":"fulcrumgenomics","id":13546013,"avatar_url":"https://avatars0.githubusercontent.com/u/13546013?v=4","gravatar_id":"","url":"https://api.github.com/users/fulcrumgenomics","html_url":"https://github.com/fulcrumgenomics","followers_url":"https://api.github.com/users/fulcrumgenomics/followers","following_url":"https://api.github.com/users/fulcrumgenomics/following{/other_user}","gists_url":"https://api.github.com/users/fulcrumgenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/fulcrumgenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fulcrumgenomics/subscriptions","organizations_url":"https://api.github.com/users/fulcrumgenomics/orgs","repos_url":"https://api.github.com/users/fulcrumgenomics/repos","events_url":"https://api.github.com/users/fulcrumgenomics/events{/privacy}","received_events_url":"https://api.github.com/users/fulcrumgenomics/received_events","type":"Organization","site_admin":false},"repo":{"id":53011104,"name":"fgbio","full_name":"fulcrumgenomics/fgbio","owner":{"login":"fulcrumgenomics","id":13546013,"avatar_url":"https://avatars0.githubusercontent.com/u/13546013?v=4","gravatar_id":"","url":"https://api.github.com/users/fulcrumgenomics","html_url":"https://github.com/fulcrumgenomics","followers_url":"https://api.github.com/users/fulcrumgenomics/followers","following_url":"https://api.github.com/users/fulcrumgenomics/following{/other_user}","gists_url":"https://api.github.com/users/fulcrumgenomics/gists{/gist_id}","starred_url":"https://api.github.com/users/fulcrumgenomics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fulcrumgenomics/subscriptions","organizations_url":"https://api.github.com/users/fulcrumgenomics/orgs","repos_url":"https://api.github.com/users/fulcrumgenomics/repos","events_url":"https://api.github.com/users/fulcrumgenomics/events{/privacy}","received_events_url":"https://api.github.com/users/fulcrumgenomics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fulcrumgenomics/fgbio","description":"Tools for working with genomic and high throughput sequencing data.","fork":false,"url":"https://api.github.com/repos/fulcrumgenomics/fgbio","forks_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/forks","keys_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/teams","hooks_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/hooks","issue_events_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/issues/events{/number}","events_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/events","assignees_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/assignees{/user}","branches_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/branches{/branch}","tags_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/tags","blobs_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/git/refs{/sha}","trees_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/statuses/{sha}","languages_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/languages","stargazers_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/stargazers","contributors_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/contributors","subscribers_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/subscribers","subscription_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/subscription","commits_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/commits{/sha}","git_commits_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/git/commits{/sha}","comments_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/comments{/number}","issue_comment_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/issues/comments{/number}","contents_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/contents/{+path}","compare_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/merges","archive_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/downloads","issues_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/issues{/number}","pulls_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls{/number}","milestones_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/milestones{/number}","notifications_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/labels{/name}","releases_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/releases{/id}","deployments_url":"https://api.github.com/repos/fulcrumgenomics/fgbio/deployments","created_at":"2016-03-03T01:44:56Z","updated_at":"2017-07-13T15:06:06Z","pushed_at":"2017-08-16T00:13:03Z","git_url":"git://github.com/fulcrumgenomics/fgbio.git","ssh_url":"git@github.com:fulcrumgenomics/fgbio.git","clone_url":"https://github.com/fulcrumgenomics/fgbio.git","svn_url":"https://github.com/fulcrumgenomics/fgbio","homepage":"http://fulcrumgenomics.github.io/fgbio/","size":7644,"stargazers_count":23,"watchers_count":23,"language":"Scala","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":3,"mirror_url":null,"open_issues_count":40,"forks":3,"open_issues":40,"watchers":23,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/269"},"html":{"href":"https://github.com/fulcrumgenomics/fgbio/pull/269"},"issue":{"href":"https://api.github.com/repos/fulcrumgenomics/fgbio/issues/269"},"comments":{"href":"https://api.github.com/repos/fulcrumgenomics/fgbio/issues/269/comments"},"review_comments":{"href":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/269/comments"},"review_comment":{"href":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/fulcrumgenomics/fgbio/pulls/269/commits"},"statuses":{"href":"https://api.github.com/repos/fulcrumgenomics/fgbio/statuses/b3ffc34d9b41077b500b16247d06fad3518509cf"}}}}
{"actor":{"display_login":"tfenne"}}