diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala index 5385fab72c425c7d8286eee83a65549a0efbd285..77d2ec0a477c04143def73aa34fb2346f713b961 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala @@ -20,7 +20,7 @@ import scala.io.Source import org.broadinstitute.gatk.utils.commandline.Argument -import nl.lumc.sasc.biopet.core.BiopetJavaCommandLineFunction +import nl.lumc.sasc.biopet.core.{ Logging, BiopetJavaCommandLineFunction } import nl.lumc.sasc.biopet.utils.tryToParseNumber /** @@ -74,7 +74,7 @@ abstract class Picard extends BiopetJavaCommandLineFunction { conditional(createMd5, "CREATE_MD5_FILE=TRUE") } -object Picard { +object Picard extends Logging { def getMetrics(file: File, tag: String = "METRICS CLASS", groupBy: Option[String] = None): Option[Any] = { @@ -84,8 +84,9 @@ object Picard { case (_, Some(group)) => { val groupId = header.indexOf(group) if (groupId == -1) throw new IllegalArgumentException(group + " not existing in header of: " + file) + if (header.count(_ == group) > 1) logger.warn(group + " multiple times seen in header of: " + file) Some((for (c <- content) yield c(groupId).toString() -> { - header.filter(_ != group).zip(c).toMap + header.filter(_ != group).zip(c.take(groupId) ::: c.takeRight(c.size - groupId - 1)).toMap }).toMap) } case (1, _) => Some(header.zip(content.head).toMap)