From e6d5d0bd3c224c094cc03ebbb17973c190391212 Mon Sep 17 00:00:00 2001 From: znorgaard Date: Fri, 6 Feb 2026 15:06:33 -0800 Subject: [PATCH 1/2] fix: use '&' as acmg sep --- .../exomiser/core/writers/VcfResultsWriter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exomiser-core/src/main/java/org/monarchinitiative/exomiser/core/writers/VcfResultsWriter.java b/exomiser-core/src/main/java/org/monarchinitiative/exomiser/core/writers/VcfResultsWriter.java index 1df695c88..53f18ea41 100644 --- a/exomiser-core/src/main/java/org/monarchinitiative/exomiser/core/writers/VcfResultsWriter.java +++ b/exomiser-core/src/main/java/org/monarchinitiative/exomiser/core/writers/VcfResultsWriter.java @@ -231,7 +231,7 @@ private String toVcfAcmgInfo(AcmgEvidence acmgEvidence) { AcmgCriterion.Evidence evidence = entry.getValue(); return (acmgCriterion.evidence() == evidence) ? acmgCriterion.toString() : acmgCriterion + "_" + evidence.displayString(); }) - .collect(Collectors.joining(",")); + .collect(Collectors.joining("&")); } private String getRepresentativeAnnotation(List annotations) { From 0ea87814d7f5f001dc45f3f092a288c10a377e4b Mon Sep 17 00:00:00 2001 From: znorgaard Date: Fri, 6 Feb 2026 15:26:52 -0800 Subject: [PATCH 2/2] test: add mult acmg evidence vcf test --- .../core/writers/VcfResultsWriterTest.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/exomiser-core/src/test/java/org/monarchinitiative/exomiser/core/writers/VcfResultsWriterTest.java b/exomiser-core/src/test/java/org/monarchinitiative/exomiser/core/writers/VcfResultsWriterTest.java index 338f94ce5..bb9cf54cc 100644 --- a/exomiser-core/src/test/java/org/monarchinitiative/exomiser/core/writers/VcfResultsWriterTest.java +++ b/exomiser-core/src/test/java/org/monarchinitiative/exomiser/core/writers/VcfResultsWriterTest.java @@ -406,4 +406,52 @@ public void testAnnotatedVariantAcmgDiseaseNameWhitespaceIsReplacedWithUnderscor + "7\t155604800\t.\tC\tCT\t1\tPASS\tExomiser={1|7-155604800-C-CT_AD|SHH_alpha_spaces|6469|AD|1.0000|1.0000|0.0000|0.0000|1.0000|1|0|frameshift_variant|SHH:uc003wmk.1:c.16dup:p.(Arg6Lysfs*58)|LIKELY_BENIGN|BP1_Moderate|DISEASE:1|\"Name_with_spaces\"}\tGT:RD\t0/1:30\n"; assertThat(vcf, equalTo(expected)); } + + @Test + public void testMultipleAcmgEvidenceInstancesAreJoinedByAmpersand() { + GeneIdentifier geneIdentifier = GeneIdentifier.builder() + .geneId("2263") + .geneSymbol("FGFR2") + .hgncId("HGNC:3689") + .hgncSymbol("FGFR2") + .entrezId("2263") + .ensemblId("ENSG00000066468") + .ucscId("uc021pzz.1") + .build(); + + Gene gene = new Gene(geneIdentifier); + VariantEvaluation variant = TestVariantFactory.buildVariant(10, 123256215, "T", "G", SampleGenotype.het(), 30, 2.2); + variant.addFilterResult(FilterResult.pass(FilterType.VARIANT_EFFECT_FILTER)); + variant.addFilterResult(FilterResult.pass(FilterType.INHERITANCE_FILTER)); + variant.setCompatibleInheritanceModes(Set.of(ModeOfInheritance.AUTOSOMAL_DOMINANT)); + variant.setContributesToGeneScoreUnderMode(ModeOfInheritance.AUTOSOMAL_DOMINANT); + gene.addVariant(variant); + gene.addPriorityResult(new OmimPriorityResult(gene.getEntrezGeneID(), gene.getGeneSymbol(), 1f, Collections.emptyList(), Collections.emptyMap())); + gene.setCompatibleInheritanceModes(EnumSet.of(ModeOfInheritance.AUTOSOMAL_DOMINANT)); + + Disease disease = Disease.builder() + .diseaseId("OMIM:101600") + .diseaseName("Pfeiffer syndrome") + .build(); + + GeneScore adScore = GeneScore.builder() + .acmgAssignments(List.of(AcmgAssignment.of(variant, geneIdentifier, ModeOfInheritance.AUTOSOMAL_DOMINANT, disease, AcmgEvidence.of(Map.of( + AcmgCriterion.PS3, AcmgCriterion.Evidence.STRONG, + AcmgCriterion.PM2, AcmgCriterion.Evidence.MODERATE, + AcmgCriterion.PP3, AcmgCriterion.Evidence.SUPPORTING + )), AcmgClassification.PATHOGENIC))) + .contributingVariants(List.of(variant)) + .modeOfInheritance(ModeOfInheritance.AUTOSOMAL_DOMINANT) + .geneIdentifier(geneIdentifier) + .combinedScore(1.0) + .build(); + gene.addGeneScore(adScore); + + AnalysisResults analysisResults = buildAnalysisResults(sample, analysis, gene); + + String vcf = instance.writeString(analysisResults, settings); + final String expected = METADATA_HEADER + CHR_10_CONTIG_HEADER + SAMPLE_HEADER + + "10\t123256215\t.\tT\tG\t2.20\tPASS\tExomiser={1|10-123256215-T-G_AD|FGFR2|2263|AD|1.0000|1.0000|0.0000|0.0000|0.6000|1|0|missense_variant|FGFR2:uc021pzz.1:c.1694A>C:p.(Glu565Ala)|PATHOGENIC|PS3&PM2&PP3|OMIM:101600|\"Pfeiffer_syndrome\"}\tGT:RD\t0/1:30\n"; + assertThat(vcf, equalTo(expected)); + } }