public static Document convertToStorageType(AdditionalAttribute attribute) { Document document = new Document(); document.putAll(attribute.getAttribute()); return document; }
private Map<String, AdditionalAttribute> getAdditionalAttributes(String[] variationFields, String[] variationFeatureFields) { Map<String, AdditionalAttribute> additionalAttributes = new HashMap<>(); AdditionalAttribute additionalAttribute = new AdditionalAttribute(); additionalAttribute.setAttribute(new HashMap<String, String>()); if ((variationFeatureFields[11] != null && !variationFeatureFields[11].equals("\\N"))) { additionalAttribute.getAttribute().put("ensemblValidationStatus", variationFeatureFields[11]); } additionalAttributes.put("ensemblAnnotation", additionalAttribute); return additionalAttributes; }
private void flagTranscriptAnnotationUpdated(Variant variant, String ensemblTranscriptId) { Map<String, AdditionalAttribute> additionalAttributesMap = variant.getAnnotation().getAdditionalAttributes(); if (additionalAttributesMap == null) { additionalAttributesMap = new HashMap<>(); AdditionalAttribute additionalAttribute = new AdditionalAttribute(); Map<String, String> transcriptsSet = new HashMap<>(); transcriptsSet.put(ensemblTranscriptId, null); additionalAttribute.setAttribute(transcriptsSet); additionalAttributesMap.put("phasedTranscripts", additionalAttribute); variant.getAnnotation().setAdditionalAttributes(additionalAttributesMap); } else if (additionalAttributesMap.get("phasedTranscripts") == null) { AdditionalAttribute additionalAttribute = new AdditionalAttribute(); Map<String, String> transcriptsSet = new HashMap<>(); transcriptsSet.put(ensemblTranscriptId, null); additionalAttribute.setAttribute(transcriptsSet); additionalAttributesMap.put("phasedTranscripts", additionalAttribute); } else { additionalAttributesMap.get("phasedTranscripts").getAttribute().put(ensemblTranscriptId, null); } }
private boolean transcriptAnnotationUpdated(Variant variant, String ensemblTranscriptId) { if (variant.getAnnotation().getAdditionalAttributes() != null && variant.getAnnotation().getAdditionalAttributes().get("phasedTranscripts") != null && variant.getAnnotation().getAdditionalAttributes().get("phasedTranscripts") .getAttribute().containsKey(ensemblTranscriptId)) { return true; } return false; }
/** * Updates VariantAnnotation objects in variantAnnotationList. * * @param variantList List of Variant objects. variantList and variantAnnotationList must contain variants in the * SAME order: variantAnnotation at position i must correspond to variant i */ public void run(List<Variant> variantList) { for (int i = 0; i < variantList.size(); i++) { Map<String, AdditionalAttribute> customAnnotation = getCustomAnnotation(variantList.get(i)); // Update only if there are annotations for this variant. customAnnotation may be empty if the variant // exists in the vcf but the info field does not contain any of the required attributes if (customAnnotation != null && customAnnotation.get(fileId).getAttribute().size() > 0) { VariantAnnotation variantAnnotation = variantList.get(i).getAnnotation(); if (variantAnnotation != null) { Map<String, AdditionalAttribute> additionalAttributes = variantAnnotation.getAdditionalAttributes(); if (additionalAttributes == null) { // variantList and variantAnnotationList must contain variants in the SAME order: variantAnnotation // at position i must correspond to variant i variantAnnotation.setAdditionalAttributes(customAnnotation); } else { additionalAttributes.putAll(customAnnotation); // variantList and variantAnnotationList must contain variants in the SAME order: variantAnnotation // at position i must correspond to variant i // variantAnnotation.setAdditionalAttributes(additionalAttributes); } } } } }
private void flagTranscriptAnnotationUpdated(Variant variant, String ensemblTranscriptId) { Map<String, AdditionalAttribute> additionalAttributesMap = variant.getAnnotation().getAdditionalAttributes(); if (additionalAttributesMap == null) { additionalAttributesMap = new HashMap<>(); AdditionalAttribute additionalAttribute = new AdditionalAttribute(); Map<String, String> transcriptsSet = new HashMap<>(); transcriptsSet.put(ensemblTranscriptId, null); additionalAttribute.setAttribute(transcriptsSet); additionalAttributesMap.put("phasedTranscripts", additionalAttribute); variant.getAnnotation().setAdditionalAttributes(additionalAttributesMap); } else if (additionalAttributesMap.get("phasedTranscripts") == null) { AdditionalAttribute additionalAttribute = new AdditionalAttribute(); Map<String, String> transcriptsSet = new HashMap<>(); transcriptsSet.put(ensemblTranscriptId, null); additionalAttribute.setAttribute(transcriptsSet); additionalAttributesMap.put("phasedTranscripts", additionalAttribute); } else { additionalAttributesMap.get("phasedTranscripts").getAttribute().put(ensemblTranscriptId, null); } }
private boolean transcriptAnnotationUpdated(Variant variant, String ensemblTranscriptId) { if (variant.getAnnotation().getAdditionalAttributes() != null && variant.getAnnotation().getAdditionalAttributes().get("phasedTranscripts") != null && variant.getAnnotation().getAdditionalAttributes().get("phasedTranscripts") .getAttribute().containsKey(ensemblTranscriptId)) { return true; } return false; }
&& variant.getAnnotation().getAdditionalAttributes().get(GROUP_NAME.key()) != null) { AdditionalAttribute additionalAttribute = variant.getAnnotation().getAdditionalAttributes().get(GROUP_NAME.key()); String sync = additionalAttribute.getAttribute().get(AdditionalAttributes.INDEX_SYNCHRONIZATION.key()); if (VariantStorageEngine.SyncStatus.SYNCHRONIZED.key().equals(sync)) { String indexedStudiesStr = additionalAttribute.getAttribute().get(AdditionalAttributes.INDEX_STUDIES.key()); if (StringUtils.isNotEmpty(indexedStudiesStr)) { String[] indexedStudies = indexedStudiesStr.split(",");
&& variant.getAnnotation().getAdditionalAttributes().get(GROUP_NAME.key()) != null) { AdditionalAttribute additionalAttribute = variant.getAnnotation().getAdditionalAttributes().get(GROUP_NAME.key()); String indexedStudies = additionalAttribute.getAttribute().get(INDEX_STUDIES.key());
try { String ensemblAnnotationJson = getEnsemblAnnotationJson(ensemblVariantAnnotation); additionalAttributes.get("ensemblAnnotation").getAttribute().put("annotation", ensemblAnnotationJson); } catch (JsonProcessingException e) { logger.warn("Variant {} annotation cannot be serialized to Json: {}", id, e.getMessage());
Put buildPut(VariantAnnotation variantAnnotation) { Map<PhoenixHelper.Column, ?> map = convert(variantAnnotation); byte[] bytesRowKey = null; if (variantAnnotation.getAdditionalAttributes() != null) { AdditionalAttribute additionalAttribute = variantAnnotation.getAdditionalAttributes().get(GROUP_NAME.key()); if (additionalAttribute != null) { String variantString = additionalAttribute .getAttribute() .get(VARIANT_ID.key()); if (StringUtils.isNotEmpty(variantString)) { bytesRowKey = generateVariantRowKey(new Variant(variantString)); } } } if (bytesRowKey == null) { bytesRowKey = VariantPhoenixKeyFactory.generateSimpleVariantRowKey( variantAnnotation.getChromosome(), variantAnnotation.getStart(), variantAnnotation.getReference(), variantAnnotation.getAlternate()); } Put put = new Put(bytesRowKey); for (PhoenixHelper.Column column : VariantPhoenixHelper.PRIMARY_KEY) { map.remove(column); } map.forEach((column, value) -> add(put, column, value)); return put; }
additionalAttribute.getAttribute().put(VariantField.AdditionalAttributes.RELEASE.key(), release); additionalAttribute.getAttribute().put(VariantField.AdditionalAttributes.INDEX_SYNCHRONIZATION.key(), syncStatus.key()); additionalAttribute.getAttribute().put(VariantField.AdditionalAttributes.INDEX_STUDIES.key(), studies.stream().map(Object::toString).collect(Collectors.joining(","))); additionalAttribute.getAttribute().put(VariantField.AdditionalAttributes.ANNOTATION_ID.key(), annotationId);
@Test public void testRelease() throws Exception { List<Variant> variants = query(new Query(), new QueryOptions()).getResult(); for (Variant variant : variants) { Integer minFileId = variant.getStudies().stream() .flatMap(s -> s.getFiles().stream()) .map(FileEntry::getFileId) .map(s -> s.substring(30, 35)) .map(Integer::valueOf) .min(Integer::compareTo) .orElse(0); assertTrue(minFileId > 0); int expectedRelease = (minFileId - 12877/*first file loaded*/) / 2/*each release contains 2 files*/ + 1/*base-1*/; int release = Integer.valueOf(variant.getAnnotation().getAdditionalAttributes().get("opencga").getAttribute().get("release")); assertEquals(expectedRelease, release); } }
public void checkAnnotationSnapshot(VariantStorageEngine variantStorageEngine, String annotationName, String expectedAnnotationName, String expectedId, Query query) throws Exception { int count = 0; for (VariantAnnotation annotation: variantStorageEngine.getAnnotation(annotationName, query, null).getResult()) { assertEquals("an id -- " + expectedId, annotation.getId()); // assertEquals("1", annotation.getAdditionalAttributes().get("opencga").getAttribute().get("release")); assertEquals(expectedAnnotationName, annotation.getAdditionalAttributes().get(GROUP_NAME.key()) .getAttribute().get(VariantField.AdditionalAttributes.ANNOTATION_ID.key())); count++; } assertEquals(count, variantStorageEngine.count(query).first().intValue()); }
String variantString = variantAnnotation.getAdditionalAttributes() .get(GROUP_NAME.key()) .getAttribute() .get(VARIANT_ID.key()); id = variantConverter.buildStorageId(new Variant(variantString));
.toString(); additionalAttribute.getAttribute().put(RELEASE.key(), release);
assertTrue(additionalAttributes.containsKey(annotKey)); AdditionalAttribute annot = additionalAttributes.get(annotKey); assertEquals("enhancer", annot.getAttribute().get("feature")); feat1++; } else if (variant.getChromosome().equals("22") && variant.getStart() >= 16073659 && variant.getStart() < 16083659) { assertTrue(additionalAttributes.containsKey(annotKey)); AdditionalAttribute annot = additionalAttributes.get(annotKey); assertEquals("promoter", annot.getAttribute().get("feature")); feat2++; } else if (variant.getChromosome().equals("22") && variant.getStart() >= 16083659 && variant.getStart() < 16093659) { assertTrue(additionalAttributes.containsKey(annotKey)); AdditionalAttribute annot = additionalAttributes.get(annotKey); assertEquals("other", annot.getAttribute().get("feature")); feat3++;
assertTrue(additionalAttributes.containsKey(annotKey)); AdditionalAttribute annot = additionalAttributes.get(annotKey); assertEquals("enhancer", annot.getAttribute().get("FEATURE")); feat1++; } else if (variant.getChromosome().equals("22") && variant.getStart() >= 16073659 && variant.getStart() < 16083659) { assertTrue(additionalAttributes.containsKey(annotKey)); AdditionalAttribute annot = additionalAttributes.get(annotKey); assertEquals("promoter", annot.getAttribute().get("FEATURE")); feat2++; } else if (variant.getChromosome().equals("22") && variant.getStart() >= 16083659 && variant.getStart() < 16093659) { assertTrue(additionalAttributes.containsKey(annotKey)); AdditionalAttribute annot = additionalAttributes.get(annotKey); assertEquals("other", annot.getAttribute().get("FEATURE")); feat3++; } else if (variant.getChromosome().equals("22") && variant.getStart() == 16050075) { assertTrue(additionalAttributes.containsKey(annotKey)); AdditionalAttribute annot = additionalAttributes.get(annotKey); assertEquals("specific", annot.getAttribute().get("FEATURE"));
assertTrue(additionalAttributes.containsKey(annotKey)); AdditionalAttribute annot = additionalAttributes.get(annotKey); assertEquals("Pos1", annot.getAttribute().get("name")); pos1++; } else if (variant.getChromosome().equals("22") && variant.getStart() >= 16073659 && variant.getStart() < 16083659) { assertTrue(additionalAttributes.containsKey(annotKey)); AdditionalAttribute annot = additionalAttributes.get(annotKey); assertEquals("Pos2", annot.getAttribute().get("name")); pos2++; } else if (variant.getChromosome().equals("22") && variant.getStart() >= 16083659 && variant.getStart() < 16093659) { assertTrue(additionalAttributes.containsKey(annotKey)); AdditionalAttribute annot = additionalAttributes.get(annotKey); assertEquals("Pos3", annot.getAttribute().get("name")); pos3++;
value = new AdditionalAttribute(map); value.getAttribute().put(VariantField.AdditionalAttributes.ANNOTATION_ID.key(), annotationIds.get(((Number) o).intValue())); return value;