@DataProvider(name = "AddCigarElementsData") public Object[][] makeAddCigarElementsData() { List<Object[]> tests = new ArrayList<Object[]>(); final int SIZE = 10; for ( final CigarOperator op : Arrays.asList(CigarOperator.I, CigarOperator.M, CigarOperator.S, CigarOperator.EQ, CigarOperator.X)) { for ( int start = 0; start < SIZE; start++ ) { for ( int end = start; end < SIZE * 2; end ++ ) { for ( int pos = 0; pos < SIZE * 3; pos++ ) { int length = 0; for ( int i = 0; i < SIZE; i++ ) length += (i+pos) >= start && (i+pos) <= end ? 1 : 0; tests.add(new Object[]{SIZE + op.toString(), pos, start, end, length > 0 ? length + op.toString() : "*"}); } } } } return tests.toArray(new Object[][]{}); }
@Override public CigarUnit apply(CigarElement c) { CigarUnit u = new CigarUnit(); CigarOperator o = c.getOperator(); u.setOperation(CIGAR_OPERATIONS_INV.get(o.toString())); u.setOperationLength((long) c.getLength()); if (referenceSequence != null && (u.getOperation().equals("SEQUENCE_MISMATCH") || u.getOperation().equals("DELETE"))) { u.setReferenceSequence(referenceSequence); } return u; } });
@DataProvider(name = "IndelLengthAndBasesTest") public Object[][] makeIndelLengthAndBasesTest() { final String EVENT_BASES = "ACGTACGTACGT"; final List<Object[]> tests = new LinkedList<Object[]>(); for ( int eventSize = 1; eventSize < 10; eventSize++ ) { for ( final CigarOperator indel : Arrays.asList(CigarOperator.D, CigarOperator.I) ) { final String cigar = String.format("2M%d%s1M", eventSize, indel.toString()); final String eventBases = indel == CigarOperator.D ? "" : EVENT_BASES.substring(0, eventSize); final int readLength = 3 + eventBases.length(); GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "read", 0, 1, readLength); read.setReadBases(("TT" + eventBases + "A").getBytes()); final byte[] quals = new byte[readLength]; for ( int i = 0; i < readLength; i++ ) quals[i] = (byte)(i % QualityUtils.MAX_SAM_QUAL_SCORE); read.setBaseQualities(quals); read.setCigarString(cigar); tests.add(new Object[]{read, indel, eventSize, eventBases.equals("") ? null : eventBases}); } } return tests.toArray(new Object[][]{}); }
@Override public CigarUnit apply(CigarElement c) { CigarUnit.Builder u = CigarUnit.newBuilder(); CigarOperator o = c.getOperator(); u.setOperation(CIGAR_OPERATIONS_INV_GRPC.get(o.toString())); u.setOperationLength(c.getLength()); if (referenceSequence != null && (u.getOperation().equals("SEQUENCE_MISMATCH") || u.getOperation().equals("DELETE"))) { u.setReferenceSequence(referenceSequence); } return u.build(); } });
switch (ce.getOperator().toString()) { case "M": case "=":
cigar += ce.getLength() + ce.getOperator().toString(); len += ce.getLength(); last = ce;