Skip to content

Commit

Permalink
Move to utils version 3.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
bartcharbon committed Nov 26, 2024
1 parent 420f1b4 commit 1c062b1
Show file tree
Hide file tree
Showing 7 changed files with 74 additions and 43 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ before_install:
script:
- mvn clean install sonar:sonar -Pcoverage -Dsonar.projectKey=molgenis_vip-inheritance-matcher
before_deploy:
# workaround for: https://travis-ci.community/t/deployments-are-failing-due-to-uri-dependency/14375
- yes | gem update --system --force
- gem install faraday-net_http -v '3.3.0' # workaround for the workaround - https://travis-ci.community/t/cannot-load-such-file-faraday-net-http-loaderror/14455/3
- gem install bundler
- gem install uri
- gem install logger
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
<!-- [WARNING] Plugin validation issues were detected, see https://github.com/jacoco/jacoco/issues/1435 -->
<jacoco-maven-plugin.version>0.8.12</jacoco-maven-plugin.version>
<samtools.htsjdk.version>4.1.1</samtools.htsjdk.version>
<vip.utils.version>2.0.2</vip.utils.version>
<vip.utils.version>3.0.0</vip.utils.version>
</properties>

<profiles>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,47 +1,26 @@
package org.molgenis.vcf.inheritance.matcher.util;

import htsjdk.variant.vcf.VCFInfoHeaderLine;
import org.molgenis.vcf.utils.metadata.FieldMetadataService;
import org.molgenis.vcf.utils.metadata.AbstractFieldMetadataService;
import org.molgenis.vcf.utils.model.FieldMetadata;
import org.molgenis.vcf.utils.vep.VepMetadataService;
import org.molgenis.vcf.utils.metadata.FieldMetadataServiceImpl;
import org.springframework.stereotype.Component;
import org.springframework.util.ResourceUtils;

import java.io.ByteArrayInputStream;

import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.*;

/**
* Quirky class to enable reuse of {@link VepMetadataService} from vip-utils
* Quirky class to enable reuse of {@link FieldMetadataService} from vip-utils
*/
@Component
public class VepMetadataServiceFactoryImpl implements VepMetadataServiceFactory {

@Override
public FieldMetadataService create() {
return new VepMetadataService(new EmptyFieldMetadataService());
}

/**
* vip-inheritance-matcher does not require knowledge of custom VEP metadata
*/
static class EmptyFieldMetadataService extends AbstractFieldMetadataService {
private static final String EMPTY_METADATA_JSON = """
{
"format": {
},
"info": {
"CSQ": {
"nestedFields": {
}
}
}
}
""";

@Override
public FieldMetadata load(VCFInfoHeaderLine vcfInfoHeaderLine) {
return this.load(new ByteArrayInputStream(EMPTY_METADATA_JSON.getBytes(UTF_8)), vcfInfoHeaderLine);
File json;
try {
json = ResourceUtils.getFile("classpath:metadata.json");
} catch (FileNotFoundException e) {
throw new UncheckedIOException(e);
}
return new FieldMetadataServiceImpl(json);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.molgenis.vcf.inheritance.matcher.vcf.meta;

import java.io.Serial;

import static java.lang.String.format;

public class MissingVepMetadataException extends RuntimeException {
@Serial
private static final long serialVersionUID = 1L;

public MissingVepMetadataException(String field) {
super(format("VEP metadata is missing in metadata json, vep id: '%s'.", field));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@
import java.util.Map;

import lombok.Getter;
import org.molgenis.vcf.utils.metadata.FieldIdentifier;
import org.molgenis.vcf.utils.metadata.FieldMetadataService;
import org.molgenis.vcf.utils.model.FieldMetadata;
import org.molgenis.vcf.utils.model.NestedField;
import org.molgenis.vcf.utils.metadata.NestedAttributes;
import org.molgenis.vcf.utils.model.metadata.FieldMetadata;
import org.molgenis.vcf.utils.model.metadata.FieldMetadatas;
import org.molgenis.vcf.utils.model.metadata.NestedFieldMetadata;

public class VepMetadata {

Expand Down Expand Up @@ -50,21 +53,28 @@ private void init() {
for (VCFInfoHeaderLine vcfInfoHeaderLine : vcfHeader.getInfoHeaderLines()) {
if (canMap(vcfInfoHeaderLine)) {
this.vepFieldId = vcfInfoHeaderLine.getID();
FieldMetadata fieldMetadata = fieldMetadataService.load(
vcfInfoHeaderLine);
Map<String, NestedField> nestedFields = fieldMetadata.getNestedFields();
geneIndex = getIndex(nestedFields, GENE);
geneSourceIndex = getIndex(nestedFields, SYMBOL_SOURCE);
inheritanceIndex = getIndex(nestedFields, INHERITANCE);
alleleNumIndex = getIndex(nestedFields, ALLELE_NUM);
classIndex = getIndex(nestedFields, VIP_CLASS);
FieldMetadatas fieldMetadatas = fieldMetadataService.load(vcfHeader, Map.of(FieldIdentifier.builder()
.type(org.molgenis.vcf.utils.metadata.FieldType.INFO).name(vepFieldId).build(), NestedAttributes.builder().prefix(INFO_DESCRIPTION_PREFIX).seperator("|").build()));
FieldMetadata vepField = fieldMetadatas.getInfo().get(vepFieldId);
if (vepField == null) {
throw new MissingInfoException(vepFieldId);
}
Map<String, NestedFieldMetadata> nestedFieldsMeta = vepField.getNestedFields();
if (nestedFieldsMeta == null) {
throw new MissingVepMetadataException(vepFieldId);
}
geneIndex = getIndex(nestedFieldsMeta, GENE);
geneSourceIndex = getIndex(nestedFieldsMeta, SYMBOL_SOURCE);
inheritanceIndex = getIndex(nestedFieldsMeta, INHERITANCE);
alleleNumIndex = getIndex(nestedFieldsMeta, ALLELE_NUM);
classIndex = getIndex(nestedFieldsMeta, VIP_CLASS);
return;
}
}
throw new MissingInfoException("VEP");
}

private static int getIndex(Map<String, NestedField> nestedFields, String fieldName) {
private static int getIndex(Map<String, NestedFieldMetadata> nestedFields, String fieldName) {
return nestedFields.get(fieldName) != null ? nestedFields.get(fieldName).getIndex() : -1;
}
}
10 changes: 10 additions & 0 deletions src/main/resources/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"format": {
},
"info": {
"CSQ": {
"nestedFields": {
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.molgenis.vcf.inheritance.matcher;

import org.junit.jupiter.api.Test;
import org.molgenis.vcf.inheritance.matcher.vcf.meta.MissingVepMetadataException;

import static org.junit.jupiter.api.Assertions.assertEquals;

class MissingVepMetadataExceptionTest {

@Test
void getMessage() {
assertEquals(
"VEP metadata is missing in metadata json, vep id: 'CSQ'.",
new MissingVepMetadataException("CSQ").getMessage());
}
}

0 comments on commit 1c062b1

Please sign in to comment.