if (evidenceEntry1.getSource() != null ? !evidenceEntry1.getSource().equals(evidenceEntry2.getSource()) : evidenceEntry2.getSource() != null) { return false; if (evidenceEntry1.getSomaticInformation() != null ? !evidenceEntry1.getSomaticInformation().equals(evidenceEntry2.getSomaticInformation()) : evidenceEntry2.getSomaticInformation() != null) { return false; if (evidenceEntry1.getId() != null ? !evidenceEntry1.getId().equals(evidenceEntry2.getId()) : evidenceEntry2.getId() != null) { return false; if (evidenceEntry1.getAlleleOrigin() != null ? !evidenceEntry1.getAlleleOrigin().equals(evidenceEntry2.getAlleleOrigin()) : evidenceEntry2.getAlleleOrigin() != null) { return false; if (evidenceEntry1.getGenomicFeatures() != null ? !evidenceEntry1.getGenomicFeatures().equals(evidenceEntry2.getGenomicFeatures()) : evidenceEntry2.getGenomicFeatures() != null) { return false; if (evidenceEntry1.getAdditionalProperties() != null ? !evidenceEntry1.getAdditionalProperties().equals(evidenceEntry2.getAdditionalProperties()) : evidenceEntry2.getAdditionalProperties() != null) { return false;
private List<String> getBibliography(EvidenceEntry evidenceEntry) { if (evidenceEntry.getBibliography() == null) { List<String> bibliography = new ArrayList<>(1); evidenceEntry.setBibliography(bibliography); } return evidenceEntry.getBibliography(); }
private ClinVar parseClinvar(EvidenceEntry evidenceEntry) { String clinicalSignificance = getAdditionalProperty(evidenceEntry, CLINICAL_SIGNIFICANCE_IN_SOURCE_FILE); List<String> traitList = null; if (evidenceEntry.getHeritableTraits() != null) { traitList = evidenceEntry .getHeritableTraits() .stream() .map((heritableTrait) -> heritableTrait.getTrait()) .collect(Collectors.toList()); } List<String> geneNameList = null; if (evidenceEntry.getGenomicFeatures() != null) { geneNameList = evidenceEntry .getGenomicFeatures() .stream() .map((genomicFeature) -> genomicFeature.getXrefs().get(SYMBOL)) .collect(Collectors.toList()); } String reviewStatus = getAdditionalProperty(evidenceEntry, REVIEW_STATUS_IN_SOURCE_FILE); return new ClinVar(evidenceEntry.getId(), clinicalSignificance, traitList, geneNameList, reviewStatus); }
if (evidenceEntry.getSubmissions() == null) { evidenceEntry.setSubmissions(Collections.emptyList()); if (evidenceEntry.getHeritableTraits() == null) { evidenceEntry.setHeritableTraits(Collections.emptyList()); } else { for (HeritableTrait heritableTrait : evidenceEntry.getHeritableTraits()) { if (heritableTrait.getInheritanceMode() == null) { heritableTrait.setInheritanceMode(ModeOfInheritance.unknown); if (evidenceEntry.getGenomicFeatures() == null) { evidenceEntry.setGenomicFeatures(Collections.emptyList()); if (evidenceEntry.getAdditionalProperties() == null) { evidenceEntry.setAdditionalProperties(Collections.emptyList()); if (evidenceEntry.getEthnicity() == null) { evidenceEntry.setEthnicity(EthnicCategory.Z); if (evidenceEntry.getBibliography() == null) { evidenceEntry.setBibliography(Collections.emptyList()); if (evidenceEntry.getSomaticInformation() != null) { if (evidenceEntry.getSomaticInformation().getSampleSource() == null) { evidenceEntry.getSomaticInformation().setSampleSource(""); if (evidenceEntry.getSomaticInformation().getTumourOrigin() == null) { evidenceEntry.getSomaticInformation().setTumourOrigin("");
private EvidenceEntry buildCosmic(String line) { String[] fields = line.split("\t", -1); // -1 argument make split return also empty fields EvidenceSource evidenceSource = new EvidenceSource(EtlCommons.COSMIC_DATA, null, null); SomaticInformation somaticInformation = getSomaticInformation(fields); List<GenomicFeature> genomicFeatureList = getGenomicFeature(fields); List<Property> additionalProperties = Collections.singletonList(new Property(null, MUTATION_SOMATIC_STATUS_IN_SOURCE_FILE, fields[mutationSomaticStatusColumn])); List<String> bibliography = getBibliography(fields[pubmedPMIDColumn]); EvidenceEntry evidenceEntry = new EvidenceEntry(evidenceSource, Collections.emptyList(), somaticInformation, null, fields[ID_COLUMN], null, getAlleleOriginList(Collections.singletonList(fields[mutationSomaticStatusColumn])), Collections.emptyList(), genomicFeatureList, null, null, null, null, EthnicCategory.Z, null, null, null, additionalProperties, bibliography); return evidenceEntry; }
private Cosmic parseCosmic(EvidenceEntry evidenceEntry) { String primarySite = null; String siteSubtype = null; String primaryHistology = null; String histologySubtype = null; String sampleSource = null; String tumourOrigin = null; if (evidenceEntry.getSomaticInformation() != null) { primarySite = evidenceEntry.getSomaticInformation().getPrimarySite(); siteSubtype = evidenceEntry.getSomaticInformation().getSiteSubtype(); primaryHistology = evidenceEntry.getSomaticInformation().getPrimaryHistology(); histologySubtype = evidenceEntry.getSomaticInformation().getHistologySubtype(); sampleSource = evidenceEntry.getSomaticInformation().getSampleSource(); tumourOrigin = evidenceEntry.getSomaticInformation().getTumourOrigin(); } return new Cosmic(evidenceEntry.getId(), primarySite, siteSubtype, primaryHistology, histologySubtype, sampleSource, tumourOrigin, parseGeneName(evidenceEntry), getAdditionalProperty(evidenceEntry, MUTATION_SOMATIC_STATUS_IN_SOURCE_FILE)); }
private String parseGeneName(EvidenceEntry evidenceEntry) { if (evidenceEntry.getGenomicFeatures() != null && !evidenceEntry.getGenomicFeatures().isEmpty() && evidenceEntry.getGenomicFeatures().get(0).getXrefs() != null) { // There may be more than one genomic feature for cosmic evidence entries. However, the actual gene symbol // is expected to be found at index 0. return evidenceEntry.getGenomicFeatures().get(0).getXrefs().get(SYMBOL); } return null; }
private String getAdditionalProperty(EvidenceEntry evidenceEntry, String name) { if (evidenceEntry.getAdditionalProperties() != null) { for (Property property : evidenceEntry.getAdditionalProperties()) { if (name.equals(property.getName())) { return property.getValue(); } } } return null; } }
if ("clinvar".equals(evidenceEntry.getSource().getName()) && (evidenceEntry.getVariantClassification().getClinicalSignificance() == org.opencb.biodata.models.variant.avro.ClinicalSignificance.pathogenic || evidenceEntry.getVariantClassification().getClinicalSignificance() == org.opencb.biodata.models.variant.avro.ClinicalSignificance.likely_pathogenic)) { acmg.add("PS1"); } else { if ("clinvar".equals(evidenceEntry.getSource().getName()) && (evidenceEntry.getVariantClassification().getClinicalSignificance() == org.opencb.biodata.models.variant.avro.ClinicalSignificance.benign || evidenceEntry.getVariantClassification().getClinicalSignificance() == org.opencb.biodata.models.variant.avro.ClinicalSignificance.likely_benign)) { acmg.add("BP6"); } else if ("clinvar".equals(evidenceEntry.getSource().getName()) && (evidenceEntry.getVariantClassification().getClinicalSignificance() == org.opencb.biodata.models.variant.avro.ClinicalSignificance.pathogenic || evidenceEntry.getVariantClassification().getClinicalSignificance() == org.opencb.biodata.models.variant.avro.ClinicalSignificance.likely_pathogenic)) { acmg.add("PP5");
private VariantTraitAssociation convertToVariantTraitAssociation(List<EvidenceEntry> traitAssociation) { List<ClinVar> clinvarList = new ArrayList<>(); List<Cosmic> cosmicList = new ArrayList<>(traitAssociation.size()); for (EvidenceEntry evidenceEntry : traitAssociation) { switch (evidenceEntry.getSource().getName()) { case CLINVAR: clinvarList.add(parseClinvar(evidenceEntry)); break; case COSMIC: cosmicList.add(parseCosmic(evidenceEntry)); break; default: break; } } return new VariantTraitAssociation(clinvarList, null, cosmicList); }
List<String> bibliography = parseBibliography(fields, references, isGermline); EvidenceEntry evidenceEntry = buildEvidenceEntry(fields, isGermline); evidenceEntry.setBibliography(bibliography); evidenceEntryList.add(evidenceEntry);
if (evidenceEntry.getSubmissions() == null) { evidenceEntry.setSubmissions(Collections.emptyList()); if (evidenceEntry.getHeritableTraits() == null) { evidenceEntry.setHeritableTraits(Collections.emptyList()); } else { for (HeritableTrait heritableTrait : evidenceEntry.getHeritableTraits()) { if (heritableTrait.getInheritanceMode() == null) { heritableTrait.setInheritanceMode(ModeOfInheritance.unknown); if (evidenceEntry.getGenomicFeatures() == null) { evidenceEntry.setGenomicFeatures(Collections.emptyList()); if (evidenceEntry.getAdditionalProperties() == null) { evidenceEntry.setAdditionalProperties(Collections.emptyList()); if (evidenceEntry.getEthnicity() == null) { evidenceEntry.setEthnicity(EthnicCategory.Z); if (evidenceEntry.getBibliography() == null) { evidenceEntry.setBibliography(Collections.emptyList()); if (evidenceEntry.getSomaticInformation() != null) { if (evidenceEntry.getSomaticInformation().getSampleSource() == null) { evidenceEntry.getSomaticInformation().setSampleSource(""); if (evidenceEntry.getSomaticInformation().getTumourOrigin() == null) { evidenceEntry.getSomaticInformation().setTumourOrigin("");
evidenceEntry = new EvidenceEntry(evidenceSource, null, null, URL_PREFIX + (String) map.get(HGVS), null, null, null, Collections.singletonList(heritableTrait), genomicFeatureList, variantClassification, null, null, null, null, null, null, null,
private Cosmic parseCosmic(EvidenceEntry evidenceEntry) { String primarySite = null; String siteSubtype = null; String primaryHistology = null; String histologySubtype = null; String sampleSource = null; String tumourOrigin = null; if (evidenceEntry.getSomaticInformation() != null) { primarySite = evidenceEntry.getSomaticInformation().getPrimarySite(); siteSubtype = evidenceEntry.getSomaticInformation().getSiteSubtype(); primaryHistology = evidenceEntry.getSomaticInformation().getPrimaryHistology(); histologySubtype = evidenceEntry.getSomaticInformation().getHistologySubtype(); sampleSource = evidenceEntry.getSomaticInformation().getSampleSource(); tumourOrigin = evidenceEntry.getSomaticInformation().getTumourOrigin(); } return new Cosmic(evidenceEntry.getId(), primarySite, siteSubtype, primaryHistology, histologySubtype, sampleSource, tumourOrigin, parseGeneName(evidenceEntry), getAdditionalProperty(evidenceEntry, MUTATION_SOMATIC_STATUS_IN_SOURCE_FILE)); }
private String parseGeneName(EvidenceEntry evidenceEntry) { if (evidenceEntry.getGenomicFeatures() != null && !evidenceEntry.getGenomicFeatures().isEmpty() && evidenceEntry.getGenomicFeatures().get(0).getXrefs() != null) { // There may be more than one genomic feature for cosmic evidence entries. However, the actual gene symbol // is expected to be found at index 0. return evidenceEntry.getGenomicFeatures().get(0).getXrefs().get(SYMBOL); } return null; }
private String getAdditionalProperty(EvidenceEntry evidenceEntry, String name) { if (evidenceEntry.getAdditionalProperties() != null) { for (Property property : evidenceEntry.getAdditionalProperties()) { if (name.equals(property.getName())) { return property.getValue(); } } } return null; } }
private VariantTraitAssociation convertToVariantTraitAssociation(List<EvidenceEntry> traitAssociation) { List<ClinVar> clinvarList = new ArrayList<>(); List<Cosmic> cosmicList = new ArrayList<>(traitAssociation.size()); for (EvidenceEntry evidenceEntry : traitAssociation) { switch (evidenceEntry.getSource().getName()) { case CLINVAR: clinvarList.add(parseClinvar(evidenceEntry)); break; case COSMIC: cosmicList.add(parseCosmic(evidenceEntry)); break; default: break; } } return new VariantTraitAssociation(clinvarList, null, cosmicList); }
} else { for (EvidenceEntry evidenceEntry : variantAnnotation.getTraitAssociation()) { if (evidenceEntry.getSubmissions() == null) { evidenceEntry.setSubmissions(Collections.emptyList()); if (evidenceEntry.getHeritableTraits() == null) { evidenceEntry.setHeritableTraits(Collections.emptyList()); if (evidenceEntry.getEthnicity() == null) { evidenceEntry.setEthnicity(EthnicCategory.Z); if (evidenceEntry.getAdditionalProperties() == null) { evidenceEntry.setAdditionalProperties(Collections.emptyList()); if (evidenceEntry.getBibliography() == null) { evidenceEntry.setBibliography(Collections.emptyList()); if (evidenceEntry.getGenomicFeatures() == null) { evidenceEntry.setGenomicFeatures(Collections.emptyList());
private ClinVar parseClinvar(EvidenceEntry evidenceEntry) { String clinicalSignificance = getAdditionalProperty(evidenceEntry, CLINICAL_SIGNIFICANCE_IN_SOURCE_FILE); List<String> traitList = null; if (evidenceEntry.getHeritableTraits() != null) { traitList = evidenceEntry .getHeritableTraits() .stream() .map((heritableTrait) -> heritableTrait.getTrait()) .collect(Collectors.toList()); } List<String> geneNameList = null; if (evidenceEntry.getGenomicFeatures() != null) { geneNameList = evidenceEntry .getGenomicFeatures() .stream() .map((genomicFeature) -> genomicFeature.getXrefs().get(SYMBOL)) .collect(Collectors.toList()); } String reviewStatus = getAdditionalProperty(evidenceEntry, REVIEW_STATUS_IN_SOURCE_FILE); return new ClinVar(evidenceEntry.getId(), clinicalSignificance, traitList, geneNameList, reviewStatus); }
private void addNewEntry(VariantAnnotation variantAnnotation, EvidenceEntry evidenceEntry) { List<EvidenceEntry> evidenceEntryList = variantAnnotation.getTraitAssociation(); // There are cosmic records which share all the fields but the bibliography. In some occassions (COSM12600) // the redundancy is such that the document becomes much bigger than 16MB and cannot be loaded into MongoDB. // This merge reduces redundancy. int i = 0; boolean merged = false; while (i < evidenceEntryList.size() && !merged) { if (sameSomaticDocument(evidenceEntryList.get(i), evidenceEntry)) { if (evidenceEntryList.get(i).getBibliography() != null) { if (evidenceEntry.getBibliography() != null) { Set<String> bibliographySet = new HashSet<>(evidenceEntryList.get(i).getBibliography()); bibliographySet.addAll(new HashSet<>(evidenceEntry.getBibliography())); evidenceEntryList.get(i).setBibliography(new ArrayList<>(bibliographySet)); } } else { evidenceEntryList.get(i).setBibliography(evidenceEntry.getBibliography()); } merged = true; } i++; } if (!merged) { evidenceEntryList.add(evidenceEntry); } }