/** * Returns the reverse complement of the read bases * * @param read the read * @return the reverse complement of the read bases */ public static String getBasesReverseComplement(GATKSAMRecord read) { return getBasesReverseComplement(read.getReadBases()); }
public void addAlignment(GATKSAMRecord read) { output.println("@" + read.getReadName()); if (read.getReadNegativeStrandFlag()) { output.println(ReadUtils.getBasesReverseComplement(read)); output.println("+"); output.println(ReadUtils.convertReadQualToString(invertQuals(read.getBaseQualities()))); } else { output.println(ReadUtils.convertReadBasesToString(read)); output.println("+"); output.println(ReadUtils.convertReadQualToString(read)); } }
@Test (enabled = true) public void testGetBasesReverseComplement() { int iterations = 1000; Random random = Utils.getRandomGenerator(); while(iterations-- > 0) { final int l = random.nextInt(1000); GATKSAMRecord read = GATKSAMRecord.createRandomRead(l); byte [] original = read.getReadBases(); byte [] reconverted = new byte[l]; String revComp = ReadUtils.getBasesReverseComplement(read); for (int i=0; i<l; i++) { reconverted[l-1-i] = BaseUtils.getComplement((byte) revComp.charAt(i)); } Assert.assertEquals(reconverted, original); } }