@BeforeGroups(groups = "freqs2matrix") public void b() { freqs = new long[255][255]; for (int r = 0; r < SubstitutionMatrix.BASES.length; r++) { for (int b = 0; b < SubstitutionMatrix.BASES.length; b++) { if (r == b) continue; freqs[SubstitutionMatrix.BASES[r]][SubstitutionMatrix.BASES[b]] = b; } } m = new SubstitutionMatrix(freqs); }
mapBuffer.put(substitutionMatrix.getEncodedMatrix());
@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)); }
case Substitution.operator: byte refBase = ref[alignmentStart + posInSeq]; byte base = substitutionMatrix.base(refBase, readFeatureBuffer.get()); bases[posInRead - 1] = base; posInRead++;
/** * 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)); } } } } } }
public SubstitutionMatrix(final long[][] frequencies) { for (final byte base : BASES) { bytes[ORDER[base]] = rank(base, frequencies[base]); } for (final byte[] base : bases) Arrays.fill(base, (byte) 'N'); for (int i = 0; i < BASES.length; i++) { final byte r = BASES[i]; for (final byte b : BASES) { if (r == b) continue; bases[r][codes[r][b]] = b; bases[BASES_LC[i]][codes[r][b]] = b; } } }
final byte base = substitutionMatrix.base(refBase, substitution.getCode()); substitution.setBase(base); substitution.setReferenceBase(refBase);
/** * 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)); } } } } } }
public SubstitutionMatrix(final long[][] frequencies) { for (final byte base : BASES) { bytes[ORDER[base]] = rank(base, frequencies[base]); } for (final byte[] base : bases) Arrays.fill(base, (byte) 'N'); for (int i = 0; i < BASES.length; i++) { final byte r = BASES[i]; for (final byte b : BASES) { if (r == b) continue; bases[r][codes[r][b]] = b; bases[BASES_LC[i]][codes[r][b]] = b; } } }
@BeforeGroups(groups = "matrix2code") public void m() { m = new SubstitutionMatrix(new byte[]{27, (byte) 228, 27, 27, 27}); }
final byte base = substitutionMatrix.base(refBase, substitution.getCode()); substitution.setBase(base); substitution.setReferenceBase(refBase);
final Substitution sv = (Substitution) f; if (sv.getCode() < 0) baseSubstitutionCodeCodec.writeData(substitutionMatrix.code(sv.getReferenceBase(), sv.getBase())); else baseSubstitutionCodeCodec.writeData(sv.getCode());
mapBuffer.put(substitutionMatrix.getEncodedMatrix());
@Test public void testAP_delta() { boolean sorted = true; CompressionHeader header = new CompressionHeaderFactory().build(new ArrayList<>(), new SubstitutionMatrix(new long[256][256]), sorted); Assert.assertEquals(header.APDelta, sorted); sorted = false; header = new CompressionHeaderFactory().build(new ArrayList<>(), new SubstitutionMatrix(new long[256][256]), sorted); Assert.assertEquals(header.APDelta, sorted); }
final byte base = substitutionMatrix.base(refBase, substitution.getCode()); substitution.setBase(base); substitution.setReferenceBase(refBase);
final Substitution sv = (Substitution) f; if (sv.getCode() < 0) baseSubstitutionCodeCodec.writeData(substitutionMatrix.code(sv.getReferenceBase(), sv.getBase())); else baseSubstitutionCodeCodec.writeData(sv.getCode());
substitutionMatrix = new SubstitutionMatrix(matrixBytes); } else throw new RuntimeException("Unknown preservation map key: "
CompressionHeader createHeader(final List<CramCompressionRecord> records, final boolean sorted) { return new CompressionHeaderFactory().build(records, new SubstitutionMatrix(new long[256][256]), sorted); }