Skip to content

Commit 371db03

Browse files
authored
fix: mapped header records should overwrite unmapped in ZipperBams (#963)
1 parent d85efb9 commit 371db03

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

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

+9-5
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,15 @@ private[bam] object ZipperBams extends LazyLogging {
8787
val header = new SAMFileHeader(dict)
8888

8989
// 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-
}
90+
val mappedComments = mapped.getComments.toSet
91+
val mappedReadGroups = mapped.getReadGroups.toSet
92+
val mappedProgramRecords = mapped.getProgramRecords.toSet
93+
unmapped.getComments.filterNot(mappedComments.contains).foreach(header.addComment)
94+
unmapped.getReadGroups.filterNot(mappedReadGroups.contains).foreach(header.addReadGroup)
95+
unmapped.getProgramRecords.filterNot(mappedProgramRecords.contains).foreach(header.addProgramRecord)
96+
mapped.getComments.foreach(header.addComment)
97+
mapped.getReadGroups.foreach(header.addReadGroup)
98+
mapped.getProgramRecords.foreach(header.addProgramRecord)
9599

96100
// Set the sort and group order
97101
header.setSortOrder(unmapped.getSortOrder)

0 commit comments

Comments
 (0)