@Test public void testPerReadAlleleLikelihoodMap() { final PerReadAlleleLikelihoodMap map = new PerReadAlleleLikelihoodMap(); final Allele alleleA = Allele.create("A"); final double lik = -1.0; // ignored final int[] MQs = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, QualityUtils.MAPPING_QUALITY_UNAVAILABLE}; final List<Integer> MQsList = Arrays.asList(ArrayUtils.toObject(MQs)); // MQ 255 are excluded from the calculations, we test it here. final List<Integer> MQsListOK = new ArrayList<>(MQsList); // NOTE: if we just call remove(i), Java thinks i is an index. // A workaround for this overloading bogosity to to call removeAll and pass a collection // (casting i to (Object) would work too but it's more error prone) MQsListOK.removeAll(Collections.singleton(QualityUtils.MAPPING_QUALITY_UNAVAILABLE)); final int n1A = MQs.length; for (int i = 0; i < n1A; i++) { final GATKRead read = ArtificialReadUtils.createArtificialRead(TextCigarCodec.decode("10M")); read.setMappingQuality(MQs[i]); map.add(read, alleleA, lik); } final Map<String, PerReadAlleleLikelihoodMap> perReadAlleleLikelihoodMap = Collections.singletonMap("sample1", map); final VariantContext vc = makeVC(); final ReferenceContext referenceContext = null; final Map<String, Object> annotate = new RMSMappingQuality().annotate(referenceContext, vc, perReadAlleleLikelihoodMap); Assert.assertEquals(annotate.size(), 1, "size"); Assert.assertEquals( annotate.keySet(), Collections.singleton(VCFConstants.RMS_MAPPING_QUALITY_KEY), "annots"); final double rms = MathUtils.rms(MQsListOK); // only those are MQ0 Assert.assertEquals( annotate.get(VCFConstants.RMS_MAPPING_QUALITY_KEY), String.format("%.2f", rms)); }
private GATKRead makeSamRead( final int uuid, final String name, final int start, final int length) { return ArtificialReadUtils.createSamBackedReadWithUUID(new UUID(0, uuid), name, start, length); }
@BeforeClass public void init() { header = ArtificialReadUtils.createArtificialSamHeader(1, 1, 1000000); genomeLocParser = new GenomeLocParser(header.getSequenceDictionary()); }