public void addQualityScores(final SAMRecord samRecord, final CramCompressionRecord cramRecord, final ReferenceTracks referenceTracks) { if (samRecord.getBaseQualities() == SAMRecord.NULL_QUALS) { cramRecord.qualityScores = SAMRecord.NULL_QUALS; cramRecord.setForcePreserveQualityScores(false); return; } final byte[] scores = new byte[samRecord.getReadLength()]; Arrays.fill(scores, (byte) -1); for (final PreservationPolicy preservationPolicy : policyList) addQS(samRecord, cramRecord, scores, referenceTracks, preservationPolicy); if (!cramRecord.isForcePreserveQualityScores()) { for (int i = 0; i < scores.length; i++) { if (scores[i] > -1) { if (cramRecord.readFeatures == null) cramRecord.readFeatures = new LinkedList<ReadFeature>(); cramRecord.readFeatures.add(new BaseQualityScore(i + 1, scores[i])); } } if (cramRecord.readFeatures != null) Collections.sort(cramRecord.readFeatures, readFeaturePositionComparator); } cramRecord.qualityScores = scores; }
public void addQualityScores(final SAMRecord samRecord, final CramCompressionRecord cramRecord, final ReferenceTracks referenceTracks) { if (samRecord.getBaseQualities() == SAMRecord.NULL_QUALS) { cramRecord.qualityScores = SAMRecord.NULL_QUALS; cramRecord.setForcePreserveQualityScores(false); return; } final byte[] scores = new byte[samRecord.getReadLength()]; Arrays.fill(scores, (byte) -1); for (final PreservationPolicy preservationPolicy : policyList) addQS(samRecord, cramRecord, scores, referenceTracks, preservationPolicy); if (!cramRecord.isForcePreserveQualityScores()) { for (int i = 0; i < scores.length; i++) { if (scores[i] > -1) { if (cramRecord.readFeatures == null) cramRecord.readFeatures = new LinkedList<ReadFeature>(); cramRecord.readFeatures.add(new BaseQualityScore(i + 1, scores[i])); } } if (cramRecord.readFeatures != null) Collections.sort(cramRecord.readFeatures, readFeaturePositionComparator); } cramRecord.qualityScores = scores; }
public void addQualityScores(final SAMRecord s, final CramCompressionRecord r, final ReferenceTracks t) { if (s.getBaseQualities() == SAMRecord.NULL_QUALS) { r.qualityScores = SAMRecord.NULL_QUALS; r.setForcePreserveQualityScores(false); return; } final byte[] scores = new byte[s.getReadLength()]; Arrays.fill(scores, (byte) -1); for (final PreservationPolicy p : policyList) addQS(s, r, scores, t, p); if (!r.isForcePreserveQualityScores()) { for (int i = 0; i < scores.length; i++) { if (scores[i] > -1) { if (r.readFeatures == null || r.readFeatures == Collections.EMPTY_LIST) r.readFeatures = new LinkedList<ReadFeature>(); r.readFeatures.add(new BaseQualityScore(i + 1, scores[i])); } } if (r.readFeatures != null) Collections.sort(r.readFeatures, readFeaturePositionComparator); } r.qualityScores = scores; }
private static byte[] restoreQualityScores(final byte defaultQualityScore, final CramCompressionRecord record) { if (!record.isForcePreserveQualityScores()) { boolean star = true; final byte[] scores = new byte[record.readLength];
private static byte[] restoreQualityScores(final byte defaultQualityScore, final CramCompressionRecord record) { if (!record.isForcePreserveQualityScores()) { boolean star = true; final byte[] scores = new byte[record.readLength];
private static byte[] restoreQualityScores(final byte defaultQualityScore, final CramCompressionRecord record) { if (!record.isForcePreserveQualityScores()) { boolean star = true; final byte[] scores = new byte[record.readLength];
private byte[] compressScores (SAMRecord record, byte[] ref, QualityScorePreservation p) { ReferenceTracks tracks = new ReferenceTracks(0, record.getReferenceName(), ref); Sam2CramRecordFactory f = new Sam2CramRecordFactory(ref, record.getHeader(), CramVersions.CRAM_v3); CramCompressionRecord cramRecord = f.createCramRecord(record); p.addQualityScores(record, cramRecord, tracks); if (!cramRecord.isForcePreserveQualityScores()) { CramNormalizer.restoreQualityScores((byte) 30, Collections.singletonList(cramRecord)); } return cramRecord.qualityScores; } }
@Ignore("Broken test.") @Test public void test3() { String line1 = "98573 1107 20 1 60 100M = 999587 -415 CTGGTCTTAGTTCCGCAAGTGGGTATATATAAAGGCTCAAAATCAATCTTTATATTGACATCTCTCTACTTATTTGTGTTGTCTGATGCTCATATTGTAG ::A<<=D@BBC;C9=7DEEBHDEHHACEEBEEEDEE=EFFHEEFFFEHEF@HFBCEFEHFEHEHFEHDHHHFHHHEHHHHDFHHHHHGHHHHHHHHHHHH"; String line2 = "98738 1187 20 18 29 99M1S = 1000253 432 AGCGGGGATATATAAAGGCTCAAAATTACTTTTTATATGGACAACTCTCTACTGCTTTGAGATGACTGATACTCATATTGATGGAGCTTTATCAAGAAAT !\"#$%&'()*+-./0'''''''''''#'#'#'''''''#''''#'''''''''##''''#'#''#'''''#'''''''''##''''#''##''''''''?"; String seqName = "20"; List<String> lines = Arrays.asList(new String[] { line2, line1 }); byte[] ref = "CTGGTCTTAGTTCCGCAAGTGGGTATATATAAAGGCTCAAAATCAATCTTTATATTGACATCTCTCTACTTATTTGTGTTGTCTGATGCTCATATTGTAGGAGATTCCTCAAGAAAGG" .getBytes(); ReferenceTracks tracks = new ReferenceTracks(0, seqName, ref); QualityScorePreservation p = new QualityScorePreservation("R8-N40-M40-D40"); for (String line : lines) { SAMRecord record = buildSAMRecord(seqName, line); Sam2CramRecordFactory f = new Sam2CramRecordFactory(ref, record.getHeader(), CramVersions.CRAM_v3); CramCompressionRecord cramRecord = f.createCramRecord(record); p.addQualityScores(record, cramRecord, tracks); if (!cramRecord.isForcePreserveQualityScores()) { CramNormalizer.restoreQualityScores((byte) 30, Collections.singletonList(cramRecord)); } StringBuffer sb = new StringBuffer(); sb.append(record.getBaseQualityString()); sb.append("\n"); sb.append(SAMUtils.phredToFastq(cramRecord.qualityScores)); assertArrayEquals(sb.toString(), record.getBaseQualities(), cramRecord.qualityScores); } }
@Ignore("Broken test.") @Test public void test4() { String line2 = "98738 1187 20 18 29 99M1S = 1000253 432 AGCGGGGATATATAAAGGCTCAAAATTACTTTTTATATGGACAACTCTCTACTGCTTTGAGATGACTGATACTCATATTGATGGAGCTTTATCAAGAAAT !\"#$%&'()*+-./0'''''''''''#'#'#'''''''#''''#'''''''''##''''#'#''#'''''#'''''''''##''''#''##''''''''?"; String seqName = "20"; List<String> lines = Arrays.asList(new String[] { line2 }); byte[] ref = "CTGGTCTTAGTTCCGCAAGTGGGTATATATAAAGGCTCAAAATCAATCTTTATATTGACATCTCTCTACTTATTTGTGTTGTCTGATGCTCATATTGTAGGAGATTCCTCAAGAAAGG" .getBytes(); ReferenceTracks tracks = new ReferenceTracks(0, seqName, ref); QualityScorePreservation p = new QualityScorePreservation("R40X10-N40-U40"); for (int i = 0; i < ref.length; i++) tracks.addCoverage(i + 1, 66); for (String line : lines) { SAMRecord record = buildSAMRecord(seqName, line); Sam2CramRecordFactory f = new Sam2CramRecordFactory(ref, record.getHeader(), CramVersions.CRAM_v3); CramCompressionRecord cramRecord = f.createCramRecord(record); p.addQualityScores(record, cramRecord, tracks); if (!cramRecord.isForcePreserveQualityScores()) { CramNormalizer.restoreQualityScores((byte) 30, Collections.singletonList(cramRecord)); } StringBuffer sb = new StringBuffer(); sb.append(record.getBaseQualityString()); sb.append("\n"); sb.append(SAMUtils.phredToFastq(cramRecord.qualityScores)); assertArrayEquals(sb.toString(), record.getBaseQualities(), cramRecord.qualityScores); } }
if (cramRecord.isForcePreserveQualityScores()) { cramRecord.qualityScores = qualityScoreArrayCodec.readDataArray(cramRecord.readLength); if (cramRecord.isForcePreserveQualityScores()) { cramRecord.qualityScores = qualityScoreArrayCodec.readDataArray(cramRecord.readLength);
if (cramRecord.isForcePreserveQualityScores()) { cramRecord.qualityScores = qualityScoreArrayCodec.readDataArray(cramRecord.readLength); if (cramRecord.isForcePreserveQualityScores()) { cramRecord.qualityScores = qualityScoreArrayCodec.readDataArray(cramRecord.readLength);
if (r.isForcePreserveQualityScores()) { qualityScoreArrayCodec.writeData(r.qualityScores); if (r.isForcePreserveQualityScores()) { qualityScoreArrayCodec.writeData(r.qualityScores);
if (r.isForcePreserveQualityScores()) { qualityScoreArrayCodec.writeData(r.qualityScores); if (r.isForcePreserveQualityScores()) { qualityScoreArrayCodec.writeData(r.qualityScores);