org.opencb.biodata.models.metadata.Sample sample = samplesMap.get(catalogSample.getId()); List<AnnotationSet> annotationSets = catalogSample.getAnnotationSets(); if (annotationSets != null) { sample.setAnnotations(new LinkedHashMap<>(sample.getAnnotations()));
@Override public QueryResult<AnnotationSet> getAnnotationSet(long id, @Nullable String annotationSetName) throws CatalogDBException { QueryOptions queryOptions = new QueryOptions(); List<String> includeList = new ArrayList<>(); if (StringUtils.isNotEmpty(annotationSetName)) { includeList.add(Constants.ANNOTATION_SET_NAME + "." + annotationSetName); } else { includeList.add(QueryParams.ANNOTATION_SETS.key()); } queryOptions.put(QueryOptions.INCLUDE, includeList); QueryResult<Sample> sampleQueryResult = get(id, queryOptions); if (sampleQueryResult.first().getAnnotationSets().isEmpty()) { return new QueryResult<>("Get annotation set", sampleQueryResult.getDbTime(), 0, 0, sampleQueryResult.getWarningMsg(), sampleQueryResult.getErrorMsg(), Collections.emptyList()); } else { List<AnnotationSet> annotationSets = sampleQueryResult.first().getAnnotationSets(); int size = annotationSets.size(); return new QueryResult<>("Get annotation set", sampleQueryResult.getDbTime(), size, size, sampleQueryResult.getWarningMsg(), sampleQueryResult.getErrorMsg(), annotationSets); } }
@Test public void testUpdateAnnotationFail() throws CatalogException { Sample sample = catalogManager.getSampleManager().get(studyFqn, s_1, null, sessionIdUser).first(); AnnotationSet annotationSet = sample.getAnnotationSets().get(0); thrown.expect(CatalogException.class); //Can not delete required fields thrown.expectMessage("required variable"); catalogManager.getSampleManager().removeAnnotations(studyFqn, s_1, annotationSet.getId(), Collections.singletonList("NAME"), QueryOptions.empty(), sessionIdUser); }
new QueryOptions(QueryOptions.INCLUDE, Constants.ANNOTATION_SET_NAME + ".annotation1"), sessionIdUser); assertEquals(1, sampleQueryResult.getNumResults()); assertEquals(1, sampleQueryResult.first().getAnnotationSets().size()); Map<String, Object> map = sampleQueryResult.first().getAnnotationSets().get(0).getAnnotations(); assertEquals(3, map.size()); assertEquals("Joe", map.get("NAME"));
@Test public void testDeleteAnnotationSet() throws CatalogException { catalogManager.getSampleManager().removeAnnotationSet(studyFqn, s_1, "annot1", QueryOptions.empty(), sessionIdUser); QueryResult<Sample> sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, s_1, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(0, sampleQueryResult.first().getAnnotationSets().size()); }
sampleSolrModel.setAnnotations(SolrConverterUtil.populateAnnotations(variableMap, sample.getAnnotationSets())); if (sample.getAnnotationSets() != null) { sampleSolrModel.setAnnotationSets(sample.getAnnotationSets().stream().map(AnnotationSet::getId).collect(Collectors.toList())); } else { sampleSolrModel.setAnnotationSets(Collections.emptyList());
QueryResult<Sample> sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(1, sampleQueryResult.first().getAnnotationSets().size()); sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(2, sampleQueryResult.first().getAnnotationSets().size()); .containsAll(sampleQueryResult.first().getAnnotationSets().stream().map(AnnotationSet::getId).collect(Collectors.toSet())));
@Test public void testDeleteAnnotation() throws CatalogException { // We add one of the non mandatory annotations // First update catalogManager.getSampleManager().updateAnnotations(studyFqn, s_1, "annot1", new ObjectMap("EXTRA", "extra"), ParamUtils.CompleteUpdateAction.ADD, QueryOptions.empty(), sessionIdUser); Sample sample = catalogManager.getSampleManager().get(studyFqn, s_1, null, sessionIdUser).first(); AnnotationSet annotationSet = sample.getAnnotationSets().get(0); assertEquals("extra", annotationSet.getAnnotations().get("EXTRA")); // Now we remove that non mandatory annotation catalogManager.getSampleManager().removeAnnotations(studyFqn, s_1, annotationSet.getId(), Collections.singletonList("EXTRA"), QueryOptions.empty(), sessionIdUser); sample = catalogManager.getSampleManager().get(studyFqn, s_1, null, sessionIdUser).first(); annotationSet = sample.getAnnotationSets().get(0); assertTrue(!annotationSet.getAnnotations().containsKey("EXTRA")); // Now we attempt to remove one mandatory annotation thrown.expect(CatalogException.class); //Can not delete required fields thrown.expectMessage("required variable"); catalogManager.getSampleManager().removeAnnotations(studyFqn, s_1, annotationSet.getId(), Collections.singletonList("AGE"), QueryOptions.empty(), sessionIdUser); }
QueryResult<Sample> update = catalogManager.getSampleManager().update(studyFqn, s_1, updateAnnotation, QueryOptions.empty(), sessionIdUser); assertEquals(3, update.first().getAnnotationSets().size()); assertEquals(1, sampleQueryResult.first().getAnnotationSets().size());
@Test public void testProjections() throws CatalogException { Study study = catalogManager.getStudyManager().get("1000G:phase1", null, sessionIdUser).first(); Query query = new Query(Constants.ANNOTATION, "variableSet===" + study.getVariableSets().get(0).getId()); QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, "annotationSets"); QueryResult<Sample> annotQueryResult = catalogManager.getSampleManager().search(studyFqn, query, options, sessionIdUser); assertEquals(8, annotQueryResult.getNumResults()); for (Sample sample : annotQueryResult.getResult()) { assertEquals(null, sample.getId()); assertTrue(!sample.getAnnotationSets().isEmpty()); } }
sample.setType(ParamUtils.defaultString(sample.getType(), "")); sample.setPhenotypes(ParamUtils.defaultObject(sample.getPhenotypes(), Collections.emptyList())); sample.setAnnotationSets(ParamUtils.defaultObject(sample.getAnnotationSets(), Collections.emptyList())); sample.setStats(ParamUtils.defaultObject(sample.getStats(), Collections.emptyMap())); sample.setAttributes(ParamUtils.defaultObject(sample.getAttributes(), Collections.emptyMap())); Study study = catalogManager.getStudyManager().resolveId(studyStr, userId); List<VariableSet> variableSetList = validateNewAnnotationSetsAndExtractVariableSets(study.getUid(), sample.getAnnotationSets());
@Test public void testUpdateAnnotation() throws CatalogException { Sample sample = catalogManager.getSampleManager().get(studyFqn, s_1, null, sessionIdUser).first(); AnnotationSet annotationSet = sample.getAnnotationSets().get(0); check.accept(sample.getAnnotationSets().get(0)); check.accept(ind.getAnnotationSets().get(0)); check.accept(sample.getAnnotationSets().get(0)); check.accept(ind.getAnnotationSets().get(0)); check.accept(sample.getAnnotationSets().get(0)); check.accept(ind.getAnnotationSets().get(0)); check.accept(sample.getAnnotationSets().get(0)); check.accept(ind.getAnnotationSets().get(0));
QueryResult<Sample> sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(1, sampleQueryResult.first().getAnnotationSets().size());
QueryResult<Sample> sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(1, sampleQueryResult.first().getAnnotationSets().size()); sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(2, sampleQueryResult.first().getAnnotationSets().size());
QueryResult<Sample> sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(1, sampleQueryResult.first().getAnnotationSets().size()); sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(2, sampleQueryResult.first().getAnnotationSets().size()); sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(3, sampleQueryResult.first().getAnnotationSets().size()); sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(4, sampleQueryResult.first().getAnnotationSets().size());
QueryResult<Sample> sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(1, sampleQueryResult.first().getAnnotationSets().size()); sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(2, sampleQueryResult.first().getAnnotationSets().size()); sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(3, sampleQueryResult.first().getAnnotationSets().size()); sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(4, sampleQueryResult.first().getAnnotationSets().size());
@Test public void testLoadPedigreeCatalog() throws Exception { QueryResult<Sample> sampleQueryResult = loader.loadSampleAnnotations(pedFile, null, sessionId); String variableSetId = sampleQueryResult.getResult().get(0).getAnnotationSets().get(0).getVariableSetId(); Query query = new Query(Constants.ANNOTATION, Constants.VARIABLE_SET + "=" + variableSetId + ";family=GB84"); QueryOptions options = new QueryOptions("limit", 2); QueryResult<Sample> allSamples = catalogManager.getSampleManager().get(studyId, query, options, sessionId); Assert.assertNotEquals(0, allSamples.getNumResults()); query = new Query(Constants.ANNOTATION, Constants.VARIABLE_SET + "=" + variableSetId + ";sex=2;Population=ITU"); QueryResult<Sample> femaleIta = catalogManager.getSampleManager().get(studyId, query, options, sessionId); Assert.assertNotEquals(0, femaleIta.getNumResults()); query = new Query(Constants.ANNOTATION, Constants.VARIABLE_SET + "=" + variableSetId + ";sex=1;Population=ITU"); QueryResult<Sample> maleIta = catalogManager.getSampleManager().get(studyId, query, options, sessionId); Assert.assertNotEquals(0, maleIta.getNumResults()); query = new Query(Constants.ANNOTATION, Constants.VARIABLE_SET + "=" + variableSetId + ";Population=ITU"); QueryResult<Sample> ita = catalogManager.getSampleManager().get(studyId, query, options, sessionId); Assert.assertNotEquals(0, ita.getNumResults()); Assert.assertEquals("Fail sample query", ita.getNumTotalResults(), maleIta.getNumTotalResults() + femaleIta.getNumTotalResults()); }
QueryResult<Sample> sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId1, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(1, sampleQueryResult.first().getAnnotationSets().size()); sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, sampleId2, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(1, sampleQueryResult.first().getAnnotationSets().size());