Skip to content

Commit

Permalink
lib: catch exceptions when parsing ClinVar file, #TASK-6347
Browse files Browse the repository at this point in the history
On branch TASK-6347
Changes to be committed:
	modified:   cellbase-lib/src/main/java/org/opencb/cellbase/lib/builders/clinical/variant/ClinVarIndexer.java
  • Loading branch information
jtarraga committed Jun 12, 2024
1 parent 9b4e446 commit 9b91471
Showing 1 changed file with 34 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ private void printSummary() {
}

private boolean updateRocksDB(SequenceLocation sequenceLocation, String variationId, String[] lineFields,
String mateVariantString, Map<String, EFO> traitsToEfoTermsMap)
String mateVariantString, Map<String, EFO> traitsToEfoTermsMap)
throws RocksDBException, IOException {
// More than one variant being returned from the normalisation process would mean it's and MNV which has been
// decomposed
Expand Down Expand Up @@ -266,13 +266,34 @@ private boolean updateRocksDB(AlleleLocationData alleleLocationData, PublicSetTy
}

// parse RCVs
String accession = publicSet.getReferenceClinVarAssertion().getClinVarAccession().getAcc();
String clinicalSignficanceDescription = publicSet.getReferenceClinVarAssertion()
.getClinicalSignificance()
.getDescription();
String reviewStatusName = publicSet.getReferenceClinVarAssertion().getClinicalSignificance()
.getReviewStatus().name();
List<ObservationSet> getObservedIn = publicSet.getReferenceClinVarAssertion().getObservedIn();
String accession = null;
try {
accession = publicSet.getReferenceClinVarAssertion().getClinVarAccession().getAcc();
} catch (Exception e) {
logger.warn("Error getting accession\n" + StringUtils.join(e.getStackTrace(), "\n"));
}
String clinicalSignficanceDescription = null;
try {
clinicalSignficanceDescription = publicSet.getReferenceClinVarAssertion()
.getClinicalSignificance()
.getDescription();
} catch (Exception e) {
logger.warn("Error getting clinical Significance description\n" + StringUtils.join(e.getStackTrace(), "\n"));
}
String reviewStatusName = null;
try {
reviewStatusName = publicSet.getReferenceClinVarAssertion().getClinicalSignificance()
.getReviewStatus().name();
} catch (Exception e) {
logger.warn("Error getting review status name\n" + StringUtils.join(e.getStackTrace(), "\n"));
}
List<ObservationSet> getObservedIn = null;
try {
getObservedIn = publicSet.getReferenceClinVarAssertion().getObservedIn();
} catch (Exception e) {
logger.warn("Error getting observed in\n" + StringUtils.join(e.getStackTrace(), "\n"));
}

addNewEntries(variantAnnotation, publicSet, alleleLocationData.getAlleleId(), mateVariantString,
clinicalHaplotypeString, traitsToEfoTermsMap, accession, clinicalSignficanceDescription,
reviewStatusName, getObservedIn);
Expand Down Expand Up @@ -388,7 +409,7 @@ private void addNewEntries(VariantAnnotation variantAnnotation, PublicSetType pu
Map<String, EFO> traitsToEfoTermsMap, String accession,
String clinicalSignficanceDescription, String reviewStatusName,
List<ObservationSet> getObservedIn)
throws JsonProcessingException {
throws JsonProcessingException {

List<Property> additionalProperties = new ArrayList<>(3);
EvidenceSource evidenceSource = new EvidenceSource(EtlCommons.CLINVAR_DATA, CLINVAR_VERSION, CLINVAR_DATE);
Expand Down Expand Up @@ -544,7 +565,7 @@ private ModeOfInheritance getModeOfInheritance(String modeOfInheritance) {
private List<GenomicFeature> getGenomicFeature(PublicSetType publicSet, String alleleId) {
if (publicSet.getReferenceClinVarAssertion().getMeasureSet() != null) {
return getGenomicFeature(publicSet.getReferenceClinVarAssertion().getMeasureSet());
// No measureSet means there must be genotypeSet
// No measureSet means there must be genotypeSet
} else if (publicSet.getReferenceClinVarAssertion().getGenotypeSet() != null) {
for (MeasureSetType measureSet : publicSet.getReferenceClinVarAssertion().getGenotypeSet().getMeasureSet()) {
if (measureSet.getMeasure() != null) {
Expand Down Expand Up @@ -596,7 +617,7 @@ private List<HeritableTrait> getHeritableTrait(PublicSetType publicSet, Map<Stri
// root of the ReferenceClinvarAssertion rather than for each trait
ModeOfInheritance modeOfInheritance
= getInheritanceModel(publicSet.getReferenceClinVarAssertion().getAttributeSet(),
sourceInheritableTraitMap);
sourceInheritableTraitMap);

for (TraitType trait : publicSet.getReferenceClinVarAssertion().getTraitSet().getTrait()) {
String traitName = getTraitName(trait, publicSet);
Expand Down Expand Up @@ -649,14 +670,14 @@ private String getTraitName(TraitType trait, PublicSetType publicSet) {
// Found preferred name
if (i < trait.getName().size()) {
return trait.getName().get(i).getElementValue().getValue();
// No preferred name indicated (e.g. RCV000013735 version Jan 2020); arbitrarily return first one
// No preferred name indicated (e.g. RCV000013735 version Jan 2020); arbitrarily return first one
} else if (trait.getName().size() > 0) {
logger.warn("ClinVar record found "
+ publicSet.getReferenceClinVarAssertion().getClinVarAccession().getAcc()
+ " with no preferred trait provided. Arbitrarily selecting first one: {}", trait.getName()
.get(0).getElementValue().getValue());
return trait.getName().get(0).getElementValue().getValue();
// No trait name provided at all
// No trait name provided at all
} else {
throw new IllegalArgumentException("ClinVar record found "
+ publicSet.getReferenceClinVarAssertion().getClinVarAccession().getAcc()
Expand Down

0 comments on commit 9b91471

Please sign in to comment.