@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)); }
/** * Given the records update the substitution matrix with actual substitution * codes. * * @param records * CRAM records * @param substitutionMatrix * the matrix to be updated */ static void updateSubstitutionCodes(final List<CramCompressionRecord> records, final SubstitutionMatrix substitutionMatrix) { for (final CramCompressionRecord record : records) { if (record.readFeatures != null) { for (final ReadFeature recordFeature : record.readFeatures) { if (recordFeature.getOperator() == Substitution.operator) { final Substitution substitution = ((Substitution) recordFeature); if (substitution.getCode() == Substitution.NO_CODE) { final byte refBase = substitution.getReferenceBase(); final byte base = substitution.getBase(); substitution.setCode(substitutionMatrix.code(refBase, base)); } } } } } }
/** * Given the records update the substitution matrix with actual substitution * codes. * * @param records * CRAM records * @param substitutionMatrix * the matrix to be updated */ static void updateSubstitutionCodes(final List<CramCompressionRecord> records, final SubstitutionMatrix substitutionMatrix) { for (final CramCompressionRecord record : records) { if (record.readFeatures != null) { for (final ReadFeature recordFeature : record.readFeatures) { if (recordFeature.getOperator() == Substitution.operator) { final Substitution substitution = ((Substitution) recordFeature); if (substitution.getCode() == Substitution.NO_CODE) { final byte refBase = substitution.getReferenceBase(); final byte base = substitution.getBase(); substitution.setCode(substitutionMatrix.code(refBase, base)); } } } } } }
final byte base = substitutionMatrix.base(refBase, substitution.getCode()); substitution.setBase(base); substitution.setReferenceBase(refBase);
final byte base = substitutionMatrix.base(refBase, substitution.getCode()); substitution.setBase(base); substitution.setReferenceBase(refBase);
final byte base = substitutionMatrix.base(refBase, substitution.getCode()); substitution.setBase(base); substitution.setReferenceBase(refBase);