@Test public void test_buildFrequencies() { final CramCompressionRecord record = new CramCompressionRecord(); final Substitution s = new Substitution(); s.setPosition(1); final byte refBase = 'A'; final byte readBase = 'C'; s.setBase(readBase); s.setReferenceBase(refBase); s.setCode((byte) 1); record.readFeatures = new ArrayList<>(); record.readFeatures.add(s); record.readLength = 2; final List<CramCompressionRecord> records = new ArrayList<>(); records.add(record); final long[][] frequencies = CompressionHeaderFactory.buildFrequencies(records); for (int i = 0; i < frequencies.length; i++) { for (int j = 0; j < frequencies[i].length; j++) { if (i != refBase && j != readBase) { Assert.assertEquals(frequencies[i][j], 0); } } } Assert.assertEquals(frequencies[refBase][readBase], 1); }
@Test public void test_updateSubstitutionCodes() { final CramCompressionRecord record = new CramCompressionRecord(); final Substitution s = new Substitution(); s.setPosition(1); final byte refBase = 'A'; final byte readBase = 'C'; s.setBase(readBase); s.setReferenceBase(refBase); record.readFeatures = new ArrayList<>(); record.readFeatures.add(s); record.readLength = 2; final List<CramCompressionRecord> records = new ArrayList<>(); records.add(record); final long[][] frequencies = new long[256][256]; frequencies[refBase][readBase] = 1; SubstitutionMatrix matrix = new SubstitutionMatrix(frequencies); Assert.assertTrue(s.getCode() == -1); CompressionHeaderFactory.updateSubstitutionCodes(records, matrix); Assert.assertFalse(s.getCode() == -1); Assert.assertEquals(s.getCode(), matrix.code(refBase, readBase)); }
final byte base = substitutionMatrix.base(refBase, substitution.getCode()); substitution.setBase(base); substitution.setReferenceBase(refBase); bases[posInRead++ - 1] = base; posInSeq++;
final byte base = substitutionMatrix.base(refBase, substitution.getCode()); substitution.setBase(base); substitution.setReferenceBase(refBase); bases[posInRead++ - 1] = base; posInSeq++;
final byte base = substitutionMatrix.base(refBase, substitution.getCode()); substitution.setBase(base); substitution.setReferenceBase(refBase); bases[posInRead++ - 1] = base; posInSeq++;