@Override protected void setup(final SAMFileHeader header, final File samFile) { IOUtil.assertFileIsWritable(OUTPUT); HashMap<CigarOperator, List<CigarDetailMetrics>> hm = new HashMap<CigarOperator, List<CigarDetailMetrics>>(); for (CigarOperator op : CigarOperator.values()) { hm.put(op, new ArrayList<CigarDetailMetrics>()); } cigar = new EnumMap<>(hm); }
public CigarSizeDistribution(List<CigarDetailMetrics> list) { this.phred = new double[CigarOperator.values().length][]; for (CigarOperator op : CigarOperator.values()) { char charop = (char)CigarOperator.enumToCharacter(op); this.phred[CigarOperator.enumToBinary(op)] = calcPhred(Lists.newArrayList(Iterables.filter(list, cdm -> cdm.OPERATOR == charop))); } } private static double[] calcPhred(List<CigarDetailMetrics> sc) {
public IdsvSamFileMetricsCollector(SAMFileHeader header) { this.is = createInsertSizeMetricsCollector(header); this.mmc = createMapqMetricsCollector(header); this.cigar = new HashMap<CigarOperator, List<CigarDetailMetrics>>(); for (CigarOperator op : CigarOperator.values()) { cigar.put(op, new ArrayList<CigarDetailMetrics>()); } } public void acceptRecord(final SAMRecord record, final ReferenceSequence refSeq) {
private static List<CigarDetailMetrics> getCigarMetrics(File cigarMetricsFile) { if (cigarMetricsFile == null) return null; List<CigarDetailMetrics> list = new ArrayList<CigarDetailMetrics>(); for (CigarDetailMetrics metric : Iterables.filter(MetricsFile.readBeans(cigarMetricsFile), CigarDetailMetrics.class)) { list.add(metric); } Collections.sort(list, CigarDetailMetricsByLength); for (CigarOperator op : CigarOperator.values()) { List<CigarDetailMetrics> opList = list.stream().filter(cdm -> cdm.OPERATOR == CigarOperator.enumToCharacter(op)).collect(Collectors.toList()); for (int i = 0; i < opList.size(); i++) { if (opList.get(i).LENGTH != i) { String msg = String.format("%s missing cigar metric: expected metric for length %d, found %d", cigarMetricsFile, i, opList.get(0).LENGTH); log.error(msg); throw new RuntimeException(msg); } } } return list; } public InsertSizeDistribution getInsertSizeDistribution() {
private final List<List<CigarElement>> makeCigarElementCombinations() { // this functionality can be adapted to provide input data for whatever you might want in your data final List<CigarElement> cigarElements = new LinkedList<CigarElement>(); for ( final int size : Arrays.asList(0, 10) ) { for ( final CigarOperator op : CigarOperator.values() ) { cigarElements.add(new CigarElement(size, op)); } } final List<List<CigarElement>> combinations = new LinkedList<List<CigarElement>>(); for ( final int nElements : Arrays.asList(1, 2, 3) ) { combinations.addAll(Utils.makePermutations(cigarElements, nElements, true)); } return combinations; }
@DataProvider(name = "LIBSTest") public Object[][] createLIBSTests(final List<Integer> cigarLengths, final List<Integer> combinations) { final List<Object[]> tests = new LinkedList<Object[]>(); final List<CigarOperator> allOps = Arrays.asList(CigarOperator.values()); final List<CigarElement> singleCigars = new LinkedList<CigarElement>(); for ( final int len : cigarLengths ) for ( final CigarOperator op : allOps ) singleCigars.add(new CigarElement(len, op)); for ( final int complexity : combinations ) { for ( final List<CigarElement> elements : Utils.makePermutations(singleCigars, complexity, true) ) { final LIBSTest test = makePermutationTest(elements); if ( test != null ) tests.add(new Object[]{test}); } } return tests.toArray(new Object[][]{}); }
public CigarCounter(GATKSAMRecord read) { CigarOperator[] operators = CigarOperator.values(); counter = new HashMap<CigarOperator, Integer>(operators.length); for (CigarOperator op : operators) counter.put(op, 0); for (CigarElement cigarElement : read.getCigar().getCigarElements()) counter.put(cigarElement.getOperator(), counter.get(cigarElement.getOperator()) + cigarElement.getLength()); }
@DataProvider(name = "ConsolidateCigarData") public Object[][] makeConsolidateCigarData() { List<Object[]> tests = new ArrayList<Object[]>(); // this functionality can be adapted to provide input data for whatever you might want in your data tests.add(new Object[]{"1M1M", "2M"}); tests.add(new Object[]{"2M", "2M"}); tests.add(new Object[]{"2M0M", "2M"}); tests.add(new Object[]{"0M2M", "2M"}); tests.add(new Object[]{"0M2M0M0I0M1M", "3M"}); tests.add(new Object[]{"2M0M1M", "3M"}); tests.add(new Object[]{"1M1M1M1D2M1M", "3M1D3M"}); tests.add(new Object[]{"6M6M6M", "18M"}); final List<CigarElement> elements = new LinkedList<CigarElement>(); int i = 1; for ( final CigarOperator op : CigarOperator.values() ) { elements.add(new CigarElement(i++, op)); } for ( final List<CigarElement> ops : Utils.makePermutations(elements, 3, false) ) { final String expected = new Cigar(ops).toString(); final List<CigarElement> cutElements = new LinkedList<CigarElement>(); for ( final CigarElement elt : ops ) { for ( int j = 0; j < elt.getLength(); j++ ) { cutElements.add(new CigarElement(1, elt.getOperator())); } } final String actual = new Cigar(cutElements).toString(); tests.add(new Object[]{actual, expected}); } return tests.toArray(new Object[][]{}); }
acceptCigarElement(ce); for (CigarOperator op : CigarOperator.values()) { switch (op) { case S:
for (CigarOperator op : CigarOperator.values()) { switch (op) { case S: