Skip to content

Commit b86b4c6

Browse files
Replace ACMG_EVIDENCE ',' separator with '&' in VCF (#621)
* fix: use '&' as acmg sep * test: add mult acmg evidence vcf test --------- Co-authored-by: Jules Jacobsen <j.jacobsen@qmul.ac.uk>
1 parent dc6f324 commit b86b4c6

2 files changed

Lines changed: 46 additions & 1 deletion

File tree

exomiser-core/src/main/java/org/monarchinitiative/exomiser/core/writers/VcfResultsWriter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ private String toVcfAcmgInfo(AcmgEvidence acmgEvidence) {
249249
AcmgCriterion.Evidence evidence = entry.getValue();
250250
return (acmgCriterion.evidence() == evidence) ? acmgCriterion.toString() : acmgCriterion + "_" + evidence.displayString();
251251
})
252-
.collect(joining(","));
252+
.collect(joining("&"));
253253
}
254254

255255
private String getRepresentativeAnnotation(List<TranscriptAnnotation> annotations) {

exomiser-core/src/test/java/org/monarchinitiative/exomiser/core/writers/VcfResultsWriterTest.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,51 @@ void testAnnotatedVariantAcmgDiseaseNameWhitespaceIsReplacedWithUnderscore() {
409409
}
410410

411411
@Test
412+
public void testMultipleAcmgEvidenceInstancesAreJoinedByAmpersand() {
413+
GeneIdentifier geneIdentifier = GeneIdentifier.builder()
414+
.geneId("2263")
415+
.geneSymbol("FGFR2")
416+
.hgncId("HGNC:3689")
417+
.hgncSymbol("FGFR2")
418+
.entrezId("2263")
419+
.ensemblId("ENSG00000066468")
420+
.ucscId("uc021pzz.1")
421+
.build();
422+
423+
Gene gene = new Gene(geneIdentifier);
424+
VariantEvaluation variant = TestVariantFactory.buildVariant(10, 123256215, "T", "G", SampleGenotype.het(), 30, 2.2);
425+
variant.addFilterResult(FilterResult.pass(FilterType.VARIANT_EFFECT_FILTER));
426+
variant.addFilterResult(FilterResult.pass(FilterType.INHERITANCE_FILTER));
427+
variant.setCompatibleInheritanceModes(Set.of(ModeOfInheritance.AUTOSOMAL_DOMINANT));
428+
variant.setContributesToGeneScoreUnderMode(ModeOfInheritance.AUTOSOMAL_DOMINANT);
429+
gene.addVariant(variant);
430+
gene.addPriorityResult(new OmimPriorityResult(gene.getEntrezGeneID(), gene.getGeneSymbol(), 1f, Collections.emptyList(), Collections.emptyMap()));
431+
gene.setCompatibleInheritanceModes(EnumSet.of(ModeOfInheritance.AUTOSOMAL_DOMINANT));
432+
433+
Disease disease = Disease.builder()
434+
.diseaseId("OMIM:101600")
435+
.diseaseName("Pfeiffer syndrome")
436+
.build();
437+
438+
GeneScore adScore = GeneScore.builder()
439+
.acmgAssignments(List.of(AcmgAssignment.of(variant, geneIdentifier, ModeOfInheritance.AUTOSOMAL_DOMINANT, disease, AcmgEvidence.of(Map.of(
440+
AcmgCriterion.PS3, AcmgCriterion.Evidence.STRONG,
441+
AcmgCriterion.PM2, AcmgCriterion.Evidence.MODERATE,
442+
AcmgCriterion.PP3, AcmgCriterion.Evidence.SUPPORTING
443+
)), AcmgClassification.PATHOGENIC)))
444+
.contributingVariants(List.of(variant))
445+
.modeOfInheritance(ModeOfInheritance.AUTOSOMAL_DOMINANT)
446+
.geneIdentifier(geneIdentifier)
447+
.combinedScore(1.0)
448+
.build();
449+
gene.addGeneScore(adScore);
450+
451+
AnalysisResults analysisResults = buildAnalysisResults(sample, analysis, gene);
452+
453+
String vcf = instance.writeString(analysisResults, settings);
454+
final String expected = METADATA_HEADER + CHR_10_CONTIG_HEADER + SAMPLE_HEADER
455+
+ "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";
456+
assertThat(vcf, equalTo(expected));
412457
void nullVcfPathProducesNoOutfile(@TempDir Path tempDir) throws IOException {
413458
Sample vcfv4Dot3Sample = Sample.builder().vcfPath(null).build();
414459

0 commit comments

Comments
 (0)