Skip to content

Commit

Permalink
Fixed flipped sign when comparing read paired flags (samtools#897)
Browse files Browse the repository at this point in the history
Fixed flipped sign when comparing read paired flags
  • Loading branch information
ronlevine authored Jun 9, 2017
1 parent f0f7c9b commit 6383b25
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/main/java/htsjdk/samtools/DuplicateScoringStrategy.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class DuplicateScoringStrategy {
public enum ScoringStrategy {
SUM_OF_BASE_QUALITIES,
TOTAL_MAPPED_REFERENCE_LENGTH,
RANDOM,
RANDOM
}

/** Hash used for the RANDOM scoring strategy. */
Expand Down Expand Up @@ -128,7 +128,7 @@ public static int compare(final SAMRecord rec1, final SAMRecord rec2, final Scor
int cmp;

// always prefer paired over non-paired
if (rec1.getReadPairedFlag() != rec2.getReadPairedFlag()) return rec1.getReadPairedFlag() ? 1 : -1;
if (rec1.getReadPairedFlag() != rec2.getReadPairedFlag()) return rec1.getReadPairedFlag() ? -1 : 1;

cmp = computeDuplicateScore(rec2, scoringStrategy, assumeMateCigar) - computeDuplicateScore(rec1, scoringStrategy, assumeMateCigar);

Expand Down
25 changes: 25 additions & 0 deletions src/test/java/htsjdk/samtools/DuplicateScoringStrategyTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package htsjdk.samtools;

import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DuplicateScoringStrategyTest {

@DataProvider
public Object [][] compareData() {
return new Object[][]{
{SAMFlag.READ_PAIRED.flag, 0, true, DuplicateScoringStrategy.ScoringStrategy.RANDOM, -1},
{0, SAMFlag.READ_PAIRED.flag, true, DuplicateScoringStrategy.ScoringStrategy.RANDOM, 1},
};
}

@Test(dataProvider = "compareData")
public static void testCompare(final int samFlag1, final int samFlag2, final boolean assumeMateCigar, final DuplicateScoringStrategy.ScoringStrategy strategy, final int expected) {
final SAMRecord rec1 = new SAMRecordSetBuilder().addFrag("test", 0, 1, false, false, "36M", null, 2);
rec1.setFlags(samFlag1);
final SAMRecord rec2 = new SAMRecordSetBuilder().addFrag("test", 0, 1, true, false, "36M", null, 3);
rec2.setFlags(samFlag2);
Assert.assertEquals(DuplicateScoringStrategy.compare(rec1, rec2, strategy, assumeMateCigar), expected);
}
}

0 comments on commit 6383b25

Please sign in to comment.