@Test(dataProvider = "matrix2code", groups = "matrix2code") public void testMatrix2code(char refBase, char base, int code) { if (refBase == base) return; Assert.assertEquals(m.code((byte) refBase, (byte) base), code); Assert.assertEquals(m.base((byte) refBase, (byte) code), base); }
@Test(dataProvider = "freqs2matrix", groups = "freqs2matrix") public void testFreqs2matrix(char refBase, char base, int code) { if (refBase == base) return; Assert.assertEquals(m.code((byte) refBase, (byte) base), code); Assert.assertEquals(m.base((byte) refBase, (byte) code), 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)); } } } } } }
/** * 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)); } } } } } }
@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 Substitution sv = (Substitution) f; if (sv.getCode() < 0) baseSubstitutionCodeCodec.writeData(substitutionMatrix.code(sv.getReferenceBase(), sv.getBase())); else baseSubstitutionCodeCodec.writeData(sv.getCode());
final Substitution sv = (Substitution) f; if (sv.getCode() < 0) baseSubstitutionCodeCodec.writeData(substitutionMatrix.code(sv.getReferenceBase(), sv.getBase())); else baseSubstitutionCodeCodec.writeData(sv.getCode());