Skip to content

Commit dc6f324

Browse files
committed
Fix ClinVarAlleleParser exceptions when parsing newly introduced CLNSIG=VUS-high|mid values.
1 parent ac042ff commit dc6f324

2 files changed

Lines changed: 29 additions & 4 deletions

File tree

exomiser-data-genome/src/main/java/org/monarchinitiative/exomiser/data/genome/model/parsers/ClinVarAlleleParser.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,12 @@ public class ClinVarAlleleParser extends VcfAlleleParser {
4343

4444
static {
4545
Map<String, ClinSig> temp = new HashMap<>();
46+
// ClinVar just seem to make up whatever as they go along. None of this is documented, just found through errors...
4647
temp.put("Uncertain_significance", UNCERTAIN_SIGNIFICANCE);
48+
temp.put("VUS-high", UNCERTAIN_SIGNIFICANCE);
49+
temp.put("VUS-mid", UNCERTAIN_SIGNIFICANCE);
50+
temp.put("VUS-low", UNCERTAIN_SIGNIFICANCE);
51+
temp.put("VUS", UNCERTAIN_SIGNIFICANCE);
4752
// temp.put("Uncertain_significance/Uncertain_risk_allele", UNCERTAIN_SIGNIFICANCE);
4853
temp.put("Benign", BENIGN);
4954
// temp.put("Benign/Likely_benign", BENIGN_OR_LIKELY_BENIGN);
@@ -187,6 +192,7 @@ private ClinSig parseClinSig(String clinsig) {
187192
clinsig = clinsig.replace(",_low_penetrance", "");
188193
Set<ClinSig> clinSigs = Arrays.stream(clinsig.split("/"))
189194
.map(CLINSIG_MAP::get)
195+
.filter(Objects::nonNull)
190196
.collect(Collectors.toCollection(() -> EnumSet.noneOf(ClinSig.class)));
191197

192198
if (clinSigs.isEmpty()) {

exomiser-data-genome/src/test/java/org/monarchinitiative/exomiser/data/genome/model/parsers/ClinVarAlleleParserTest.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,7 @@
2222

2323
import org.junit.jupiter.api.Disabled;
2424
import org.junit.jupiter.api.Test;
25-
import org.monarchinitiative.exomiser.core.genome.dao.ClinVarWhiteListReader;
26-
import org.monarchinitiative.exomiser.core.model.AlleleProtoAdaptor;
2725
import org.monarchinitiative.exomiser.core.model.pathogenicity.ClinVarData;
28-
import org.monarchinitiative.exomiser.core.proto.AlleleProto;
29-
import org.monarchinitiative.exomiser.data.genome.indexers.AlleleConverter;
3026
import org.monarchinitiative.exomiser.data.genome.model.Allele;
3127

3228
import java.io.*;
@@ -280,6 +276,29 @@ void clnSigLowPenetrance() {
280276
assertParseLineEquals(line, List.of(expected));
281277
}
282278

279+
/* new fun added in Jan 05, 2026 */
280+
@Test
281+
void clnSigVusHot() {
282+
// variant id 3065236
283+
String line = "2\t241684718\t.\tCAACATT\tC\t.\t.\tCLNSIG=Uncertain_significance/VUS-high";
284+
Allele expected = new Allele(2, 241684718, "CAACATT", "C");
285+
expected.setClinVarData(ClinVarData.builder()
286+
.primaryInterpretation(UNCERTAIN_SIGNIFICANCE)
287+
.build());
288+
assertParseLineEquals(line, List.of(expected));
289+
}
290+
291+
// 9 134164522 4688033 C T . . ALLELEID=4799506;CLNDISDB=.;CLNDN=See_cases;CLNHGVS=NC_000009.12:g.134164522C>T;CLNREVSTAT=no_assertion_criteria_provided;CLNSIG=VUS-mid;CLNSIGSCV=SCV007334818;CLNVC=single_nucleotide_variant;CLNVCSO=SO:0001483;GENEINFO=RNU6ATAC:100151684;MC=SO:0001619|non-coding_transcript_variant;ORIGIN=64
292+
@Test
293+
void clnSigJustVusMid() {
294+
// variant id 4688033 RNU6TAC
295+
String line = "9\t134164522\t.\tC\tT\t.\t.\tCLNSIG=VUS-mid";
296+
Allele expected = new Allele(9, 134164522, "C", "T");
297+
expected.setClinVarData(ClinVarData.builder()
298+
.primaryInterpretation(UNCERTAIN_SIGNIFICANCE)
299+
.build());
300+
assertParseLineEquals(line, List.of(expected));
301+
}
283302
@Test
284303
void conflictingInterpretationCounts() {
285304
String line = "1\t94051698\t7879\tC\tG\t.\t.\tCLNREVSTAT=criteria_provided,_conflicting_classifications;CLNSIG=Conflicting_classifications_of_pathogenicity;CLNSIGCONF=Pathogenic(19)|Likely_pathogenic(4)|Pathogenic,_low_penetrance(1)|Uncertain_significance(1);RS=1660844326";

0 commit comments

Comments
 (0)