Skip to content

Commit a7873a0

Browse files
committed
fix: mapped header records should overwrite unmapped in ZipperBams
1 parent afa634e commit a7873a0

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/main/scala/com/fulcrumgenomics/bam/ZipperBams.scala

+10-5
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,17 @@ private[bam] object ZipperBams extends LazyLogging {
8686
// Build a new header using the given sequence dictionary
8787
val header = new SAMFileHeader(dict)
8888

89+
8990
// Copy over comments, RGs and PGs, letting mapped override unmapped if there are conflicts
90-
Iterator(unmapped, mapped).foreach { old =>
91-
old.getComments.iterator().foreach(header.addComment)
92-
old.getReadGroups.iterator().foreach(header.addReadGroup)
93-
old.getProgramRecords.iterator().foreach(header.addProgramRecord)
94-
}
91+
val mappedComments = mapped.getComments.toSet
92+
val mappedReadGroups = mapped.getReadGroups.toSet
93+
val mappedProgramRecords = mapped.getProgramRecords.toSet
94+
unmapped.getComments.filterNot(mappedComments.contains).foreach(header.addComment)
95+
unmapped.getReadGroups.filterNot(mappedReadGroups.contains).foreach(header.addReadGroup)
96+
unmapped.getProgramRecords.filterNot(mappedProgramRecords.contains).foreach(header.addProgramRecord)
97+
mapped.getComments.foreach(header.addComment)
98+
mapped.getReadGroups.foreach(header.addReadGroup)
99+
mapped.getProgramRecords.foreach(header.addProgramRecord)
95100

96101
// Set the sort and group order
97102
header.setSortOrder(unmapped.getSortOrder)

0 commit comments

Comments
 (0)