public void calculate(Variant variant) { for (StudyEntry study : variant.getStudies()) { calculate(variant, study); } }
protected Map<String, String> parseInfoAttributes(Variant variant, int customFileNumber) { Map<String, String> infoMap = variant.getStudies().get(0).getFiles().get(0).getAttributes(); Map<String, String> parsedInfo = new HashMap<>(); for (String attribute : infoMap.keySet()) { if (customFileFields.get(customFileNumber).contains(attribute)) { parsedInfo.put(attribute, infoMap.get(attribute)); // parsedInfo.put(attribute, getValueFromString(infoMap.get(attribute))); } } return parsedInfo; }
public static String extractFileAttribute(Variant a, String key) { List<StudyEntry> studies = a.getStudies(); if (studies.isEmpty()) { return null; } StudyEntry studyEntry = studies.get(0); List<FileEntry> files = studyEntry.getFiles(); if (files == null || files.isEmpty()) { return null; } return files.get(0).getAttributes().get(key); }
private boolean allSameTypeAndGT(Collection<Variant> conflicts, VariantType type) { boolean differentType = conflicts.stream().filter(v -> !v.getType().equals(type)).findAny().isPresent(); if (differentType) { return false; } StudyEntry studyEntry = conflicts.stream().findAny().get().getStudies().get(0); String sample = studyEntry.getSamplesName().stream().findFirst().get(); String gt = studyEntry.getSampleData(sample, GENOTYPE_KEY); long count = conflicts.stream().filter(v -> v.getType().equals(type) && StringUtils.equals(gt, v.getStudies().get(0).getSampleData(sample, GENOTYPE_KEY))).count(); return ((int) count) == conflicts.size(); }
@Override public List<Variant> apply(List<Variant> batch) throws Exception { batch.forEach(variant -> variant.getStudies() .forEach((StudyEntry studyEntry) -> { studyEntry.setStudyId(studyIdStr); studyEntry.getFiles().forEach((FileEntry fileEntry) -> fileEntry.setFileId(fileIdStr)); })); return batch; } }
StudyEntry getStudy(Variant variant) { if (hasStudyId()) { StudyEntry study = variant.getStudy(getStudyId()); if (Objects.isNull(study)) { throw new IllegalStateException("No study found for " + getStudyId()); } return study; } return variant.getStudies().get(0); }
private void addVariant(Variant variant) { String chromosome = variant.getChromosome(); // Remap studyId and fileId StudyEntry studyEntry = variant.getStudies().get(0); studyEntry.setStudyId(studyId); studyEntry.getFiles().get(0).setFileId(fileId); long[] coveredSlicePositions = getCoveredSlicePositions(variant); for (long slicePos : coveredSlicePositions) { addVariant(variant, chromosome, slicePos); } }
public void checkNewMultiAllelicVariants(VariantHadoopDBAdaptor dbAdaptor) { Variant v = dbAdaptor.get(new Query(VariantQueryParam.ID.key(), "1:10297:C:G").append(VariantQueryParam.UNKNOWN_GENOTYPE.key(), "?"), null).first(); assertEquals(1, v.getStudies().get(0).getSecondaryAlternates().size()); assertEquals("0/1", v.getStudies().get(0).getSampleData("NA12877", "GT")); assertEquals("0/2", v.getStudies().get(0).getSampleData("NA12878", "GT")); v = dbAdaptor.get(new Query(VariantQueryParam.ID.key(), "1:10297:C:T").append(VariantQueryParam.UNKNOWN_GENOTYPE.key(), "?"), null).first(); assertEquals(1, v.getStudies().get(0).getSecondaryAlternates().size()); assertEquals("0/2", v.getStudies().get(0).getSampleData("NA12877", "GT")); assertEquals("0/1", v.getStudies().get(0).getSampleData("NA12878", "GT")); }
public void checkNewMissingPositions(VariantHadoopDBAdaptor dbAdaptor) { Variant v; v = dbAdaptor.get(new Query(VariantQueryParam.ID.key(), "1:10821:T:A").append(VariantQueryParam.UNKNOWN_GENOTYPE.key(), "?"), null).first(); assertEquals(0, v.getStudies().get(0).getSecondaryAlternates().size()); assertEquals("./.", v.getStudies().get(0).getSampleData("NA12878", "GT")); assertEquals("./.", v.getStudies().get(0).getSampleData("NA12880", "GT")); v = dbAdaptor.get(new Query(VariantQueryParam.ID.key(), "1:10635:C:G").append(VariantQueryParam.UNKNOWN_GENOTYPE.key(), "?"), null).first(); assertEquals(0, v.getStudies().get(0).getSecondaryAlternates().size()); assertEquals("./.", v.getStudies().get(0).getSampleData("NA12880", "GT")); }
@Test public void testReturnNoneFiles() { queryResult = query(new Query(INCLUDE_FILE.key(), VariantQueryUtils.NONE), new QueryOptions()); assertEquals(allVariants.getResult().size(), queryResult.getResult().size()); for (Variant variant : queryResult.getResult()) { assertThat(variant.getStudies().get(0).getFiles(), is(Collections.emptyList())); assertThat(new HashSet<>(variant.getStudies().get(0).getFormat()), is(FORMAT)); } }
@Test public void testExcludeStats() { for (String exclude : Arrays.asList("studies.stats", "stats")) { queryResult = query(new Query(), new QueryOptions(QueryOptions.EXCLUDE, exclude)); assertEquals(allVariants.getResult().size(), queryResult.getResult().size()); for (Variant variant : queryResult.getResult()) { assertThat(variant.getStudies().get(0).getStats(), not(is(Collections.emptyList()))); } } }
public static void checkCalculatedAggregatedStats(Set<String> cohortNames, String dbName) throws Exception { VariantDBAdaptor dbAdaptor = StorageEngineFactory.get().getVariantStorageEngine(null, dbName).getDBAdaptor(); for (Variant variant : dbAdaptor) { for (StudyEntry sourceEntry : variant.getStudies()) { assertEquals(cohortNames, sourceEntry.getStats().keySet()); for (Map.Entry<String, VariantStats> entry : sourceEntry.getStats().entrySet()) { assertTrue(cohortNames.contains(entry.getKey())); } } } } /**
@Test public void resolveSameVariantWithSecAlt() throws Exception { Variant a = getVariant("2:10048155:TCTTTTTTTT:AC", "PASS", "220", "1/2"); Variant b = getVariant("2:10048155:TCTTTTTTTT:-", "PASS", "220", "2/1"); a.getStudies().get(0).getSecondaryAlternates().add(new AlternateCoordinate("2", b.getStart(), b.getEnd(), b.getReference(), b.getAlternate(), INDEL)); a.getStudies().get(0).getFiles().get(0).setCall("10048155:TTCTTTTTTTT:TAC,T:0"); b.getStudies().get(0).getSecondaryAlternates().add(new AlternateCoordinate("2", a.getStart(), a.getEnd(), a.getReference(), a.getAlternate(), INDEL)); b.getStudies().get(0).getFiles().get(0).setCall("10048155:TTCTTTTTTTT:TAC,T:1"); Collection<Variant> resolved = new VariantLocalConflictResolver().resolveConflicts(Arrays.asList(a, b)); assertEquals(1, resolved.size()); }
@Test public void testExcludeStudies() { queryResult = query(new Query(), new QueryOptions(QueryOptions.EXCLUDE, "studies")); assertEquals(allVariants.getResult().size(), queryResult.getResult().size()); for (Variant variant : queryResult.getResult()) { assertThat(variant.getStudies(), is(Collections.emptyList())); } }
@Test public void testReturnNoneSamples() { queryResult = query(new Query(INCLUDE_SAMPLE.key(), VariantQueryUtils.NONE), new QueryOptions()); assertEquals(allVariants.getResult().size(), queryResult.getResult().size()); for (Variant variant : queryResult.getResult()) { assertThat(variant.getStudies().get(0).getSamplesData(), is(Collections.emptyList())); } }
@Test public void testReturnNoneStudies() { queryResult = query(new Query(INCLUDE_STUDY.key(), VariantQueryUtils.NONE), new QueryOptions()); assertEquals(allVariants.getResult().size(), queryResult.getResult().size()); for (Variant variant : queryResult.getResult()) { assertThat(variant.getStudies(), is(Collections.emptyList())); } }
@Test public void testSimpleImport() throws Exception { URI outputFile = newOutputUri().resolve("export.avro"); System.out.println("outputFile = " + outputFile); variantStorageEngine.exportData(outputFile, VariantOutputFormat.AVRO, new Query(), new QueryOptions()); clearDB(DB_NAME); variantStorageEngine.importData(outputFile, new ObjectMap()); for (Variant variant : variantStorageEngine.getDBAdaptor()) { assertEquals(4, variant.getStudies().get(0).getSamplesData().size()); } }
@Test public void resolve_INS_REF_Split() throws Exception { Variant a = addGTAndFilter(addAttribute(getVariantFilter("1:102::TTT", "PASS"), QUAL, "731"), "0/1", "PASS"); Variant b = addGTAndFilter(addAttribute(getVariantFilter("1:100-103:AAAA", "PASS"), QUAL, "390"), "0/0", "PASS"); b.setType(NO_VARIATION); List<Variant> resolved = new ArrayList<>(new VariantLocalConflictResolver().resolveConflicts(Arrays.asList(a, b))); assertEquals(3, resolved.size()); assertEquals("SiteConflict", resolved.get(2).getStudies().get(0).getSampleData("1", GENOTYPE_FILTER_KEY)); }
@Test public void testGetAllVariants_returnedStudiesEmpty() { query.append(INCLUDE_STUDY.key(), NONE); // thrown.expect(VariantQueryException.class); //StudyNotFound exception queryResult = dbAdaptor.get(query, options); assertEquals(numVariants, queryResult.getNumResults()); assertEquals(numVariants, queryResult.getNumTotalResults()); for (Variant variant : queryResult.getResult()) { assertEquals(Collections.emptyList(), variant.getStudies()); } }
@Test public void testGetAllVariants_returnedStudies1() { query.append(INCLUDE_STUDY.key(), studyConfiguration1.getStudyId()); queryResult = dbAdaptor.get(query, options); assertEquals(numVariants, queryResult.getNumResults()); assertEquals(numVariants, queryResult.getNumTotalResults()); for (Variant variant : queryResult.getResult()) { for (StudyEntry sourceEntry : variant.getStudies()) { assertEquals(studyConfiguration1.getStudyName(), sourceEntry.getStudyId()); } } }