public void setSampleContamination(DefaultHashMap<String, Double> sampleContamination) { this.sampleContamination.clear(); this.sampleContaminationWasLoaded = !Double.isNaN(CONTAMINATION_FRACTION) && CONTAMINATION_FRACTION > 0.0; if (!sampleContaminationWasLoaded) for (final Double d : sampleContamination.values()) if (!Double.isNaN(d) && d > 0.0) { sampleContaminationWasLoaded = true; break; } this.sampleContamination.putAll(sampleContamination); this.sampleContamination.setDefaultValue(CONTAMINATION_FRACTION); }
@Override public V get(Object k) { V v = super.get(k); return ((v == null) && !this.containsKey(k)) ? this.defaultValue : v; }
DefaultHashMap<String, Double> sampleContamination = new DefaultHashMap<String, Double>(defaultContaminationFraction); Set<String> nonSamplesInContaminationFile = new HashSet<String>(sampleContamination.keySet()); try { if (sampleContamination.containsKey(fields[0])) { throw new UserException.MalformedFile("Contamination file contains duplicate entries for input name " + fields[0]); sampleContamination.put(fields[0], contamination); if (sampleContamination.size() > 0) { logger.info(String.format("The following samples were found in the Contamination file and will be processed at the contamination level therein: %s", sampleContamination.keySet().toString())); samplesNotInContaminationFile.removeAll(sampleContamination.keySet()); if (samplesNotInContaminationFile.size() > 0) logger.info(String.format("The following samples were NOT found in the Contamination file and will be processed at the default contamination level: %s", samplesNotInContaminationFile.toString()));
@Test public void testSettingTenElements() { logger.warn("Executing testSettingTenElements"); Assert.assertEquals(10, hasTen.size()); for (Integer i = 1; i <= 10; i++) { hasTen.put(i.toString(), i.doubleValue()); } Assert.assertEquals(10, hasTen.size()); for (Integer i = 1; i <= 10; i++) { Assert.assertEquals(i.doubleValue(), hasTen.get(i.toString())); } }
@BeforeMethod public void before() { empty = new DefaultHashMap<String, Double>(initialDefault); hasOne = new DefaultHashMap<String, Double>(initialDefault); hasOne.put("1", .1); hasTen = new DefaultHashMap<String, Double>(initialDefault); for (Integer i = 1; i <= 10; i++) { hasTen.put(i.toString(), i.doubleValue() / 10); } }
@Test public void testUnset() { logger.warn("Executing testUnset1"); Assert.assertEquals(10, hasTen.size()); Assert.assertEquals(.9, hasTen.get("9")); hasTen.remove("9"); Assert.assertEquals(9, hasTen.size()); Assert.assertEquals(initialDefault, hasTen.get("9")); hasTen.remove("1"); Assert.assertEquals(8, hasTen.size()); Assert.assertEquals(initialDefault, hasTen.get("1")); } }
@Test public void testSettingDefault() { logger.warn("Executing testSettingDefault"); Assert.assertEquals(initialDefault, empty.get("0")); Assert.assertEquals(initialDefault, hasOne.get("0")); Assert.assertEquals(initialDefault, hasTen.get("0")); empty.setDefaultValue(2 * initialDefault); hasOne.setDefaultValue(2 * initialDefault); hasTen.setDefaultValue(2 * initialDefault); Assert.assertEquals(2 * initialDefault, empty.get("0")); Assert.assertEquals(2 * initialDefault, hasOne.get("0")); Assert.assertEquals(2 * initialDefault, hasTen.get("0")); }
/** * * @return an _Immutable_ copy of the Sample-Contamination Map, defaulting to CONTAMINATION_FRACTION so that if the sample isn't in the map map(sample)==CONTAMINATION_FRACTION */ public Map<String,Double> getSampleContamination(){ //make sure that the default value is set up right sampleContamination.setDefaultValue(CONTAMINATION_FRACTION); if (!Double.isNaN(CONTAMINATION_FRACTION) && CONTAMINATION_FRACTION > 0.0) sampleContaminationWasLoaded = true; return Collections.unmodifiableMap(sampleContamination); }
@Test public void testAdd() { logger.warn("Executing testAdd"); Assert.assertEquals(0, empty.size()); Double x = 1.0; empty.put(x.toString(), x / 10); Assert.assertEquals(1, empty.size()); Assert.assertEquals(.1, empty.get(x.toString())); x = 2.0; empty.put(x.toString(), x / 10); Assert.assertEquals(2, empty.size()); Assert.assertEquals(.2, empty.get(x.toString())); }
@Test(dataProvider = "goodContaminationFiles") public void testLoadContaminationFile(final Integer ArtificalBAMnumber, final Integer numberOfSamples) { final String ArtificialBAM = String.format("ArtificallyContaminatedBams/contamination.case.%d.txt", ArtificalBAMnumber); Logger logger = org.apache.log4j.Logger.getRootLogger(); File ContamFile = new File(privateTestDir, ArtificialBAM); Assert.assertTrue(AlleleBiasedDownsamplingUtils.loadContaminationFile(ContamFile, 0.0, null, logger).size() == numberOfSamples); }