private void mergeAnnotation(VariantAnnotation destination, VariantAnnotation origin) { if (origin != null) { destination.setId(origin.getId()); destination.setChromosome(origin.getChromosome()); destination.setStart(origin.getStart()); destination.setReference(origin.getReference()); destination.setAlternate(origin.getAlternate()); destination.setDisplayConsequenceType(origin.getDisplayConsequenceType()); destination.setConsequenceTypes(origin.getConsequenceTypes()); destination.setConservation(origin.getConservation()); destination.setGeneExpression(origin.getGeneExpression()); destination.setGeneTraitAssociation(origin.getGeneTraitAssociation()); destination.setGeneDrugInteraction(origin.getGeneDrugInteraction()); destination.setVariantTraitAssociation(origin.getVariantTraitAssociation()); destination.setFunctionalScore(origin.getFunctionalScore()); } }
private void mergeAnnotation(VariantAnnotation destination, VariantAnnotation origin) { destination.setChromosome(origin.getChromosome()); destination.setStart(origin.getStart()); destination.setReference(origin.getReference()); destination.setAlternate(origin.getAlternate()); if (annotatorSet.contains("variation")) { destination.setId(origin.getId()); } if (annotatorSet.contains("consequenceType")) { destination.setDisplayConsequenceType(origin.getDisplayConsequenceType()); destination.setConsequenceTypes(origin.getConsequenceTypes()); } if (annotatorSet.contains("conservation")) { destination.setConservation(origin.getConservation()); } // destination.setGeneExpression(origin.getGeneExpression()); // destination.setGeneTraitAssociation(origin.getGeneTraitAssociation()); if (annotatorSet.contains("populationFrequencies")) { destination.setPopulationFrequencies(origin.getPopulationFrequencies()); } // destination.setGeneDrugInteraction(origin.getGeneDrugInteraction()); if (annotatorSet.contains("clinical")) { destination.setVariantTraitAssociation(origin.getVariantTraitAssociation()); } if (annotatorSet.contains("functionalScore")) { destination.setFunctionalScore(origin.getFunctionalScore()); } }
currentAnnotation = new VariantAnnotation(); currentAnnotation.setChromosome(variantMap.get("chromosome")); currentAnnotation.setStart(Integer.valueOf(variantMap.get("start"))); currentAnnotation.setEnd(Integer.valueOf(variantMap.get("end"))); currentAnnotation.setReference(variantMap.get("reference")); currentAnnotation.setAlternate(variantMap.get("alternative")); currentAnnotation.setId(lineFields[12]); if(currentAnnotation.getConsequenceTypes()==null) { currentAnnotation.setConsequenceTypes(new ArrayList<ConsequenceType>()); currentAnnotation.getConsequenceTypes().add(consequenceType);
private void fixReference(List<VariantAnnotation> variantAnnotationList) throws RocksDBException { for (VariantAnnotation variantAnnotation : variantAnnotationList) { if (!variantAnnotation.getReference().isEmpty() && !variantAnnotation.getReference().equals("-")) { variantAnnotation.setReference(fastaIndexManager.query(variantAnnotation.getChromosome(), variantAnnotation.getStart(), variantAnnotation.getStart() + variantAnnotation.getReference().length() - 1)); } } }
/** * Checks whether a variant is valid. * * @param variantAnnotation Variant object to be checked. * @return true/false depending on whether 'variant' does contain valid values. Currently just a simple check of * reference/alternate attributes being strings of [A,C,G,T] of length >= 0 is performed to detect cases such as * 19:13318673:(CAG)4:(CAG)5 which are not currently supported by CellBase. Ref and alt alleles must be different * as well for the variant to be valid. Functionality of the method may be improved in the future. */ private boolean isValid(VariantAnnotation variantAnnotation) { return (variantAnnotation.getAlternate().matches(VARIANT_STRING_PATTERN) // && variantAnnotation.getReference().matches(VARIANT_STRING_PATTERN) && !variantAnnotation.getAlternate().equals(variantAnnotation.getReference())); }
if (variantAnnotation.getVariantTraitAssociation() != null && CollectionUtils.isEmpty(variantAnnotation.getTraitAssociation())) { List<EvidenceEntry> evidenceEntries = evidenceEntryConverter.convert(variantAnnotation.getVariantTraitAssociation()); variantAnnotation.setTraitAssociation(evidenceEntries); map.put(FULL_ANNOTATION, variantAnnotation.toString()); map.put(ANNOTATION_ID, annotationId); addNotNull(xrefs, variantAnnotation.getId()); List<ConsequenceType> consequenceTypes = variantAnnotation.getConsequenceTypes() == null ? Collections.emptyList() : variantAnnotation.getConsequenceTypes(); for (ConsequenceType consequenceType : consequenceTypes) { addNotNull(genes, consequenceType.getGeneName()); if (variantAnnotation.getVariantTraitAssociation() != null) { if (variantAnnotation.getVariantTraitAssociation().getCosmic() != null) { for (Cosmic cosmic : variantAnnotation.getVariantTraitAssociation().getCosmic()) { addNotNull(xrefs, cosmic.getMutationId()); if (variantAnnotation.getVariantTraitAssociation().getClinvar() != null) { for (ClinVar clinVar : variantAnnotation.getVariantTraitAssociation().getClinvar()) { addNotNull(xrefs, clinVar.getAccession()); if (CollectionUtils.isNotEmpty(variantAnnotation.getTraitAssociation())) { for (EvidenceEntry evidenceEntry : variantAnnotation.getTraitAssociation()) { if (evidenceEntry.getVariantClassification() != null) { ClinicalSignificance clinicalSignificance = evidenceEntry.getVariantClassification().getClinicalSignificance();
VariantAnnotation variantAnnotation = new VariantAnnotation(); variantAnnotation.setChromosome(variant.getChromosome()); variantAnnotation.setStart(variant.getStart()); variantAnnotation.setEnd(variant.getEnd()); variantAnnotation.setAlternate(variant.getAlternate()); variantAnnotation.setReference(variant.getReference()); Map<String, String> attribute = new HashMap<>(); attribute.put(RELEASE.key(), String.valueOf(variantSearchModel.getRelease())); variantAnnotation.setAdditionalAttributes(new HashMap<>()); variantAnnotation.getAdditionalAttributes().put(GROUP_NAME.key(), new AdditionalAttribute(attribute)); variantAnnotation.setXrefs(xrefs); variantAnnotation.setHgvs(new ArrayList<>()); variantAnnotation.setCytoband(new ArrayList<>()); variantAnnotation.setRepeat(new ArrayList<>()); for (String other : variantSearchModel.getOther()) { switch (fields[0]) { case "DCT": variantAnnotation.setDisplayConsequenceType(fields[1]); break; case "HGVS": variantAnnotation.getHgvs().add(fields[1]); break; case "CB": .setStart(Integer.parseInt(fields[3])).setEnd(Integer.parseInt(fields[4]))
protected void logUpdate(List<VariantAnnotation> list) { if (progressLogger != null) { progressLogger.increment(list.size(), () -> { VariantAnnotation annotation = list.get(list.size() - 1); return ", up to position " + annotation.getChromosome() + ":" + annotation.getStart() + ":" + annotation.getReference() + ":" + annotation.getAlternate(); }); } }
va = new VariantAnnotation(); va.setConsequenceTypes(consequenceTypes); Integer displaySO = object.getInteger(DISPLAY_CONSEQUENCE_TYPE_FIELD); if (displaySO != null) { va.setDisplayConsequenceType(ConsequenceTypeMappings.accessionToTerm.get(displaySO)); va.setHgvs(getDefault(object, HGVS_FIELD, Collections.emptyList())); getDefault(c, CYTOBAND_END_FIELD, 0) )); va.setCytoband(cytobands); addScore(object, conservedRegionScores, PHYLOP, CONSERVED_REGION_PHYLOP_FIELD); addScore(object, conservedRegionScores, GERP, CONSERVED_REGION_GERP_FIELD); va.setConservation(conservedRegionScores); va.setPopulationFrequencies(populationFrequencies); va.setGeneTraitAssociation(geneTraitAssociations); va.setGeneDrugInteraction(drugs); String source = xref.getString(XREF_SOURCE_FIELD); if (source.equals(DB_SNP)) { va.setId(id); va.setXrefs(xrefs);
variantAnnotation = new VariantAnnotation(); normalizedVariantList.get(i).setAnnotation(variantAnnotation); } else { variantAnnotation.setChromosome(normalizedVariantList.get(i).getChromosome()); variantAnnotation.setStart(normalizedVariantList.get(i).getStart()); variantAnnotation.setReference(normalizedVariantList.get(i).getReference()); variantAnnotation.setAlternate(normalizedVariantList.get(i).getAlternate()); variantAnnotation.setHgvs(hgvsCalculator.run(normalizedVariantList.get(i), variantGeneList, false)); } catch (VariantNormalizerException e) { logger.error("Unable to normalize variant {}. Leaving empty HGVS.", List<ConsequenceType> consequenceTypeList = getConsequenceTypeList(normalizedVariantList.get(i), variantGeneList, true, QueryOptions.empty()); variantAnnotation.setConsequenceTypes(consequenceTypeList); if (phased) { checkAndAdjustPhasedConsequenceTypes(normalizedVariantList.get(i), variantBuffer); .setDisplayConsequenceType(getMostSevereConsequenceType(normalizedVariantList.get(i) .getAnnotation().getConsequenceTypes())); } catch (UnsupportedURLVariantFormat e) { logger.error("Consequence type was not calculated for variant {}. Unrecognised variant format." + " Leaving an empty consequence type list.", normalizedVariantList.get(i).toString()); variantAnnotation.setConsequenceTypes(Collections.emptyList()); } catch (Exception e) { logger.error("Unhandled error when calculating consequence type for variant {}. Leaving an empty" + " consequence type list.", normalizedVariantList.get(i).toString()); e.printStackTrace();
if (variantAnnotation.getId() != null && !variantAnnotation.getId().isEmpty()) { xrefs.add(convertXrefToStorage(variantAnnotation.getId(), DB_SNP)); if (variantAnnotation.getConsequenceTypes() != null) { Set<String> gnSo = new HashSet<>(); List<ConsequenceType> consequenceTypes = variantAnnotation.getConsequenceTypes(); for (ConsequenceType consequenceType : consequenceTypes) { Document ct = new Document(); if (variantAnnotation.getDisplayConsequenceType() != null) { Integer accession = ConsequenceTypeMappings.termToAccession.get(variantAnnotation.getDisplayConsequenceType()); document.put(DISPLAY_CONSEQUENCE_TYPE_FIELD, accession); if (variantAnnotation.getCytoband() != null && !variantAnnotation.getCytoband().isEmpty()) { List<Document> cytobands = new ArrayList<>(variantAnnotation.getCytoband().size()); for (Cytoband cytoband : variantAnnotation.getCytoband()) { Document d = new Document(); putNotNull(d, CYTOBAND_STAIN_FIELD, cytoband.getStain()); putNotNull(document, HGVS_FIELD, variantAnnotation.getHgvs()); if (variantAnnotation.getConservation() != null) { List<Document> conservedRegionScores = new LinkedList<>(); for (Score score : variantAnnotation.getConservation()) { if (score != null) { if (score.getSource().equals(PHYLOP)) { if (variantAnnotation.getGeneTraitAssociation() != null) { List<Document> geneTraitAssociations = new LinkedList<>();
if (variantAnnotation.getAdditionalAttributes() != null && variantAnnotation.getAdditionalAttributes().get(GROUP_NAME.key()) != null) { String releaseStr = variantAnnotation.getAdditionalAttributes().get(GROUP_NAME.key()).getAttribute().get(RELEASE.key()); if (variantAnnotation.getCytoband() != null) { for (Cytoband cytoband : variantAnnotation.getCytoband()) { xrefs.add(cytoband.getChromosome() + cytoband.getName()); if (variantAnnotation.getXrefs() != null && !variantAnnotation.getXrefs().isEmpty()) { variantAnnotation.getXrefs().forEach(xref -> { if (xref != null) { xrefs.add(xref.getId()); if (ListUtils.isNotEmpty(variantAnnotation.getHgvs())) { xrefs.addAll(variantAnnotation.getHgvs()); List<ConsequenceType> consequenceTypes = variantAnnotation.getConsequenceTypes(); List<String> other = new ArrayList<>(); if (consequenceTypes != null) { if (variantAnnotation.getPopulationFrequencies() != null) { Map<String, Float> populationFrequencies = new HashMap<>(); for (PopulationFrequency populationFrequency : variantAnnotation.getPopulationFrequencies()) { populationFrequencies.put("popFreq" + VariantSearchUtils.FIELD_SEPARATOR + populationFrequency.getStudy() + VariantSearchUtils.FIELD_SEPARATOR + populationFrequency.getPopulation(), if (variantAnnotation.getConservation() != null) { for (Score score : variantAnnotation.getConservation()) { switch (score.getSource()) {
public static VariantAnnotationProto.VariantAnnotation createVariantAnnotation(VariantAnnotation annotation) { VariantAnnotationProto.VariantAnnotation.Builder builder = VariantAnnotationProto.VariantAnnotation.newBuilder() .setChromosome(annotation.getChromosome()) .setStart(annotation.getStart()) .setReference(annotation.getReference()) .setAlternate(annotation.getAlternate()) .setId(annotation.getId()); List<Xref> xrefs = annotation.getXrefs(); if (xrefs != null) { for (Xref xref : xrefs) { List<String> hgvs = annotation.getHgvs(); if (hgvs != null && hgvs.size() > 0) { builder.addAllHgvs(hgvs); List<ConsequenceType> consequenceTypes = annotation.getConsequenceTypes(); if (consequenceTypes != null) { for (ConsequenceType type : consequenceTypes) { List<PopulationFrequency> populationFrequencies = annotation.getPopulationFrequencies(); if (populationFrequencies != null) { for (PopulationFrequency pf: populationFrequencies) { List<Score> conservation = annotation.getConservation(); if (conservation != null) { for (Score score: conservation) {
return null; } else { variantAnnotation = new VariantAnnotation(); if (variantAnnotation.getConsequenceTypes() == null) { variantAnnotation.setConsequenceTypes(Collections.emptyList()); if (variantAnnotation.getTraitAssociation() == null) { variantAnnotation.setTraitAssociation(Collections.emptyList()); } else { for (EvidenceEntry evidenceEntry : variantAnnotation.getTraitAssociation()) { if (evidenceEntry.getSubmissions() == null) { evidenceEntry.setSubmissions(Collections.emptyList()); if (variantAnnotation.getVariantTraitAssociation() != null && CollectionUtils.isEmpty(variantAnnotation.getTraitAssociation())) { List<EvidenceEntry> evidenceEntries = traitAssociationConverter.convert(variantAnnotation.getVariantTraitAssociation()); variantAnnotation.setTraitAssociation(evidenceEntries); if (variantAnnotation.getAdditionalAttributes() == null) { variantAnnotation.setAdditionalAttributes(new HashMap<>()); if (variantAnnotation.getAdditionalAttributes().containsKey(GROUP_NAME.key())) { additionalAttribute = variantAnnotation.getAdditionalAttributes().get(GROUP_NAME.key()); } else { additionalAttribute = new AdditionalAttribute(new HashMap<>()); variantAnnotation.getAdditionalAttributes().put(GROUP_NAME.key(), additionalAttribute);
for (int i = 0; i < variant.getAnnotation().getConsequenceTypes().size(); i++) { ConsequenceType consequenceType = variant.getAnnotation().getConsequenceTypes().get(i); for (int j = 0; j < annotations.size(); j++) { switch (annotations.get(j)) { if (variant.getAnnotation().getConservation() != null) { List<Double> phastCons = variant.getAnnotation().getConservation().stream() .filter(t -> t.getSource().equalsIgnoreCase("phastCons")) .map(Score::getScore) if (variant.getAnnotation().getConservation() != null) { List<Double> phylop = variant.getAnnotation().getConservation().stream() .filter(t -> t.getSource().equalsIgnoreCase("phylop")) .map(Score::getScore) List<PopulationFrequency> populationFrequencies = variant.getAnnotation().getPopulationFrequencies(); if (populationFrequencies != null) { stringBuilder.append(populationFrequencies.stream() if (variant.getAnnotation().getVariantTraitAssociation() != null && variant.getAnnotation().getVariantTraitAssociation().getClinvar() != null) { stringBuilder.append(variant.getAnnotation().getVariantTraitAssociation().getClinvar().stream() .map(ClinVar::getTraits).flatMap(Collection::stream) .collect(Collectors.joining(","))); if (variant.getAnnotation().getVariantTraitAssociation() != null && variant.getAnnotation().getVariantTraitAssociation().getCosmic() != null) { stringBuilder.append(variant.getAnnotation().getVariantTraitAssociation().getCosmic().stream() .map(Cosmic::getPrimarySite)
private Pair<VariantAnnotationDiff, VariantAnnotationDiff> compare(VariantAnnotation variant1, VariantAnnotation variant2) { Pair<VariantAnnotationDiff, VariantAnnotationDiff> result = Pair.of(new VariantAnnotationDiff(), new VariantAnnotationDiff()); compareSequenceOntologyTerms(result, variant1.getConsequenceTypes(), variant2.getConsequenceTypes()); return result; }
if (preferredVariant != null) { if (preferredVariant.getIds().size() > 0) { variantAnnotationResultList.get(i).first().setId(preferredVariant.getIds().get(0)); && preferredVariant.getAnnotation().getAdditionalAttributes() != null && preferredVariant.getAnnotation().getAdditionalAttributes().size() > 0) { variantAnnotationResultList.get(i).first() .setAdditionalAttributes(preferredVariant.getAnnotation().getAdditionalAttributes()); .setPopulationFrequencies(preferredVariant.getAnnotation().getPopulationFrequencies());
protected static VariantAnnotation newVariantAnnotation(Variant variant) { VariantAnnotation va; va = new VariantAnnotation(); va.setChromosome(variant.getChromosome()); va.setReference(variant.getReference()); va.setAlternate(variant.getAlternate()); va.setStart(variant.getStart()); va.setEnd(variant.getEnd()); return va; }
for (ConsequenceType consequenceType: variant.getAnnotation().getConsequenceTypes()) { for (SequenceOntologyTerm so: consequenceType.getSequenceOntologyTerms()) { for (EvidenceEntry evidenceEntry : variant.getAnnotation().getTraitAssociation()) { if ("clinvar".equals(evidenceEntry.getSource().getName()) && (evidenceEntry.getVariantClassification().getClinicalSignificance() == org.opencb.biodata.models.variant.avro.ClinicalSignificance.pathogenic && ListUtils.isNotEmpty(variant.getAnnotation().getFunctionalScore()) && ListUtils.isNotEmpty(variant.getAnnotation().getConservation())) { double sift = Double.MIN_VALUE; double polyphen = Double.MIN_VALUE; for (Score score: variant.getAnnotation().getFunctionalScore()) { if ("cadd_scaled".equals(score.getSource())) { scaledCadd = score.getScore(); for (Score score: variant.getAnnotation().getConservation()) { if ("gerp".equals(score.getSource())) { gerp = score.getScore(); if (ListUtils.isEmpty(variant.getAnnotation().getPopulationFrequencies())) { acmg.add("PM2"); } else { boolean above5 = false; boolean hasPopFreq = false; for (PopulationFrequency populationFrequency: variant.getAnnotation().getPopulationFrequencies()) { for (EvidenceEntry evidenceEntry : variant.getAnnotation().getTraitAssociation()) { if ("clinvar".equals(evidenceEntry.getSource().getName())
} else if (cacheVariant.getAnnotation() != null && cacheVariant.getAnnotation().getChromosome() == null) { mustSearchVariation.get(i).setAnnotation(new VariantAnnotation()); .setPopulationFrequencies(cacheVariant.getAnnotation().getPopulationFrequencies()); mustRunAnnotationPositions.add(mustSearchVariationPositions.get(i)); mustRunAnnotation.add(mustSearchVariation.get(i));